mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 06:57:57 +00:00
hostapd: use phy name for hostapd interfaces instead of first-bss ifname
Improves reliability in error handling Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
053f8f92d1
commit
a511480368
@ -26,7 +26,6 @@ function iface_remove(cfg)
|
||||
if (!cfg || !cfg.bss || !cfg.bss[0] || !cfg.bss[0].ifname)
|
||||
return;
|
||||
|
||||
hostapd.remove_iface(cfg.bss[0].ifname);
|
||||
for (let bss in cfg.bss)
|
||||
wdev_remove(bss.ifname);
|
||||
}
|
||||
@ -95,14 +94,14 @@ function iface_add(phy, config, phy_status)
|
||||
let config_inline = iface_gen_config(phy, config, !!phy_status);
|
||||
|
||||
let bss = config.bss[0];
|
||||
let ret = hostapd.add_iface(`bss_config=${bss.ifname}:${config_inline}`);
|
||||
let ret = hostapd.add_iface(`bss_config=${phy}:${config_inline}`);
|
||||
if (ret < 0)
|
||||
return false;
|
||||
|
||||
if (!phy_status)
|
||||
return true;
|
||||
|
||||
let iface = hostapd.interfaces[bss.ifname];
|
||||
let iface = hostapd.interfaces[phy];
|
||||
if (!iface)
|
||||
return false;
|
||||
|
||||
@ -127,6 +126,7 @@ function iface_restart(phydev, config, old_config)
|
||||
{
|
||||
let phy = phydev.name;
|
||||
|
||||
hostapd.remove_iface(phy);
|
||||
iface_remove(old_config);
|
||||
iface_remove(config);
|
||||
|
||||
@ -267,13 +267,13 @@ function iface_reload_config(phydev, config, old_config)
|
||||
if (!old_config.bss || !old_config.bss[0])
|
||||
return false;
|
||||
|
||||
let iface_name = old_config.bss[0].ifname;
|
||||
let iface = hostapd.interfaces[iface_name];
|
||||
let iface = hostapd.interfaces[phy];
|
||||
if (!iface) {
|
||||
hostapd.printf(`Could not find previous interface ${iface_name}`);
|
||||
return false;
|
||||
}
|
||||
|
||||
let iface_name = old_config.bss[0].ifname;
|
||||
let first_bss = hostapd.bss[iface_name];
|
||||
if (!first_bss) {
|
||||
hostapd.printf(`Could not find bss of previous interface ${iface_name}`);
|
||||
@ -512,8 +512,10 @@ function iface_set_config(phy, config)
|
||||
|
||||
hostapd.data.config[phy] = config;
|
||||
|
||||
if (!config)
|
||||
if (!config) {
|
||||
hostapd.remove_iface(phy);
|
||||
return iface_remove(old_config);
|
||||
}
|
||||
|
||||
let phydev = phy_open(phy);
|
||||
if (!phydev) {
|
||||
@ -667,7 +669,7 @@ let main_obj = {
|
||||
if (!config || !config.bss || !config.bss[0] || !config.bss[0].ifname)
|
||||
return 0;
|
||||
|
||||
let iface = hostapd.interfaces[config.bss[0].ifname];
|
||||
let iface = hostapd.interfaces[phy];
|
||||
if (!iface)
|
||||
return 0;
|
||||
|
||||
|
@ -142,6 +142,16 @@
|
||||
{
|
||||
if (!hapd)
|
||||
return;
|
||||
@@ -3491,7 +3495,8 @@ int hostapd_remove_iface(struct hapd_int
|
||||
hapd_iface = interfaces->iface[i];
|
||||
if (hapd_iface == NULL)
|
||||
return -1;
|
||||
- if (!os_strcmp(hapd_iface->conf->bss[0]->iface, buf)) {
|
||||
+ if (!os_strcmp(hapd_iface->phy, buf) ||
|
||||
+ !os_strcmp(hapd_iface->conf->bss[0]->iface, buf)) {
|
||||
wpa_printf(MSG_INFO, "Remove interface '%s'", buf);
|
||||
hapd_iface->driver_ap_teardown =
|
||||
!!(hapd_iface->drv_flags &
|
||||
--- a/wpa_supplicant/Makefile
|
||||
+++ b/wpa_supplicant/Makefile
|
||||
@@ -195,8 +195,20 @@ endif
|
||||
|
@ -20,7 +20,7 @@ Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
|
||||
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -3563,6 +3563,8 @@ int hostapd_remove_iface(struct hapd_int
|
||||
@@ -3564,6 +3564,8 @@ int hostapd_remove_iface(struct hapd_int
|
||||
void hostapd_new_assoc_sta(struct hostapd_data *hapd, struct sta_info *sta,
|
||||
int reassoc)
|
||||
{
|
||||
@ -29,7 +29,7 @@ Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
|
||||
if (hapd->tkip_countermeasures) {
|
||||
hostapd_drv_sta_deauth(hapd, sta->addr,
|
||||
WLAN_REASON_MICHAEL_MIC_FAILURE);
|
||||
@@ -3570,10 +3572,16 @@ void hostapd_new_assoc_sta(struct hostap
|
||||
@@ -3571,10 +3573,16 @@ void hostapd_new_assoc_sta(struct hostap
|
||||
}
|
||||
|
||||
#ifdef CONFIG_IEEE80211BE
|
||||
|
Loading…
Reference in New Issue
Block a user