From: Konstantin Glukhov Date: Wed, 11 Mar 2026 06:16:30 +0000 (+0900) Subject: luci-base: network.js: de-dup ifc IPv6 addresses X-Git-Url: http://git.99rst.org/?a=commitdiff_plain;h=e839b9d18d4d67cefed0e5925199eeda38cb4b91;p=openwrt-luci.git luci-base: network.js: de-dup ifc IPv6 addresses De-dup IPv6 addresses before getIP6Addrs() returns an array from "ipv6-address" and "ipv6-prefix-assignment" ubus data. This can happen when the local address derived from a delegated prefix matches an explicitly configured IPv6 address. Use a Set to ensure that duplicate entries are filtered out before returning the address list. Signed-off-by: Konstantin Glukhov --- diff --git a/modules/luci-base/htdocs/luci-static/resources/network.js b/modules/luci-base/htdocs/luci-static/resources/network.js index 67ed3bf522..4d519b002a 100644 --- a/modules/luci-base/htdocs/luci-static/resources/network.js +++ b/modules/luci-base/htdocs/luci-static/resources/network.js @@ -2322,21 +2322,21 @@ Protocol = baseclass.extend(/** @lends LuCI.network.Protocol.prototype */ { */ getIP6Addrs() { let addrs = this._ubus('ipv6-address'); - const rv = []; + const rv = new Set(); if (Array.isArray(addrs)) for (let a of addrs) if (L.isObject(a)) - rv.push('%s/%d'.format(a.address, a.mask)); + rv.add('%s/%d'.format(a.address, a.mask)); addrs = this._ubus('ipv6-prefix-assignment'); if (Array.isArray(addrs)) for (let a of addrs) if (L.isObject(a) && L.isObject(a['local-address'])) - rv.push('%s/%d'.format(a['local-address'].address, a['local-address'].mask)); + rv.add('%s/%d'.format(a['local-address'].address, a['local-address'].mask)); - return rv; + return Array.from(rv); }, /**