diff options
author | Mark McLoughlin <markmc@redhat.com> | 2009-04-29 09:43:37 +0100 |
---|---|---|
committer | Mark McLoughlin <markmc@redhat.com> | 2009-06-09 11:38:49 +0100 |
commit | 5a6d88157420d7f10b46270edabbeed11ee4ebe5 (patch) | |
tree | ef09b6cc563b7b85fe30408ea72bd9aed876a645 /net.c | |
parent | b8e8af38ee4a4d516e75c64d1c3fbcf9a81d00e4 (diff) |
net: factor tap_read_packet() out of tap_send()
Move portability clutter out into its own function.
Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Diffstat (limited to 'net.c')
-rw-r--r-- | net.c | 28 |
1 files changed, 19 insertions, 9 deletions
@@ -951,21 +951,31 @@ static void tap_receive(void *opaque, const uint8_t *buf, int size) } } -static void tap_send(void *opaque) -{ - TAPState *s = opaque; - uint8_t buf[4096]; - int size; - #ifdef __sun__ +static ssize_t tap_read_packet(int tapfd, uint8_t *buf, int maxlen) +{ struct strbuf sbuf; int f = 0; - sbuf.maxlen = sizeof(buf); + + sbuf.maxlen = maxlen; sbuf.buf = (char *)buf; - size = getmsg(s->fd, NULL, &sbuf, &f) >=0 ? sbuf.len : -1; + + return getmsg(tapfd, NULL, &sbuf, &f) >= 0 ? sbuf.len : -1; +} #else - size = read(s->fd, buf, sizeof(buf)); +static ssize_t tap_read_packet(int tapfd, uint8_t *buf, int maxlen) +{ + return read(tapfd, buf, maxlen); +} #endif + +static void tap_send(void *opaque) +{ + TAPState *s = opaque; + uint8_t buf[4096]; + int size; + + size = tap_read_packet(s->fd, buf, sizeof(buf)); if (size > 0) { qemu_send_packet(s->vc, buf, size); } |