diff --git a/src/qemu/qemu_extdevice.c b/src/qemu/qemu_extdevice.c index 20962727616b24e749ca2fbf371bd01d66c1e1a5..dc188e60424e48676b39093ba2757abd17a702e1 100644 --- a/src/qemu/qemu_extdevice.c +++ b/src/qemu/qemu_extdevice.c @@ -230,10 +230,13 @@ qemuExtDevicesStop(virQEMUDriverPtr driver, for (i = 0; i < def->nnets; i++) { virDomainNetDefPtr net = def->nets[i]; + virDomainNetType actualType = virDomainNetGetActualType(net); qemuSlirpPtr slirp = QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp; if (slirp) qemuSlirpStop(slirp, vm, driver, net); + if (actualType == VIR_DOMAIN_NET_TYPE_ETHERNET && net->downscript) + virNetDevRunEthernetScript(net->ifname, net->downscript); } for (i = 0; i < def->nfss; i++) { diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 3571dead89e92829a91f8b2d23147be9f619ad07..d1a2be1f7a20d2dfe2dc5c18f052b4f356060c1c 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -4672,6 +4672,9 @@ qemuDomainRemoveNetDevice(virQEMUDriverPtr driver, virDomainNetReleaseActualDevice(conn, vm->def, net); else VIR_WARN("Unable to release network device '%s'", NULLSTR(net->ifname)); + } else if (net->type == VIR_DOMAIN_NET_TYPE_ETHERNET) { + if (net->script) + virNetDevRunEthernetScript(net->ifname, net->downscript); } virDomainNetDefFree(net); return 0; diff --git a/tests/qemuxml2argvdata/downscript.xml b/tests/qemuxml2argvdata/downscript.xml new file mode 100644 index 0000000000000000000000000000000000000000..4d0fb1beab13b08bb82cf90c882744229f4898c5 --- /dev/null +++ b/tests/qemuxml2argvdata/downscript.xml @@ -0,0 +1,60 @@ + + QEMUGuest1 + c7a5fdbd-edaf-9455-926a-d65c16db1809 + 219136 + 219136 + 1 + + hvm + + + + qemu64 + + + destroy + restart + destroy + + /usr/bin/qemu-system-x86_64 + + + + +
+ + +
+ + +
+ + + +
+ + + + +
+ + + + + +
+ + + +