Remove the NIC from vlan on usb destroy.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4885 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
balrog 2008-07-17 21:00:05 +00:00
parent 6c9f886cea
commit dcf414d638
3 changed files with 16 additions and 1 deletions

View File

@ -1418,7 +1418,8 @@ static void usb_net_handle_destroy(USBDevice *dev)
{
USBNetState *s = (USBNetState *) dev;
/* FIXME: delete the VLAN client and the nic */
/* TODO: remove the nd_table[] entry */
qemu_del_vlan_client(s->vc);
rndis_clear_responsequeue(s);
qemu_free(s);
}

1
net.h
View File

@ -28,6 +28,7 @@ VLANClientState *qemu_new_vlan_client(VLANState *vlan,
IOReadHandler *fd_read,
IOCanRWHandler *fd_can_read,
void *opaque);
void qemu_del_vlan_client(VLANClientState *vc);
int qemu_can_send_packet(VLANClientState *vc);
void qemu_send_packet(VLANClientState *vc, const uint8_t *buf, int size);
void qemu_handler_true(void *opaque);

13
vl.c
View File

@ -3870,6 +3870,19 @@ VLANClientState *qemu_new_vlan_client(VLANState *vlan,
return vc;
}
void qemu_del_vlan_client(VLANClientState *vc)
{
VLANClientState **pvc = &vc->vlan->first_client;
while (*pvc != NULL)
if (*pvc == vc) {
*pvc = vc->next;
free(vc);
break;
} else
pvc = &(*pvc)->next;
}
int qemu_can_send_packet(VLANClientState *vc1)
{
VLANState *vlan = vc1->vlan;