🐤 Sync 2026-10-27 12:12:04

This commit is contained in:
github-actions[bot] committed 2026-10-27 12:12:04 +08:00
1 parent 8b63d5d4a9
commit e646593c56
30 files changed
+1281 -416

No files matched your search

@@ -61,6 +61,12 @@ const callLuciWirelessDevices = rpc.declare({
expect: { '': {} }
});
const callWirelessStatus = rpc.declare({
object: 'network.wireless',
method: 'status',
expect: { '': {} }
});
const callLuciBoardJSON = rpc.declare({
object: 'luci-rpc',
method: 'getBoardJSON'
@@ -1448,6 +1454,27 @@ Network = baseclass.extend(/** @lends LuCI.network.prototype */ {
}, this));
},
/** Return configured QCA VAP names reported by netifd, without driver probes. */
getWifiRuntimeIfnames() {
// netifd supplies VAP names without probing disabled radios or creating VAPs.
return L.resolveDefault(callWirelessStatus(), {}).then((radios) => {
const names = Object.create(null);
for (const iface of uci.sections('wireless', 'wifi-iface')) {
const radio = radios[iface.device];
if (!radio || !['qcawifi', 'qcawificfg80211'].includes(uci.get('wireless', iface.device, 'type')))
continue;
names[iface['.name']] = null;
if (!radio.up || radio.disabled || iface.disabled == '1' ||
uci.get('wireless', iface.device, 'disabled') == '1')
continue;
const live = (radio.interfaces || []).find((net) => net.section == iface['.name']);
if (live?.ifname)
names[iface['.name']] = live.ifname;
}
return names;
});
},
/**
* Obtain configured radio devices without querying runtime state.
*