mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
qemu: move qemuDomainRemoveNetDevice to avoid forward reference
pure code movement to setup for next patch.
This commit is contained in:
parent
7a600cf77f
commit
c5561644d8
@ -2453,67 +2453,6 @@ qemuDomainRemoveControllerDevice(virQEMUDriverPtr driver,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
qemuDomainRemoveNetDevice(virQEMUDriverPtr driver,
|
|
||||||
virDomainObjPtr vm,
|
|
||||||
virDomainNetDefPtr net)
|
|
||||||
{
|
|
||||||
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
|
||||||
virNetDevVPortProfilePtr vport;
|
|
||||||
virDomainEventPtr event;
|
|
||||||
size_t i;
|
|
||||||
|
|
||||||
VIR_DEBUG("Removing network interface %s from domain %p %s",
|
|
||||||
net->info.alias, vm, vm->def->name);
|
|
||||||
|
|
||||||
virDomainAuditNet(vm, net, NULL, "detach", true);
|
|
||||||
|
|
||||||
event = virDomainEventDeviceRemovedNewFromObj(vm, net->info.alias);
|
|
||||||
if (event)
|
|
||||||
qemuDomainEventQueue(driver, event);
|
|
||||||
|
|
||||||
for (i = 0; i < vm->def->nnets; i++) {
|
|
||||||
if (vm->def->nets[i] == net) {
|
|
||||||
virDomainNetRemove(vm->def, i);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
qemuDomainReleaseDeviceAddress(vm, &net->info, NULL);
|
|
||||||
virDomainConfNWFilterTeardown(net);
|
|
||||||
|
|
||||||
if (virDomainNetGetActualType(net) == VIR_DOMAIN_NET_TYPE_DIRECT) {
|
|
||||||
ignore_value(virNetDevMacVLanDeleteWithVPortProfile(
|
|
||||||
net->ifname, &net->mac,
|
|
||||||
virDomainNetGetActualDirectDev(net),
|
|
||||||
virDomainNetGetActualDirectMode(net),
|
|
||||||
virDomainNetGetActualVirtPortProfile(net),
|
|
||||||
cfg->stateDir));
|
|
||||||
VIR_FREE(net->ifname);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cfg->macFilter && (net->ifname != NULL)) {
|
|
||||||
if ((errno = networkDisallowMacOnPort(driver,
|
|
||||||
net->ifname,
|
|
||||||
&net->mac))) {
|
|
||||||
virReportSystemError(errno,
|
|
||||||
_("failed to remove ebtables rule on '%s'"),
|
|
||||||
net->ifname);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
vport = virDomainNetGetActualVirtPortProfile(net);
|
|
||||||
if (vport && vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH)
|
|
||||||
ignore_value(virNetDevOpenvswitchRemovePort(
|
|
||||||
virDomainNetGetActualBridgeName(net),
|
|
||||||
net->ifname));
|
|
||||||
|
|
||||||
networkReleaseActualDevice(net);
|
|
||||||
virDomainNetDefFree(net);
|
|
||||||
virObjectUnref(cfg);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
qemuDomainRemovePCIHostDevice(virQEMUDriverPtr driver,
|
qemuDomainRemovePCIHostDevice(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr vm,
|
virDomainObjPtr vm,
|
||||||
@ -2644,6 +2583,67 @@ qemuDomainRemoveHostDevice(virQEMUDriverPtr driver,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
qemuDomainRemoveNetDevice(virQEMUDriverPtr driver,
|
||||||
|
virDomainObjPtr vm,
|
||||||
|
virDomainNetDefPtr net)
|
||||||
|
{
|
||||||
|
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
|
||||||
|
virNetDevVPortProfilePtr vport;
|
||||||
|
virDomainEventPtr event;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
VIR_DEBUG("Removing network interface %s from domain %p %s",
|
||||||
|
net->info.alias, vm, vm->def->name);
|
||||||
|
|
||||||
|
virDomainAuditNet(vm, net, NULL, "detach", true);
|
||||||
|
|
||||||
|
event = virDomainEventDeviceRemovedNewFromObj(vm, net->info.alias);
|
||||||
|
if (event)
|
||||||
|
qemuDomainEventQueue(driver, event);
|
||||||
|
|
||||||
|
for (i = 0; i < vm->def->nnets; i++) {
|
||||||
|
if (vm->def->nets[i] == net) {
|
||||||
|
virDomainNetRemove(vm->def, i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
qemuDomainReleaseDeviceAddress(vm, &net->info, NULL);
|
||||||
|
virDomainConfNWFilterTeardown(net);
|
||||||
|
|
||||||
|
if (virDomainNetGetActualType(net) == VIR_DOMAIN_NET_TYPE_DIRECT) {
|
||||||
|
ignore_value(virNetDevMacVLanDeleteWithVPortProfile(
|
||||||
|
net->ifname, &net->mac,
|
||||||
|
virDomainNetGetActualDirectDev(net),
|
||||||
|
virDomainNetGetActualDirectMode(net),
|
||||||
|
virDomainNetGetActualVirtPortProfile(net),
|
||||||
|
cfg->stateDir));
|
||||||
|
VIR_FREE(net->ifname);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cfg->macFilter && (net->ifname != NULL)) {
|
||||||
|
if ((errno = networkDisallowMacOnPort(driver,
|
||||||
|
net->ifname,
|
||||||
|
&net->mac))) {
|
||||||
|
virReportSystemError(errno,
|
||||||
|
_("failed to remove ebtables rule on '%s'"),
|
||||||
|
net->ifname);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
vport = virDomainNetGetActualVirtPortProfile(net);
|
||||||
|
if (vport && vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH)
|
||||||
|
ignore_value(virNetDevOpenvswitchRemovePort(
|
||||||
|
virDomainNetGetActualBridgeName(net),
|
||||||
|
net->ifname));
|
||||||
|
|
||||||
|
networkReleaseActualDevice(net);
|
||||||
|
virDomainNetDefFree(net);
|
||||||
|
virObjectUnref(cfg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
qemuDomainRemoveChrDevice(virQEMUDriverPtr driver,
|
qemuDomainRemoveChrDevice(virQEMUDriverPtr driver,
|
||||||
virDomainObjPtr vm,
|
virDomainObjPtr vm,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user