
On 04/28/2011 03:31 AM, Laine Stump wrote:
Coming back to this now that I see how it's being used...
On 04/01/2011 06:45 AM, Michal Novotny wrote:
Hi, this is the patch to introduce the internal infrastructure for additional hosts for network bridge driver using the addnhosts* API functions.
This is necessary for next part of the patch to support DNS hosts definition in the network XML description.
Michal
Signed-off-by: Michal Novotny<minovotn@redhat.com> --- src/libvirt_private.syms | 1 + src/network/bridge_driver.c | 3 + src/util/dnsmasq.c | 266 ++++++++++++++++++++++++++++++++++++++++++- src/util/dnsmasq.h | 22 ++++- 4 files changed, 287 insertions(+), 5 deletions(-)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 65a86d3..73c3f77 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -186,6 +186,7 @@ virUnrefStream;
# dnsmasq.h dnsmasqAddDhcpHost; +dnsmasqAddHost; dnsmasqContextFree; dnsmasqContextNew; dnsmasqDelete; diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 41b14f9..4ad3143 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -589,6 +589,9 @@ networkBuildDnsmasqArgv(virNetworkObjPtr network, if (dctx->hostsfile->nhosts) virCommandAddArgPair(cmd, "--dhcp-hostsfile", dctx->hostsfile->path); + if (dctx->addnhostsfile->nhosts) + virCommandAddArgPair(cmd, "--addn-hosts", + dctx->addnhostsfile->path);
dnsmasqContextFree(dctx); } diff --git a/src/util/dnsmasq.c b/src/util/dnsmasq.c index be230e1..fee3b90 100644 --- a/src/util/dnsmasq.c +++ b/src/util/dnsmasq.c @@ -48,6 +48,7 @@
#define VIR_FROM_THIS VIR_FROM_NETWORK #define DNSMASQ_HOSTSFILE_SUFFIX "hostsfile" +#define DNSMASQ_ADDNHOSTSFILE_SUFFIX "addnhosts"
static void dhcphostFree(dnsmasqDhcpHost *host) @@ -56,6 +57,231 @@ dhcphostFree(dnsmasqDhcpHost *host) }
static void +addnhostFree(dnsmasqAddnHost *host) +{ + VIR_FREE(host->hostnames); You haven't freed host->hostnames[0], hostnames[1], etc; you've only freed the array of pointers.
+ VIR_FREE(host->ip); +} + +static void +addnhostsFree(dnsmasqAddnHostsfile *addnhostsfile) +{ + unsigned int i; + + if (addnhostsfile->hosts) { + for (i = 0; i< addnhostsfile->nhosts; i++) + addnhostFree(&addnhostsfile->hosts[i]); + + VIR_FREE(addnhostsfile->hosts); + + addnhostsfile->nhosts = 0; + } + + VIR_FREE(addnhostsfile->path); + + VIR_FREE(addnhostsfile); +} + +static int +addnhostsAdd(dnsmasqAddnHostsfile *addnhostsfile, + virSocketAddr *ip, You could also mark ip as a const.
Well, not really since I was unable to compile it anymore when prefixing it with const keyword. Michal -- Michal Novotny <minovotn@redhat.com>, RHCE Virtualization Team (xen userspace), Red Hat