[libvirt] [PATCH 2/4] Allow empty bridges in interface xml.

Laine Stump laine at laine.org
Sat Jan 2 01:40:24 UTC 2010


---
 src/conf/interface_conf.c |   32 +++++++++++++++++---------------
 1 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/src/conf/interface_conf.c b/src/conf/interface_conf.c
index ca82208..d7821e7 100644
--- a/src/conf/interface_conf.c
+++ b/src/conf/interface_conf.c
@@ -557,28 +557,30 @@ virInterfaceDefParseBridge(virConnectPtr conn, virInterfaceDefPtr def,
 
     bridge = ctxt->node;
     nbItf = virXPathNodeSet(conn, "./interface", ctxt, &interfaces);
-    if (nbItf <= 0) {
+    if (nbItf < 0) {
         virInterfaceReportError(conn, VIR_ERR_XML_ERROR,
-                                "%s", _("bridge has no interfaces"));
+                                "%s", _("bridge interfaces"));
         ret = -1;
         goto error;
     }
-    if (VIR_ALLOC_N(def->data.bridge.itf, nbItf) < 0) {
-        virReportOOMError(conn);
-        ret = -1;
-        goto error;
-    }
-    def->data.bridge.nbItf = nbItf;
-
-    for (i = 0; i < nbItf;i++) {
-        ctxt->node = interfaces[i];
-        itf = virInterfaceDefParseBareInterface(conn, ctxt, 0);
-        if (itf == NULL) {
+    if (nbItf > 0) {
+        if (VIR_ALLOC_N(def->data.bridge.itf, nbItf) < 0) {
+            virReportOOMError(conn);
             ret = -1;
-            def->data.bridge.nbItf = i;
             goto error;
         }
-        def->data.bridge.itf[i] = itf;
+        def->data.bridge.nbItf = nbItf;
+
+        for (i = 0; i < nbItf;i++) {
+            ctxt->node = interfaces[i];
+            itf = virInterfaceDefParseBareInterface(conn, ctxt, 0);
+            if (itf == NULL) {
+                ret = -1;
+                def->data.bridge.nbItf = i;
+                goto error;
+            }
+            def->data.bridge.itf[i] = itf;
+        }
     }
 
 error:
-- 
1.6.6.rc2.5.g49666




More information about the libvir-list mailing list