For some reason the bridge stp mode and delay were put directly into the "bridge" case of the switch in virInterfaceDefParseXML(), although they are inside the <bridge> element, and so should be parsed in the function created for that purpose - virInterfaceBridgeDefFormat(). --- src/conf/interface_conf.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/conf/interface_conf.c b/src/conf/interface_conf.c index 397920b..c1a089a 100644 --- a/src/conf/interface_conf.c +++ b/src/conf/interface_conf.c @@ -487,11 +487,27 @@ virInterfaceDefParseBridge(virInterfaceDefPtr def, xmlNodePtr *interfaces = NULL; xmlNodePtr bridge; virInterfaceDefPtr itf; + char *tmp = NULL; int nbItf; size_t i; int ret = 0; bridge = ctxt->node; + def->data.bridge.stp = -1; + if ((tmp = virXMLPropString(bridge, "stp"))) { + if (STREQ(tmp, "on")) { + def->data.bridge.stp = 1; + } else if (STREQ(tmp, "off")) { + def->data.bridge.stp = 0; + } else { + virReportError(VIR_ERR_XML_ERROR, + _("bridge interface stp should be on or off got %s"), + tmp); + goto error; + } + } + def->data.bridge.delay = virXMLPropString(bridge, "delay"); + nbItf = virXPathNodeSet("./interface", ctxt, &interfaces); if (nbItf < 0) { ret = -1; @@ -517,6 +533,7 @@ virInterfaceDefParseBridge(virInterfaceDefPtr def, } error: + VIR_FREE(tmp); VIR_FREE(interfaces); ctxt->node = bridge; return ret; @@ -751,23 +768,6 @@ virInterfaceDefParseXML(xmlXPathContextPtr ctxt, int parentIfType) "%s", _("bridge interface misses the bridge element")); goto error; } - tmp = virXMLPropString(bridge, "stp"); - def->data.bridge.stp = -1; - if (tmp != NULL) { - if (STREQ(tmp, "on")) { - def->data.bridge.stp = 1; - } else if (STREQ(tmp, "off")) { - def->data.bridge.stp = 0; - } else { - virReportError(VIR_ERR_XML_ERROR, - _("bridge interface stp should be on or off got %s"), - tmp); - VIR_FREE(tmp); - goto error; - } - VIR_FREE(tmp); - } - def->data.bridge.delay = virXMLPropString(bridge, "delay"); ctxt->node = bridge; if (virInterfaceDefParseBridge(def, ctxt) < 0) goto error; -- 1.9.3 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list