From dbafa93e81af0ede914875b2eeeb94179b7eef44 Mon Sep 17 00:00:00 2001 From: e9hack Date: Sun, 3 Nov 2019 09:05:37 +0100 Subject: rpcd-mod-luci: handle DHCPv6 leases in dnsmasq lease file For DHCPv6, the second entry of a lease is the IAID. The parsing code expects a MAC instead of a IAID. Reported-by: Hartmut Birr Signed-off-by: Jo-Philipp Wich --- libs/rpcd-mod-luci/src/luci.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'libs/rpcd-mod-luci/src') diff --git a/libs/rpcd-mod-luci/src/luci.c b/libs/rpcd-mod-luci/src/luci.c index 245ca636be..91f6798d79 100644 --- a/libs/rpcd-mod-luci/src/luci.c +++ b/libs/rpcd-mod-luci/src/luci.c @@ -435,9 +435,6 @@ lease_next(void) ea = ether_aton(p); - if (!ea) - continue; - p = strtok(NULL, " \t\n"); if (p && inet_pton(AF_INET6, p, &e.addr.in6)) @@ -447,6 +444,9 @@ lease_next(void) else continue; + if (!ea && e.af != AF_INET6) + continue; + e.hostname = strtok(NULL, " \t\n"); e.duid = strtok(NULL, " \t\n"); @@ -459,7 +459,11 @@ lease_next(void) if (!strcmp(e.duid, "*")) e.duid = NULL; - e.mac = *ea; + if (!ea && e.duid) + ea = duid2ea(e.duid); + + if (ea) + e.mac = *ea; return &e; } -- cgit v1.2.3