提交 2e1e0641 编写于 作者: M Mark McLoughlin

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: NMark McLoughlin <markmc@redhat.com>
上级 5b01e886
...@@ -389,15 +389,19 @@ VLANClientState *qemu_find_vlan_client(VLANState *vlan, void *opaque) ...@@ -389,15 +389,19 @@ VLANClientState *qemu_find_vlan_client(VLANState *vlan, void *opaque)
return NULL; 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; VLANClientState *vc;
for(vc = vlan->first_client; vc != NULL; vc = vc->next) { for (vc = vlan->first_client; vc != NULL; vc = vc->next) {
if (vc != vc1) { if (vc == sender) {
if (vc->fd_can_read && vc->fd_can_read(vc->opaque)) continue;
return 1; }
/* no fd_can_read() handler, they can always receive */
if (!vc->fd_can_read || vc->fd_can_read(vc->opaque)) {
return 1;
} }
} }
return 0; return 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册