mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-11-01 19:07:47 +00:00
hostapd: fix mac specific multi-psk
Fixes: WIFI-14095 Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user