luci-mod-status: support DUID%IAID for static leases
authorDavid Härdeman <[email protected]>
Sun, 5 Oct 2025 11:27:29 +0000 (13:27 +0200)
committerPaul Donald <[email protected]>
Fri, 24 Oct 2025 18:23:34 +0000 (20:23 +0200)
Add support for creating DUID%IAID style static leases in luci-mod-status.

Also, this contains a bugfix. lease.ip6addrs[i] is a string of the format
"<ipv6addr>/128", which validation.parseIPv6() doesn't like (it expects an IPv6
addr without the "/128" suffix).

Signed-off-by: David Härdeman <[email protected]>
modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js

index 7804cb72f712a195d6d821ad72ac3b7575fd10ee..aa03bb9ef2938b3e23b0d0f244146f3ab74c2cc1 100644 (file)
@@ -52,10 +52,14 @@ return baseclass.extend({
                ev.currentTarget.blur();
 
                var cfg = uci.add('dhcp', 'host'),
-                   ip6arr = lease.ip6addrs[0] ? validation.parseIPv6(lease.ip6addrs[0]) : null;
+                   ip6arr = lease.ip6addrs[0] ? validation.parseIPv6(lease.ip6addrs[0].replace(/\/128$/,'')) : null,
+                   duid_iaid = lease.duid.toUpperCase();
+
+               if (lease.iaid)
+                       duid_iaid += '%' + lease.iaid;
 
                uci.set('dhcp', cfg, 'name', lease.hostname);
-               uci.set('dhcp', cfg, 'duid', lease.duid.toUpperCase());
+               uci.set('dhcp', cfg, 'duid', duid_iaid);
                uci.set('dhcp', cfg, 'mac', [lease.macaddr]);
                if (ip6arr)
                        uci.set('dhcp', cfg, 'hostid', (ip6arr[6] * 0xFFFF + ip6arr[7]).toString(16));