On Tue, Jan 19, 2016 at 10:54:04AM +0100, Ján Tomko wrote:
For the actions ADD and OLD, split out creating the new lease
object,
along with processing all the program args and environment variables
that are only needed in this case.
---
src/network/leaseshelper.c | 156 ++++++++++++++++++++++++++-------------------
1 file changed, 91 insertions(+), 65 deletions(-)
diff --git a/src/network/leaseshelper.c b/src/network/leaseshelper.c
index eb1c0c7..547e1d8 100644
--- a/src/network/leaseshelper.c
+++ b/src/network/leaseshelper.c
@@ -281,22 +281,102 @@ virLeasePrintLeases(virJSONValuePtr leases_array_new,
return ret;
}
+static int
+virLeaseNewFromArgv(virJSONValuePtr *lease_ret,
+ int argc,
+ char **argv,
I would have a slight preference for keeping argc/argv only
referenced in main, and instead pass in the named parameters
for the bits you need here, but not the end of the world.
+ const char *ip,
+ const char *server_duid)
+{
+ virJSONValuePtr lease_new = NULL;
+ const char *clientid = virGetEnvAllowSUID("DNSMASQ_CLIENT_ID");
+ const char *exptime_tmp = virGetEnvAllowSUID("DNSMASQ_LEASE_EXPIRES");
+ const char *hostname = virGetEnvAllowSUID("DNSMASQ_SUPPLIED_HOSTNAME");
+ const char *iaid = virGetEnvAllowSUID("DNSMASQ_IAID");
+ const char *mac = NULL;
+ long long expirytime = 0;
+ char *exptime = NULL;
+ int ret = -1;
+
+ /* In case hostname is known, it is the 5th argument */
+ if (argc == 5)
+ hostname = argv[4];
+
+ /* In case hostname is still unknown, use the last known one */
+ if (!hostname)
+ hostname = virGetEnvAllowSUID("DNSMASQ_OLD_HOSTNAME");
+
+ /* Check if it is an IPv6 lease */
+ if (iaid) {
+ mac = virGetEnvAllowSUID("DNSMASQ_MAC");
+ clientid = argv[2];
+ } else {
+ mac = argv[2];
+ }
ACK
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 :|