From 4688450129baef1b5e495256947075f992778a1f Mon Sep 17 00:00:00 2001 From: John Crispin Date: Wed, 16 Nov 2022 16:40:01 +0100 Subject: [PATCH 21/21] hostapd: add dynamic_probe_resp Signed-off-by: John Crispin --- .../network/services/hostapd/files/hostapd.sh | 6 ++- .../hostapd/patches/999-probe-request.patch | 49 +++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 package/network/services/hostapd/patches/999-probe-request.patch diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh index c308d1d2de..8362158cb0 100644 --- a/package/network/services/hostapd/files/hostapd.sh +++ b/package/network/services/hostapd/files/hostapd.sh @@ -394,6 +394,8 @@ hostapd_common_add_bss_config() { config_add_boolean ratelimit config_add_string uci_section + + config_add_boolean dynamic_probe_resp } hostapd_set_vlan_file() { @@ -629,7 +631,7 @@ hostapd_set_bss_options() { airtime_bss_weight airtime_bss_limit airtime_sta_weight \ multicast_to_unicast_all proxy_arp per_sta_vif \ eap_server eap_user_file ca_cert server_cert private_key private_key_passwd server_id \ - vendor_elements fils uci_section + vendor_elements fils uci_section dynamic_probe_resp set_default fils 0 set_default isolate 0 @@ -652,6 +654,7 @@ hostapd_set_bss_options() { set_default airtime_bss_weight 0 set_default airtime_bss_limit 0 set_default eap_server 0 + set_default dynamic_probe_resp 0 /usr/sbin/hostapd -vfils || fils=0 @@ -677,6 +680,7 @@ hostapd_set_bss_options() { append bss_conf "preamble=$short_preamble" "$N" append bss_conf "wmm_enabled=$wmm" "$N" append bss_conf "ignore_broadcast_ssid=$hidden" "$N" + append bss_conf "dynamic_probe_resp=$dynamic_probe_resp" "$N" append bss_conf "uapsd_advertisement_enabled=$uapsd" "$N" append bss_conf "utf8_ssid=$utf8_ssid" "$N" append bss_conf "multi_ap=$multi_ap" "$N" diff --git a/package/network/services/hostapd/patches/999-probe-request.patch b/package/network/services/hostapd/patches/999-probe-request.patch new file mode 100644 index 0000000000..3b79338c2f --- /dev/null +++ b/package/network/services/hostapd/patches/999-probe-request.patch @@ -0,0 +1,49 @@ +Index: hostapd-2021-02-20-59e9794c/hostapd/config_file.c +=================================================================== +--- hostapd-2021-02-20-59e9794c.orig/hostapd/config_file.c ++++ hostapd-2021-02-20-59e9794c/hostapd/config_file.c +@@ -3339,6 +3339,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); +Index: hostapd-2021-02-20-59e9794c/src/ap/ap_config.h +=================================================================== +--- hostapd-2021-02-20-59e9794c.orig/src/ap/ap_config.h ++++ hostapd-2021-02-20-59e9794c/src/ap/ap_config.h +@@ -460,6 +460,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; +Index: hostapd-2021-02-20-59e9794c/src/ap/beacon.c +=================================================================== +--- hostapd-2021-02-20-59e9794c.orig/src/ap/beacon.c ++++ hostapd-2021-02-20-59e9794c/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; -- 2.25.1