On 11/18/14 18:16, Nehal J Wani wrote: > This patch enables the helper program to detect event(s) triggered when there > is a change in lease length or expiry and client-id. This transfers complete > control of leases database to libvirt and obsoletes use of the lease database > file (<network-name>.leases). That file will not be created, read, or written. > This is achieved by adding the option --leasefile-ro to dnsmasq and passing a > custom env var to leaseshelper, which helps us map events related to leases > with their corresponding network bridges, no matter what the event be. > > Also, this requires the addition of a new non-lease entry in our custom lease > database: "server-duid". It is required to identify a DHCPv6 server. > > Now that dnsmasq doesn't maintain its own leases database, it relies on our > helper program to tell it about previous leases and server duid. Thus, this > patch makes our leases program honor an extra action: "init", in which it sends > the known info in a particular format to dnsmasq by printing it to stdout. > > --- > > This is compatible with libvirt 1.2.6 as only additions have been > introduced, and the old leases file (*.status) will still be supported. > > v4: * Removed extra data structures for segregating ipv4 and ipv6 leases. > > v3: * Add server-duid as an entry in the lease object for every ipv6 lease. > * Remove unnecessary variables and double copies. > * Take value from DNSMASQ_OLD_HOSTNAME if hostname is not known. > http://www.redhat.com/archives/libvir-list/2014-August/msg00028.html > > v2: http://www.redhat.com/archives/libvir-list/2014-July/msg01109.html > > v1: https://www.redhat.com/archives/libvir-list/2014-July/msg00568.html > > > --- > src/network/bridge_driver.c | 3 + > src/network/leaseshelper.c | 142 +++++++++++++++++++++++++++++++++++--------- > 2 files changed, 117 insertions(+), 28 deletions(-) > > diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c > index 6cb421c..6ecbc37 100644 > --- a/src/network/bridge_driver.c > +++ b/src/network/bridge_driver.c > @@ -1280,7 +1280,10 @@ networkBuildDhcpDaemonCommandLine(virNetworkObjPtr network, > > cmd = virCommandNew(dnsmasqCapsGetBinaryPath(caps)); > virCommandAddArgFormat(cmd, "--conf-file=%s", configfile); > + /* Libvirt gains full control of leases database */ > + virCommandAddArgFormat(cmd, "--leasefile-ro"); One other thing that is worrying is that if you specify this option and the leaseshelper implements the init operation we'd no longer load a possibly pre-existing leases file that was present previous to the upgrade to this handling. This would cause the guests to be re-addressed from the moment of the upgrade. (exactly once). The question here is. Do we care about this slight breakage? I'm not entirely decided yet. I probably wouldn't care. A possible workaround will be to check whether the old leases file exists and refrain from starting with the --leasefile-ro option in that case. > virCommandAddArgFormat(cmd, "--dhcp-script=%s", leaseshelper_path); > + virCommandAddEnvPair(cmd, "VIR_BRIDGE_NAME", network->def->bridge); > > *cmdout = cmd; > ret = 0; Thanks for opinions. Peter
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list