Revision b946a153 hw/virtio-net.c
b/hw/virtio-net.c | ||
---|---|---|
570 | 570 |
return 0; |
571 | 571 |
} |
572 | 572 |
|
573 |
static void virtio_net_cleanup(VLANClientState *vc) |
|
574 |
{ |
|
575 |
VirtIONet *n = vc->opaque; |
|
576 |
|
|
577 |
unregister_savevm("virtio-net", n); |
|
578 |
|
|
579 |
qemu_free(n->mac_table.macs); |
|
580 |
qemu_free(n->vlans); |
|
581 |
|
|
582 |
qemu_del_timer(n->tx_timer); |
|
583 |
qemu_free_timer(n->tx_timer); |
|
584 |
|
|
585 |
virtio_cleanup(&n->vdev); |
|
586 |
} |
|
587 |
|
|
573 | 588 |
PCIDevice *virtio_net_init(PCIBus *bus, NICInfo *nd, int devfn) |
574 | 589 |
{ |
575 | 590 |
VirtIONet *n; |
... | ... | |
598 | 613 |
memcpy(n->mac, nd->macaddr, ETH_ALEN); |
599 | 614 |
n->status = VIRTIO_NET_S_LINK_UP; |
600 | 615 |
n->vc = qemu_new_vlan_client(nd->vlan, nd->model, nd->name, |
601 |
virtio_net_receive, virtio_net_can_receive, n); |
|
616 |
virtio_net_receive, |
|
617 |
virtio_net_can_receive, |
|
618 |
virtio_net_cleanup, n); |
|
602 | 619 |
n->vc->link_status_changed = virtio_net_set_link_status; |
603 | 620 |
|
604 | 621 |
qemu_format_nic_info_str(n->vc, n->mac); |
Also available in: Unified diff