qemu-1.7.0/qdev-monitor.c 2013-11-28 03:45:55.000000000 +0530
+++ qdev-monitor.c 2014-03-17 02:05:49.000000000 +0530
@@ -25,6 +25,14 @@
+int net_device_add(char *device_name, char *netdev_name, char *driver, char *mac)
+{
+ QemuOpts *opts;
+ DeviceState *dev;
+ Error *err = NULL;
+ opts = qemu_opts_create(qemu_find_opts("device"), device_name, 0, &err);
+ if(opts == NULL)
+ return -1;
+ qemu_opt_set_manual(opts, "driver", driver);
+ qemu_opt_set_manual(opts, "netdev", netdev_name);
+ qemu_opt_set_manual(opts, "mac", mac);
+ dev = qdev_device_add(opts);
+ if (!dev) {
+ //qemu_opts_del(opts);
+ return -1;
+ }
+}
qmp_device_del(net0, &err) successfully delete virtio-net-pci device.
when we try to add a virtio-net-pci device with a new MAC address, i.e, net_device_add(net0, hostnet0, virtio-net-pci,52:54:00:cf:eb:92);, we get
"qemu-system-x86_64: Property 'virtio-net-pci.netdev' can't take value 'hostnet0', it's in use"
When we tried from qemu monitor, we were able to delete and add device successfully.
(qemu) info network
net0: index=0,type=nic,model=virtio-net-pci,macaddr=52:54:00:cf:eb:91
\ hostnet0: index=0,type=tap,ifname=tap0,script=/usr/bin/qemu-ifup,downscript=/usr/bin/qemu-ifdown
(qemu) device_del net0
(qemu) info network
hostnet0: index=0,type=tap,ifname=tap0,script=/usr/bin/qemu-ifup,downscript=/usr/bin/qemu-ifdown
(qemu) device_add virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:cf:eb:92
(qemu) info network
net0: index=0,type=nic,model=virtio-net-pci,macaddr=52:54:00:cf:eb:92
\ hostnet0: index=0,type=tap,ifname=tap0,script=/usr/bin/qemu-ifup,downscript=/usr/bin/qemu-ifdown
Any idea?
Thanks
Cendhu