mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-30 01:52:51 +00:00
60 lines
2.0 KiB
Diff
60 lines
2.0 KiB
Diff
From 008acb6038aab6f365b7a0db006f9f829a5bb1f8 Mon Sep 17 00:00:00 2001
|
|
From: Mohan Kumar G <quic_mkumarg@quicinc.com>
|
|
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 <quic_mkumarg@quicinc.com>
|
|
---
|
|
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) {
|