]> xenbits.xensource.com Git - libvirt.git/commitdiff
bridge_driver: Don't define network if XML contains more IPv4 adreses.
authorPeter Krempa <pkrempa@redhat.com>
Wed, 30 Nov 2011 14:26:25 +0000 (15:26 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 1 Dec 2011 08:35:43 +0000 (09:35 +0100)
Only one IPv4 DHCP definition is supported. Originally the code checked
for a multiple definition and returned an error, but the new domain
definition was already added to networks. This patch moves the check
before the newly defined network is added to active networks.

 *src/network/bridge_driver.c: networkDefine(): - move multiple IPv4
                                                  addresses check before
                                                  definition is used.

src/network/bridge_driver.c

index c49c25b844b50f55914d7ae8a998b500b645f398..63338a2ebf610b77c18e8785f43783136d994ce8 100644 (file)
@@ -2278,19 +2278,6 @@ static virNetworkPtr networkDefine(virConnectPtr conn, const char *xml) {
         virNetworkSetBridgeMacAddr(def);
     }
 
-    if (!(network = virNetworkAssignDef(&driver->networks,
-                                        def)))
-        goto cleanup;
-    freeDef = false;
-
-    network->persistent = 1;
-
-    if (virNetworkSaveConfig(driver->networkConfigDir, def) < 0) {
-        virNetworkRemoveInactive(&driver->networks, network);
-        network = NULL;
-        goto cleanup;
-    }
-
     /* We only support dhcp on one IPv4 address per defined network */
     for (ii = 0;
          (ipdef = virNetworkDefGetIpByIndex(def, AF_UNSPEC, ii));
@@ -2307,6 +2294,20 @@ static virNetworkPtr networkDefine(virConnectPtr conn, const char *xml) {
             }
         }
     }
+
+    if (!(network = virNetworkAssignDef(&driver->networks,
+                                        def)))
+        goto cleanup;
+    freeDef = false;
+
+    network->persistent = 1;
+
+    if (virNetworkSaveConfig(driver->networkConfigDir, def) < 0) {
+        virNetworkRemoveInactive(&driver->networks, network);
+        network = NULL;
+        goto cleanup;
+    }
+
     if (ipv4def) {
         dctx = dnsmasqContextNew(def->name, DNSMASQ_STATE_DIR);
         if (dctx == NULL ||