[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] [PATCH 3/6] net: Move creation of dnsmasq hosts file to function starting dnsmasq



The hosts file was created in the network definition function. This
patch moves the place the file is being created to the point where
dnsmasq is being started.
---
 src/network/bridge_driver.c | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index 43a5540..976c132 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -846,6 +846,8 @@ networkStartDhcpDaemon(virNetworkObjPtr network)
     char *pidfile = NULL;
     int ret = -1;
     dnsmasqContext *dctx = NULL;
+    virNetworkIpDefPtr ipdef;
+    int i;

     if (!virNetworkDefGetIpByIndex(network->def, AF_UNSPEC, 0)) {
         /* no IPv6 addresses, so we don't need to run radvd */
@@ -886,6 +888,18 @@ networkStartDhcpDaemon(virNetworkObjPtr network)
     if (ret < 0)
         goto cleanup;

+    /* populate dnsmasq hosts file */
+    for (i = 0; (ipdef = virNetworkDefGetIpByIndex(network->def, AF_UNSPEC, i)); i++) {
+        if (VIR_SOCKET_ADDR_IS_FAMILY(&ipdef->address, AF_INET) &&
+            (ipdef->nranges || ipdef->nhosts)) {
+            if (networkBuildDnsmasqHostsfile(dctx, ipdef,
+                                             network->def->dns) < 0)
+                goto cleanup;
+
+            break;
+        }
+    }
+
     ret = dnsmasqSave(dctx);
     if (ret < 0)
         goto cleanup;
@@ -2724,7 +2738,6 @@ static virNetworkPtr networkDefine(virConnectPtr conn, const char *xml) {
     virNetworkObjPtr network = NULL;
     virNetworkPtr ret = NULL;
     int ii;
-    dnsmasqContext* dctx = NULL;

     networkDriverLock(driver);

@@ -2781,21 +2794,12 @@ static virNetworkPtr networkDefine(virConnectPtr conn, const char *xml) {
         goto cleanup;
     }

-    if (ipv4def) {
-        dctx = dnsmasqContextNew(def->name, DNSMASQ_STATE_DIR);
-        if (dctx == NULL ||
-            networkBuildDnsmasqHostsfile(dctx, ipv4def, def->dns) < 0 ||
-            dnsmasqSave(dctx) < 0)
-            goto cleanup;
-    }
-
     VIR_INFO("Defining network '%s'", def->name);
     ret = virGetNetwork(conn, def->name, def->uuid);

 cleanup:
     if (freeDef)
        virNetworkDefFree(def);
-    dnsmasqContextFree(dctx);
     if (network)
         virNetworkObjUnlock(network);
     networkDriverUnlock(driver);
-- 
1.7.12.4


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]