luci-mod-status: support DUID%IAID for static leases

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 <david@hardeman.nu>
This commit is contained in:
David Härdeman
2025-10-05 13:27:29 +02:00
committed by Paul Donald
parent 431787af0c
commit 85cb4bbd82

View 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));