提交 ca1b7cc8 编写于 作者: S Stefan Berger

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.
上级 8b46a7bb
......@@ -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)) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册