luci-base: network.js: add link status information accessors
authorJo-Philipp Wich <jo@mein.io>
Sat, 12 Jun 2021 16:41:40 +0000 (18:41 +0200)
committerJo-Philipp Wich <jo@mein.io>
Sat, 12 Jun 2021 16:42:37 +0000 (18:42 +0200)
Fixes: #5121
Fixes: 8c71b1d01e ("luci-mod-network: add port status to bridge vlan filter matrix")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-base/htdocs/luci-static/resources/network.js

index 39b8b2dc853c923b9acbcb803205e7d96f725ddd..17dd055e2520a5c914f2ac2a9d67c5ef3cd88ae3 100644 (file)
@@ -393,6 +393,7 @@ function initNetworkState(refresh) {
                                        name:     name,
                                        rawname:  name,
                                        flags:    dev.flags,
+                                       link:     dev.link,
                                        stats:    dev.stats,
                                        macaddr:  dev.mac,
                                        type:     dev.type,
@@ -3133,6 +3134,47 @@ Device = baseclass.extend(/** @lends LuCI.network.Device.prototype */ {
                return (stat != null ? stat.rx_packets || 0 : 0);
        },
 
+       /**
+        * Get the carrier state of the network device.
+        *
+        * @returns {boolean}
+        * Returns true if the device has a carrier, e.g. when a cable is
+        * inserted into an ethernet port of false if there is none.
+        */
+       getCarrier: function() {
+               var link = this._devstate('link');
+               return (link != null ? link.carrier || false : false);
+       },
+
+       /**
+        * Get the current link speed of the network device if available.
+        *
+        * @returns {number|null}
+        * Returns the current speed of the network device in Mbps. If the
+        * device supports no ethernet speed levels, null is returned.
+        * If the device supports ethernet speeds but has no carrier, -1 is
+        * returned.
+        */
+       getSpeed: function() {
+               var link = this._devstate('link');
+               return (link != null ? link.speed || null : null);
+       },
+
+       /**
+        * Get the current duplex mode of the network device if available.
+        *
+        * @returns {string|null}
+        * Returns the current duplex mode of the network device. Returns
+        * either "full" or "half" if the device supports duplex modes or
+        * null if the duplex mode is unknown or unsupported.
+        */
+       getDuplex: function() {
+               var link = this._devstate('link'),
+                   duplex = link ? link.duplex : null;
+
+               return (duplex != 'unknown') ? duplex : null;
+       },
+
        /**
         * Get the primary logical interface this device is assigned to.
         *