[libvirt] [PATCH 3/5] interface: move parsing of bridge attributes into appropriate function

Laine Stump laine at laine.org
Thu Jun 19 10:48:33 UTC 2014


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




More information about the libvir-list mailing list