static int virtio_net_device_exit(DeviceState *qdev)

{

    VirtIONet *n = VIRTIO_NET(qdev);

    VirtIODevice *vdev = VIRTIO_DEVICE(qdev);

    int i;



    /* This will stop vhost backend if appropriate. */

    virtio_net_set_status(vdev, 0);



    unregister_savevm(qdev, "virtio-net", n);



    if (n->netclient_name) {

        g_free(n->netclient_name);

        n->netclient_name = NULL;

    }

    if (n->netclient_type) {

        g_free(n->netclient_type);

        n->netclient_type = NULL;

    }



    g_free(n->mac_table.macs);

    g_free(n->vlans);



    for (i = 0; i < n->max_queues; i++) {

        VirtIONetQueue *q = &n->vqs[i];

        NetClientState *nc = qemu_get_subqueue(n->nic, i);



        qemu_purge_queued_packets(nc);



        if (q->tx_timer) {

            timer_del(q->tx_timer);

            timer_free(q->tx_timer);

        } else if (q->tx_bh) {

            qemu_bh_delete(q->tx_bh);

        }

    }



    g_free(n->vqs);

    qemu_del_nic(n->nic);

    virtio_cleanup(vdev);



    return 0;

}

static int virtio_net_device_exit(DeviceState *qdev)

{

    VirtIONet *n = VIRTIO_NET(qdev);

    VirtIODevice *vdev = VIRTIO_DEVICE(qdev);

    int i;



    

    virtio_net_set_status(vdev, 0);



    unregister_savevm(qdev, "virtio-net", n);



    if (n->netclient_name) {

        g_free(n->netclient_name);

        n->netclient_name = NULL;

    }

    if (n->netclient_type) {

        g_free(n->netclient_type);

        n->netclient_type = NULL;

    }



    g_free(n->mac_table.macs);

    g_free(n->vlans);



    for (i = 0; i < n->max_queues; i++) {

        VirtIONetQueue *q = &n->vqs[i];

        NetClientState *nc = qemu_get_subqueue(n->nic, i);



        qemu_purge_queued_packets(nc);



        if (q->tx_timer) {

            timer_del(q->tx_timer);

            timer_free(q->tx_timer);

        } else if (q->tx_bh) {

            qemu_bh_delete(q->tx_bh);

        }

    }



    g_free(n->vqs);

    qemu_del_nic(n->nic);

    virtio_cleanup(vdev);



    return 0;

}

static int virtio_net_device_exit(DeviceState *qdev)     VirtIONet *n = VIRTIO_NET(qdev);     VirtIODevice *vdev = VIRTIO_DEVICE(qdev);     unregister_savevm(qdev, "virtio-net", n);     return 0;
static int FUNC_0(DeviceState *VAR_0)

{

    VirtIONet *n = VIRTIO_NET(VAR_0);

    VirtIODevice *vdev = VIRTIO_DEVICE(VAR_0);

    int VAR_1;



    

    virtio_net_set_status(vdev, 0);



    unregister_savevm(VAR_0, "virtio-net", n);



    if (n->netclient_name) {

        g_free(n->netclient_name);

        n->netclient_name = NULL;

    }

    if (n->netclient_type) {

        g_free(n->netclient_type);

        n->netclient_type = NULL;

    }



    g_free(n->mac_table.macs);

    g_free(n->vlans);



    for (VAR_1 = 0; VAR_1 < n->max_queues; VAR_1++) {

        VirtIONetQueue *q = &n->vqs[VAR_1];

        NetClientState *nc = qemu_get_subqueue(n->nic, VAR_1);



        qemu_purge_queued_packets(nc);



        if (q->tx_timer) {

            timer_del(q->tx_timer);

            timer_free(q->tx_timer);

        } else if (q->tx_bh) {

            qemu_bh_delete(q->tx_bh);

        }

    }



    g_free(n->vqs);

    qemu_del_nic(n->nic);

    virtio_cleanup(vdev);



    return 0;

}

static int FUNC_0(DeviceState *VAR_0)
{ VirtIONet *n = VIRTIO_NET(VAR_0); VirtIODevice *vdev = VIRTIO_DEVICE(VAR_0); int VAR_1; virtio_net_set_status(vdev, 0); unregister_savevm(VAR_0, "virtio-net", n); if (n->netclient_name) { g_free(n->netclient_name); n->netclient_name = NULL; } if (n->netclient_type) { g_free(n->netclient_type); n->netclient_type = NULL; } g_free(n->mac_table.macs); g_free(n->vlans); for (VAR_1 = 0; VAR_1 < n->max_queues; VAR_1++) { VirtIONetQueue *q = &n->vqs[VAR_1]; NetClientState *nc = qemu_get_subqueue(n->nic, VAR_1); qemu_purge_queued_packets(nc); if (q->tx_timer) { timer_del(q->tx_timer); timer_free(q->tx_timer); } else if (q->tx_bh) { qemu_bh_delete(q->tx_bh); } } g_free(n->vqs); qemu_del_nic(n->nic); virtio_cleanup(vdev); return 0; }