Commit 5a6d8815 authored by Mark McLoughlin's avatar Mark McLoughlin
Browse files

net: factor tap_read_packet() out of tap_send()



Move portability clutter out into its own function.

Signed-off-by: default avatarMark McLoughlin <markmc@redhat.com>
parent b8e8af38
Loading
Loading
Loading
Loading
+19 −9
Original line number Diff line number Diff line
@@ -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);
    }