When an external process manages hostapd, it can be needed to temporarily ignore class 3 frames from unknown stations until hostapd can be made aware of the station. Add a new option that, when set, makes hostapd ignore class 3 frames from unknown stations. When the option is not set, the behavior stays the same as before (i.e. unknown stations are deauthenticated). Signed-off-by: Raphaël Mélotte <raphael.melotte@xxxxxxx> --- hostapd/config_file.c | 2 ++ hostapd/hostapd.conf | 5 +++++ src/ap/ap_config.h | 2 ++ src/ap/ieee802_11.c | 2 +- 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/hostapd/config_file.c b/hostapd/config_file.c index 76f9cf831..3fa12df8e 100644 --- a/hostapd/config_file.c +++ b/hostapd/config_file.c @@ -4471,6 +4471,8 @@ static int hostapd_config_fill(struct hostapd_config *conf, bss->broadcast_deauth = atoi(pos); } else if (os_strcmp(buf, "notify_mgmt_frames") == 0) { bss->notify_mgmt_frames = atoi(pos); + } else if (os_strcmp(buf, "no_deauth_unknown_sta") == 0) { + bss->no_deauth_unknown_sta = atoi(pos); #ifdef CONFIG_DPP } else if (os_strcmp(buf, "dpp_name") == 0) { os_free(bss->dpp_name); diff --git a/hostapd/hostapd.conf b/hostapd/hostapd.conf index c5e74a6a2..6fbee6f4b 100644 --- a/hostapd/hostapd.conf +++ b/hostapd/hostapd.conf @@ -591,6 +591,11 @@ wmm_ac_vo_acm=0 # Default: 0 (disabled) #notify_mgmt_frames=0 +# Do not deauthenticate unknown stations. +# This can be used to temporarily ignore data frames from unknown +# stations, instead of deauthenticating them. +#no_deauth_unknown_sta=0 + ##### IEEE 802.11n related configuration ###################################### # ieee80211n: Whether IEEE 802.11n (HT) is enabled diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h index 1631cf2aa..794cae7f7 100644 --- a/src/ap/ap_config.h +++ b/src/ap/ap_config.h @@ -753,6 +753,8 @@ struct hostapd_bss_config { int notify_mgmt_frames; + int no_deauth_unknown_sta; + #ifdef CONFIG_DPP char *dpp_name; char *dpp_mud_url; diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c index e53f0dcbe..9eceb2b03 100644 --- a/src/ap/ieee802_11.c +++ b/src/ap/ieee802_11.c @@ -6144,7 +6144,7 @@ void ieee802_11_rx_from_unknown(struct hostapd_data *hapd, const u8 *src, hostapd_drv_sta_disassoc( hapd, src, WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA); - else + else if (!hapd->conf->no_deauth_unknown_sta) hostapd_drv_sta_deauth( hapd, src, WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA); -- 2.38.1 _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap