提交 481e9bd0 编写于 作者: J Joao Martins 提交者: Daniel P. Berrange

conf: add prefix in virDomainNetDefParseXML

And use the newly added caps->host.netprefix for free interface
names that match the autogenerated target names.
Signed-off-by: NJoao Martins <joao.m.martins@oracle.com>
上级 819d1d94
...@@ -8434,6 +8434,7 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt, ...@@ -8434,6 +8434,7 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
xmlNodePtr node, xmlNodePtr node,
xmlXPathContextPtr ctxt, xmlXPathContextPtr ctxt,
virHashTablePtr bootHash, virHashTablePtr bootHash,
char *prefix,
unsigned int flags) unsigned int flags)
{ {
virDomainNetDefPtr def; virDomainNetDefPtr def;
...@@ -8600,7 +8601,8 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt, ...@@ -8600,7 +8601,8 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
ifname = virXMLPropString(cur, "dev"); ifname = virXMLPropString(cur, "dev");
if (ifname && if (ifname &&
(flags & VIR_DOMAIN_DEF_PARSE_INACTIVE) && (flags & VIR_DOMAIN_DEF_PARSE_INACTIVE) &&
STRPREFIX(ifname, VIR_NET_GENERATED_PREFIX)) { (STRPREFIX(ifname, VIR_NET_GENERATED_PREFIX) ||
(prefix && STRPREFIX(ifname, prefix)))) {
/* An auto-generated target name, blank it out */ /* An auto-generated target name, blank it out */
VIR_FREE(ifname); VIR_FREE(ifname);
} }
...@@ -12556,6 +12558,7 @@ virDomainDeviceDefParse(const char *xmlStr, ...@@ -12556,6 +12558,7 @@ virDomainDeviceDefParse(const char *xmlStr,
xmlNodePtr node; xmlNodePtr node;
xmlXPathContextPtr ctxt = NULL; xmlXPathContextPtr ctxt = NULL;
virDomainDeviceDefPtr dev = NULL; virDomainDeviceDefPtr dev = NULL;
char *netprefix;
if (!(xml = virXMLParseStringCtxt(xmlStr, _("(device_definition)"), &ctxt))) if (!(xml = virXMLParseStringCtxt(xmlStr, _("(device_definition)"), &ctxt)))
goto error; goto error;
...@@ -12598,8 +12601,9 @@ virDomainDeviceDefParse(const char *xmlStr, ...@@ -12598,8 +12601,9 @@ virDomainDeviceDefParse(const char *xmlStr,
goto error; goto error;
break; break;
case VIR_DOMAIN_DEVICE_NET: case VIR_DOMAIN_DEVICE_NET:
netprefix = caps->host.netprefix;
if (!(dev->data.net = virDomainNetDefParseXML(xmlopt, node, ctxt, if (!(dev->data.net = virDomainNetDefParseXML(xmlopt, node, ctxt,
NULL, flags))) NULL, netprefix, flags)))
goto error; goto error;
break; break;
case VIR_DOMAIN_DEVICE_INPUT: case VIR_DOMAIN_DEVICE_INPUT:
...@@ -14747,6 +14751,7 @@ virDomainDefParseXML(xmlDocPtr xml, ...@@ -14747,6 +14751,7 @@ virDomainDefParseXML(xmlDocPtr xml,
bool usb_other = false; bool usb_other = false;
bool usb_master = false; bool usb_master = false;
bool primaryVideo = false; bool primaryVideo = false;
char *netprefix = NULL;
if (flags & VIR_DOMAIN_DEF_PARSE_VALIDATE) { if (flags & VIR_DOMAIN_DEF_PARSE_VALIDATE) {
char *schema = virFileFindResource("domain.rng", char *schema = virFileFindResource("domain.rng",
...@@ -15932,11 +15937,13 @@ virDomainDefParseXML(xmlDocPtr xml, ...@@ -15932,11 +15937,13 @@ virDomainDefParseXML(xmlDocPtr xml,
goto error; goto error;
if (n && VIR_ALLOC_N(def->nets, n) < 0) if (n && VIR_ALLOC_N(def->nets, n) < 0)
goto error; goto error;
netprefix = caps->host.netprefix;
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
virDomainNetDefPtr net = virDomainNetDefParseXML(xmlopt, virDomainNetDefPtr net = virDomainNetDefParseXML(xmlopt,
nodes[i], nodes[i],
ctxt, ctxt,
bootHash, bootHash,
netprefix,
flags); flags);
if (!net) if (!net)
goto error; goto error;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册