On 10/25/2012 11:18 AM, Peter Krempa wrote: > 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); Makes sense to me. ACK. -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list