luci-mod-dashboard: Fill gateway info with the connection with lowest metric.
authorMartin Pecka <peckama2@fel.cvut.cz>
Wed, 10 Apr 2024 12:22:53 +0000 (14:22 +0200)
committerPaul Donald <itsascambutmailmeanyway+github@gmail.com>
Sat, 27 Apr 2024 00:10:35 +0000 (02:10 +0200)
Signed-off-by: Martin Pecka <peckama2@fel.cvut.cz>
modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js

index c43e2ca544ad071cdbef9612ff25198d27f3e493..1667eca6ff56eb62c06932f36ace8e7b72c8b8b2 100644 (file)
@@ -142,27 +142,35 @@ return baseclass.extend({
 
        renderUpdateWanData: function(data, v6) {
 
+               var min_metric = 2000000000;
+               var min_metric_i = 0;
                for (var i = 0; i < data.length; i++) {
-                        var ifc = data[i];
-
-                        if (v6) {
-                               var uptime = ifc.getUptime();
-                               this.params.internet.v6.uptime.value = (uptime > 0) ? '%t'.format(uptime) : '-';
-                               this.params.internet.v6.ipprefixv6.value =  ifc.getIP6Prefix() || '-';
-                               this.params.internet.v6.gatewayv6.value =  ifc.getGateway6Addr() || '-';
-                               this.params.internet.v6.protocol.value=  ifc.getI18n() || E('em', _('Not connected'));
-                               this.params.internet.v6.addrsv6.value = ifc.getIP6Addrs() || [ '-' ];
-                               this.params.internet.v6.dnsv6.value = ifc.getDNS6Addrs() || [ '-' ];
-                               this.params.internet.v6.connected.value = ifc.isUp();
-                        } else {
-                               var uptime = ifc.getUptime();
-                               this.params.internet.v4.uptime.value = (uptime > 0) ? '%t'.format(uptime) : '-';
-                               this.params.internet.v4.protocol.value=  ifc.getI18n() || E('em', _('Not connected'));
-                               this.params.internet.v4.gatewayv4.value =  ifc.getGatewayAddr() || '0.0.0.0';
-                               this.params.internet.v4.connected.value = ifc.isUp();
-                               this.params.internet.v4.addrsv4.value = ifc.getIPAddrs() || [ '-'];
-                               this.params.internet.v4.dnsv4.value = ifc.getDNSAddrs() || [ '-' ];
-                        }
+                       var metric = data[i].getMetric();
+                       if (metric < min_metric) {
+                               min_metric = metric;
+                               min_metric_i = i;
+                       }
+                }
+
+               var ifc = data[min_metric_i];
+
+               if (v6) {
+               var uptime = ifc.getUptime();
+                       this.params.internet.v6.uptime.value = (uptime > 0) ? '%t'.format(uptime) : '-';
+                       this.params.internet.v6.ipprefixv6.value =  ifc.getIP6Prefix() || '-';
+                       this.params.internet.v6.gatewayv6.value =  ifc.getGateway6Addr() || '-';
+                       this.params.internet.v6.protocol.value=  ifc.getI18n() || E('em', _('Not connected'));
+                       this.params.internet.v6.addrsv6.value = ifc.getIP6Addrs() || [ '-' ];
+                       this.params.internet.v6.dnsv6.value = ifc.getDNS6Addrs() || [ '-' ];
+                       this.params.internet.v6.connected.value = ifc.isUp();
+               } else {
+                       var uptime = ifc.getUptime();
+                       this.params.internet.v4.uptime.value = (uptime > 0) ? '%t'.format(uptime) : '-';
+                       this.params.internet.v4.protocol.value=  ifc.getI18n() || E('em', _('Not connected'));
+                       this.params.internet.v4.gatewayv4.value =  ifc.getGatewayAddr() || '0.0.0.0';
+                       this.params.internet.v4.connected.value = ifc.isUp();
+                       this.params.internet.v4.addrsv4.value = ifc.getIPAddrs() || [ '-'];
+                       this.params.internet.v4.dnsv4.value = ifc.getDNSAddrs() || [ '-' ];
                }
        },