hostapd: slightly clean up patches
authorFelix Fietkau <nbd@nbd.name>
Thu, 4 Apr 2024 11:19:49 +0000 (13:19 +0200)
committerFelix Fietkau <nbd@nbd.name>
Thu, 4 Apr 2024 11:38:18 +0000 (13:38 +0200)
- move build/ifdef related changes together to the 200 patch range
- reduce adding/removing include statements across patches
- move patches away from the 99x patch range to simplify maintenance

Signed-off-by: Felix Fietkau <nbd@nbd.name>
28 files changed:
package/network/services/hostapd/patches/050-Fix-OpenWrt-13156.patch [new file with mode: 0644]
package/network/services/hostapd/patches/051-nl80211-add-extra-ies-only-if-allowed-by-driver.patch [new file with mode: 0644]
package/network/services/hostapd/patches/200-multicall.patch
package/network/services/hostapd/patches/201-lto-jobserver-support.patch [new file with mode: 0644]
package/network/services/hostapd/patches/211-ctrl-make-WNM_AP-functions-dependant-on-CONFIG_AP.patch [new file with mode: 0644]
package/network/services/hostapd/patches/212-Move-definition-of-WLAN_SUPP_RATES_MAX-to-defs.h.patch [new file with mode: 0644]
package/network/services/hostapd/patches/213-wpa_supplicant-fix-warnings.patch [new file with mode: 0644]
package/network/services/hostapd/patches/220-indicate-features.patch [new file with mode: 0644]
package/network/services/hostapd/patches/250-hostapd_cli_ifdef.patch [new file with mode: 0644]
package/network/services/hostapd/patches/251-wpa_cli_ifdef.patch [new file with mode: 0644]
package/network/services/hostapd/patches/252-disable_ctrl_iface_mib.patch [new file with mode: 0644]
package/network/services/hostapd/patches/253-qos_map_set_without_interworking.patch [new file with mode: 0644]
package/network/services/hostapd/patches/380-disable_ctrl_iface_mib.patch [deleted file]
package/network/services/hostapd/patches/381-hostapd_cli_UNKNOWN-COMMAND.patch
package/network/services/hostapd/patches/420-indicate-features.patch [deleted file]
package/network/services/hostapd/patches/430-hostapd_cli_ifdef.patch [deleted file]
package/network/services/hostapd/patches/431-wpa_cli_ifdef.patch [deleted file]
package/network/services/hostapd/patches/460-wpa_supplicant-add-new-config-params-to-be-used-with.patch
package/network/services/hostapd/patches/461-Move-definition-of-WLAN_SUPP_RATES_MAX-to-defs.h.patch [deleted file]
package/network/services/hostapd/patches/500-lto-jobserver-support.patch [deleted file]
package/network/services/hostapd/patches/599-wpa_supplicant-fix-warnings.patch [deleted file]
package/network/services/hostapd/patches/600-ubus_support.patch
package/network/services/hostapd/patches/601-ucode_support.patch
package/network/services/hostapd/patches/740-snoop_iface.patch
package/network/services/hostapd/patches/750-qos_map_set_without_interworking.patch [deleted file]
package/network/services/hostapd/patches/990-ctrl-make-WNM_AP-functions-dependant-on-CONFIG_AP.patch [deleted file]
package/network/services/hostapd/patches/991-Fix-OpenWrt-13156.patch [deleted file]
package/network/services/hostapd/patches/992-nl80211-add-extra-ies-only-if-allowed-by-driver.patch [deleted file]

diff --git a/package/network/services/hostapd/patches/050-Fix-OpenWrt-13156.patch b/package/network/services/hostapd/patches/050-Fix-OpenWrt-13156.patch
new file mode 100644 (file)
index 0000000..a044409
--- /dev/null
@@ -0,0 +1,63 @@
+From 26cd9bafc1d25e602952ee86cd2a5b8c3a995490 Mon Sep 17 00:00:00 2001
+From: Stijn Tintel <stijn@linux-ipv6.be>
+Date: Fri, 28 Jul 2023 16:27:47 +0300
+Subject: [PATCH] Revert "Do prune_association only after the STA is
+ authorized"
+
+Commit e978072baaca ("Do prune_association only after the STA is
+authorized") causes issues when an STA roams from one interface to
+another interface on the same PHY. The mt7915 driver is not able to
+handle this properly. While the commits fixes a DoS, there are other
+devices and drivers with the same limitation, so revert to the orginal
+behavior for now, until we have a better solution in place.
+
+Ref: https://github.com/openwrt/openwrt/issues/13156
+Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
+---
+ src/ap/hostapd.c  | 14 +++++++++++---
+ src/ap/sta_info.c |  3 ---
+ 2 files changed, 11 insertions(+), 6 deletions(-)
+
+--- a/src/ap/hostapd.c
++++ b/src/ap/hostapd.c
+@@ -3646,6 +3646,8 @@ int hostapd_remove_iface(struct hapd_int
+ void hostapd_new_assoc_sta(struct hostapd_data *hapd, struct sta_info *sta,
+                          int reassoc)
+ {
++      int mld_assoc_link_id = -1;
++
+       if (hapd->tkip_countermeasures) {
+               hostapd_drv_sta_deauth(hapd, sta->addr,
+                                      WLAN_REASON_MICHAEL_MIC_FAILURE);
+@@ -3653,10 +3655,16 @@ void hostapd_new_assoc_sta(struct hostap
+       }
+ #ifdef CONFIG_IEEE80211BE
+-      if (ap_sta_is_mld(hapd, sta) &&
+-          sta->mld_assoc_link_id != hapd->mld_link_id)
+-              return;
++      if (ap_sta_is_mld(hapd, sta)) {
++              if (sta->mld_assoc_link_id == hapd->mld_link_id) {
++                      mld_assoc_link_id = sta->mld_assoc_link_id;
++              } else {
++                      return;
++              }
++      }
+ #endif /* CONFIG_IEEE80211BE */
++        if (mld_assoc_link_id != -2)
++              hostapd_prune_associations(hapd, sta->addr, mld_assoc_link_id);
+       ap_sta_clear_disconnect_timeouts(hapd, sta);
+       sta->post_csa_sa_query = 0;
+--- a/src/ap/sta_info.c
++++ b/src/ap/sta_info.c
+@@ -1412,9 +1412,6 @@ bool ap_sta_set_authorized_flag(struct h
+                               mld_assoc_link_id = -2;
+               }
+ #endif /* CONFIG_IEEE80211BE */
+-              if (mld_assoc_link_id != -2)
+-                      hostapd_prune_associations(hapd, sta->addr,
+-                                                 mld_assoc_link_id);
+               sta->flags |= WLAN_STA_AUTHORIZED;
+       } else {
+               sta->flags &= ~WLAN_STA_AUTHORIZED;
diff --git a/package/network/services/hostapd/patches/051-nl80211-add-extra-ies-only-if-allowed-by-driver.patch b/package/network/services/hostapd/patches/051-nl80211-add-extra-ies-only-if-allowed-by-driver.patch
new file mode 100644 (file)
index 0000000..de4d4ad
--- /dev/null
@@ -0,0 +1,62 @@
+From: David Bauer <mail@david-bauer.net>
+To: hostap@lists.infradead.org
+Cc: =?utf-8?q?=C3=89tienne_Morice?= <neon.emorice@mail.com>
+Subject: [PATCH] nl80211: add extra-ies only if allowed by driver
+Date: Sun, 30 Jan 2022 20:22:00 +0100
+Message-Id: <20220130192200.10883-1-mail@david-bauer.net>
+List-Id: <hostap.lists.infradead.org>
+
+Upgrading wpa_supplicant from 2.9 to 2.10 breaks broadcom-wl
+based adapters. The reason for it is hostapd tries to install additional
+IEs for scanning while the driver does not support this.
+
+The kernel indicates the maximum number of bytes for additional scan IEs
+using the NL80211_ATTR_MAX_SCAN_IE_LEN attribute. Save this value and
+only add additional scan IEs in case the driver can accommodate these
+additional IEs.
+
+Reported-by: Étienne Morice <neon.emorice@mail.com>
+Tested-by: Étienne Morice <neon.emorice@mail.com>
+Signed-off-by: David Bauer <mail@david-bauer.net>
+---
+ src/drivers/driver.h              | 3 +++
+ src/drivers/driver_nl80211_capa.c | 4 ++++
+ src/drivers/driver_nl80211_scan.c | 2 +-
+ 3 files changed, 8 insertions(+), 1 deletion(-)
+
+--- a/src/drivers/driver.h
++++ b/src/drivers/driver.h
+@@ -2340,6 +2340,9 @@ struct wpa_driver_capa {
+       /** Maximum number of iterations in a single scan plan */
+       u32 max_sched_scan_plan_iterations;
++      /** Maximum number of extra IE bytes for scans */
++      u16 max_scan_ie_len;
++
+       /** Whether sched_scan (offloaded scanning) is supported */
+       int sched_scan_supported;
+--- a/src/drivers/driver_nl80211_capa.c
++++ b/src/drivers/driver_nl80211_capa.c
+@@ -972,6 +972,10 @@ static int wiphy_info_handler(struct nl_
+                       nla_get_u32(tb[NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS]);
+       }
++      if (tb[NL80211_ATTR_MAX_SCAN_IE_LEN])
++              capa->max_scan_ie_len =
++                      nla_get_u16(tb[NL80211_ATTR_MAX_SCAN_IE_LEN]);
++
+       if (tb[NL80211_ATTR_MAX_MATCH_SETS])
+               capa->max_match_sets =
+                       nla_get_u8(tb[NL80211_ATTR_MAX_MATCH_SETS]);
+--- a/src/drivers/driver_nl80211_scan.c
++++ b/src/drivers/driver_nl80211_scan.c
+@@ -221,7 +221,7 @@ nl80211_scan_common(struct i802_bss *bss
+               wpa_printf(MSG_DEBUG, "nl80211: Passive scan requested");
+       }
+-      if (params->extra_ies) {
++      if (params->extra_ies && drv->capa.max_scan_ie_len >= params->extra_ies_len) {
+               wpa_hexdump(MSG_MSGDUMP, "nl80211: Scan extra IEs",
+                           params->extra_ies, params->extra_ies_len);
+               if (nla_put(msg, NL80211_ATTR_IE, params->extra_ies_len,
index 65c1e5d838051e8e60e7580b69b692de97f3153b..1a193b51bb1e199ddce42122e6c80427675c6b56 100644 (file)
@@ -116,7 +116,7 @@ This allows building both hostapd and wpa_supplicant as a single binary
        struct hapd_interfaces *interfaces = ctx;
 --- a/src/drivers/driver.h
 +++ b/src/drivers/driver.h
-@@ -6760,8 +6760,8 @@ union wpa_event_data {
+@@ -6763,8 +6763,8 @@ union wpa_event_data {
   * Driver wrapper code should call this function whenever an event is received
   * from the driver.
   */
@@ -127,7 +127,7 @@ This allows building both hostapd and wpa_supplicant as a single binary
  
  /**
   * wpa_supplicant_event_global - Report a driver event for wpa_supplicant
-@@ -6773,7 +6773,7 @@ void wpa_supplicant_event(void *ctx, enu
+@@ -6776,7 +6776,7 @@ void wpa_supplicant_event(void *ctx, enu
   * Same as wpa_supplicant_event(), but we search for the interface in
   * wpa_global.
   */
diff --git a/package/network/services/hostapd/patches/201-lto-jobserver-support.patch b/package/network/services/hostapd/patches/201-lto-jobserver-support.patch
new file mode 100644 (file)
index 0000000..ea0dc29
--- /dev/null
@@ -0,0 +1,64 @@
+From: Felix Fietkau <nbd@nbd.name>
+Date: Tue, 10 Jul 2018 13:48:17 +0200
+Subject: [PATCH] hostapd: build with LTO enabled (using jobserver for parallel
+ build)
+
+--- a/hostapd/Makefile
++++ b/hostapd/Makefile
+@@ -1405,7 +1405,7 @@ hostapd_multi.a: $(BCHECK) $(OBJS)
+       @$(AR) cr $@ hostapd_multi.o $(OBJS)
+ hostapd: $(OBJS)
+-      $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
++      +$(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
+       @$(E) "  LD " $@
+ ifdef CONFIG_WPA_TRACE
+@@ -1416,7 +1416,7 @@ _OBJS_VAR := OBJS_c
+ include ../src/objs.mk
+ hostapd_cli: $(OBJS_c)
+-      $(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c)
++      +$(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c)
+       @$(E) "  LD " $@
+ NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS)
+--- a/wpa_supplicant/Makefile
++++ b/wpa_supplicant/Makefile
+@@ -2103,31 +2103,31 @@ wpa_supplicant_multi.a: .config $(BCHECK
+       @$(AR) cr $@ wpa_supplicant_multi.o $(OBJS)
+ wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs)
+-      $(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
++      +$(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
+       @$(E) "  LD " $@
+ _OBJS_VAR := OBJS_t
+ include ../src/objs.mk
+ eapol_test: $(OBJS_t)
+-      $(Q)$(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS)
++      +$(Q)$(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS)
+       @$(E) "  LD " $@
+ _OBJS_VAR := OBJS_t2
+ include ../src/objs.mk
+ preauth_test: $(OBJS_t2)
+-      $(Q)$(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS)
++      +$(Q)$(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS)
+       @$(E) "  LD " $@
+ _OBJS_VAR := OBJS_p
+ include ../src/objs.mk
+ wpa_passphrase: $(OBJS_p)
+-      $(Q)$(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p) $(LIBS)
++      +$(Q)$(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p) $(LIBS)
+       @$(E) "  LD " $@
+ _OBJS_VAR := OBJS_c
+ include ../src/objs.mk
+ wpa_cli: $(OBJS_c)
+-      $(Q)$(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
++      +$(Q)$(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
+       @$(E) "  LD " $@
+ LIBCTRL += ../src/common/wpa_ctrl.o
diff --git a/package/network/services/hostapd/patches/211-ctrl-make-WNM_AP-functions-dependant-on-CONFIG_AP.patch b/package/network/services/hostapd/patches/211-ctrl-make-WNM_AP-functions-dependant-on-CONFIG_AP.patch
new file mode 100644 (file)
index 0000000..84fdea8
--- /dev/null
@@ -0,0 +1,33 @@
+From f0e9f5aab52b3eab85d28338cc996972ced4c39c Mon Sep 17 00:00:00 2001
+From: David Bauer <mail@david-bauer.net>
+Date: Tue, 17 May 2022 23:07:59 +0200
+Subject: [PATCH] ctrl: make WNM_AP functions dependant on CONFIG_AP
+
+This fixes linking errors found when compiling wpa_supplicant with
+CONFIG_WNM_AP enabled but CONFIG_AP disabled.
+
+Signed-off-by: David Bauer <mail@david-bauer.net>
+---
+ wpa_supplicant/ctrl_iface.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/wpa_supplicant/ctrl_iface.c
++++ b/wpa_supplicant/ctrl_iface.c
+@@ -13214,7 +13214,7 @@ char * wpa_supplicant_ctrl_iface_process
+               if (wpas_ctrl_iface_coloc_intf_report(wpa_s, buf + 18))
+                       reply_len = -1;
+ #endif /* CONFIG_WNM */
+-#ifdef CONFIG_WNM_AP
++#if defined(CONFIG_AP) && defined(CONFIG_WNM_AP)
+       } else if (os_strncmp(buf, "DISASSOC_IMMINENT ", 18) == 0) {
+               if (ap_ctrl_iface_disassoc_imminent(wpa_s, buf + 18))
+                       reply_len = -1;
+@@ -13224,7 +13224,7 @@ char * wpa_supplicant_ctrl_iface_process
+       } else if (os_strncmp(buf, "BSS_TM_REQ ", 11) == 0) {
+               if (ap_ctrl_iface_bss_tm_req(wpa_s, buf + 11))
+                       reply_len = -1;
+-#endif /* CONFIG_WNM_AP */
++#endif /* CONFIG_AP && CONFIG_WNM_AP */
+       } else if (os_strcmp(buf, "FLUSH") == 0) {
+               wpa_supplicant_ctrl_iface_flush(wpa_s);
+       } else if (os_strncmp(buf, "RADIO_WORK ", 11) == 0) {
diff --git a/package/network/services/hostapd/patches/212-Move-definition-of-WLAN_SUPP_RATES_MAX-to-defs.h.patch b/package/network/services/hostapd/patches/212-Move-definition-of-WLAN_SUPP_RATES_MAX-to-defs.h.patch
new file mode 100644 (file)
index 0000000..4c568c9
--- /dev/null
@@ -0,0 +1,56 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Eneas U de Queiroz <cotequeiroz@gmail.com>
+Date: Mon, 12 Feb 2024 14:18:24 -0300
+Subject: [PATCH] Move definition of WLAN_SUPP_RATES_MAX to defs.h
+
+Patch 460-wpa_supplicant-add-new-config-params-to-be-used-with.patch
+("wpa_supplicant: add new config params to be used with the ibss join
+command") adds the definition of unsigned char
+rates[WLAN_SUPP_RATES_MAX] to driver.h, which needs to have
+WLAN_SUPP_RATES_MAX defined.  So it includes sta_info.h to get the
+definition.
+
+Commit c74739250a ("AP MLD: Use a helper function to check if a STA is a
+non-AP MLD") makes sta_info.h include driver.h before
+it defines WLAN_SUPP_RATES_MAX, causing an error:
+
+src/drivers/driver.h:969:29: error: 'WLAN_SUPP_RATES_MAX' undeclared here (not in a function)
+
+Move the definition of WLAN_SUPP_RATES_MAX to defs.h to ensure it gets
+defined before other headers are included.  The inclusion of sta_info.h
+in driver.h can be reverted as well.
+
+Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
+---
+ src/ap/sta_info.h            | 4 ----
+ src/common/defs.h            | 4 ++++
+ src/drivers/driver.h         | 1 -
+ wpa_supplicant/config_ssid.h | 1 -
+ 4 files changed, 4 insertions(+), 6 deletions(-)
+
+--- a/src/ap/sta_info.h
++++ b/src/ap/sta_info.h
+@@ -49,10 +49,6 @@
+ #define WLAN_STA_PENDING_DEAUTH_CB BIT(30)
+ #define WLAN_STA_NONERP BIT(31)
+-/* Maximum number of supported rates (from both Supported Rates and Extended
+- * Supported Rates IEs). */
+-#define WLAN_SUPP_RATES_MAX 32
+-
+ struct hostapd_data;
+ struct mbo_non_pref_chan_info {
+--- a/src/common/defs.h
++++ b/src/common/defs.h
+@@ -63,6 +63,10 @@
+                        WPA_KEY_MGMT_FT_FILS_SHA256 | \
+                        WPA_KEY_MGMT_FT_FILS_SHA384)
++/* Maximum number of supported rates (from both Supported Rates and Extended
++ * Supported Rates IEs). */
++#define WLAN_SUPP_RATES_MAX 32
++
+ static inline int wpa_key_mgmt_wpa_ieee8021x(int akm)
+ {
+       return !!(akm & (WPA_KEY_MGMT_IEEE8021X |
diff --git a/package/network/services/hostapd/patches/213-wpa_supplicant-fix-warnings.patch b/package/network/services/hostapd/patches/213-wpa_supplicant-fix-warnings.patch
new file mode 100644 (file)
index 0000000..4acd7ca
--- /dev/null
@@ -0,0 +1,32 @@
+From: "Leon M. George" <leon@georgemail.eu>
+Date: Wed, 11 Sep 2019 15:22:55 +0200
+Subject: [PATCH] hostapd: declare struct wpa_bss early
+
+wps_supplicant.h assumes that 'struct wpa_bss' is forward declared if
+CONFIG_WPS is not defined.  With the later inclusion of
+600-ubus_support, the issue manifests in warnings like these:
+
+wps_supplicant.h:113:15: warning: 'struct wpa_bss' declared inside parameter list will not be visible outside of this definition or declaration
+        struct wpa_bss *bss)
+               ^~~~~~~
+This patch forward declares 'struct wpa_bss' regardless.
+
+--- a/wpa_supplicant/wps_supplicant.h
++++ b/wpa_supplicant/wps_supplicant.h
+@@ -9,6 +9,7 @@
+ #ifndef WPS_SUPPLICANT_H
+ #define WPS_SUPPLICANT_H
++struct wpa_bss;
+ struct wpa_scan_results;
+ #ifdef CONFIG_WPS
+@@ -16,8 +17,6 @@ struct wpa_scan_results;
+ #include "wps/wps.h"
+ #include "wps/wps_defs.h"
+-struct wpa_bss;
+-
+ struct wps_new_ap_settings {
+       const char *ssid_hex;
+       const char *auth;
diff --git a/package/network/services/hostapd/patches/220-indicate-features.patch b/package/network/services/hostapd/patches/220-indicate-features.patch
new file mode 100644 (file)
index 0000000..006a567
--- /dev/null
@@ -0,0 +1,69 @@
+From: Jo-Philipp Wich <jow@openwrt.org>
+Date: Mon, 12 Dec 2011 17:26:13 +0000
+Subject: [PATCH] hostapd: support optional argument for the -v switch of
+ hostapd and wpa_supplicant to query build features, e.g. hostapd -veap to
+ test whether 802.11i support is compiled in
+
+--- a/hostapd/main.c
++++ b/hostapd/main.c
+@@ -31,7 +31,7 @@
+ #include "config_file.h"
+ #include "eap_register.h"
+ #include "ctrl_iface.h"
+-
++#include "build_features.h"
+ struct hapd_global {
+       void **drv_priv;
+@@ -806,7 +806,7 @@ int main(int argc, char *argv[])
+       wpa_supplicant_event = hostapd_wpa_event;
+       wpa_supplicant_event_global = hostapd_wpa_event_global;
+       for (;;) {
+-              c = getopt(argc, argv, "b:Bde:f:hi:KP:sSTtu:vg:G:q");
++              c = getopt(argc, argv, "b:Bde:f:hi:KP:sSTtu:g:G:qv::");
+               if (c < 0)
+                       break;
+               switch (c) {
+@@ -843,6 +843,8 @@ int main(int argc, char *argv[])
+                       break;
+ #endif /* CONFIG_DEBUG_LINUX_TRACING */
+               case 'v':
++                      if (optarg)
++                              exit(!has_feature(optarg));
+                       show_version();
+                       exit(1);
+               case 'g':
+--- a/wpa_supplicant/main.c
++++ b/wpa_supplicant/main.c
+@@ -12,6 +12,7 @@
+ #endif /* __linux__ */
+ #include "common.h"
++#include "build_features.h"
+ #include "crypto/crypto.h"
+ #include "fst/fst.h"
+ #include "wpa_supplicant_i.h"
+@@ -202,7 +203,7 @@ int main(int argc, char *argv[])
+       for (;;) {
+               c = getopt(argc, argv,
+-                         "b:Bc:C:D:de:f:g:G:hi:I:KLMm:No:O:p:P:qsTtuvW");
++                         "b:Bc:C:D:de:f:g:G:hi:I:KLMm:No:O:p:P:qsTtuv::W");
+               if (c < 0)
+                       break;
+               switch (c) {
+@@ -302,8 +303,12 @@ int main(int argc, char *argv[])
+                       break;
+ #endif /* CONFIG_CTRL_IFACE_DBUS_NEW */
+               case 'v':
+-                      printf("%s\n", wpa_supplicant_version);
+-                      exitcode = 0;
++                      if (optarg) {
++                              exitcode = !has_feature(optarg);
++                      } else {
++                              printf("%s\n", wpa_supplicant_version);
++                              exitcode = 0;
++                      }
+                       goto out;
+               case 'W':
+                       params.wait_for_monitor++;
diff --git a/package/network/services/hostapd/patches/250-hostapd_cli_ifdef.patch b/package/network/services/hostapd/patches/250-hostapd_cli_ifdef.patch
new file mode 100644 (file)
index 0000000..b6421e9
--- /dev/null
@@ -0,0 +1,61 @@
+From: Felix Fietkau <nbd@openwrt.org>
+Date: Thu, 13 Sep 2012 12:39:14 +0000
+Subject: [PATCH] hostapd: support wps in hostapd_cli even when built from the
+ mini variant
+
+--- a/hostapd/hostapd_cli.c
++++ b/hostapd/hostapd_cli.c
+@@ -401,7 +401,6 @@ static int hostapd_cli_cmd_disassociate(
+ }
+-#ifdef CONFIG_TAXONOMY
+ static int hostapd_cli_cmd_signature(struct wpa_ctrl *ctrl, int argc,
+                                    char *argv[])
+ {
+@@ -414,7 +413,6 @@ static int hostapd_cli_cmd_signature(str
+       os_snprintf(buf, sizeof(buf), "SIGNATURE %s", argv[0]);
+       return wpa_ctrl_command(ctrl, buf);
+ }
+-#endif /* CONFIG_TAXONOMY */
+ static int hostapd_cli_cmd_sa_query(struct wpa_ctrl *ctrl, int argc,
+@@ -431,7 +429,6 @@ static int hostapd_cli_cmd_sa_query(stru
+ }
+-#ifdef CONFIG_WPS
+ static int hostapd_cli_cmd_wps_pin(struct wpa_ctrl *ctrl, int argc,
+                                  char *argv[])
+ {
+@@ -657,7 +654,6 @@ static int hostapd_cli_cmd_wps_config(st
+                        ssid_hex, argv[1]);
+       return wpa_ctrl_command(ctrl, buf);
+ }
+-#endif /* CONFIG_WPS */
+ static int hostapd_cli_cmd_disassoc_imminent(struct wpa_ctrl *ctrl, int argc,
+@@ -1670,13 +1666,10 @@ static const struct hostapd_cli_cmd host
+       { "disassociate", hostapd_cli_cmd_disassociate,
+         hostapd_complete_stations,
+         "<addr> = disassociate a station" },
+-#ifdef CONFIG_TAXONOMY
+       { "signature", hostapd_cli_cmd_signature, hostapd_complete_stations,
+         "<addr> = get taxonomy signature for a station" },
+-#endif /* CONFIG_TAXONOMY */
+       { "sa_query", hostapd_cli_cmd_sa_query, hostapd_complete_stations,
+         "<addr> = send SA Query to a station" },
+-#ifdef CONFIG_WPS
+       { "wps_pin", hostapd_cli_cmd_wps_pin, NULL,
+         "<uuid> <pin> [timeout] [addr] = add WPS Enrollee PIN" },
+       { "wps_check_pin", hostapd_cli_cmd_wps_check_pin, NULL,
+@@ -1701,7 +1694,6 @@ static const struct hostapd_cli_cmd host
+         "<SSID> <auth> <encr> <key> = configure AP" },
+       { "wps_get_status", hostapd_cli_cmd_wps_get_status, NULL,
+         "= show current WPS status" },
+-#endif /* CONFIG_WPS */
+       { "disassoc_imminent", hostapd_cli_cmd_disassoc_imminent, NULL,
+         "= send Disassociation Imminent notification" },
+       { "ess_disassoc", hostapd_cli_cmd_ess_disassoc, NULL,
diff --git a/package/network/services/hostapd/patches/251-wpa_cli_ifdef.patch b/package/network/services/hostapd/patches/251-wpa_cli_ifdef.patch
new file mode 100644 (file)
index 0000000..d7f967d
--- /dev/null
@@ -0,0 +1,22 @@
+From: Felix Fietkau <nbd@openwrt.org>
+Date: Mon, 2 Dec 2013 13:07:46 +0000
+Subject: [PATCH] hostapd: always include p2p options in wpa_cli
+
+--- a/wpa_supplicant/wpa_cli.c
++++ b/wpa_supplicant/wpa_cli.c
+@@ -26,6 +26,15 @@
+ #include <cutils/properties.h>
+ #endif /* ANDROID */
++#ifndef CONFIG_P2P
++#define CONFIG_P2P
++#endif
++#ifndef CONFIG_AP
++#define CONFIG_AP
++#endif
++#ifndef CONFIG_MESH
++#define CONFIG_MESH
++#endif
+ static const char *const wpa_cli_version =
+ "wpa_cli v" VERSION_STR "\n"
diff --git a/package/network/services/hostapd/patches/252-disable_ctrl_iface_mib.patch b/package/network/services/hostapd/patches/252-disable_ctrl_iface_mib.patch
new file mode 100644 (file)
index 0000000..c65b2b1
--- /dev/null
@@ -0,0 +1,243 @@
+From: Felix Fietkau <nbd@openwrt.org>
+Date: Fri, 18 Mar 2011 02:15:52 +0000
+Subject: [PATCH] Remove some unnecessary control interface functionality
+
+--- a/hostapd/Makefile
++++ b/hostapd/Makefile
+@@ -221,6 +221,9 @@ endif
+ ifdef CONFIG_NO_CTRL_IFACE
+ CFLAGS += -DCONFIG_NO_CTRL_IFACE
+ else
++ifdef CONFIG_CTRL_IFACE_MIB
++CFLAGS += -DCONFIG_CTRL_IFACE_MIB
++endif
+ ifeq ($(CONFIG_CTRL_IFACE), udp)
+ CFLAGS += -DCONFIG_CTRL_IFACE_UDP
+ else
+--- a/hostapd/ctrl_iface.c
++++ b/hostapd/ctrl_iface.c
+@@ -3897,6 +3897,7 @@ static int hostapd_ctrl_iface_receive_pr
+                                                     reply_size);
+       } else if (os_strcmp(buf, "STATUS-DRIVER") == 0) {
+               reply_len = hostapd_drv_status(hapd, reply, reply_size);
++#ifdef CONFIG_CTRL_IFACE_MIB
+       } else if (os_strcmp(buf, "MIB") == 0) {
+               reply_len = ieee802_11_get_mib(hapd, reply, reply_size);
+               if (reply_len >= 0) {
+@@ -3938,6 +3939,7 @@ static int hostapd_ctrl_iface_receive_pr
+       } else if (os_strncmp(buf, "STA-NEXT ", 9) == 0) {
+               reply_len = hostapd_ctrl_iface_sta_next(hapd, buf + 9, reply,
+                                                       reply_size);
++#endif
+       } else if (os_strcmp(buf, "ATTACH") == 0) {
+               if (hostapd_ctrl_iface_attach(hapd, from, fromlen, NULL))
+                       reply_len = -1;
+--- a/src/ap/ctrl_iface_ap.c
++++ b/src/ap/ctrl_iface_ap.c
+@@ -26,6 +26,26 @@
+ #include "taxonomy.h"
+ #include "wnm_ap.h"
++static const char * hw_mode_str(enum hostapd_hw_mode mode)
++{
++      switch (mode) {
++      case HOSTAPD_MODE_IEEE80211B:
++              return "b";
++      case HOSTAPD_MODE_IEEE80211G:
++              return "g";
++      case HOSTAPD_MODE_IEEE80211A:
++              return "a";
++      case HOSTAPD_MODE_IEEE80211AD:
++              return "ad";
++      case HOSTAPD_MODE_IEEE80211ANY:
++              return "any";
++      case NUM_HOSTAPD_MODES:
++              return "invalid";
++      }
++      return "unknown";
++}
++
++#ifdef CONFIG_CTRL_IFACE_MIB
+ static size_t hostapd_write_ht_mcs_bitmask(char *buf, size_t buflen,
+                                          size_t curr_len, const u8 *mcs_set)
+@@ -212,26 +232,6 @@ static const char * timeout_next_str(int
+ }
+-static const char * hw_mode_str(enum hostapd_hw_mode mode)
+-{
+-      switch (mode) {
+-      case HOSTAPD_MODE_IEEE80211B:
+-              return "b";
+-      case HOSTAPD_MODE_IEEE80211G:
+-              return "g";
+-      case HOSTAPD_MODE_IEEE80211A:
+-              return "a";
+-      case HOSTAPD_MODE_IEEE80211AD:
+-              return "ad";
+-      case HOSTAPD_MODE_IEEE80211ANY:
+-              return "any";
+-      case NUM_HOSTAPD_MODES:
+-              return "invalid";
+-      }
+-      return "unknown";
+-}
+-
+-
+ static int hostapd_ctrl_iface_sta_mib(struct hostapd_data *hapd,
+                                     struct sta_info *sta,
+                                     char *buf, size_t buflen)
+@@ -539,6 +539,7 @@ int hostapd_ctrl_iface_sta_next(struct h
+       return hostapd_ctrl_iface_sta_mib(hapd, sta->next, buf, buflen);
+ }
++#endif
+ #ifdef CONFIG_P2P_MANAGER
+ static int p2p_manager_disconnect(struct hostapd_data *hapd, u16 stype,
+@@ -951,12 +952,12 @@ int hostapd_ctrl_iface_status(struct hos
+                       return len;
+               len += ret;
+       }
+-
++#ifdef CONFIG_CTRL_IFACE_MIB
+       if (iface->conf->ieee80211n && !hapd->conf->disable_11n && mode) {
+               len = hostapd_write_ht_mcs_bitmask(buf, buflen, len,
+                                                  mode->mcs_set);
+       }
+-
++#endif /* CONFIG_CTRL_IFACE_MIB */
+       if (iface->current_rates && iface->num_rates) {
+               ret = os_snprintf(buf + len, buflen - len, "supported_rates=");
+               if (os_snprintf_error(buflen - len, ret))
+--- a/src/ap/ieee802_1x.c
++++ b/src/ap/ieee802_1x.c
+@@ -2837,6 +2837,7 @@ static const char * bool_txt(bool val)
+       return val ? "TRUE" : "FALSE";
+ }
++#ifdef CONFIG_CTRL_IFACE_MIB
+ int ieee802_1x_get_mib(struct hostapd_data *hapd, char *buf, size_t buflen)
+ {
+@@ -3023,6 +3024,7 @@ int ieee802_1x_get_mib_sta(struct hostap
+       return len;
+ }
++#endif
+ #ifdef CONFIG_HS20
+ static void ieee802_1x_wnm_notif_send(void *eloop_ctx, void *timeout_ctx)
+--- a/src/ap/wpa_auth.c
++++ b/src/ap/wpa_auth.c
+@@ -5583,6 +5583,7 @@ static const char * wpa_bool_txt(int val
+       return val ? "TRUE" : "FALSE";
+ }
++#ifdef CONFIG_CTRL_IFACE_MIB
+ #define RSN_SUITE "%02x-%02x-%02x-%d"
+ #define RSN_SUITE_ARG(s) \
+@@ -5735,7 +5736,7 @@ int wpa_get_mib_sta(struct wpa_state_mac
+       return len;
+ }
+-
++#endif
+ void wpa_auth_countermeasures_start(struct wpa_authenticator *wpa_auth)
+ {
+--- a/src/rsn_supp/wpa.c
++++ b/src/rsn_supp/wpa.c
+@@ -3943,6 +3943,8 @@ static u32 wpa_key_mgmt_suite(struct wpa
+ }
++#ifdef CONFIG_CTRL_IFACE_MIB
++
+ #define RSN_SUITE "%02x-%02x-%02x-%d"
+ #define RSN_SUITE_ARG(s) \
+ ((s) >> 24) & 0xff, ((s) >> 16) & 0xff, ((s) >> 8) & 0xff, (s) & 0xff
+@@ -4024,6 +4026,7 @@ int wpa_sm_get_mib(struct wpa_sm *sm, ch
+       return (int) len;
+ }
++#endif
+ #endif /* CONFIG_CTRL_IFACE */
+--- a/wpa_supplicant/Makefile
++++ b/wpa_supplicant/Makefile
+@@ -1038,6 +1038,9 @@ ifdef CONFIG_FILS
+ OBJS += ../src/ap/fils_hlp.o
+ endif
+ ifdef CONFIG_CTRL_IFACE
++ifdef CONFIG_CTRL_IFACE_MIB
++CFLAGS += -DCONFIG_CTRL_IFACE_MIB
++endif
+ OBJS += ../src/ap/ctrl_iface_ap.o
+ endif
+--- a/wpa_supplicant/ap.c
++++ b/wpa_supplicant/ap.c
+@@ -1520,7 +1520,7 @@ int wpas_ap_wps_nfc_report_handover(stru
+ #endif /* CONFIG_WPS */
+-#ifdef CONFIG_CTRL_IFACE
++#if defined(CONFIG_CTRL_IFACE) && defined(CONFIG_CTRL_IFACE_MIB)
+ int ap_ctrl_iface_sta_first(struct wpa_supplicant *wpa_s,
+                           char *buf, size_t buflen)
+--- a/wpa_supplicant/ctrl_iface.c
++++ b/wpa_supplicant/ctrl_iface.c
+@@ -2355,7 +2355,7 @@ static int wpa_supplicant_ctrl_iface_sta
+                       pos += ret;
+               }
+-#ifdef CONFIG_AP
++#if defined(CONFIG_AP) && defined(CONFIG_CTRL_IFACE_MIB)
+               if (wpa_s->ap_iface) {
+                       pos += ap_ctrl_iface_wpa_get_status(wpa_s, pos,
+                                                           end - pos,
+@@ -12542,6 +12542,7 @@ char * wpa_supplicant_ctrl_iface_process
+                       reply_len = -1;
+       } else if (os_strncmp(buf, "NOTE ", 5) == 0) {
+               wpa_printf(MSG_INFO, "NOTE: %s", buf + 5);
++#ifdef CONFIG_CTRL_IFACE_MIB
+       } else if (os_strcmp(buf, "MIB") == 0) {
+               reply_len = wpa_sm_get_mib(wpa_s->wpa, reply, reply_size);
+               if (reply_len >= 0) {
+@@ -12554,6 +12555,7 @@ char * wpa_supplicant_ctrl_iface_process
+                               reply_size - reply_len);
+ #endif /* CONFIG_MACSEC */
+               }
++#endif
+       } else if (os_strncmp(buf, "STATUS", 6) == 0) {
+               reply_len = wpa_supplicant_ctrl_iface_status(
+                       wpa_s, buf + 6, reply, reply_size);
+@@ -13042,6 +13044,7 @@ char * wpa_supplicant_ctrl_iface_process
+               reply_len = wpa_supplicant_ctrl_iface_bss(
+                       wpa_s, buf + 4, reply, reply_size);
+ #ifdef CONFIG_AP
++#ifdef CONFIG_CTRL_IFACE_MIB
+       } else if (os_strcmp(buf, "STA-FIRST") == 0) {
+               reply_len = ap_ctrl_iface_sta_first(wpa_s, reply, reply_size);
+       } else if (os_strncmp(buf, "STA ", 4) == 0) {
+@@ -13050,12 +13053,15 @@ char * wpa_supplicant_ctrl_iface_process
+       } else if (os_strncmp(buf, "STA-NEXT ", 9) == 0) {
+               reply_len = ap_ctrl_iface_sta_next(wpa_s, buf + 9, reply,
+                                                  reply_size);
++#endif
++#ifdef CONFIG_CTRL_IFACE_MIB
+       } else if (os_strncmp(buf, "DEAUTHENTICATE ", 15) == 0) {
+               if (ap_ctrl_iface_sta_deauthenticate(wpa_s, buf + 15))
+                       reply_len = -1;
+       } else if (os_strncmp(buf, "DISASSOCIATE ", 13) == 0) {
+               if (ap_ctrl_iface_sta_disassociate(wpa_s, buf + 13))
+                       reply_len = -1;
++#endif
+       } else if (os_strncmp(buf, "CHAN_SWITCH ", 12) == 0) {
+               if (ap_ctrl_iface_chanswitch(wpa_s, buf + 12))
+                       reply_len = -1;
diff --git a/package/network/services/hostapd/patches/253-qos_map_set_without_interworking.patch b/package/network/services/hostapd/patches/253-qos_map_set_without_interworking.patch
new file mode 100644 (file)
index 0000000..4072ff5
--- /dev/null
@@ -0,0 +1,103 @@
+From: Felix Fietkau <nbd@nbd.name>
+Date: Thu, 4 Nov 2021 11:45:18 +0100
+Subject: [PATCH] hostapd: support qos_map_set without CONFIG_INTERWORKING
+
+This feature is useful on its own even without full interworking support
+
+--- a/hostapd/config_file.c
++++ b/hostapd/config_file.c
+@@ -1680,6 +1680,8 @@ static int parse_anqp_elem(struct hostap
+       return 0;
+ }
++#endif /* CONFIG_INTERWORKING */
++
+ static int parse_qos_map_set(struct hostapd_bss_config *bss,
+                            char *buf, int line)
+@@ -1721,8 +1723,6 @@ static int parse_qos_map_set(struct host
+       return 0;
+ }
+-#endif /* CONFIG_INTERWORKING */
+-
+ #ifdef CONFIG_HS20
+ static int hs20_parse_conn_capab(struct hostapd_bss_config *bss, char *buf,
+@@ -4260,10 +4260,10 @@ static int hostapd_config_fill(struct ho
+               bss->gas_frag_limit = val;
+       } else if (os_strcmp(buf, "gas_comeback_delay") == 0) {
+               bss->gas_comeback_delay = atoi(pos);
++#endif /* CONFIG_INTERWORKING */
+       } else if (os_strcmp(buf, "qos_map_set") == 0) {
+               if (parse_qos_map_set(bss, pos, line) < 0)
+                       return 1;
+-#endif /* CONFIG_INTERWORKING */
+ #ifdef CONFIG_RADIUS_TEST
+       } else if (os_strcmp(buf, "dump_msk_file") == 0) {
+               os_free(bss->dump_msk_file);
+--- a/src/ap/hostapd.c
++++ b/src/ap/hostapd.c
+@@ -1548,6 +1548,7 @@ static int hostapd_setup_bss(struct host
+               wpa_printf(MSG_ERROR, "GAS server initialization failed");
+               return -1;
+       }
++#endif /* CONFIG_INTERWORKING */
+       if (conf->qos_map_set_len &&
+           hostapd_drv_set_qos_map(hapd, conf->qos_map_set,
+@@ -1555,7 +1556,6 @@ static int hostapd_setup_bss(struct host
+               wpa_printf(MSG_ERROR, "Failed to initialize QoS Map");
+               return -1;
+       }
+-#endif /* CONFIG_INTERWORKING */
+       if (conf->bss_load_update_period && bss_load_update_init(hapd)) {
+               wpa_printf(MSG_ERROR, "BSS Load initialization failed");
+--- a/src/ap/ieee802_11_shared.c
++++ b/src/ap/ieee802_11_shared.c
+@@ -1138,13 +1138,11 @@ u8 * hostapd_eid_rsnxe(struct hostapd_da
+ u16 check_ext_capab(struct hostapd_data *hapd, struct sta_info *sta,
+                   const u8 *ext_capab_ie, size_t ext_capab_ie_len)
+ {
+-#ifdef CONFIG_INTERWORKING
+       /* check for QoS Map support */
+       if (ext_capab_ie_len >= 5) {
+               if (ext_capab_ie[4] & 0x01)
+                       sta->qos_map_enabled = 1;
+       }
+-#endif /* CONFIG_INTERWORKING */
+       if (ext_capab_ie_len > 0) {
+               sta->ecsa_supported = !!(ext_capab_ie[0] & BIT(2));
+--- a/wpa_supplicant/events.c
++++ b/wpa_supplicant/events.c
+@@ -2935,8 +2935,6 @@ void wnm_bss_keep_alive_deinit(struct wp
+ }
+-#ifdef CONFIG_INTERWORKING
+-
+ static int wpas_qos_map_set(struct wpa_supplicant *wpa_s, const u8 *qos_map,
+                           size_t len)
+ {
+@@ -2969,8 +2967,6 @@ static void interworking_process_assoc_r
+       }
+ }
+-#endif /* CONFIG_INTERWORKING */
+-
+ static void wpa_supplicant_set_4addr_mode(struct wpa_supplicant *wpa_s)
+ {
+@@ -3350,10 +3346,8 @@ static int wpa_supplicant_event_associnf
+               wnm_process_assoc_resp(wpa_s, data->assoc_info.resp_ies,
+                                      data->assoc_info.resp_ies_len);
+ #endif /* CONFIG_WNM */
+-#ifdef CONFIG_INTERWORKING
+               interworking_process_assoc_resp(wpa_s, data->assoc_info.resp_ies,
+                                               data->assoc_info.resp_ies_len);
+-#endif /* CONFIG_INTERWORKING */
+               if (wpa_s->hw_capab == CAPAB_VHT &&
+                   get_ie(data->assoc_info.resp_ies,
+                          data->assoc_info.resp_ies_len, WLAN_EID_VHT_CAP))
diff --git a/package/network/services/hostapd/patches/380-disable_ctrl_iface_mib.patch b/package/network/services/hostapd/patches/380-disable_ctrl_iface_mib.patch
deleted file mode 100644 (file)
index c65b2b1..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-From: Felix Fietkau <nbd@openwrt.org>
-Date: Fri, 18 Mar 2011 02:15:52 +0000
-Subject: [PATCH] Remove some unnecessary control interface functionality
-
---- a/hostapd/Makefile
-+++ b/hostapd/Makefile
-@@ -221,6 +221,9 @@ endif
- ifdef CONFIG_NO_CTRL_IFACE
- CFLAGS += -DCONFIG_NO_CTRL_IFACE
- else
-+ifdef CONFIG_CTRL_IFACE_MIB
-+CFLAGS += -DCONFIG_CTRL_IFACE_MIB
-+endif
- ifeq ($(CONFIG_CTRL_IFACE), udp)
- CFLAGS += -DCONFIG_CTRL_IFACE_UDP
- else
---- a/hostapd/ctrl_iface.c
-+++ b/hostapd/ctrl_iface.c
-@@ -3897,6 +3897,7 @@ static int hostapd_ctrl_iface_receive_pr
-                                                     reply_size);
-       } else if (os_strcmp(buf, "STATUS-DRIVER") == 0) {
-               reply_len = hostapd_drv_status(hapd, reply, reply_size);
-+#ifdef CONFIG_CTRL_IFACE_MIB
-       } else if (os_strcmp(buf, "MIB") == 0) {
-               reply_len = ieee802_11_get_mib(hapd, reply, reply_size);
-               if (reply_len >= 0) {
-@@ -3938,6 +3939,7 @@ static int hostapd_ctrl_iface_receive_pr
-       } else if (os_strncmp(buf, "STA-NEXT ", 9) == 0) {
-               reply_len = hostapd_ctrl_iface_sta_next(hapd, buf + 9, reply,
-                                                       reply_size);
-+#endif
-       } else if (os_strcmp(buf, "ATTACH") == 0) {
-               if (hostapd_ctrl_iface_attach(hapd, from, fromlen, NULL))
-                       reply_len = -1;
---- a/src/ap/ctrl_iface_ap.c
-+++ b/src/ap/ctrl_iface_ap.c
-@@ -26,6 +26,26 @@
- #include "taxonomy.h"
- #include "wnm_ap.h"
-+static const char * hw_mode_str(enum hostapd_hw_mode mode)
-+{
-+      switch (mode) {
-+      case HOSTAPD_MODE_IEEE80211B:
-+              return "b";
-+      case HOSTAPD_MODE_IEEE80211G:
-+              return "g";
-+      case HOSTAPD_MODE_IEEE80211A:
-+              return "a";
-+      case HOSTAPD_MODE_IEEE80211AD:
-+              return "ad";
-+      case HOSTAPD_MODE_IEEE80211ANY:
-+              return "any";
-+      case NUM_HOSTAPD_MODES:
-+              return "invalid";
-+      }
-+      return "unknown";
-+}
-+
-+#ifdef CONFIG_CTRL_IFACE_MIB
- static size_t hostapd_write_ht_mcs_bitmask(char *buf, size_t buflen,
-                                          size_t curr_len, const u8 *mcs_set)
-@@ -212,26 +232,6 @@ static const char * timeout_next_str(int
- }
--static const char * hw_mode_str(enum hostapd_hw_mode mode)
--{
--      switch (mode) {
--      case HOSTAPD_MODE_IEEE80211B:
--              return "b";
--      case HOSTAPD_MODE_IEEE80211G:
--              return "g";
--      case HOSTAPD_MODE_IEEE80211A:
--              return "a";
--      case HOSTAPD_MODE_IEEE80211AD:
--              return "ad";
--      case HOSTAPD_MODE_IEEE80211ANY:
--              return "any";
--      case NUM_HOSTAPD_MODES:
--              return "invalid";
--      }
--      return "unknown";
--}
--
--
- static int hostapd_ctrl_iface_sta_mib(struct hostapd_data *hapd,
-                                     struct sta_info *sta,
-                                     char *buf, size_t buflen)
-@@ -539,6 +539,7 @@ int hostapd_ctrl_iface_sta_next(struct h
-       return hostapd_ctrl_iface_sta_mib(hapd, sta->next, buf, buflen);
- }
-+#endif
- #ifdef CONFIG_P2P_MANAGER
- static int p2p_manager_disconnect(struct hostapd_data *hapd, u16 stype,
-@@ -951,12 +952,12 @@ int hostapd_ctrl_iface_status(struct hos
-                       return len;
-               len += ret;
-       }
--
-+#ifdef CONFIG_CTRL_IFACE_MIB
-       if (iface->conf->ieee80211n && !hapd->conf->disable_11n && mode) {
-               len = hostapd_write_ht_mcs_bitmask(buf, buflen, len,
-                                                  mode->mcs_set);
-       }
--
-+#endif /* CONFIG_CTRL_IFACE_MIB */
-       if (iface->current_rates && iface->num_rates) {
-               ret = os_snprintf(buf + len, buflen - len, "supported_rates=");
-               if (os_snprintf_error(buflen - len, ret))
---- a/src/ap/ieee802_1x.c
-+++ b/src/ap/ieee802_1x.c
-@@ -2837,6 +2837,7 @@ static const char * bool_txt(bool val)
-       return val ? "TRUE" : "FALSE";
- }
-+#ifdef CONFIG_CTRL_IFACE_MIB
- int ieee802_1x_get_mib(struct hostapd_data *hapd, char *buf, size_t buflen)
- {
-@@ -3023,6 +3024,7 @@ int ieee802_1x_get_mib_sta(struct hostap
-       return len;
- }
-+#endif
- #ifdef CONFIG_HS20
- static void ieee802_1x_wnm_notif_send(void *eloop_ctx, void *timeout_ctx)
---- a/src/ap/wpa_auth.c
-+++ b/src/ap/wpa_auth.c
-@@ -5583,6 +5583,7 @@ static const char * wpa_bool_txt(int val
-       return val ? "TRUE" : "FALSE";
- }
-+#ifdef CONFIG_CTRL_IFACE_MIB
- #define RSN_SUITE "%02x-%02x-%02x-%d"
- #define RSN_SUITE_ARG(s) \
-@@ -5735,7 +5736,7 @@ int wpa_get_mib_sta(struct wpa_state_mac
-       return len;
- }
--
-+#endif
- void wpa_auth_countermeasures_start(struct wpa_authenticator *wpa_auth)
- {
---- a/src/rsn_supp/wpa.c
-+++ b/src/rsn_supp/wpa.c
-@@ -3943,6 +3943,8 @@ static u32 wpa_key_mgmt_suite(struct wpa
- }
-+#ifdef CONFIG_CTRL_IFACE_MIB
-+
- #define RSN_SUITE "%02x-%02x-%02x-%d"
- #define RSN_SUITE_ARG(s) \
- ((s) >> 24) & 0xff, ((s) >> 16) & 0xff, ((s) >> 8) & 0xff, (s) & 0xff
-@@ -4024,6 +4026,7 @@ int wpa_sm_get_mib(struct wpa_sm *sm, ch
-       return (int) len;
- }
-+#endif
- #endif /* CONFIG_CTRL_IFACE */
---- a/wpa_supplicant/Makefile
-+++ b/wpa_supplicant/Makefile
-@@ -1038,6 +1038,9 @@ ifdef CONFIG_FILS
- OBJS += ../src/ap/fils_hlp.o
- endif
- ifdef CONFIG_CTRL_IFACE
-+ifdef CONFIG_CTRL_IFACE_MIB
-+CFLAGS += -DCONFIG_CTRL_IFACE_MIB
-+endif
- OBJS += ../src/ap/ctrl_iface_ap.o
- endif
---- a/wpa_supplicant/ap.c
-+++ b/wpa_supplicant/ap.c
-@@ -1520,7 +1520,7 @@ int wpas_ap_wps_nfc_report_handover(stru
- #endif /* CONFIG_WPS */
--#ifdef CONFIG_CTRL_IFACE
-+#if defined(CONFIG_CTRL_IFACE) && defined(CONFIG_CTRL_IFACE_MIB)
- int ap_ctrl_iface_sta_first(struct wpa_supplicant *wpa_s,
-                           char *buf, size_t buflen)
---- a/wpa_supplicant/ctrl_iface.c
-+++ b/wpa_supplicant/ctrl_iface.c
-@@ -2355,7 +2355,7 @@ static int wpa_supplicant_ctrl_iface_sta
-                       pos += ret;
-               }
--#ifdef CONFIG_AP
-+#if defined(CONFIG_AP) && defined(CONFIG_CTRL_IFACE_MIB)
-               if (wpa_s->ap_iface) {
-                       pos += ap_ctrl_iface_wpa_get_status(wpa_s, pos,
-                                                           end - pos,
-@@ -12542,6 +12542,7 @@ char * wpa_supplicant_ctrl_iface_process
-                       reply_len = -1;
-       } else if (os_strncmp(buf, "NOTE ", 5) == 0) {
-               wpa_printf(MSG_INFO, "NOTE: %s", buf + 5);
-+#ifdef CONFIG_CTRL_IFACE_MIB
-       } else if (os_strcmp(buf, "MIB") == 0) {
-               reply_len = wpa_sm_get_mib(wpa_s->wpa, reply, reply_size);
-               if (reply_len >= 0) {
-@@ -12554,6 +12555,7 @@ char * wpa_supplicant_ctrl_iface_process
-                               reply_size - reply_len);
- #endif /* CONFIG_MACSEC */
-               }
-+#endif
-       } else if (os_strncmp(buf, "STATUS", 6) == 0) {
-               reply_len = wpa_supplicant_ctrl_iface_status(
-                       wpa_s, buf + 6, reply, reply_size);
-@@ -13042,6 +13044,7 @@ char * wpa_supplicant_ctrl_iface_process
-               reply_len = wpa_supplicant_ctrl_iface_bss(
-                       wpa_s, buf + 4, reply, reply_size);
- #ifdef CONFIG_AP
-+#ifdef CONFIG_CTRL_IFACE_MIB
-       } else if (os_strcmp(buf, "STA-FIRST") == 0) {
-               reply_len = ap_ctrl_iface_sta_first(wpa_s, reply, reply_size);
-       } else if (os_strncmp(buf, "STA ", 4) == 0) {
-@@ -13050,12 +13053,15 @@ char * wpa_supplicant_ctrl_iface_process
-       } else if (os_strncmp(buf, "STA-NEXT ", 9) == 0) {
-               reply_len = ap_ctrl_iface_sta_next(wpa_s, buf + 9, reply,
-                                                  reply_size);
-+#endif
-+#ifdef CONFIG_CTRL_IFACE_MIB
-       } else if (os_strncmp(buf, "DEAUTHENTICATE ", 15) == 0) {
-               if (ap_ctrl_iface_sta_deauthenticate(wpa_s, buf + 15))
-                       reply_len = -1;
-       } else if (os_strncmp(buf, "DISASSOCIATE ", 13) == 0) {
-               if (ap_ctrl_iface_sta_disassociate(wpa_s, buf + 13))
-                       reply_len = -1;
-+#endif
-       } else if (os_strncmp(buf, "CHAN_SWITCH ", 12) == 0) {
-               if (ap_ctrl_iface_chanswitch(wpa_s, buf + 12))
-                       reply_len = -1;
index b7d2e2b6592ad47e46563d54b4ca6e170ce70b42..e68edacb44062c14cf0a1ff8c26d912352be2e93 100644 (file)
@@ -11,7 +11,7 @@ if CONFIG_CTRL_IFACE_MIB is not defined.
 
 --- a/hostapd/hostapd_cli.c
 +++ b/hostapd/hostapd_cli.c
-@@ -757,7 +757,7 @@ static int wpa_ctrl_command_sta(struct w
+@@ -753,7 +753,7 @@ static int wpa_ctrl_command_sta(struct w
        }
  
        buf[len] = '\0';
diff --git a/package/network/services/hostapd/patches/420-indicate-features.patch b/package/network/services/hostapd/patches/420-indicate-features.patch
deleted file mode 100644 (file)
index 006a567..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-From: Jo-Philipp Wich <jow@openwrt.org>
-Date: Mon, 12 Dec 2011 17:26:13 +0000
-Subject: [PATCH] hostapd: support optional argument for the -v switch of
- hostapd and wpa_supplicant to query build features, e.g. hostapd -veap to
- test whether 802.11i support is compiled in
-
---- a/hostapd/main.c
-+++ b/hostapd/main.c
-@@ -31,7 +31,7 @@
- #include "config_file.h"
- #include "eap_register.h"
- #include "ctrl_iface.h"
--
-+#include "build_features.h"
- struct hapd_global {
-       void **drv_priv;
-@@ -806,7 +806,7 @@ int main(int argc, char *argv[])
-       wpa_supplicant_event = hostapd_wpa_event;
-       wpa_supplicant_event_global = hostapd_wpa_event_global;
-       for (;;) {
--              c = getopt(argc, argv, "b:Bde:f:hi:KP:sSTtu:vg:G:q");
-+              c = getopt(argc, argv, "b:Bde:f:hi:KP:sSTtu:g:G:qv::");
-               if (c < 0)
-                       break;
-               switch (c) {
-@@ -843,6 +843,8 @@ int main(int argc, char *argv[])
-                       break;
- #endif /* CONFIG_DEBUG_LINUX_TRACING */
-               case 'v':
-+                      if (optarg)
-+                              exit(!has_feature(optarg));
-                       show_version();
-                       exit(1);
-               case 'g':
---- a/wpa_supplicant/main.c
-+++ b/wpa_supplicant/main.c
-@@ -12,6 +12,7 @@
- #endif /* __linux__ */
- #include "common.h"
-+#include "build_features.h"
- #include "crypto/crypto.h"
- #include "fst/fst.h"
- #include "wpa_supplicant_i.h"
-@@ -202,7 +203,7 @@ int main(int argc, char *argv[])
-       for (;;) {
-               c = getopt(argc, argv,
--                         "b:Bc:C:D:de:f:g:G:hi:I:KLMm:No:O:p:P:qsTtuvW");
-+                         "b:Bc:C:D:de:f:g:G:hi:I:KLMm:No:O:p:P:qsTtuv::W");
-               if (c < 0)
-                       break;
-               switch (c) {
-@@ -302,8 +303,12 @@ int main(int argc, char *argv[])
-                       break;
- #endif /* CONFIG_CTRL_IFACE_DBUS_NEW */
-               case 'v':
--                      printf("%s\n", wpa_supplicant_version);
--                      exitcode = 0;
-+                      if (optarg) {
-+                              exitcode = !has_feature(optarg);
-+                      } else {
-+                              printf("%s\n", wpa_supplicant_version);
-+                              exitcode = 0;
-+                      }
-                       goto out;
-               case 'W':
-                       params.wait_for_monitor++;
diff --git a/package/network/services/hostapd/patches/430-hostapd_cli_ifdef.patch b/package/network/services/hostapd/patches/430-hostapd_cli_ifdef.patch
deleted file mode 100644 (file)
index b6421e9..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-From: Felix Fietkau <nbd@openwrt.org>
-Date: Thu, 13 Sep 2012 12:39:14 +0000
-Subject: [PATCH] hostapd: support wps in hostapd_cli even when built from the
- mini variant
-
---- a/hostapd/hostapd_cli.c
-+++ b/hostapd/hostapd_cli.c
-@@ -401,7 +401,6 @@ static int hostapd_cli_cmd_disassociate(
- }
--#ifdef CONFIG_TAXONOMY
- static int hostapd_cli_cmd_signature(struct wpa_ctrl *ctrl, int argc,
-                                    char *argv[])
- {
-@@ -414,7 +413,6 @@ static int hostapd_cli_cmd_signature(str
-       os_snprintf(buf, sizeof(buf), "SIGNATURE %s", argv[0]);
-       return wpa_ctrl_command(ctrl, buf);
- }
--#endif /* CONFIG_TAXONOMY */
- static int hostapd_cli_cmd_sa_query(struct wpa_ctrl *ctrl, int argc,
-@@ -431,7 +429,6 @@ static int hostapd_cli_cmd_sa_query(stru
- }
--#ifdef CONFIG_WPS
- static int hostapd_cli_cmd_wps_pin(struct wpa_ctrl *ctrl, int argc,
-                                  char *argv[])
- {
-@@ -657,7 +654,6 @@ static int hostapd_cli_cmd_wps_config(st
-                        ssid_hex, argv[1]);
-       return wpa_ctrl_command(ctrl, buf);
- }
--#endif /* CONFIG_WPS */
- static int hostapd_cli_cmd_disassoc_imminent(struct wpa_ctrl *ctrl, int argc,
-@@ -1670,13 +1666,10 @@ static const struct hostapd_cli_cmd host
-       { "disassociate", hostapd_cli_cmd_disassociate,
-         hostapd_complete_stations,
-         "<addr> = disassociate a station" },
--#ifdef CONFIG_TAXONOMY
-       { "signature", hostapd_cli_cmd_signature, hostapd_complete_stations,
-         "<addr> = get taxonomy signature for a station" },
--#endif /* CONFIG_TAXONOMY */
-       { "sa_query", hostapd_cli_cmd_sa_query, hostapd_complete_stations,
-         "<addr> = send SA Query to a station" },
--#ifdef CONFIG_WPS
-       { "wps_pin", hostapd_cli_cmd_wps_pin, NULL,
-         "<uuid> <pin> [timeout] [addr] = add WPS Enrollee PIN" },
-       { "wps_check_pin", hostapd_cli_cmd_wps_check_pin, NULL,
-@@ -1701,7 +1694,6 @@ static const struct hostapd_cli_cmd host
-         "<SSID> <auth> <encr> <key> = configure AP" },
-       { "wps_get_status", hostapd_cli_cmd_wps_get_status, NULL,
-         "= show current WPS status" },
--#endif /* CONFIG_WPS */
-       { "disassoc_imminent", hostapd_cli_cmd_disassoc_imminent, NULL,
-         "= send Disassociation Imminent notification" },
-       { "ess_disassoc", hostapd_cli_cmd_ess_disassoc, NULL,
diff --git a/package/network/services/hostapd/patches/431-wpa_cli_ifdef.patch b/package/network/services/hostapd/patches/431-wpa_cli_ifdef.patch
deleted file mode 100644 (file)
index d7f967d..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-From: Felix Fietkau <nbd@openwrt.org>
-Date: Mon, 2 Dec 2013 13:07:46 +0000
-Subject: [PATCH] hostapd: always include p2p options in wpa_cli
-
---- a/wpa_supplicant/wpa_cli.c
-+++ b/wpa_supplicant/wpa_cli.c
-@@ -26,6 +26,15 @@
- #include <cutils/properties.h>
- #endif /* ANDROID */
-+#ifndef CONFIG_P2P
-+#define CONFIG_P2P
-+#endif
-+#ifndef CONFIG_AP
-+#define CONFIG_AP
-+#endif
-+#ifndef CONFIG_MESH
-+#define CONFIG_MESH
-+#endif
- static const char *const wpa_cli_version =
- "wpa_cli v" VERSION_STR "\n"
index db561b8c20a5b712957c015834e3de4e098d846c..ac1c9280b7565675eb1de183d77769827598f109 100644 (file)
@@ -14,15 +14,7 @@ Signed-hostap: Antonio Quartulli <ordex@autistici.org>
 
 --- a/src/drivers/driver.h
 +++ b/src/drivers/driver.h
-@@ -19,6 +19,7 @@
- #define WPA_SUPPLICANT_DRIVER_VERSION 4
-+#include "ap/sta_info.h"
- #include "common/defs.h"
- #include "common/ieee802_11_defs.h"
- #include "common/wpa_common.h"
-@@ -971,6 +972,9 @@ struct wpa_driver_associate_params {
+@@ -971,6 +971,9 @@ struct wpa_driver_associate_params {
         * responsible for selecting with which BSS to associate. */
        const u8 *bssid;
  
@@ -151,18 +143,7 @@ Signed-hostap: Antonio Quartulli <ordex@autistici.org>
        { INT_RANGE(macsec_integ_only, 0, 1) },
 --- a/wpa_supplicant/config_ssid.h
 +++ b/wpa_supplicant/config_ssid.h
-@@ -10,8 +10,10 @@
- #define CONFIG_SSID_H
- #include "common/defs.h"
-+#include "ap/sta_info.h"
- #include "utils/list.h"
- #include "eap_peer/eap_config.h"
-+#include "drivers/nl80211_copy.h"
- #define DEFAULT_EAP_WORKAROUND ((unsigned int) -1)
-@@ -879,6 +881,9 @@ struct wpa_ssid {
+@@ -879,6 +879,9 @@ struct wpa_ssid {
         */
        void *parent_cred;
  
diff --git a/package/network/services/hostapd/patches/461-Move-definition-of-WLAN_SUPP_RATES_MAX-to-defs.h.patch b/package/network/services/hostapd/patches/461-Move-definition-of-WLAN_SUPP_RATES_MAX-to-defs.h.patch
deleted file mode 100644 (file)
index daff60a..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Eneas U de Queiroz <cotequeiroz@gmail.com>
-Date: Mon, 12 Feb 2024 14:18:24 -0300
-Subject: [PATCH] Move definition of WLAN_SUPP_RATES_MAX to defs.h
-
-Patch 460-wpa_supplicant-add-new-config-params-to-be-used-with.patch
-("wpa_supplicant: add new config params to be used with the ibss join
-command") adds the definition of unsigned char
-rates[WLAN_SUPP_RATES_MAX] to driver.h, which needs to have
-WLAN_SUPP_RATES_MAX defined.  So it includes sta_info.h to get the
-definition.
-
-Commit c74739250a ("AP MLD: Use a helper function to check if a STA is a
-non-AP MLD") makes sta_info.h include driver.h before
-it defines WLAN_SUPP_RATES_MAX, causing an error:
-
-src/drivers/driver.h:969:29: error: 'WLAN_SUPP_RATES_MAX' undeclared here (not in a function)
-
-Move the definition of WLAN_SUPP_RATES_MAX to defs.h to ensure it gets
-defined before other headers are included.  The inclusion of sta_info.h
-in driver.h can be reverted as well.
-
-Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
----
- src/ap/sta_info.h            | 4 ----
- src/common/defs.h            | 4 ++++
- src/drivers/driver.h         | 1 -
- wpa_supplicant/config_ssid.h | 1 -
- 4 files changed, 4 insertions(+), 6 deletions(-)
-
---- a/src/ap/sta_info.h
-+++ b/src/ap/sta_info.h
-@@ -49,10 +49,6 @@
- #define WLAN_STA_PENDING_DEAUTH_CB BIT(30)
- #define WLAN_STA_NONERP BIT(31)
--/* Maximum number of supported rates (from both Supported Rates and Extended
-- * Supported Rates IEs). */
--#define WLAN_SUPP_RATES_MAX 32
--
- struct hostapd_data;
- struct mbo_non_pref_chan_info {
---- a/src/common/defs.h
-+++ b/src/common/defs.h
-@@ -63,6 +63,10 @@
-                        WPA_KEY_MGMT_FT_FILS_SHA256 | \
-                        WPA_KEY_MGMT_FT_FILS_SHA384)
-+/* Maximum number of supported rates (from both Supported Rates and Extended
-+ * Supported Rates IEs). */
-+#define WLAN_SUPP_RATES_MAX 32
-+
- static inline int wpa_key_mgmt_wpa_ieee8021x(int akm)
- {
-       return !!(akm & (WPA_KEY_MGMT_IEEE8021X |
---- a/src/drivers/driver.h
-+++ b/src/drivers/driver.h
-@@ -19,7 +19,6 @@
- #define WPA_SUPPLICANT_DRIVER_VERSION 4
--#include "ap/sta_info.h"
- #include "common/defs.h"
- #include "common/ieee802_11_defs.h"
- #include "common/wpa_common.h"
---- a/wpa_supplicant/config_ssid.h
-+++ b/wpa_supplicant/config_ssid.h
-@@ -10,7 +10,6 @@
- #define CONFIG_SSID_H
- #include "common/defs.h"
--#include "ap/sta_info.h"
- #include "utils/list.h"
- #include "eap_peer/eap_config.h"
- #include "drivers/nl80211_copy.h"
diff --git a/package/network/services/hostapd/patches/500-lto-jobserver-support.patch b/package/network/services/hostapd/patches/500-lto-jobserver-support.patch
deleted file mode 100644 (file)
index f7f071f..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-From: Felix Fietkau <nbd@nbd.name>
-Date: Tue, 10 Jul 2018 13:48:17 +0200
-Subject: [PATCH] hostapd: build with LTO enabled (using jobserver for parallel
- build)
-
---- a/hostapd/Makefile
-+++ b/hostapd/Makefile
-@@ -1408,7 +1408,7 @@ hostapd_multi.a: $(BCHECK) $(OBJS)
-       @$(AR) cr $@ hostapd_multi.o $(OBJS)
- hostapd: $(OBJS)
--      $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
-+      +$(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
-       @$(E) "  LD " $@
- ifdef CONFIG_WPA_TRACE
-@@ -1419,7 +1419,7 @@ _OBJS_VAR := OBJS_c
- include ../src/objs.mk
- hostapd_cli: $(OBJS_c)
--      $(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c)
-+      +$(Q)$(CC) $(LDFLAGS) -o hostapd_cli $(OBJS_c) $(LIBS_c)
-       @$(E) "  LD " $@
- NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS)
---- a/wpa_supplicant/Makefile
-+++ b/wpa_supplicant/Makefile
-@@ -2106,31 +2106,31 @@ wpa_supplicant_multi.a: .config $(BCHECK
-       @$(AR) cr $@ wpa_supplicant_multi.o $(OBJS)
- wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs)
--      $(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
-+      +$(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
-       @$(E) "  LD " $@
- _OBJS_VAR := OBJS_t
- include ../src/objs.mk
- eapol_test: $(OBJS_t)
--      $(Q)$(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS)
-+      +$(Q)$(LDO) $(LDFLAGS) -o eapol_test $(OBJS_t) $(LIBS)
-       @$(E) "  LD " $@
- _OBJS_VAR := OBJS_t2
- include ../src/objs.mk
- preauth_test: $(OBJS_t2)
--      $(Q)$(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS)
-+      +$(Q)$(LDO) $(LDFLAGS) -o preauth_test $(OBJS_t2) $(LIBS)
-       @$(E) "  LD " $@
- _OBJS_VAR := OBJS_p
- include ../src/objs.mk
- wpa_passphrase: $(OBJS_p)
--      $(Q)$(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p) $(LIBS)
-+      +$(Q)$(LDO) $(LDFLAGS) -o wpa_passphrase $(OBJS_p) $(LIBS_p) $(LIBS)
-       @$(E) "  LD " $@
- _OBJS_VAR := OBJS_c
- include ../src/objs.mk
- wpa_cli: $(OBJS_c)
--      $(Q)$(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
-+      +$(Q)$(LDO) $(LDFLAGS) -o wpa_cli $(OBJS_c) $(LIBS_c)
-       @$(E) "  LD " $@
- LIBCTRL += ../src/common/wpa_ctrl.o
diff --git a/package/network/services/hostapd/patches/599-wpa_supplicant-fix-warnings.patch b/package/network/services/hostapd/patches/599-wpa_supplicant-fix-warnings.patch
deleted file mode 100644 (file)
index 4acd7ca..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-From: "Leon M. George" <leon@georgemail.eu>
-Date: Wed, 11 Sep 2019 15:22:55 +0200
-Subject: [PATCH] hostapd: declare struct wpa_bss early
-
-wps_supplicant.h assumes that 'struct wpa_bss' is forward declared if
-CONFIG_WPS is not defined.  With the later inclusion of
-600-ubus_support, the issue manifests in warnings like these:
-
-wps_supplicant.h:113:15: warning: 'struct wpa_bss' declared inside parameter list will not be visible outside of this definition or declaration
-        struct wpa_bss *bss)
-               ^~~~~~~
-This patch forward declares 'struct wpa_bss' regardless.
-
---- a/wpa_supplicant/wps_supplicant.h
-+++ b/wpa_supplicant/wps_supplicant.h
-@@ -9,6 +9,7 @@
- #ifndef WPS_SUPPLICANT_H
- #define WPS_SUPPLICANT_H
-+struct wpa_bss;
- struct wpa_scan_results;
- #ifdef CONFIG_WPS
-@@ -16,8 +17,6 @@ struct wpa_scan_results;
- #include "wps/wps.h"
- #include "wps/wps_defs.h"
--struct wpa_bss;
--
- struct wps_new_ap_settings {
-       const char *ssid_hex;
-       const char *auth;
index a6b03ffd3faaea092fd321722465d70a98370bd3..0457f37f74c982652ea0e96ff6c6135ef87424ac 100644 (file)
@@ -314,7 +314,7 @@ probe/assoc/auth requests via object subscribe.
                ap_free_sta(hapd, sta);
                break;
        }
-@@ -1451,15 +1453,28 @@ void ap_sta_set_authorized_event(struct
+@@ -1448,15 +1450,28 @@ void ap_sta_set_authorized_event(struct
                os_snprintf(buf, sizeof(buf), MACSTR, MAC2STR(sta->addr));
  
        if (authorized) {
@@ -343,7 +343,7 @@ probe/assoc/auth requests via object subscribe.
  #ifdef CONFIG_P2P
                if (wpa_auth_get_ip_addr(sta->wpa_sm, ip_addr_buf) == 0) {
                        os_snprintf(ip_addr, sizeof(ip_addr),
-@@ -1470,6 +1485,13 @@ void ap_sta_set_authorized_event(struct
+@@ -1467,6 +1482,13 @@ void ap_sta_set_authorized_event(struct
                }
  #endif /* CONFIG_P2P */
  
@@ -357,7 +357,7 @@ probe/assoc/auth requests via object subscribe.
                keyid = ap_sta_wpa_get_keyid(hapd, sta);
                if (keyid) {
                        os_snprintf(keyid_buf, sizeof(keyid_buf),
-@@ -1488,17 +1510,19 @@ void ap_sta_set_authorized_event(struct
+@@ -1485,17 +1507,19 @@ void ap_sta_set_authorized_event(struct
                                         dpp_pkhash, SHA256_MAC_LEN);
                }
  
index bc50606038dad30f6bf05eb3b623615b14b7ed4b..b826363248a640f57e8af48bc49767814393ff40 100644 (file)
@@ -206,7 +206,7 @@ as adding/removing interfaces.
  void hostapd_interface_deinit_free(struct hostapd_iface *iface);
 --- a/src/drivers/driver.h
 +++ b/src/drivers/driver.h
-@@ -3853,6 +3853,25 @@ struct wpa_driver_ops {
+@@ -3856,6 +3856,25 @@ struct wpa_driver_ops {
                         const char *ifname);
  
        /**
@@ -232,7 +232,7 @@ as adding/removing interfaces.
         * set_sta_vlan - Bind a station into a specific interface (AP only)
         * @priv: Private driver interface data
         * @ifname: Interface (main or virtual BSS or VLAN)
-@@ -6507,6 +6526,7 @@ union wpa_event_data {
+@@ -6510,6 +6529,7 @@ union wpa_event_data {
  
        /**
         * struct ch_switch
@@ -240,7 +240,7 @@ as adding/removing interfaces.
         * @freq: Frequency of new channel in MHz
         * @ht_enabled: Whether this is an HT channel
         * @ch_offset: Secondary channel offset
-@@ -6517,6 +6537,7 @@ union wpa_event_data {
+@@ -6520,6 +6540,7 @@ union wpa_event_data {
         * @punct_bitmap: Puncturing bitmap
         */
        struct ch_switch {
@@ -596,7 +596,7 @@ as adding/removing interfaces.
  CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY
 --- a/wpa_supplicant/events.c
 +++ b/wpa_supplicant/events.c
-@@ -5955,6 +5955,7 @@ void supplicant_event(void *ctx, enum wp
+@@ -5949,6 +5949,7 @@ void supplicant_event(void *ctx, enum wp
                event_to_string(event), event);
  #endif /* CONFIG_NO_STDOUT_DEBUG */
  
index 5611096ad88b41078c8aa52e8445033cbb3a6aad..f4b3ac33b10369de5ab9edd34040a8bc4b8ed4a8 100644 (file)
@@ -112,7 +112,7 @@ untagged DHCP packets
        hapd->x_snoop_initialized = false;
 --- a/src/drivers/driver.h
 +++ b/src/drivers/driver.h
-@@ -4275,7 +4275,7 @@ struct wpa_driver_ops {
+@@ -4278,7 +4278,7 @@ struct wpa_driver_ops {
         * Returns: 0 on success, negative (<0) on failure
         */
        int (*br_set_net_param)(void *priv, enum drv_br_net_param param,
diff --git a/package/network/services/hostapd/patches/750-qos_map_set_without_interworking.patch b/package/network/services/hostapd/patches/750-qos_map_set_without_interworking.patch
deleted file mode 100644 (file)
index 23b8dff..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-From: Felix Fietkau <nbd@nbd.name>
-Date: Thu, 4 Nov 2021 11:45:18 +0100
-Subject: [PATCH] hostapd: support qos_map_set without CONFIG_INTERWORKING
-
-This feature is useful on its own even without full interworking support
-
---- a/hostapd/config_file.c
-+++ b/hostapd/config_file.c
-@@ -1680,6 +1680,8 @@ static int parse_anqp_elem(struct hostap
-       return 0;
- }
-+#endif /* CONFIG_INTERWORKING */
-+
- static int parse_qos_map_set(struct hostapd_bss_config *bss,
-                            char *buf, int line)
-@@ -1721,8 +1723,6 @@ static int parse_qos_map_set(struct host
-       return 0;
- }
--#endif /* CONFIG_INTERWORKING */
--
- #ifdef CONFIG_HS20
- static int hs20_parse_conn_capab(struct hostapd_bss_config *bss, char *buf,
-@@ -4282,10 +4282,10 @@ static int hostapd_config_fill(struct ho
-               bss->gas_frag_limit = val;
-       } else if (os_strcmp(buf, "gas_comeback_delay") == 0) {
-               bss->gas_comeback_delay = atoi(pos);
-+#endif /* CONFIG_INTERWORKING */
-       } else if (os_strcmp(buf, "qos_map_set") == 0) {
-               if (parse_qos_map_set(bss, pos, line) < 0)
-                       return 1;
--#endif /* CONFIG_INTERWORKING */
- #ifdef CONFIG_RADIUS_TEST
-       } else if (os_strcmp(buf, "dump_msk_file") == 0) {
-               os_free(bss->dump_msk_file);
---- a/src/ap/hostapd.c
-+++ b/src/ap/hostapd.c
-@@ -1578,6 +1578,7 @@ int hostapd_setup_bss(struct hostapd_dat
-               wpa_printf(MSG_ERROR, "GAS server initialization failed");
-               return -1;
-       }
-+#endif /* CONFIG_INTERWORKING */
-       if (conf->qos_map_set_len &&
-           hostapd_drv_set_qos_map(hapd, conf->qos_map_set,
-@@ -1585,7 +1586,6 @@ int hostapd_setup_bss(struct hostapd_dat
-               wpa_printf(MSG_ERROR, "Failed to initialize QoS Map");
-               return -1;
-       }
--#endif /* CONFIG_INTERWORKING */
-       if (conf->bss_load_update_period && bss_load_update_init(hapd)) {
-               wpa_printf(MSG_ERROR, "BSS Load initialization failed");
---- a/src/ap/ieee802_11_shared.c
-+++ b/src/ap/ieee802_11_shared.c
-@@ -1138,13 +1138,11 @@ u8 * hostapd_eid_rsnxe(struct hostapd_da
- u16 check_ext_capab(struct hostapd_data *hapd, struct sta_info *sta,
-                   const u8 *ext_capab_ie, size_t ext_capab_ie_len)
- {
--#ifdef CONFIG_INTERWORKING
-       /* check for QoS Map support */
-       if (ext_capab_ie_len >= 5) {
-               if (ext_capab_ie[4] & 0x01)
-                       sta->qos_map_enabled = 1;
-       }
--#endif /* CONFIG_INTERWORKING */
-       if (ext_capab_ie_len > 0) {
-               sta->ecsa_supported = !!(ext_capab_ie[0] & BIT(2));
---- a/wpa_supplicant/events.c
-+++ b/wpa_supplicant/events.c
-@@ -2935,8 +2935,6 @@ void wnm_bss_keep_alive_deinit(struct wp
- }
--#ifdef CONFIG_INTERWORKING
--
- static int wpas_qos_map_set(struct wpa_supplicant *wpa_s, const u8 *qos_map,
-                           size_t len)
- {
-@@ -2969,8 +2967,6 @@ static void interworking_process_assoc_r
-       }
- }
--#endif /* CONFIG_INTERWORKING */
--
- static void wpa_supplicant_set_4addr_mode(struct wpa_supplicant *wpa_s)
- {
-@@ -3350,10 +3346,8 @@ static int wpa_supplicant_event_associnf
-               wnm_process_assoc_resp(wpa_s, data->assoc_info.resp_ies,
-                                      data->assoc_info.resp_ies_len);
- #endif /* CONFIG_WNM */
--#ifdef CONFIG_INTERWORKING
-               interworking_process_assoc_resp(wpa_s, data->assoc_info.resp_ies,
-                                               data->assoc_info.resp_ies_len);
--#endif /* CONFIG_INTERWORKING */
-               if (wpa_s->hw_capab == CAPAB_VHT &&
-                   get_ie(data->assoc_info.resp_ies,
-                          data->assoc_info.resp_ies_len, WLAN_EID_VHT_CAP))
diff --git a/package/network/services/hostapd/patches/990-ctrl-make-WNM_AP-functions-dependant-on-CONFIG_AP.patch b/package/network/services/hostapd/patches/990-ctrl-make-WNM_AP-functions-dependant-on-CONFIG_AP.patch
deleted file mode 100644 (file)
index b57550a..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-From f0e9f5aab52b3eab85d28338cc996972ced4c39c Mon Sep 17 00:00:00 2001
-From: David Bauer <mail@david-bauer.net>
-Date: Tue, 17 May 2022 23:07:59 +0200
-Subject: [PATCH] ctrl: make WNM_AP functions dependant on CONFIG_AP
-
-This fixes linking errors found when compiling wpa_supplicant with
-CONFIG_WNM_AP enabled but CONFIG_AP disabled.
-
-Signed-off-by: David Bauer <mail@david-bauer.net>
----
- wpa_supplicant/ctrl_iface.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/wpa_supplicant/ctrl_iface.c
-+++ b/wpa_supplicant/ctrl_iface.c
-@@ -13220,7 +13220,7 @@ char * wpa_supplicant_ctrl_iface_process
-               if (wpas_ctrl_iface_coloc_intf_report(wpa_s, buf + 18))
-                       reply_len = -1;
- #endif /* CONFIG_WNM */
--#ifdef CONFIG_WNM_AP
-+#if defined(CONFIG_AP) && defined(CONFIG_WNM_AP)
-       } else if (os_strncmp(buf, "DISASSOC_IMMINENT ", 18) == 0) {
-               if (ap_ctrl_iface_disassoc_imminent(wpa_s, buf + 18))
-                       reply_len = -1;
-@@ -13230,7 +13230,7 @@ char * wpa_supplicant_ctrl_iface_process
-       } else if (os_strncmp(buf, "BSS_TM_REQ ", 11) == 0) {
-               if (ap_ctrl_iface_bss_tm_req(wpa_s, buf + 11))
-                       reply_len = -1;
--#endif /* CONFIG_WNM_AP */
-+#endif /* CONFIG_AP && CONFIG_WNM_AP */
-       } else if (os_strcmp(buf, "FLUSH") == 0) {
-               wpa_supplicant_ctrl_iface_flush(wpa_s);
-       } else if (os_strncmp(buf, "RADIO_WORK ", 11) == 0) {
diff --git a/package/network/services/hostapd/patches/991-Fix-OpenWrt-13156.patch b/package/network/services/hostapd/patches/991-Fix-OpenWrt-13156.patch
deleted file mode 100644 (file)
index 4cd8eaa..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-From 26cd9bafc1d25e602952ee86cd2a5b8c3a995490 Mon Sep 17 00:00:00 2001
-From: Stijn Tintel <stijn@linux-ipv6.be>
-Date: Fri, 28 Jul 2023 16:27:47 +0300
-Subject: [PATCH] Revert "Do prune_association only after the STA is
- authorized"
-
-Commit e978072baaca ("Do prune_association only after the STA is
-authorized") causes issues when an STA roams from one interface to
-another interface on the same PHY. The mt7915 driver is not able to
-handle this properly. While the commits fixes a DoS, there are other
-devices and drivers with the same limitation, so revert to the orginal
-behavior for now, until we have a better solution in place.
-
-Ref: https://github.com/openwrt/openwrt/issues/13156
-Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
----
- src/ap/hostapd.c  | 14 +++++++++++---
- src/ap/sta_info.c |  3 ---
- 2 files changed, 11 insertions(+), 6 deletions(-)
-
---- a/src/ap/hostapd.c
-+++ b/src/ap/hostapd.c
-@@ -3681,6 +3681,8 @@ int hostapd_remove_iface(struct hapd_int
- void hostapd_new_assoc_sta(struct hostapd_data *hapd, struct sta_info *sta,
-                          int reassoc)
- {
-+      int mld_assoc_link_id = -1;
-+
-       if (hapd->tkip_countermeasures) {
-               hostapd_drv_sta_deauth(hapd, sta->addr,
-                                      WLAN_REASON_MICHAEL_MIC_FAILURE);
-@@ -3688,10 +3690,16 @@ void hostapd_new_assoc_sta(struct hostap
-       }
- #ifdef CONFIG_IEEE80211BE
--      if (ap_sta_is_mld(hapd, sta) &&
--          sta->mld_assoc_link_id != hapd->mld_link_id)
--              return;
-+      if (ap_sta_is_mld(hapd, sta)) {
-+              if (sta->mld_assoc_link_id == hapd->mld_link_id) {
-+                      mld_assoc_link_id = sta->mld_assoc_link_id;
-+              } else {
-+                      return;
-+              }
-+      }
- #endif /* CONFIG_IEEE80211BE */
-+        if (mld_assoc_link_id != -2)
-+              hostapd_prune_associations(hapd, sta->addr, mld_assoc_link_id);
-       ap_sta_clear_disconnect_timeouts(hapd, sta);
-       sta->post_csa_sa_query = 0;
---- a/src/ap/sta_info.c
-+++ b/src/ap/sta_info.c
-@@ -1414,9 +1414,6 @@ bool ap_sta_set_authorized_flag(struct h
-                               mld_assoc_link_id = -2;
-               }
- #endif /* CONFIG_IEEE80211BE */
--              if (mld_assoc_link_id != -2)
--                      hostapd_prune_associations(hapd, sta->addr,
--                                                 mld_assoc_link_id);
-               sta->flags |= WLAN_STA_AUTHORIZED;
-       } else {
-               sta->flags &= ~WLAN_STA_AUTHORIZED;
diff --git a/package/network/services/hostapd/patches/992-nl80211-add-extra-ies-only-if-allowed-by-driver.patch b/package/network/services/hostapd/patches/992-nl80211-add-extra-ies-only-if-allowed-by-driver.patch
deleted file mode 100644 (file)
index ca17791..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-From: David Bauer <mail@david-bauer.net>
-To: hostap@lists.infradead.org
-Cc: =?utf-8?q?=C3=89tienne_Morice?= <neon.emorice@mail.com>
-Subject: [PATCH] nl80211: add extra-ies only if allowed by driver
-Date: Sun, 30 Jan 2022 20:22:00 +0100
-Message-Id: <20220130192200.10883-1-mail@david-bauer.net>
-List-Id: <hostap.lists.infradead.org>
-
-Upgrading wpa_supplicant from 2.9 to 2.10 breaks broadcom-wl
-based adapters. The reason for it is hostapd tries to install additional
-IEs for scanning while the driver does not support this.
-
-The kernel indicates the maximum number of bytes for additional scan IEs
-using the NL80211_ATTR_MAX_SCAN_IE_LEN attribute. Save this value and
-only add additional scan IEs in case the driver can accommodate these
-additional IEs.
-
-Reported-by: Étienne Morice <neon.emorice@mail.com>
-Tested-by: Étienne Morice <neon.emorice@mail.com>
-Signed-off-by: David Bauer <mail@david-bauer.net>
----
- src/drivers/driver.h              | 3 +++
- src/drivers/driver_nl80211_capa.c | 4 ++++
- src/drivers/driver_nl80211_scan.c | 2 +-
- 3 files changed, 8 insertions(+), 1 deletion(-)
-
---- a/src/drivers/driver.h
-+++ b/src/drivers/driver.h
-@@ -2344,6 +2344,9 @@ struct wpa_driver_capa {
-       /** Maximum number of iterations in a single scan plan */
-       u32 max_sched_scan_plan_iterations;
-+      /** Maximum number of extra IE bytes for scans */
-+      u16 max_scan_ie_len;
-+
-       /** Whether sched_scan (offloaded scanning) is supported */
-       int sched_scan_supported;
---- a/src/drivers/driver_nl80211_capa.c
-+++ b/src/drivers/driver_nl80211_capa.c
-@@ -972,6 +972,10 @@ static int wiphy_info_handler(struct nl_
-                       nla_get_u32(tb[NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS]);
-       }
-+      if (tb[NL80211_ATTR_MAX_SCAN_IE_LEN])
-+              capa->max_scan_ie_len =
-+                      nla_get_u16(tb[NL80211_ATTR_MAX_SCAN_IE_LEN]);
-+
-       if (tb[NL80211_ATTR_MAX_MATCH_SETS])
-               capa->max_match_sets =
-                       nla_get_u8(tb[NL80211_ATTR_MAX_MATCH_SETS]);
---- a/src/drivers/driver_nl80211_scan.c
-+++ b/src/drivers/driver_nl80211_scan.c
-@@ -221,7 +221,7 @@ nl80211_scan_common(struct i802_bss *bss
-               wpa_printf(MSG_DEBUG, "nl80211: Passive scan requested");
-       }
--      if (params->extra_ies) {
-+      if (params->extra_ies && drv->capa.max_scan_ie_len >= params->extra_ies_len) {
-               wpa_hexdump(MSG_MSGDUMP, "nl80211: Scan extra IEs",
-                           params->extra_ies, params->extra_ies_len);
-               if (nla_put(msg, NL80211_ATTR_IE, params->extra_ies_len,