luci-base: network.js: Show clients also from wifi VLANs.

Iterate through VLANs to get the clients connected on configured wifi
VLANs (as configured by `wifi-vlan` sections in `wireless` configuration).

This is a minimum support for VLANs on wireless network. The VLAN name is
nowhere displayed, but at least clients using VLANs are visible.

Signed-off-by: Oldřich Jedlička <oldium.pro@gmail.com>
This commit is contained in:
Oldřich Jedlička 2020-10-05 22:42:37 +02:00
parent c2b22afb9a
commit 12e50de9db

View file

@ -3570,6 +3570,24 @@ WifiNetwork = baseclass.extend(/** @lends LuCI.network.WifiNetwork.prototype */
return ifname;
},
/**
* Get the Linux VLAN network device names.
*
* @returns {string[]}
* Returns the current Linux VLAN network device name as resolved
* from `ubus` runtime information or empty array if this network
* has no associated VLAN network devices.
*/
getVlanIfnames: function() {
var vlans = L.toArray(this.ubus('net', 'vlans')),
ifnames = [];
for (var i = 0; i < vlans.length; i++)
ifnames.push(vlans[i]['ifname']);
return ifnames;
},
/**
* Get the name of the corresponding wifi radio device.
*
@ -3880,7 +3898,15 @@ WifiNetwork = baseclass.extend(/** @lends LuCI.network.WifiNetwork.prototype */
* with this network.
*/
getAssocList: function() {
return callIwinfoAssoclist(this.getIfname());
var tasks = [];
var ifnames = [ this.getIfname() ].concat(this.getVlanIfnames());
for (var i = 0; i < ifnames.length; i++)
tasks.push(callIwinfoAssoclist(ifnames[i]));
return Promise.all(tasks).then(function(values) {
return Array.prototype.concat.apply([], values);
});
},
/**