hostapd: fix mac specific multi-psk

Fixes: WIFI-14095
Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
John Crispin
2024-09-02 11:51:29 +02:00
parent ba5074c57f
commit 9ac52bd77a

View File

@@ -156,7 +156,9 @@ function netifd_reload() {
let vid = stacfg.vid;
if (vid)
keydata.vlan = +vid;
let mac = stacfg.mac;
if (mac)
keydata.mac = mac;
ssid.keys[key] = keydata;
}
}
@@ -201,12 +203,23 @@ function sta_cache_entry_add(ssid, addr, key) {
return cache_data;
}
function ssid_psk(ssid) {
function ssid_psk(ssid, addr) {
ssid = ssids[ssid];
if (!ssid)
return [];
return keys(ssid.keys);
let specific = [];
let rest = [];
for (let k, v in ssid.keys)
if (v.mac == addr)
push(specific, k);
else if (!v.mac)
push(rest, k);
if (length(specific))
return specific;
return rest;
}
function sta_auth_psk(ifname, addr) {
@@ -218,7 +231,7 @@ function sta_auth_psk(ifname, addr) {
if (cache)
return [ cache.key ];
return ssid_psk(ssid);
return ssid_psk(ssid, addr);
}
function sta_auth_cache(ifname, addr, idx) {
@@ -230,7 +243,7 @@ function sta_auth_cache(ifname, addr, idx) {
if (cache)
return cache.data;
let psk = ssid_psk(ssid);
let psk = ssid_psk(ssid, addr);
if (!psk)
return;