From 23ae3fe4256ba634babc6818b8cb7bbd3664a95a Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Thu, 25 Oct 2012 14:41:28 +0200 Subject: [PATCH] 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 6f9fcdadd2..3b2b505147 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; @@ -2742,7 +2756,6 @@ static virNetworkPtr networkDefine(virConnectPtr conn, const char *xml) { virNetworkObjPtr network = NULL; virNetworkPtr ret = NULL; int ii; - dnsmasqContext* dctx = NULL; networkDriverLock(driver); @@ -2799,21 +2812,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); -- GitLab