[libvirt] [PATCH 3/6] net: Move creation of dnsmasq hosts file to function starting dnsmasq
Laine Stump
laine at laine.org
Thu Oct 25 21:11:54 UTC 2012
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.
More information about the libvir-list
mailing list