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: Joao Martins <joao.m.martins@oracle.com>
This commit is contained in:
parent
819d1d9438
commit
481e9bd0f6
@ -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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user