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