Revision 5a6d8815 net.c
b/net.c | ||
---|---|---|
951 | 951 |
} |
952 | 952 |
} |
953 | 953 |
|
954 |
static void tap_send(void *opaque) |
|
955 |
{ |
|
956 |
TAPState *s = opaque; |
|
957 |
uint8_t buf[4096]; |
|
958 |
int size; |
|
959 |
|
|
960 | 954 |
#ifdef __sun__ |
955 |
static ssize_t tap_read_packet(int tapfd, uint8_t *buf, int maxlen) |
|
956 |
{ |
|
961 | 957 |
struct strbuf sbuf; |
962 | 958 |
int f = 0; |
963 |
sbuf.maxlen = sizeof(buf); |
|
959 |
|
|
960 |
sbuf.maxlen = maxlen; |
|
964 | 961 |
sbuf.buf = (char *)buf; |
965 |
size = getmsg(s->fd, NULL, &sbuf, &f) >=0 ? sbuf.len : -1; |
|
962 |
|
|
963 |
return getmsg(tapfd, NULL, &sbuf, &f) >= 0 ? sbuf.len : -1; |
|
964 |
} |
|
966 | 965 |
#else |
967 |
size = read(s->fd, buf, sizeof(buf)); |
|
966 |
static ssize_t tap_read_packet(int tapfd, uint8_t *buf, int maxlen) |
|
967 |
{ |
|
968 |
return read(tapfd, buf, maxlen); |
|
969 |
} |
|
968 | 970 |
#endif |
971 |
|
|
972 |
static void tap_send(void *opaque) |
|
973 |
{ |
|
974 |
TAPState *s = opaque; |
|
975 |
uint8_t buf[4096]; |
|
976 |
int size; |
|
977 |
|
|
978 |
size = tap_read_packet(s->fd, buf, sizeof(buf)); |
|
969 | 979 |
if (size > 0) { |
970 | 980 |
qemu_send_packet(s->vc, buf, size); |
971 | 981 |
} |
Also available in: Unified diff