--- This patch depends on https://www.redhat.com/archives/libvir-list/2011-June/msg01423.html src/network/bridge_driver.c | 23 +++++++++++++---------- src/util/dnsmasq.c | 10 ++++------ src/util/dnsmasq.h | 4 ++-- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index f48fdcb..f54a966 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -446,7 +446,8 @@ networkBuildDnsmasqHostsfile(dnsmasqContext *dctx, for (i = 0; i < ipdef->nhosts; i++) { virNetworkDHCPHostDefPtr host = &(ipdef->hosts[i]); if ((host->mac) && VIR_SOCKET_HAS_ADDR(&host->ip)) - dnsmasqAddDhcpHost(dctx, host->mac, &host->ip, host->name); + if (dnsmasqAddDhcpHost(dctx, host->mac, &host->ip, host->name) < 0) + return -1; } if (dnsdef) { @@ -454,7 +455,8 @@ networkBuildDnsmasqHostsfile(dnsmasqContext *dctx, virNetworkDNSHostsDefPtr host = &(dnsdef->hosts[i]); if (VIR_SOCKET_HAS_ADDR(&host->ip)) { for (j = 0; j < host->nnames; j++) - dnsmasqAddHost(dctx, &host->ip, host->names[j]); + if (dnsmasqAddHost(dctx, &host->ip, host->names[j]) < 0) + return -1; } } } @@ -600,14 +602,15 @@ networkBuildDnsmasqArgv(virNetworkObjPtr network, if (ipdef->nranges || ipdef->nhosts) virCommandAddArg(cmd, "--dhcp-no-override"); - if (networkBuildDnsmasqHostsfile(dctx, ipdef, network->def->dns) >= 0) { - if (dctx->hostsfile->nhosts) - virCommandAddArgPair(cmd, "--dhcp-hostsfile", - dctx->hostsfile->path); - if (dctx->addnhostsfile->nhosts) - virCommandAddArgPair(cmd, "--addn-hosts", - dctx->addnhostsfile->path); - } + if (networkBuildDnsmasqHostsfile(dctx, ipdef, network->def->dns) < 0) + goto cleanup; + + if (dctx->hostsfile->nhosts) + virCommandAddArgPair(cmd, "--dhcp-hostsfile", + dctx->hostsfile->path); + if (dctx->addnhostsfile->nhosts) + virCommandAddArgPair(cmd, "--addn-hosts", + dctx->addnhostsfile->path); if (ipdef->tftproot) { virCommandAddArgList(cmd, "--enable-tftp", diff --git a/src/util/dnsmasq.c b/src/util/dnsmasq.c index 4bdbb44..5baa34f 100644 --- a/src/util/dnsmasq.c +++ b/src/util/dnsmasq.c @@ -502,14 +502,13 @@ dnsmasqContextFree(dnsmasqContext *ctx) * * Add dhcp-host entry. */ -void +int dnsmasqAddDhcpHost(dnsmasqContext *ctx, const char *mac, virSocketAddr *ip, const char *name) { - if (ctx->hostsfile) - hostsfileAdd(ctx->hostsfile, mac, ip, name); + return hostsfileAdd(ctx->hostsfile, mac, ip, name); } /* @@ -521,13 +520,12 @@ dnsmasqAddDhcpHost(dnsmasqContext *ctx, * Add additional host entry. */ -void +int dnsmasqAddHost(dnsmasqContext *ctx, virSocketAddr *ip, const char *name) { - if (ctx->addnhostsfile) - addnhostsAdd(ctx->addnhostsfile, ip, name); + return addnhostsAdd(ctx->addnhostsfile, ip, name); } /** diff --git a/src/util/dnsmasq.h b/src/util/dnsmasq.h index 62f6f38..d16a54f 100644 --- a/src/util/dnsmasq.h +++ b/src/util/dnsmasq.h @@ -68,11 +68,11 @@ typedef struct dnsmasqContext * dnsmasqContextNew(const char *network_name, const char *config_dir); void dnsmasqContextFree(dnsmasqContext *ctx); -void dnsmasqAddDhcpHost(dnsmasqContext *ctx, +int dnsmasqAddDhcpHost(dnsmasqContext *ctx, const char *mac, virSocketAddr *ip, const char *name); -void dnsmasqAddHost(dnsmasqContext *ctx, +int dnsmasqAddHost(dnsmasqContext *ctx, virSocketAddr *ip, const char *name); int dnsmasqSave(const dnsmasqContext *ctx); -- 1.7.0.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list