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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list