--- a/hostapd/config_file.c +++ b/hostapd/config_file.c @@ -3337,6 +3337,8 @@ static int hostapd_config_fill(struct ho bss->ignore_broadcast_ssid = atoi(pos); } else if (os_strcmp(buf, "no_probe_resp_if_max_sta") == 0) { bss->no_probe_resp_if_max_sta = atoi(pos); + } else if (os_strcmp(buf, "dynamic_probe_resp") == 0) { + bss->dynamic_probe_resp = atoi(pos); #ifdef CONFIG_WEP } else if (os_strcmp(buf, "wep_default_key") == 0) { bss->ssid.wep.idx = atoi(pos); --- a/src/ap/ap_config.h +++ b/src/ap/ap_config.h @@ -459,6 +459,7 @@ struct hostapd_bss_config { int ap_max_inactivity; int ignore_broadcast_ssid; int no_probe_resp_if_max_sta; + int dynamic_probe_resp; int wmm_enabled; int wmm_uapsd; --- a/src/ap/beacon.c +++ b/src/ap/beacon.c @@ -920,7 +920,8 @@ void handle_probe_req(struct hostapd_dat } #endif /* CONFIG_P2P */ - if (hapd->conf->ignore_broadcast_ssid && elems.ssid_len == 0 && + if (!hapd->conf->dynamic_probe_resp && + hapd->conf->ignore_broadcast_ssid && elems.ssid_len == 0 && elems.ssid_list_len == 0 && elems.short_ssid_list_len == 0) { wpa_printf(MSG_MSGDUMP, "Probe Request from " MACSTR " for " "broadcast SSID ignored", MAC2STR(mgmt->sa)); @@ -967,7 +968,8 @@ void handle_probe_req(struct hostapd_dat return; } - if (hapd->conf->ignore_broadcast_ssid && res == WILDCARD_SSID_MATCH) { + if (!hapd->conf->dynamic_probe_resp && + hapd->conf->ignore_broadcast_ssid && res == WILDCARD_SSID_MATCH) { wpa_printf(MSG_MSGDUMP, "Probe Request from " MACSTR " for " "broadcast SSID ignored", MAC2STR(mgmt->sa)); return;