mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-08 22:15:21 +00:00
macvtap: cannot support target device name
Since the macvtap device needs active tear-down and the teardown logic is based on the interface name, it can happen that if for example 1 out of 3 interfaces was successfully created, that during the failure path the macvtap's target device name is used to tear down an interface that is doesn't own (owned by another VM). So, in this patch, the target interface name is reset so that there is no target interface name and the interface name is always cleared after a tear down.
This commit is contained in:
parent
8b46a7bbdb
commit
ca1b7cc8e4
@ -2207,6 +2207,8 @@ virDomainNetDefParseXML(virCapsPtr caps,
|
||||
def->data.direct.linkdev = dev;
|
||||
dev = NULL;
|
||||
|
||||
VIR_FREE(ifname);
|
||||
|
||||
break;
|
||||
|
||||
case VIR_DOMAIN_NET_TYPE_USER:
|
||||
|
@ -1556,6 +1556,7 @@ qemudPhysIfaceConnect(virConnectPtr conn,
|
||||
rc = -1;
|
||||
delMacvtap(net->ifname,
|
||||
&net->data.direct.virtPortProfile);
|
||||
VIR_FREE(net->ifname);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3708,9 +3708,11 @@ static void qemudShutdownVMDaemon(struct qemud_driver *driver,
|
||||
def = vm->def;
|
||||
for (i = 0; i < def->nnets; i++) {
|
||||
virDomainNetDefPtr net = def->nets[i];
|
||||
if (net->type == VIR_DOMAIN_NET_TYPE_DIRECT)
|
||||
if (net->type == VIR_DOMAIN_NET_TYPE_DIRECT) {
|
||||
delMacvtap(net->ifname,
|
||||
&net->data.direct.virtPortProfile);
|
||||
VIR_FREE(net->ifname);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -8545,9 +8547,11 @@ qemudDomainDetachNetDevice(struct qemud_driver *driver,
|
||||
virNWFilterTearNWFilter(detach);
|
||||
|
||||
#if WITH_MACVTAP
|
||||
if (detach->type == VIR_DOMAIN_NET_TYPE_DIRECT)
|
||||
if (detach->type == VIR_DOMAIN_NET_TYPE_DIRECT) {
|
||||
delMacvtap(detach->ifname,
|
||||
&detach->data.direct.virtPortProfile);
|
||||
VIR_FREE(detach->ifname);
|
||||
}
|
||||
#endif
|
||||
|
||||
if ((driver->macFilter) && (detach->ifname != NULL)) {
|
||||
|
Loading…
Reference in New Issue
Block a user