summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorhitech95 <nicveronese@gmail.com>2024-04-27 11:25:42 +0200
committerPaul Donald <newtwen+github@gmail.com>2024-05-14 20:06:18 +0200
commit2bb1e06b52ea97926317e4f01ef24afb2cc115fb (patch)
tree43c49dff0ea6266a6180620ff8952e578cbe4599
parente01f393924faaf62238c0e8eaa5b1a07723125dd (diff)
luci-base: return ipv6 lease time from getExpiry()
This commit introduces a streamlined method for retrieving lease time information on IPv6 interfaces. While IPv4 interfaces typically have a single lease time (available in the interface data), IPv6 interfaces commonly feature multiple lease times due to factors like delegated prefixes or multiple /64 subnet. Users typically receive only one prefix delegation from their ISP, leading this PR to the retrieval of lease time from the first available prefix or IPv6 address. To enhance usability and provide users with a more comprehensive view of lease time information, however, alternative approaches should be discussed. Suggestions include returning an array of lease times or aggregating the various possible values using methods like min or max. These enhancements aim to improve the clarity the lease time management on IPv6 interfaces. Signed-off-by: hitech95 <nicveronese@gmail.com>
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/network.js25
1 files changed, 20 insertions, 5 deletions
diff --git a/modules/luci-base/htdocs/luci-static/resources/network.js b/modules/luci-base/htdocs/luci-static/resources/network.js
index 2a70fe9a04..b6b996818a 100644
--- a/modules/luci-base/htdocs/luci-static/resources/network.js
+++ b/modules/luci-base/htdocs/luci-static/resources/network.js
@@ -2141,12 +2141,27 @@ Protocol = baseclass.extend(/** @lends LuCI.network.Protocol.prototype */ {
*/
getExpiry: function() {
var u = this._ubus('uptime'),
- d = this._ubus('data');
+ d = this._ubus('data'),
+ v6_prefixes = this._ubus('ipv6-prefix'),
+ v6_addresses = this._ubus('ipv6-address');
- if (typeof(u) == 'number' && d != null &&
- typeof(d) == 'object' && typeof(d.leasetime) == 'number') {
- var r = d.leasetime - (u % d.leasetime);
- return (r > 0 ? r : 0);
+ if (typeof(u) == 'number' && d != null) {
+
+ // DHCPv4 or leasetime in data
+ if(typeof(d) == 'object' && typeof(d.leasetime) == 'number') {
+ var r = d.leasetime - (u % d.leasetime);
+ return (r > 0 ? r : 0);
+ }
+
+ // DHCPv6, we can have multiple IPs and prefixes
+ if (Array.isArray(v6_prefixes) || Array.isArray(v6_addresses)) {
+ var prefixes = [...v6_prefixes, ...v6_addresses];
+
+ if(prefixes.length && typeof(prefixes[0].valid) == 'number') {
+ var r = prefixes[0].valid;
+ return (r > 0 ? r : 0);
+ }
+ }
}
return -1;