aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Krempa <pkrempa@redhat.com>2011-11-30 15:26:25 +0100
committerPeter Krempa <pkrempa@redhat.com>2011-12-01 09:35:43 +0100
commit0763a26dfef240e301e19b9c563c10462e72f255 (patch)
tree57c5d65e88f7c028e302d285e244fd8443552aac /src/network
parentspec: mark directories in /var/run as ghosts (diff)
downloadlibvirt-0763a26dfef240e301e19b9c563c10462e72f255.tar.gz
libvirt-0763a26dfef240e301e19b9c563c10462e72f255.tar.bz2
libvirt-0763a26dfef240e301e19b9c563c10462e72f255.zip
bridge_driver: Don't define network if XML contains more IPv4 adreses.
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.
Diffstat (limited to 'src/network')
-rw-r--r--src/network/bridge_driver.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index c49c25b84..63338a2eb 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -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 ||