Commit 2e1e0641 authored by Mark McLoughlin's avatar Mark McLoughlin
Browse files

net: vlan clients with no fd_can_read() can always receive



If a vlan client has no fd_can_read(), that means it can
always receive packets. The current code assumes it can *never*
receive packets.

Signed-off-by: default avatarMark McLoughlin <markmc@redhat.com>
parent 5b01e886
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -389,14 +389,18 @@ VLANClientState *qemu_find_vlan_client(VLANState *vlan, void *opaque)
    return NULL;
}

int qemu_can_send_packet(VLANClientState *vc1)
int qemu_can_send_packet(VLANClientState *sender)
{
    VLANState *vlan = vc1->vlan;
    VLANState *vlan = sender->vlan;
    VLANClientState *vc;

    for (vc = vlan->first_client; vc != NULL; vc = vc->next) {
        if (vc != vc1) {
            if (vc->fd_can_read && vc->fd_can_read(vc->opaque))
        if (vc == sender) {
            continue;
        }

        /* no fd_can_read() handler, they can always receive */
        if (!vc->fd_can_read || vc->fd_can_read(vc->opaque)) {
            return 1;
        }
    }