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@xxxxxxxxxx> >> --- >> 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@xxxxxxxxxx>, RHCE Virtualization Team (xen userspace), Red Hat -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list