diff --git a/hostapd/config_file.c b/hostapd/config_file.c index 7a184c440..425446c24 100644 --- a/hostapd/config_file.c +++ b/hostapd/config_file.c @@ -4206,6 +4206,8 @@ static int hostapd_config_fill(struct hostapd_config *conf, bss->igtk_rsc_override = wpabuf_parse_bin(pos); } else if (os_strcmp(buf, "no_beacon_rsnxe") == 0) { bss->no_beacon_rsnxe = atoi(pos); + } else if (os_strcmp(buf, "skip_prune_assoc") == 0) { + bss->skip_prune_assoc = atoi(pos); #endif /* CONFIG_TESTING_OPTIONS */ #ifdef CONFIG_SAE } else if (os_strcmp(buf, "sae_password") == 0) { diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h index 7930fc374..2a0bf0763 100644 --- a/src/ap/ap_config.h +++ b/src/ap/ap_config.h @@ -685,6 +685,7 @@ struct hostapd_bss_config { struct wpabuf *gtk_rsc_override; struct wpabuf *igtk_rsc_override; int no_beacon_rsnxe; + int skip_prune_assoc; #endif /* CONFIG_TESTING_OPTIONS */ #define MESH_ENABLED BIT(0) diff --git a/src/ap/utils.c b/src/ap/utils.c index fcb371bec..bedad6eb0 100644 --- a/src/ap/utils.c +++ b/src/ap/utils.c @@ -56,6 +56,10 @@ static int prune_associations(struct hostapd_iface *iface, void *ctx) ohapd = iface->bss[j]; if (ohapd == data->hapd) continue; +#ifdef CONFIG_TESTING_OPTIONS + if (ohapd->conf->skip_prune_assoc) + continue; +#endif /* CONFIG_TESTING_OPTIONS */ #ifdef CONFIG_FST /* Don't prune STAs belong to same FST */ if (ohapd->iface->fst &&