On Sat, Jun 28, 2014 at 05:06:26AM +0530, Nehal J Wani wrote:
In the current version of dnsmasq, the leases helper script/program
specified by --dhcp-script to dnsmasq is invoked on three events,
'add', 'old', 'del'. In short,
add: -> a new lease has to be added to db
del: -> a lease has to be deleted from db
old:-> if lease has changed
Now, the lease can be considered to be changed in 2 ways.
[standard-change] The change could be to the associated hostname or MAC address
[auxiliary-change] The change associated with expiry time or clientid
When only --dhcp-script is set, 'old' events are sent only for
standard-lease changes. But when --dhcp-script is set along with
--leasefile-ro, 'old' events are sent for any change in the lease.
So, right now, if a lease is renewed, the reflected change doesn't
appear in our JSON formatted lease database <interface-name>.status.
We have the following options with this:
(i) We can simply add the --leasefile-ro option. But in that case, the
leases file database which is generated by dnsmasq by the name
<network-name>.leases will cease to exist. It won't contain any lease
information. All lease database handling will be done by our
leaseshelper. Note: this option given a lot of information which is
not stored in <network-name>.leases file.
What purpose does the <network-name>.leases file that dnsmasq creates
serve ? If our own leases file is able to provide any funtionality
that is missing due to the loss of <network-name>.leases, then this
option seems like the best.
(ii) We ask the dnsmasq developer(s) to add an extra command line
option to enable auxiliary changes in lease to be propagated to
leaseshelper via 'old' events. I had a small conversation with Simon
Kelley, and he said:
"Yes. For that application (libvirt), you clearly don't want a
third-party patch. At very least I'd be willing to add a boolean
option to dnsmasq which enables "old" events when the lease expiry
time changes, independent of leasefile-ro."
If we do this, then can retain <network-name>.leases and have our helper too.
I'd prefer (i) since that lets libvirt work properly with existing
dnsmasq versions which are deployed.
Regards,
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|