net: return status from qemu_deliver_packet()

Will allow qemu_send_packet() handle queue full condition.

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
This commit is contained in:
Mark McLoughlin 2009-04-29 11:34:52 +01:00
parent 4f1c942b7f
commit 3e021d40b7
1 changed files with 17 additions and 3 deletions

20
net.c
View File

@ -409,16 +409,30 @@ int qemu_can_send_packet(VLANClientState *sender)
return 0;
}
static void
static int
qemu_deliver_packet(VLANClientState *sender, const uint8_t *buf, int size)
{
VLANClientState *vc;
int ret = -1;
for (vc = sender->vlan->first_client; vc != NULL; vc = vc->next) {
if (vc != sender && !vc->link_down) {
vc->receive(vc, buf, size);
ssize_t len;
if (vc == sender) {
continue;
}
if (vc->link_down) {
ret = size;
continue;
}
len = vc->receive(vc, buf, size);
ret = (ret >= 0) ? ret : len;
}
return ret;
}
void qemu_send_packet(VLANClientState *vc, const uint8_t *buf, int size)