From 008acb6038aab6f365b7a0db006f9f829a5bb1f8 Mon Sep 17 00:00:00 2001 From: Mohan Kumar G Date: Fri, 3 May 2024 18:55:26 +0530 Subject: [PATCH] hostapd: handle ML Probe request for Non-Transmitting BSS Currently, when configured in multiple BSSID and if ML probe request is sent to non-transmitting BSS, the request is dropped. This is because only the SSID of transmitting BSS is checked when matching the probe request SSID. Other members in the multiple BSSID set are not considered. As per IEEE Std 802.11-2020 section 11.1.4.3.4, if the SSID in probe request matches any of the SSIDs of multiple BSSID set members, probe response can be sent. Fix this issue by checking SSIDs of non-transmitting BSS also when receiving probe request in Multiple BSSID case. Signed-off-by: Mohan Kumar G --- src/ap/beacon.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) --- a/src/ap/beacon.c +++ b/src/ap/beacon.c @@ -1598,15 +1598,30 @@ void handle_probe_req(struct hostapd_dat elems.ssid_list, elems.ssid_list_len, elems.short_ssid_list, elems.short_ssid_list_len); if (res == NO_SSID_MATCH) { - if (!(mgmt->da[0] & 0x01)) { + if (hapd->iconf->mbssid) { + for (i = 0; i < hapd->iface->num_bss; i++) { + if (hapd == hapd->iface->bss[i]) + continue; + res = ssid_match(hapd->iface->bss[i], elems.ssid, + elems.ssid_len, elems.ssid_list, + elems.ssid_list_len, + elems.short_ssid_list, + elems.short_ssid_list_len); + if (res != NO_SSID_MATCH) { + hapd_probed = hapd->iface->bss[i]; + break; + } + } + } + if (res == NO_SSID_MATCH && !(mgmt->da[0] & 0x01)) { wpa_printf(MSG_MSGDUMP, "Probe Request from " MACSTR " for foreign SSID '%s' (DA " MACSTR ")%s", MAC2STR(mgmt->sa), wpa_ssid_txt(elems.ssid, elems.ssid_len), MAC2STR(mgmt->da), elems.ssid_list ? " (SSID list)" : ""); + return; } - return; } if (hapd->conf->ignore_broadcast_ssid && res == WILDCARD_SSID_MATCH) {