]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
hostapd: update to 2026-07-09 24142/head
authorIvan Pavlov <AuthorReflex@gmail.com>
Wed, 8 Jul 2026 13:49:02 +0000 (16:49 +0300)
committerJonas Jelonek <jelonek.jonas@gmail.com>
Sat, 25 Jul 2026 22:12:45 +0000 (00:12 +0200)
Update to latest version from 2.12 branch

Manually edit patches:
- 110-mbedtls-TLS-crypto-option-initial-port.patch
- 140-tests-Makefile-make-run-tests-with-CONFIG_TLS.patch
- 780-Implement-APuP-Access-Point-Micro-Peering.patch

Restored previously removed patch:
- 060-nl80211-fix-reporting-spurious-frame-events.patch

Removed upstreamed patches:
- 001-AP-MLD-Fix-link-ID-validation-in-Basic-MLE-parsing.patch
- 002-BSS-Add-bounds-check-for-link_id-in-Basic-MLE-parsin.patch
- 003-MLD-Validate-MLE-Link-ID-fields-in-association-rejec.patch
- 004-Verify-MLD-link-ID-validity-in-get_basic_mle_link_id.patch
- 005-MLD-Verify-link-ID-validity-in-MLE-in-reconfiguratio.patch
- 006-AP-MLD-Verify-AP-MLD-link-ID-validity-before-updatin.patch
- 007-MLD-Fix-length-check-in-common-info-for-association-.patch
- 008-BSS-Fix-validation-of-ML-common-info-length-during-s.patch

All other patches refreshed automatically

Fixes: https://github.com/openwrt/openwrt/issues/23867
Fixes: https://github.com/openwrt/openwrt/commit/89f57d48f945579fd45566240113be04f9431467
Runtime tested on: mt7622/Xiaomi redmi ax6s (openssl), mt76x8/Asus AC1200 (mbedtls) with 802.11r configuration.

Signed-off-by: Ivan Pavlov <AuthorReflex@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24142
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
44 files changed:
package/network/services/hostapd/Makefile
package/network/services/hostapd/patches/001-AP-MLD-Fix-link-ID-validation-in-Basic-MLE-parsing.patch [deleted file]
package/network/services/hostapd/patches/002-BSS-Add-bounds-check-for-link_id-in-Basic-MLE-parsin.patch [deleted file]
package/network/services/hostapd/patches/003-MLD-Validate-MLE-Link-ID-fields-in-association-rejec.patch [deleted file]
package/network/services/hostapd/patches/004-Verify-MLD-link-ID-validity-in-get_basic_mle_link_id.patch [deleted file]
package/network/services/hostapd/patches/005-MLD-Verify-link-ID-validity-in-MLE-in-reconfiguratio.patch [deleted file]
package/network/services/hostapd/patches/006-AP-MLD-Verify-AP-MLD-link-ID-validity-before-updatin.patch [deleted file]
package/network/services/hostapd/patches/007-MLD-Fix-length-check-in-common-info-for-association-.patch [deleted file]
package/network/services/hostapd/patches/008-BSS-Fix-validation-of-ML-common-info-length-during-s.patch [deleted file]
package/network/services/hostapd/patches/010-mesh-Allow-DFS-channels-to-be-selected-if-dfs-is-ena.patch
package/network/services/hostapd/patches/011-mesh-use-deterministic-channel-on-channel-switch.patch
package/network/services/hostapd/patches/021-fix-sta-add-after-previous-connection.patch
package/network/services/hostapd/patches/051-nl80211-add-extra-ies-only-if-allowed-by-driver.patch
package/network/services/hostapd/patches/060-nl80211-fix-reporting-spurious-frame-events.patch [new file with mode: 0644]
package/network/services/hostapd/patches/110-mbedtls-TLS-crypto-option-initial-port.patch
package/network/services/hostapd/patches/120-mbedtls-fips186_2_prf.patch
package/network/services/hostapd/patches/140-tests-Makefile-make-run-tests-with-CONFIG_TLS.patch
package/network/services/hostapd/patches/161-wpa_supplicant-avoid-stopping-DPP-chirp-when-offchan.patch
package/network/services/hostapd/patches/170-hostapd-update-cfs0-and-cfs1-for-160MHz.patch
package/network/services/hostapd/patches/191-hostapd-add-support-for-specifying-the-link-id-in-th.patch
package/network/services/hostapd/patches/200-multicall.patch
package/network/services/hostapd/patches/201-lto-jobserver-support.patch
package/network/services/hostapd/patches/211-ctrl-make-WNM_AP-functions-dependant-on-CONFIG_AP.patch
package/network/services/hostapd/patches/220-indicate-features.patch
package/network/services/hostapd/patches/250-hostapd_cli_ifdef.patch
package/network/services/hostapd/patches/252-disable_ctrl_iface_mib.patch
package/network/services/hostapd/patches/300-noscan.patch
package/network/services/hostapd/patches/301-mesh-noscan.patch
package/network/services/hostapd/patches/310-rescan_immediately.patch
package/network/services/hostapd/patches/341-mesh-ctrl-iface-channel-switch.patch
package/network/services/hostapd/patches/370-preserve_radio_mask.patch
package/network/services/hostapd/patches/381-hostapd_cli_UNKNOWN-COMMAND.patch
package/network/services/hostapd/patches/460-wpa_supplicant-add-new-config-params-to-be-used-with.patch
package/network/services/hostapd/patches/463-add-mcast_rate-to-11s.patch
package/network/services/hostapd/patches/464-fix-mesh-obss-check.patch
package/network/services/hostapd/patches/600-ubus_support.patch
package/network/services/hostapd/patches/601-ucode_support.patch
package/network/services/hostapd/patches/701-reload_config_inline.patch
package/network/services/hostapd/patches/720-iface_max_num_sta.patch
package/network/services/hostapd/patches/730-ft_iface.patch
package/network/services/hostapd/patches/740-snoop_iface.patch
package/network/services/hostapd/patches/762-AP-don-t-ignore-probe-requests-with-invalid-DSSS-par.patch
package/network/services/hostapd/patches/770-radius_server.patch
package/network/services/hostapd/patches/780-Implement-APuP-Access-Point-Micro-Peering.patch

index e765ef503fbdd46305f1c228c13ac9463faa6bc0..34d08c6b24cc66470436e0d2972babb55a33a1ae 100644 (file)
@@ -9,9 +9,9 @@ PKG_RELEASE:=2
 
 PKG_SOURCE_URL:=https://w1.fi/hostap.git
 PKG_SOURCE_PROTO:=git
-PKG_SOURCE_DATE:=2026-04-02
-PKG_SOURCE_VERSION:=b004de0bf1b54d669d358b7f33d6f474bd9719a6
-PKG_MIRROR_HASH:=0b0184e600c994a1f0415f52e8af26b39f13e376a30cdf0b4f3ca1a206e52fc8
+PKG_SOURCE_DATE:=2026-07-09
+PKG_SOURCE_VERSION:=f08f2749aa696c4e47c5c0f591dda99951bf9fac
+PKG_MIRROR_HASH:=c1a978092c8a6e43a9e1bd47e1f334637b9c4969ca741c30ff45c24539132ca4
 
 PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
 PKG_LICENSE:=BSD-3-Clause
diff --git a/package/network/services/hostapd/patches/001-AP-MLD-Fix-link-ID-validation-in-Basic-MLE-parsing.patch b/package/network/services/hostapd/patches/001-AP-MLD-Fix-link-ID-validation-in-Basic-MLE-parsing.patch
deleted file mode 100644 (file)
index 1be3d8f..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-From 46dd5a4ffc9bcf44cf8fc45120b3e1e5ec922187 Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <jouni.malinen@oss.qualcomm.com>
-Date: Tue, 31 Mar 2026 23:24:04 +0300
-Subject: AP MLD: Fix link ID validation in Basic MLE parsing
-
-Link ID 15 can be indicated in the field, but that is not a valid value
-and must be rejected to avoid issues pointing beyond the array of links
-for a non-AP MLD. Without this, an invalid MLE could result in writing
-beyond the end of the buffer and causing process termination or
-unexpected behavior.
-
-Fixes: 5f5db9366cde ("AP: MLO: Process Multi-Link element from (Re)Association Request frame")
-Signed-off-by: Jouni Malinen <jouni.malinen@oss.qualcomm.com>
----
- src/ap/ieee802_11_eht.c | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
---- a/src/ap/ieee802_11_eht.c
-+++ b/src/ap/ieee802_11_eht.c
-@@ -1382,6 +1382,7 @@ u16 hostapd_process_ml_assoc_req(struct
-               u16 control;
-               const u8 *sub_elem_end;
-               int num_frag_subelems;
-+              u8 link_id;
-               num_frag_subelems =
-                       ieee802_11_defrag_mle_subelem(mlbuf, pos,
-@@ -1433,8 +1434,13 @@ u16 hostapd_process_ml_assoc_req(struct
-                       goto out;
-               }
-               control = WPA_GET_LE16(pos);
--              link_info = &info->links[control &
--                                       BASIC_MLE_STA_CTRL_LINK_ID_MASK];
-+              link_id = control & BASIC_MLE_STA_CTRL_LINK_ID_MASK;
-+              if (link_id >= MAX_NUM_MLD_LINKS) {
-+                      wpa_printf(MSG_DEBUG,
-+                                 "MLD: Invalid Link ID in Per-STA Profile subelement");
-+                      goto out;
-+              }
-+              link_info = &info->links[link_id];
-               pos += 2;
-               if (!(control & BASIC_MLE_STA_CTRL_COMPLETE_PROFILE)) {
diff --git a/package/network/services/hostapd/patches/002-BSS-Add-bounds-check-for-link_id-in-Basic-MLE-parsin.patch b/package/network/services/hostapd/patches/002-BSS-Add-bounds-check-for-link_id-in-Basic-MLE-parsin.patch
deleted file mode 100644 (file)
index 5fafd6a..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-From aa9d345887389a251c63a3781d2ad2940d079193 Mon Sep 17 00:00:00 2001
-From: Amarnath Hullur Subramanyam <amarnathhs@google.com>
-Date: Thu, 30 Apr 2026 18:24:35 -0700
-Subject: BSS: Add bounds check for link_id in Basic MLE parsing
-
-In wpa_bss_parse_basic_ml_element() in bss.c, an extracted link_id is
-used without validation against the maximum allowed links
-(MAX_NUM_MLD_LINKS). Processing a malformed Basic Multi-Link element
-(MLE) with an out-of-bounds link_id could lead to memory corruption.
-However, the modified location is within the body of the received frame
-and as such, this does not result in additional issues since that area
-is controlled by the transmitter of the frame. In any case, it is better
-to be explicit with validating the Link ID value.
-
-This commit introduces a strict bounds check immediately after link_id
-extraction. If link_id exceeds or equals MAX_NUM_MLD_LINKS, parsing is
-gracefully aborted with a debug log entry.
-
-Fixes: de5e01010cb2 ("wpa_supplicant: Support ML probe request")
-Signed-off-by: Amarnath Hullur Subramanyam <amarnathhs@google.com>
----
- wpa_supplicant/bss.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
---- a/wpa_supplicant/bss.c
-+++ b/wpa_supplicant/bss.c
-@@ -2055,6 +2055,11 @@ void wpa_bss_parse_basic_ml_element(stru
-               goto out;
-       link_id = ml_basic_common_info->variable[0] & EHT_ML_LINK_ID_MSK;
-+      if (link_id >= MAX_NUM_MLD_LINKS) {
-+              wpa_printf(MSG_DEBUG, "MLD: Invalid link ID %u in Basic MLE",
-+                         link_id);
-+              goto out;
-+      }
-       os_memcpy(bss->mld_addr, ml_basic_common_info->mld_addr, ETH_ALEN);
diff --git a/package/network/services/hostapd/patches/003-MLD-Validate-MLE-Link-ID-fields-in-association-rejec.patch b/package/network/services/hostapd/patches/003-MLD-Validate-MLE-Link-ID-fields-in-association-rejec.patch
deleted file mode 100644 (file)
index 7c4d569..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-From a8531e3d871e6fa72f2f85d91e9f787326b2af8b Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <jouni.malinen@oss.qualcomm.com>
-Date: Tue, 31 Mar 2026 23:16:08 +0300
-Subject: MLD: Validate MLE Link ID fields in association rejection case
-
-The Link ID Info field in the Common Info field needs to ignore the
-reserved bits to be more extensible for future. Both that link ID for
-the association link and the link IDs for other links need to be
-verified to be within the valid range (0-14), so check that here. The
-parsed link ID was not used for anything yet, but it is better to make
-sure this in theory common parser is not exposing invalid data to the
-caller should it be used for additional purposes in the future.
-
-Signed-off-by: Jouni Malinen <jouni.malinen@oss.qualcomm.com>
----
- wpa_supplicant/events.c | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
---- a/wpa_supplicant/events.c
-+++ b/wpa_supplicant/events.c
-@@ -4318,7 +4318,12 @@ static unsigned int wpas_ml_parse_assoc(
-       pos = common_info->variable;
-       /* Store the information for the association link */
--      ml_info[i].link_id = *pos;
-+      ml_info[i].link_id = *pos & EHT_ML_LINK_ID_MSK;
-+      if (ml_info[i].link_id >= MAX_NUM_MLD_LINKS) {
-+              wpa_printf(MSG_DEBUG,
-+                         "MLD: Invalid Link ID value for assoc link");
-+              goto out;
-+      }
-       pos++;
-       /* Skip the BSS Parameters Change Count */
-@@ -4474,6 +4479,10 @@ static unsigned int wpas_ml_parse_assoc(
-                          MAC2STR(pos + 1), nstr_bitmap_len);
-               ml_info[i].link_id = ctrl & BASIC_MLE_STA_CTRL_LINK_ID_MASK;
-+              if (ml_info[i].link_id >= MAX_NUM_MLD_LINKS) {
-+                      wpa_printf(MSG_DEBUG, "MLD: Invalid Link ID value");
-+                      goto out;
-+              }
-               os_memcpy(ml_info[i].bssid, pos + 1, ETH_ALEN);
-               pos += sta_info_len;
diff --git a/package/network/services/hostapd/patches/004-Verify-MLD-link-ID-validity-in-get_basic_mle_link_id.patch b/package/network/services/hostapd/patches/004-Verify-MLD-link-ID-validity-in-get_basic_mle_link_id.patch
deleted file mode 100644 (file)
index d0110ae..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-From 56216d113909650ae59621dc2dd16157afb94948 Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <jouni.malinen@oss.qualcomm.com>
-Date: Mon, 18 May 2026 11:57:02 +0300
-Subject: Verify MLD link ID validity in get_basic_mle_link_id()
-
-Link ID is 0..14, so ignore value 15 if an invalid frame is processed.
-It does not look like the returned value was actually used to reference
-any local array, but in any case, it is better to not return an invalid
-value to reduce risk for unexpected behavior in the future.
-
-Signed-off-by: Jouni Malinen <jouni.malinen@oss.qualcomm.com>
----
- src/common/ieee802_11_common.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
---- a/src/common/ieee802_11_common.c
-+++ b/src/common/ieee802_11_common.c
-@@ -3714,6 +3714,7 @@ int get_basic_mle_link_id(const u8 *buf,
-               ETH_ALEN; /* MLD MAC Address field (Basic) */
-       size_t common_info_limit;
-       u8 common_info_len;
-+      u8 link_id;
-       if (len < MULTI_LINK_CONTROL_LEN)
-               return -1;
-@@ -3735,7 +3736,11 @@ int get_basic_mle_link_id(const u8 *buf,
-       if (link_id_pos + EHT_ML_LINK_ID_LEN > common_info_limit)
-               return -1;
--      return buf[link_id_pos] & BASIC_MLE_STA_CTRL_LINK_ID_MASK;
-+      link_id = buf[link_id_pos] & BASIC_MLE_STA_CTRL_LINK_ID_MASK;
-+      if (link_id >= MAX_NUM_MLD_LINKS)
-+              return -1;
-+
-+      return link_id;
- }
diff --git a/package/network/services/hostapd/patches/005-MLD-Verify-link-ID-validity-in-MLE-in-reconfiguratio.patch b/package/network/services/hostapd/patches/005-MLD-Verify-link-ID-validity-in-MLE-in-reconfiguratio.patch
deleted file mode 100644 (file)
index d045b45..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-From e4bd3442c2223802bf8c4a4d868e3b9443c7caf4 Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <jouni.malinen@oss.qualcomm.com>
-Date: Mon, 18 May 2026 12:13:21 +0300
-Subject: MLD: Verify link ID validity in MLE in reconfiguration cases
-
-Ignore or reject invalid link ID value 15 in ML reconfiguration.
-
-Signed-off-by: Jouni Malinen <jouni.malinen@oss.qualcomm.com>
----
- src/ap/ieee802_11_eht.c  | 2 ++
- wpa_supplicant/bss.c     | 3 ++-
- wpa_supplicant/wnm_sta.c | 3 ++-
- 3 files changed, 6 insertions(+), 2 deletions(-)
-
---- a/src/ap/ieee802_11_eht.c
-+++ b/src/ap/ieee802_11_eht.c
-@@ -2166,6 +2166,8 @@ hostapd_parse_link_reconf_req_sta_profil
-       link_id = sta_control & EHT_PER_STA_RECONF_CTRL_LINK_ID_MSK;
-       wpa_printf(MSG_DEBUG, "MLD: Per-STA profile for link=%u", link_id);
-+      if (link_id >= MAX_NUM_MLD_LINKS)
-+              goto out;
-       reconf_type_mask =
-               sta_control & EHT_PER_STA_RECONF_CTRL_OP_UPDATE_TYPE_MSK;
---- a/wpa_supplicant/bss.c
-+++ b/wpa_supplicant/bss.c
-@@ -2243,7 +2243,8 @@ u16 wpa_bss_parse_reconf_ml_element(stru
-                       u8 link_id;
-                       link_id = control & EHT_PER_STA_RECONF_CTRL_LINK_ID_MSK;
--                      removed_links |= BIT(link_id);
-+                      if (link_id < MAX_NUM_MLD_LINKS)
-+                              removed_links |= BIT(link_id);
-               }
-               pos += 2 + sub_elem_len;
---- a/wpa_supplicant/wnm_sta.c
-+++ b/wpa_supplicant/wnm_sta.c
-@@ -546,7 +546,8 @@ static void wnm_parse_neighbor_report_mu
-                       control = le_to_host16(sta_prof->sta_control);
-                       link_id = control & EHT_PER_STA_RECONF_CTRL_LINK_ID_MSK;
--                      rep->mld_links |= BIT(link_id);
-+                      if (link_id < MAX_NUM_MLD_LINKS)
-+                              rep->mld_links |= BIT(link_id);
-               }
-               pos += 2 + sub_elem_len;
diff --git a/package/network/services/hostapd/patches/006-AP-MLD-Verify-AP-MLD-link-ID-validity-before-updatin.patch b/package/network/services/hostapd/patches/006-AP-MLD-Verify-AP-MLD-link-ID-validity-before-updatin.patch
deleted file mode 100644 (file)
index 3242e7a..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-From ce1a8612e309fe86133ecf05ffb452b0bdf3b035 Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <jouni.malinen@oss.qualcomm.com>
-Date: Mon, 18 May 2026 15:45:15 +0300
-Subject: AP MLD: Verify AP MLD link ID validity before updating bitmap of
- links
-
-Link ID is 0..14, so ignore value 15 if an invalid frame is processed.
-It does not look like the invalid value was actually used to reference
-any local array, but in any case, it is better to not mark an invalid
-link as being specified.
-
-Signed-off-by: Jouni Malinen <jouni.malinen@oss.qualcomm.com>
----
- src/ap/beacon.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
---- a/src/ap/beacon.c
-+++ b/src/ap/beacon.c
-@@ -1411,6 +1411,7 @@ static bool parse_ml_probe_req(const str
-       for_each_element_id(sub, 0, pos, len) {
-               const struct ieee80211_eht_per_sta_profile *sta;
-               u16 sta_control;
-+              u8 link_id;
-               if (*links == 0xffff)
-                       *links = 0;
-@@ -1430,7 +1431,9 @@ static bool parse_ml_probe_req(const str
-                * partial profile was requested.
-                */
-               sta_control = le_to_host16(sta->sta_control);
--              *links |= BIT(sta_control & BASIC_MLE_STA_CTRL_LINK_ID_MASK);
-+              link_id = sta_control & BASIC_MLE_STA_CTRL_LINK_ID_MASK;
-+              if (link_id < MAX_NUM_MLD_LINKS)
-+                      *links |= BIT(link_id);
-       }
-       if (!for_each_element_completed(sub, pos, len)) {
diff --git a/package/network/services/hostapd/patches/007-MLD-Fix-length-check-in-common-info-for-association-.patch b/package/network/services/hostapd/patches/007-MLD-Fix-length-check-in-common-info-for-association-.patch
deleted file mode 100644 (file)
index ab68f79..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-From 41c86a2ebed50567c73de23c102c2bf83eb883f2 Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <jouni.malinen@oss.qualcomm.com>
-Date: Tue, 31 Mar 2026 17:47:03 +0300
-Subject: MLD: Fix length check in common info for association failure cases
-
-It is not sufficient to check that the indicated common info length is
-sufficiently large to contain the information; there needs to be a check
-for the indicated value to not be too large to go beyond the end of the
-MLE as well. Without this, invalid MLE might result in ml_len wrapping
-around to a huge value and reading beyond the end of the buffer for the
-received frame. This could result in process termination.
-
-Add the missed check for the Common Info field not being truncated in
-the MLE in association failure cases.
-
-Fixes: a58a0c592e20 ("MLD: Fix Multi-Link element parsing for association failures")
-Signed-off-by: Jouni Malinen <jouni.malinen@oss.qualcomm.com>
----
- wpa_supplicant/events.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
---- a/wpa_supplicant/events.c
-+++ b/wpa_supplicant/events.c
-@@ -4306,6 +4306,13 @@ static unsigned int wpas_ml_parse_assoc(
-               goto out;
-       }
-+      if (sizeof(*ml) + common_info->len > ml_len) {
-+              wpa_printf(MSG_DEBUG,
-+                         "MLD: Truncated common info (common_info->len=%u ml_len=%zu)",
-+                         common_info->len, ml_len);
-+              goto out;
-+      }
-+
-       wpa_printf(MSG_DEBUG, "MLD: address: " MACSTR,
-                  MAC2STR(common_info->mld_addr));
diff --git a/package/network/services/hostapd/patches/008-BSS-Fix-validation-of-ML-common-info-length-during-s.patch b/package/network/services/hostapd/patches/008-BSS-Fix-validation-of-ML-common-info-length-during-s.patch
deleted file mode 100644 (file)
index 6b603a1..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-From 595194d0305189922a057e8ea8b743a1bd8d2d29 Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <jouni.malinen@oss.qualcomm.com>
-Date: Mon, 18 May 2026 16:17:15 +0300
-Subject: BSS: Fix validation of ML common info length during scan result
- parsing
-
-The validation of the ML common info length before use allowed reading
-beyond the end of the element when the MSD info and EML capabilities
-were claimed to be present but were not actually inclued. While this was
-noticed after reading these fields and further processing of the element
-was stopped, this could result in reading two bytes beyond the end of
-the buffer.
-
-Avoid this by checking the remaining length explicitly for the optiional
-fields.
-
-Fixes: 1b07e8baca13 ("BSS: Use correct AP MLD ID")
-Signed-off-by: Jouni Malinen <jouni.malinen@oss.qualcomm.com>
----
- wpa_supplicant/bss.c | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
---- a/wpa_supplicant/bss.c
-+++ b/wpa_supplicant/bss.c
-@@ -2006,13 +2006,20 @@ void wpa_bss_parse_basic_ml_element(stru
-       /* Medium Synchronization Delay Information */
-       if (le_to_host16(eht_ml->ml_control) &
--          BASIC_MULTI_LINK_CTRL_PRES_MSD_INFO)
-+          BASIC_MULTI_LINK_CTRL_PRES_MSD_INFO) {
-+              if (ml_basic_common_info->len <
-+                  sizeof(*ml_basic_common_info) + pos + 2)
-+                      goto out;
-               pos += 2;
-+      }
-       /* EML Capabilities */
-       bss->eml_capa = 0;
-       if (le_to_host16(eht_ml->ml_control) &
-           BASIC_MULTI_LINK_CTRL_PRES_EML_CAPA) {
-+              if (ml_basic_common_info->len <
-+                  sizeof(*ml_basic_common_info) + pos + 2)
-+                      goto out;
-               bss->eml_capa =
-                       WPA_GET_LE16(&ml_basic_common_info->variable[pos]);
-               pos += 2;
-@@ -2020,6 +2027,8 @@ void wpa_bss_parse_basic_ml_element(stru
-       /* MLD Capabilities And Operations (always present, see
-        * control/control_mask) */
-+      if (ml_basic_common_info->len < sizeof(*ml_basic_common_info) + pos + 2)
-+              goto out;
-       bss->mld_capa = WPA_GET_LE16(&ml_basic_common_info->variable[pos]);
-       pos += 2;
index 74f64f37df0ed44687fb3175de24a92369253be2..76c2581c8634a57540ebf17bc979688f7e91b575 100644 (file)
@@ -14,7 +14,7 @@ Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
 
 --- a/wpa_supplicant/wpa_supplicant.c
 +++ b/wpa_supplicant/wpa_supplicant.c
-@@ -3048,7 +3048,7 @@ static int drv_supports_vht(struct wpa_s
+@@ -3062,7 +3062,7 @@ static int drv_supports_vht(struct wpa_s
  }
  
  
@@ -23,7 +23,7 @@ Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
  {
        int i;
  
-@@ -3057,7 +3057,10 @@ static bool ibss_mesh_is_80mhz_avail(int
+@@ -3071,7 +3071,10 @@ static bool ibss_mesh_is_80mhz_avail(int
  
                chan = hw_get_channel_chan(mode, i, NULL);
                if (!chan ||
@@ -35,7 +35,7 @@ Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
                        return false;
        }
  
-@@ -3184,7 +3187,7 @@ static void ibss_mesh_select_40mhz(struc
+@@ -3198,7 +3201,7 @@ static void ibss_mesh_select_40mhz(struc
                                   const struct wpa_ssid *ssid,
                                   struct hostapd_hw_modes *mode,
                                   struct hostapd_freq_params *freq,
@@ -44,7 +44,7 @@ Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
  {
        int chan_idx;
        struct hostapd_channel_data *pri_chan = NULL, *sec_chan = NULL;
-@@ -3215,8 +3218,11 @@ static void ibss_mesh_select_40mhz(struc
+@@ -3229,8 +3232,11 @@ static void ibss_mesh_select_40mhz(struc
                return;
  
        /* Check primary channel flags */
@@ -58,7 +58,7 @@ Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
  
  #ifdef CONFIG_HT_OVERRIDES
        if (ssid->disable_ht40)
-@@ -3251,8 +3257,11 @@ static void ibss_mesh_select_40mhz(struc
+@@ -3265,8 +3271,11 @@ static void ibss_mesh_select_40mhz(struc
                return;
  
        /* Check secondary channel flags */
@@ -72,7 +72,7 @@ Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
  
        if (freq->ht_enabled) {
                if (ht40 == -1) {
-@@ -3330,7 +3339,7 @@ static bool ibss_mesh_select_80_160mhz(s
+@@ -3344,7 +3353,7 @@ static bool ibss_mesh_select_80_160mhz(s
                                       const struct wpa_ssid *ssid,
                                       struct hostapd_hw_modes *mode,
                                       struct hostapd_freq_params *freq,
@@ -81,7 +81,7 @@ Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
        static const int bw80[] = {
                5180, 5260, 5500, 5580, 5660, 5745, 5825,
                5955, 6035, 6115, 6195, 6275, 6355, 6435,
-@@ -3383,7 +3392,7 @@ static bool ibss_mesh_select_80_160mhz(s
+@@ -3397,7 +3406,7 @@ static bool ibss_mesh_select_80_160mhz(s
                goto skip_80mhz;
  
        /* Use 40 MHz if channel not usable */
@@ -90,7 +90,7 @@ Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
                goto skip_80mhz;
  
        chwidth = CONF_OPER_CHWIDTH_80MHZ;
-@@ -3425,7 +3434,7 @@ static bool ibss_mesh_select_80_160mhz(s
+@@ -3439,7 +3448,7 @@ static bool ibss_mesh_select_80_160mhz(s
             HE_PHYCAP_CHANNEL_WIDTH_SET_160MHZ_IN_5G) &&
            (ssid->max_oper_chwidth == CONF_OPER_CHWIDTH_160MHZ ||
             ssid->max_oper_chwidth == CONF_OPER_CHWIDTH_320MHZ) &&
@@ -99,7 +99,7 @@ Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
                for (j = 0; j < ARRAY_SIZE(bw160); j++) {
                        u8 start_chan;
  
-@@ -3448,11 +3457,11 @@ static bool ibss_mesh_select_80_160mhz(s
+@@ -3462,11 +3471,11 @@ static bool ibss_mesh_select_80_160mhz(s
             EHT_PHYCAP_320MHZ_IN_6GHZ_SUPPORT_MASK) && is_6ghz &&
            ssid->max_oper_chwidth == CONF_OPER_CHWIDTH_320MHZ &&
            ibss_mesh_is_80mhz_avail(channel + 16 -
@@ -114,7 +114,7 @@ Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
                for (j = 0; j < ARRAY_SIZE(bw320); j += 2) {
                        if (freq->freq >= bw320[j] &&
                            freq->freq <= bw320[j + 1]) {
-@@ -3481,10 +3490,12 @@ static bool ibss_mesh_select_80_160mhz(s
+@@ -3495,10 +3504,12 @@ static bool ibss_mesh_select_80_160mhz(s
                                if (!chan)
                                        continue;
  
@@ -131,7 +131,7 @@ Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
  
                                /* Found a suitable second segment for 80+80 */
                                chwidth = CONF_OPER_CHWIDTH_80P80MHZ;
-@@ -3539,6 +3550,7 @@ void ibss_mesh_setup_freq(struct wpa_sup
+@@ -3553,6 +3564,7 @@ void ibss_mesh_setup_freq(struct wpa_sup
        int obss_scan = 1;
        u8 channel;
        bool is_6ghz, is_24ghz;
@@ -139,7 +139,7 @@ Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
  
        freq->freq = ssid->frequency;
  
-@@ -3582,9 +3594,9 @@ void ibss_mesh_setup_freq(struct wpa_sup
+@@ -3596,9 +3608,9 @@ void ibss_mesh_setup_freq(struct wpa_sup
        /* Setup higher BW only for 5 and 6 GHz */
        if (mode->mode == HOSTAPD_MODE_IEEE80211A) {
                ibss_mesh_select_40mhz(wpa_s, ssid, mode, freq, obss_scan,
index c81a8474c235a4ce7aebac00b8cc8f43d1ee4da9..37f13f0512dd93305d50c2bffdcf64db7bab3988 100644 (file)
@@ -68,7 +68,7 @@ Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de>
                   chan_idx, num_available_chandefs);
 --- a/src/drivers/driver_nl80211.c
 +++ b/src/drivers/driver_nl80211.c
-@@ -12012,6 +12012,10 @@ static int nl80211_switch_channel(void *
+@@ -12349,6 +12349,10 @@ static int nl80211_switch_channel(void *
        if (ret)
                goto error;
  
index 70a1cb5d3b4aa20b3175432f91fc7e8836cdf836..9de53dd10c36b3f819cfc4e3025c5a6292ab51d4 100644 (file)
@@ -4,7 +4,7 @@ Subject: [PATCH] fix adding back stations after a missed deauth/disassoc
 
 --- a/src/ap/ieee802_11.c
 +++ b/src/ap/ieee802_11.c
-@@ -6370,6 +6370,13 @@ static int add_associated_sta(struct hos
+@@ -6511,6 +6511,13 @@ static int add_associated_sta(struct hos
         * drivers to accept the STA parameter configuration. Since this is
         * after a new FT-over-DS exchange, a new TK has been derived, so key
         * reinstallation is not a concern for this case.
@@ -18,7 +18,7 @@ Subject: [PATCH] fix adding back stations after a missed deauth/disassoc
         */
        wpa_printf(MSG_DEBUG, "Add associated STA " MACSTR
                   " (added_unassoc=%d auth_alg=%u ft_over_ds=%u reassoc=%d authorized=%d ft_tk=%d fils_tk=%d)",
-@@ -6383,7 +6390,8 @@ static int add_associated_sta(struct hos
+@@ -6524,7 +6531,8 @@ static int add_associated_sta(struct hos
            (!(sta->flags & WLAN_STA_AUTHORIZED) ||
             (reassoc && sta->ft_over_ds && sta->auth_alg == WLAN_AUTH_FT) ||
             (!wpa_auth_sta_ft_tk_already_set(sta->wpa_sm) &&
index 34823de67b981e6542ed385518b55d2e4ac344f2..7dd22edcd385f78f136d678494d406efef9ccaa6 100644 (file)
@@ -26,7 +26,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
 
 --- a/src/drivers/driver.h
 +++ b/src/drivers/driver.h
-@@ -2469,6 +2469,9 @@ struct wpa_driver_capa {
+@@ -2595,6 +2595,9 @@ struct wpa_driver_capa {
        /** Maximum number of iterations in a single scan plan */
        u32 max_sched_scan_plan_iterations;
  
@@ -38,7 +38,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
  
 --- a/src/drivers/driver_nl80211_capa.c
 +++ b/src/drivers/driver_nl80211_capa.c
-@@ -1004,6 +1004,10 @@ static int wiphy_info_handler(struct nl_
+@@ -1370,6 +1370,10 @@ static int wiphy_info_handler(struct nl_
                        nla_get_u32(tb[NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS]);
        }
  
diff --git a/package/network/services/hostapd/patches/060-nl80211-fix-reporting-spurious-frame-events.patch b/package/network/services/hostapd/patches/060-nl80211-fix-reporting-spurious-frame-events.patch
new file mode 100644 (file)
index 0000000..2640150
--- /dev/null
@@ -0,0 +1,22 @@
+From: Felix Fietkau <nbd@nbd.name>
+Date: Tue, 26 Aug 2025 22:04:57 +0200
+Subject: [PATCH] nl80211: fix reporting spurious frame events
+
+When the nl80211 driver is shared across multiple interfaces (on the same
+wiphy), nl80211_spurious_frame can send the event to the wrong interface by
+using drv->ctx. Fix this by using bss->ctx instead.
+
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+---
+
+--- a/src/drivers/driver_nl80211_event.c
++++ b/src/drivers/driver_nl80211_event.c
+@@ -2874,7 +2874,7 @@ static void nl80211_spurious_frame(struc
+       event.rx_from_unknown.link_id = tb[NL80211_ATTR_MLO_LINK_ID] ?
+               nla_get_u8(tb[NL80211_ATTR_MLO_LINK_ID]) : -1;
+-      wpa_supplicant_event(drv->ctx, EVENT_RX_FROM_UNKNOWN, &event);
++      wpa_supplicant_event(bss->ctx, EVENT_RX_FROM_UNKNOWN, &event);
+ }
index e728fa727084fdce65aeec08794a75817769b91a..7e7664e1c2153763de979c413caaf0ec4ab9b73b 100644 (file)
@@ -283,13 +283,15 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
  ifdef CONFIG_INTERNAL_AES
  HOBJS += ../src/crypto/aes-internal.o
  HOBJS += ../src/crypto/aes-internal-enc.o
-@@ -1402,18 +1489,24 @@ SOBJS += ../src/common/sae.o
+@@ -1402,6 +1489,7 @@ SOBJS += ../src/common/sae.o
  SOBJS += ../src/common/sae_pk.o
  SOBJS += ../src/common/dragonfly.o
  SOBJS += $(AESOBJS)
 +ifneq ($(CONFIG_TLS), mbedtls)
- SOBJS += ../src/crypto/sha384.o
- SOBJS += ../src/crypto/sha512.o
+ ifneq ($(CONFIG_TLS), openssl)
+ ifneq ($(CONFIG_TLS), linux)
+ ifneq ($(CONFIG_TLS), gnutls)
+@@ -1415,17 +1503,22 @@ endif
  SOBJS += ../src/crypto/sha256-prf.o
  SOBJS += ../src/crypto/sha384-prf.o
  SOBJS += ../src/crypto/sha512-prf.o
@@ -301,7 +303,11 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
  SOBJS += ../src/crypto/sha512-kdf.o
 +endif
  SOBJS += ../src/common/wpa_common.o
+ ifdef CONFIG_NO_RANDOM_POOL
+ CFLAGS += -DCONFIG_NO_RANDOM_POOL
+ else
  SOBJS += ../src/crypto/random.o
+ endif
 +ifneq ($(CONFIG_TLS), mbedtls)
  SOBJS += ../src/crypto/sha1-prf.o
 +endif
@@ -7770,7 +7776,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
  CONFIG_SIM_SIMULATOR=y
 --- a/wpa_supplicant/Makefile
 +++ b/wpa_supplicant/Makefile
-@@ -1271,6 +1271,29 @@ endif
+@@ -1276,6 +1276,29 @@ endif
  CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONFIG_TLS_DEFAULT_CIPHERS)\"
  endif
  
@@ -7800,7 +7806,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
  ifeq ($(CONFIG_TLS), gnutls)
  ifndef CONFIG_CRYPTO
  # default to libgcrypt
-@@ -1463,9 +1486,11 @@ endif
+@@ -1468,9 +1491,11 @@ endif
  
  ifneq ($(CONFIG_TLS), openssl)
  ifneq ($(CONFIG_TLS), wolfssl)
@@ -7812,7 +7818,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
  ifdef CONFIG_OPENSSL_INTERNAL_AES_WRAP
  # Seems to be needed at least with BoringSSL
  NEED_INTERNAL_AES_WRAP=y
-@@ -1479,9 +1504,11 @@ endif
+@@ -1484,9 +1509,11 @@ endif
  
  ifdef NEED_INTERNAL_AES_WRAP
  ifneq ($(CONFIG_TLS), linux)
@@ -7824,7 +7830,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
  ifdef NEED_AES_EAX
  AESOBJS += ../src/crypto/aes-eax.o
  NEED_AES_CTR=y
-@@ -1491,35 +1518,45 @@ AESOBJS += ../src/crypto/aes-siv.o
+@@ -1496,35 +1523,45 @@ AESOBJS += ../src/crypto/aes-siv.o
  NEED_AES_CTR=y
  endif
  ifdef NEED_AES_CTR
@@ -7870,7 +7876,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
  ifdef NEED_AES_ENC
  ifdef CONFIG_INTERNAL_AES
  AESOBJS += ../src/crypto/aes-internal-enc.o
-@@ -1534,12 +1571,16 @@ ifneq ($(CONFIG_TLS), openssl)
+@@ -1539,12 +1576,16 @@ ifneq ($(CONFIG_TLS), openssl)
  ifneq ($(CONFIG_TLS), linux)
  ifneq ($(CONFIG_TLS), gnutls)
  ifneq ($(CONFIG_TLS), wolfssl)
@@ -7887,7 +7893,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
  ifdef CONFIG_INTERNAL_SHA1
  SHA1OBJS += ../src/crypto/sha1-internal.o
  ifdef NEED_FIPS186_2_PRF
-@@ -1551,29 +1592,37 @@ CFLAGS += -DCONFIG_NO_PBKDF2
+@@ -1556,29 +1597,37 @@ CFLAGS += -DCONFIG_NO_PBKDF2
  else
  ifneq ($(CONFIG_TLS), openssl)
  ifneq ($(CONFIG_TLS), wolfssl)
@@ -7925,7 +7931,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
  ifdef NEED_MD5
  ifdef CONFIG_INTERNAL_MD5
  MD5OBJS += ../src/crypto/md5-internal.o
-@@ -1628,12 +1677,17 @@ ifneq ($(CONFIG_TLS), openssl)
+@@ -1633,12 +1682,17 @@ ifneq ($(CONFIG_TLS), openssl)
  ifneq ($(CONFIG_TLS), linux)
  ifneq ($(CONFIG_TLS), gnutls)
  ifneq ($(CONFIG_TLS), wolfssl)
@@ -7943,7 +7949,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
  ifdef CONFIG_INTERNAL_SHA256
  SHA256OBJS += ../src/crypto/sha256-internal.o
  endif
-@@ -1646,50 +1700,68 @@ CFLAGS += -DCONFIG_INTERNAL_SHA512
+@@ -1651,50 +1705,68 @@ CFLAGS += -DCONFIG_INTERNAL_SHA512
  SHA256OBJS += ../src/crypto/sha512-internal.o
  endif
  ifdef NEED_TLS_PRF_SHA256
@@ -8012,7 +8018,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
  
  ifdef NEED_ASN1
  OBJS += ../src/tls/asn1.o
-@@ -1864,10 +1936,12 @@ ifdef CONFIG_FIPS
+@@ -1869,10 +1941,12 @@ ifdef CONFIG_FIPS
  CFLAGS += -DCONFIG_FIPS
  ifneq ($(CONFIG_TLS), openssl)
  ifneq ($(CONFIG_TLS), wolfssl)
index faeec75a8ef97e627dbc910c6ae35564cd0338b1..db67c442e338cfb02c18bb5cfaa69f6f6cc5e417 100644 (file)
@@ -101,7 +101,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
  
 --- a/wpa_supplicant/Makefile
 +++ b/wpa_supplicant/Makefile
-@@ -1282,10 +1282,6 @@ endif
+@@ -1287,10 +1287,6 @@ endif
  OBJS += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
  OBJS_p += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
  OBJS_priv += ../src/crypto/crypto_$(CONFIG_CRYPTO).o
index 23e5af97b6e3d64400328c6805c1441ec30d99e0..1cdba474f421502512c95298ee077e4638b5229c 100644 (file)
@@ -695,7 +695,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
      tls = dev.request("GET tls_library")
 +    if tls.startswith("mbed TLS"):
 +        raise HwsimSkip("TLS v1.3 not supported")
-     ok = ['run=OpenSSL 1.1.1', 'run=OpenSSL 3.', 'wolfSSL']
+     ok = ['run=OpenSSL', 'wolfSSL']
      for s in ok:
          if s in tls:
 @@ -121,11 +160,15 @@ def check_pkcs12_support(dev):
@@ -979,7 +979,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
              raise HwsimSkip("Crypto library does not support Brainpool curves: " + tls)
      capa = dev.request("GET_CAPABILITY dpp")
      ver = 1
-@@ -3940,6 +3941,9 @@ def test_dpp_proto_auth_req_no_i_proto_k
+@@ -3968,6 +3969,9 @@ def test_dpp_proto_auth_req_no_i_proto_k
  
  def test_dpp_proto_auth_req_invalid_i_proto_key(dev, apdev):
      """DPP protocol testing - invalid I-proto key in Auth Req"""
@@ -989,7 +989,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
      run_dpp_proto_auth_req_missing(dev, 66, "Invalid Initiator Protocol Key")
  
  def test_dpp_proto_auth_req_no_i_nonce(dev, apdev):
-@@ -4035,7 +4039,12 @@ def test_dpp_proto_auth_resp_no_r_proto_
+@@ -4063,7 +4067,12 @@ def test_dpp_proto_auth_resp_no_r_proto_
  
  def test_dpp_proto_auth_resp_invalid_r_proto_key(dev, apdev):
      """DPP protocol testing - invalid R-Proto Key in Auth Resp"""
@@ -1003,7 +1003,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
  
  def test_dpp_proto_auth_resp_no_r_nonce(dev, apdev):
      """DPP protocol testing - no R-nonce in Auth Resp"""
-@@ -4397,11 +4406,17 @@ def test_dpp_proto_pkex_exchange_resp_in
+@@ -4425,11 +4434,17 @@ def test_dpp_proto_pkex_exchange_resp_in
  
  def test_dpp_proto_pkex_cr_req_invalid_bootstrap_key(dev, apdev):
      """DPP protocol testing - invalid Bootstrap Key in PKEX Commit-Reveal Request"""
@@ -1088,7 +1088,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
 +            raise HwsimSkip("Brainpool EC group 27 not supported by mbed TLS")
 +        return
      if int(group) in [25]:
-         if not (tls.startswith("OpenSSL") and ("build=OpenSSL 1.0.2" in tls or "build=OpenSSL 1.1" in tls or "build=OpenSSL 3." in tls) and ("run=OpenSSL 1.0.2" in tls or "run=OpenSSL 1.1" in tls or "run=OpenSSL 3." in tls)):
+         if not (tls.startswith("OpenSSL") and ("build=OpenSSL" in tls) and ("run=OpenSSL" in tls)):
              raise HwsimSkip("EC group not supported")
 --- a/tests/hwsim/test_pmksa_cache.py
 +++ b/tests/hwsim/test_pmksa_cache.py
@@ -1141,10 +1141,10 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
          return
 +    if tls.startswith("mbed TLS"):
 +        return
-     if not tls.startswith("OpenSSL"):
-         raise HwsimSkip("TLS library not supported for Suite B: " + tls)
-     supported = False
-@@ -539,6 +541,7 @@ def test_suite_b_192_rsa_insufficient_dh
+     if tls.startswith("OpenSSL"):
+         return
+     raise HwsimSkip("TLS library not supported for Suite B: " + tls)
+@@ -530,6 +532,7 @@ def test_suite_b_192_rsa_insufficient_dh
  
      dev[0].connect("test-suite-b", key_mgmt="WPA-EAP-SUITE-B-192",
                     ieee80211w="2",
@@ -1289,7 +1289,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
                if (need_more_data) {
 --- a/wpa_supplicant/Makefile
 +++ b/wpa_supplicant/Makefile
-@@ -1229,6 +1229,7 @@ TLS_FUNCS=y
+@@ -1234,6 +1234,7 @@ TLS_FUNCS=y
  endif
  
  ifeq ($(CONFIG_TLS), wolfssl)
@@ -1297,7 +1297,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
  CFLAGS += -DCRYPTO_RSA_OAEP_SHA256
  ifdef TLS_FUNCS
  CFLAGS += -DWOLFSSL_DER_LOAD
-@@ -1245,6 +1246,7 @@ LIBS_p += -lwolfssl -lm
+@@ -1250,6 +1251,7 @@ LIBS_p += -lwolfssl -lm
  endif
  
  ifeq ($(CONFIG_TLS), openssl)
@@ -1305,7 +1305,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
  CFLAGS += -DCRYPTO_RSA_OAEP_SHA256
  ifdef TLS_FUNCS
  CFLAGS += -DEAP_TLS_OPENSSL
-@@ -1272,6 +1274,7 @@ CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONF
+@@ -1277,6 +1279,7 @@ CFLAGS += -DTLS_DEFAULT_CIPHERS=\"$(CONF
  endif
  
  ifeq ($(CONFIG_TLS), mbedtls)
@@ -1313,7 +1313,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
  ifndef CONFIG_CRYPTO
  CONFIG_CRYPTO=mbedtls
  endif
-@@ -1291,6 +1294,7 @@ endif
+@@ -1296,6 +1299,7 @@ endif
  endif
  
  ifeq ($(CONFIG_TLS), gnutls)
@@ -1321,7 +1321,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
  ifndef CONFIG_CRYPTO
  # default to libgcrypt
  CONFIG_CRYPTO=gnutls
-@@ -1321,6 +1325,7 @@ endif
+@@ -1326,6 +1330,7 @@ endif
  endif
  
  ifeq ($(CONFIG_TLS), internal)
@@ -1329,7 +1329,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
  ifndef CONFIG_CRYPTO
  CONFIG_CRYPTO=internal
  endif
-@@ -1401,6 +1406,7 @@ endif
+@@ -1406,6 +1411,7 @@ endif
  endif
  
  ifeq ($(CONFIG_TLS), linux)
index 45eaa0e59b0d8aab6d4302e60da2ff325b93da52..ca8c3c1c709c7c63153aaed5868a42266b03ebba 100644 (file)
@@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/wpa_supplicant/dpp_supplicant.c
 +++ b/wpa_supplicant/dpp_supplicant.c
-@@ -5132,7 +5132,10 @@ static void wpas_dpp_chirp_start(struct
+@@ -5135,7 +5135,10 @@ static void wpas_dpp_chirp_start(struct
                    wpa_s->own_addr, broadcast,
                    wpabuf_head(msg), wpabuf_len(msg),
                    2000, wpas_dpp_chirp_tx_status, 0) < 0)
index 81cf3d64f0f27831f4000680a6f7d70be223979f..59d747b7a8eb8e121f9a51b02174fc4b025a8574 100644 (file)
@@ -130,7 +130,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
  #undef VHT_CAP_CHECK_MAX
 --- a/src/common/ieee802_11_defs.h
 +++ b/src/common/ieee802_11_defs.h
-@@ -1468,6 +1468,8 @@ struct ieee80211_ampe_ie {
+@@ -1469,6 +1469,8 @@ struct ieee80211_ampe_ie {
  #define VHT_CAP_VHT_LINK_ADAPTATION_VHT_MRQ_MFB     ((u32) BIT(26) | BIT(27))
  #define VHT_CAP_RX_ANTENNA_PATTERN                  ((u32) BIT(28))
  #define VHT_CAP_TX_ANTENNA_PATTERN                  ((u32) BIT(29))
index eeb5c1e3f61188d39b6aa7e0d59575a6817af118..d43a2d02fcab236f22b8ccd45171bd6047b65a1b 100644 (file)
@@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/hostapd/config_file.c
 +++ b/hostapd/config_file.c
-@@ -4959,6 +4959,8 @@ static int hostapd_config_fill(struct ho
+@@ -4974,6 +4974,8 @@ static int hostapd_config_fill(struct ho
                conf->punct_acs_threshold = val;
        } else if (os_strcmp(buf, "mld_ap") == 0) {
                bss->mld_ap = !!atoi(pos);
@@ -20,7 +20,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                        wpa_printf(MSG_ERROR, "Line %d: Invalid mld_addr",
 --- a/src/ap/ap_config.c
 +++ b/src/ap/ap_config.c
-@@ -179,6 +179,9 @@ void hostapd_config_defaults_bss(struct
+@@ -180,6 +180,9 @@ void hostapd_config_defaults_bss(struct
  #endif /* CONFIG_PASN */
        bss->urnm_mfpr_x20 = -1;
        bss->urnm_mfpr = -1;
@@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        bss->pmksa_caching_privacy = 0;
 --- a/src/ap/ap_config.h
 +++ b/src/ap/ap_config.h
-@@ -979,6 +979,8 @@ struct hostapd_bss_config {
+@@ -991,6 +991,8 @@ struct hostapd_bss_config {
        /* The AP's MLD MAC address within the AP MLD */
        u8 mld_addr[ETH_ALEN];
  
index 951d03b5a686b04bf7a7d061e514488cc94f9789..b1461a589972418cc62493f3bec0f6d1041b726f 100644 (file)
@@ -56,7 +56,7 @@ This allows building both hostapd and wpa_supplicant as a single binary
  hostapd: $(OBJS)
        $(Q)$(CC) $(LDFLAGS) -o hostapd $(OBJS) $(LIBS)
        @$(E) "  LD " $@
-@@ -1518,6 +1530,12 @@ include ../src/objs.mk
+@@ -1530,6 +1542,12 @@ include ../src/objs.mk
  _OBJS_VAR := SOBJS
  include ../src/objs.mk
  
@@ -71,7 +71,7 @@ This allows building both hostapd and wpa_supplicant as a single binary
        @$(E) "  LD " $@
 --- a/hostapd/main.c
 +++ b/hostapd/main.c
-@@ -744,6 +744,11 @@ fail:
+@@ -749,6 +749,11 @@ fail:
        return -1;
  }
  
@@ -83,7 +83,7 @@ This allows building both hostapd and wpa_supplicant as a single binary
  
  #ifdef CONFIG_WPS
  static int gen_uuid(const char *txt_addr)
-@@ -868,6 +873,8 @@ int main(int argc, char *argv[])
+@@ -873,6 +878,8 @@ int main(int argc, char *argv[])
                return -1;
  #endif /* CONFIG_DPP */
  
@@ -94,7 +94,7 @@ This allows building both hostapd and wpa_supplicant as a single binary
                if (c < 0)
 --- a/src/ap/drv_callbacks.c
 +++ b/src/ap/drv_callbacks.c
-@@ -2596,8 +2596,8 @@ static void hostapd_mld_iface_disable(st
+@@ -2599,8 +2599,8 @@ static void hostapd_mld_iface_disable(st
  #endif /* CONFIG_IEEE80211BE */
  
  
@@ -105,7 +105,7 @@ This allows building both hostapd and wpa_supplicant as a single binary
  {
        struct hostapd_data *hapd = ctx;
        struct sta_info *sta;
-@@ -2967,7 +2967,7 @@ void wpa_supplicant_event(void *ctx, enu
+@@ -2970,7 +2970,7 @@ void wpa_supplicant_event(void *ctx, enu
  }
  
  
@@ -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
-@@ -7313,8 +7313,8 @@ union wpa_event_data {
+@@ -7804,8 +7804,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
-@@ -7326,7 +7326,7 @@ void wpa_supplicant_event(void *ctx, enu
+@@ -7817,7 +7817,7 @@ void wpa_supplicant_event(void *ctx, enu
   * Same as wpa_supplicant_event(), but we search for the interface in
   * wpa_global.
   */
@@ -159,7 +159,7 @@ This allows building both hostapd and wpa_supplicant as a single binary
  include ../src/build.rules
  
  ifdef CONFIG_BUILD_PASN_SO
-@@ -411,7 +412,9 @@ endif
+@@ -415,7 +416,9 @@ endif
  ifdef CONFIG_IBSS_RSN
  NEED_RSN_AUTHENTICATOR=y
  CFLAGS += -DCONFIG_IBSS_RSN
@@ -169,7 +169,7 @@ This allows building both hostapd and wpa_supplicant as a single binary
  OBJS += ibss_rsn.o
  endif
  
-@@ -1020,6 +1023,10 @@ ifdef CONFIG_DYNAMIC_EAP_METHODS
+@@ -1025,6 +1028,10 @@ ifdef CONFIG_DYNAMIC_EAP_METHODS
  CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
  LIBS += -ldl -rdynamic
  endif
@@ -180,7 +180,7 @@ This allows building both hostapd and wpa_supplicant as a single binary
  endif
  
  ifdef CONFIG_AP
-@@ -1027,9 +1034,11 @@ NEED_EAP_COMMON=y
+@@ -1032,9 +1039,11 @@ NEED_EAP_COMMON=y
  NEED_RSN_AUTHENTICATOR=y
  CFLAGS += -DCONFIG_AP
  OBJS += ap.o
@@ -192,7 +192,7 @@ This allows building both hostapd and wpa_supplicant as a single binary
  OBJS += ../src/ap/hostapd.o
  OBJS += ../src/ap/wpa_auth_glue.o
  OBJS += ../src/ap/utils.o
-@@ -1121,6 +1130,12 @@ endif
+@@ -1126,6 +1135,12 @@ endif
  ifdef CONFIG_HS20
  OBJS += ../src/ap/hs20.o
  endif
@@ -205,7 +205,7 @@ This allows building both hostapd and wpa_supplicant as a single binary
  endif
  
  ifdef CONFIG_MBO
-@@ -1130,7 +1145,9 @@ NEED_GAS=y
+@@ -1135,7 +1150,9 @@ NEED_GAS=y
  endif
  
  ifdef NEED_RSN_AUTHENTICATOR
@@ -215,7 +215,7 @@ This allows building both hostapd and wpa_supplicant as a single binary
  NEED_AES_WRAP=y
  OBJS += ../src/ap/wpa_auth.o
  OBJS += ../src/ap/wpa_auth_ie.o
-@@ -2130,6 +2147,12 @@ wpa_priv: $(BCHECK) $(OBJS_priv)
+@@ -2135,6 +2152,12 @@ wpa_priv: $(BCHECK) $(OBJS_priv)
  
  _OBJS_VAR := OBJS
  include ../src/objs.mk
@@ -228,7 +228,7 @@ This allows building both hostapd and wpa_supplicant as a single binary
  wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs)
        $(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
        @$(E) "  LD " $@
-@@ -2262,6 +2285,12 @@ eap_gpsk.so: $(SRC_EAP_GPSK)
+@@ -2267,6 +2290,12 @@ eap_gpsk.so: $(SRC_EAP_GPSK)
        $(Q)sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@
        @$(E) "  sed" $<
  
@@ -278,7 +278,7 @@ This allows building both hostapd and wpa_supplicant as a single binary
        os_memset(&eapol_test, 0, sizeof(eapol_test));
 --- a/wpa_supplicant/events.c
 +++ b/wpa_supplicant/events.c
-@@ -6643,8 +6643,8 @@ static int wpas_pasn_auth(struct wpa_sup
+@@ -6703,8 +6703,8 @@ static int wpas_pasn_auth(struct wpa_sup
  #endif /* CONFIG_PASN */
  
  
@@ -289,7 +289,7 @@ This allows building both hostapd and wpa_supplicant as a single binary
  {
        struct wpa_supplicant *wpa_s = ctx;
        int resched;
-@@ -7638,7 +7638,7 @@ void wpa_supplicant_event(void *ctx, enu
+@@ -7742,7 +7742,7 @@ void wpa_supplicant_event(void *ctx, enu
  }
  
  
@@ -331,7 +331,7 @@ This allows building both hostapd and wpa_supplicant as a single binary
        os_memset(&global, 0, sizeof(global));
 --- a/wpa_supplicant/wpa_supplicant.c
 +++ b/wpa_supplicant/wpa_supplicant.c
-@@ -8259,7 +8259,6 @@ struct wpa_interface * wpa_supplicant_ma
+@@ -8303,7 +8303,6 @@ struct wpa_interface * wpa_supplicant_ma
        return NULL;
  }
  
@@ -339,7 +339,7 @@ This allows building both hostapd and wpa_supplicant as a single binary
  /**
   * wpa_supplicant_match_existing - Match existing interfaces
   * @global: Pointer to global data from wpa_supplicant_init()
-@@ -8294,6 +8293,11 @@ static int wpa_supplicant_match_existing
+@@ -8338,6 +8337,11 @@ static int wpa_supplicant_match_existing
  
  #endif /* CONFIG_MATCH_IFACE */
  
@@ -351,7 +351,7 @@ This allows building both hostapd and wpa_supplicant as a single binary
  
  /**
   * wpa_supplicant_add_iface - Add a new network interface
-@@ -8550,6 +8554,8 @@ struct wpa_global * wpa_supplicant_init(
+@@ -8594,6 +8598,8 @@ struct wpa_global * wpa_supplicant_init(
  #ifndef CONFIG_NO_WPA_MSG
        wpa_msg_register_ifname_cb(wpa_supplicant_msg_ifname_cb);
  #endif /* CONFIG_NO_WPA_MSG */
index 2211d0eedad684ecb262c95019bef5c6aee4ffa1..0e175c82ac839708f166daeb6618c05b737579be 100644 (file)
@@ -25,7 +25,7 @@ Subject: [PATCH] hostapd: build with LTO enabled (using jobserver for parallel
  NOBJS = nt_password_hash.o ../src/crypto/ms_funcs.o $(SHA1OBJS)
 --- a/wpa_supplicant/Makefile
 +++ b/wpa_supplicant/Makefile
-@@ -2154,31 +2154,31 @@ wpa_supplicant_multi.a: .config $(BCHECK
+@@ -2159,31 +2159,31 @@ wpa_supplicant_multi.a: .config $(BCHECK
        @$(AR) cr $@ wpa_supplicant_multi.o $(OBJS)
  
  wpa_supplicant: $(BCHECK) $(OBJS) $(EXTRA_progs)
index b3718adf053b3f944055cb83683f8736c004de09..0901f639b0f10bc05a38362d35b101ab6516d7c7 100644 (file)
@@ -13,7 +13,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
 
 --- a/wpa_supplicant/ctrl_iface.c
 +++ b/wpa_supplicant/ctrl_iface.c
-@@ -14007,7 +14007,7 @@ char * wpa_supplicant_ctrl_iface_process
+@@ -14234,7 +14234,7 @@ char * wpa_supplicant_ctrl_iface_process
                if (wpas_ctrl_iface_coloc_intf_report(wpa_s, buf + 18))
                        reply_len = -1;
  #endif /* CONFIG_WNM */
@@ -22,7 +22,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
        } else if (os_strncmp(buf, "DISASSOC_IMMINENT ", 18) == 0) {
                if (ap_ctrl_iface_disassoc_imminent(wpa_s, buf + 18))
                        reply_len = -1;
-@@ -14017,7 +14017,7 @@ char * wpa_supplicant_ctrl_iface_process
+@@ -14244,7 +14244,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;
index a3a1786402a263b816bf1cfc2d75de35002276df..95a2e7146e422129f74aefd90ad18548af4de60d 100644 (file)
@@ -15,7 +15,7 @@ Subject: [PATCH] hostapd: support optional argument for the -v switch of
  
  struct hapd_global {
        void **drv_priv;
-@@ -876,7 +876,7 @@ int main(int argc, char *argv[])
+@@ -881,7 +881,7 @@ int main(int argc, char *argv[])
        wpa_supplicant_event = hostapd_wpa_event;
        wpa_supplicant_event_global = hostapd_wpa_event_global;
        for (;;) {
@@ -24,7 +24,7 @@ Subject: [PATCH] hostapd: support optional argument for the -v switch of
                if (c < 0)
                        break;
                switch (c) {
-@@ -913,6 +913,8 @@ int main(int argc, char *argv[])
+@@ -918,6 +918,8 @@ int main(int argc, char *argv[])
                        break;
  #endif /* CONFIG_DEBUG_LINUX_TRACING */
                case 'v':
@@ -52,7 +52,7 @@ Subject: [PATCH] hostapd: support optional argument for the -v switch of
                if (c < 0)
                        break;
                switch (c) {
-@@ -313,8 +314,12 @@ int main(int argc, char *argv[])
+@@ -314,8 +315,12 @@ int main(int argc, char *argv[])
                        break;
  #endif /* CONFIG_CTRL_IFACE_DBUS_NEW */
                case 'v':
index 8cb7ef601b82c272217d2f7692a67c08da4eb0fa..373df0da73898216d84641a36fa793cabbb704bc 100644 (file)
@@ -5,7 +5,7 @@ Subject: [PATCH] hostapd: support wps in hostapd_cli even when built from the
 
 --- a/hostapd/hostapd_cli.c
 +++ b/hostapd/hostapd_cli.c
-@@ -409,7 +409,6 @@ static int hostapd_cli_cmd_disassociate(
+@@ -411,7 +411,6 @@ static int hostapd_cli_cmd_disassociate(
  }
  
  
@@ -13,7 +13,7 @@ Subject: [PATCH] hostapd: support wps in hostapd_cli even when built from the
  static int hostapd_cli_cmd_signature(struct wpa_ctrl *ctrl, int argc,
                                     char *argv[])
  {
-@@ -422,7 +421,6 @@ static int hostapd_cli_cmd_signature(str
+@@ -424,7 +423,6 @@ static int hostapd_cli_cmd_signature(str
        os_snprintf(buf, sizeof(buf), "SIGNATURE %s", argv[0]);
        return wpa_ctrl_command(ctrl, buf);
  }
@@ -21,7 +21,7 @@ Subject: [PATCH] hostapd: support wps in hostapd_cli even when built from the
  
  
  static int hostapd_cli_cmd_sa_query(struct wpa_ctrl *ctrl, int argc,
-@@ -439,7 +437,6 @@ static int hostapd_cli_cmd_sa_query(stru
+@@ -441,7 +439,6 @@ static int hostapd_cli_cmd_sa_query(stru
  }
  
  
@@ -29,7 +29,7 @@ Subject: [PATCH] hostapd: support wps in hostapd_cli even when built from the
  static int hostapd_cli_cmd_wps_pin(struct wpa_ctrl *ctrl, int argc,
                                   char *argv[])
  {
-@@ -665,7 +662,6 @@ static int hostapd_cli_cmd_wps_config(st
+@@ -667,7 +664,6 @@ static int hostapd_cli_cmd_wps_config(st
                         ssid_hex, argv[1]);
        return wpa_ctrl_command(ctrl, buf);
  }
@@ -37,7 +37,7 @@ Subject: [PATCH] hostapd: support wps in hostapd_cli even when built from the
  
  
  static int hostapd_cli_cmd_disassoc_imminent(struct wpa_ctrl *ctrl, int argc,
-@@ -1715,13 +1711,10 @@ static const struct hostapd_cli_cmd host
+@@ -1717,13 +1713,10 @@ static const struct hostapd_cli_cmd host
        { "disassociate", hostapd_cli_cmd_disassociate,
          hostapd_complete_stations,
          "<addr> = disassociate a station" },
@@ -51,7 +51,7 @@ Subject: [PATCH] hostapd: support wps in hostapd_cli even when built from the
        { "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,
-@@ -1746,7 +1739,6 @@ static const struct hostapd_cli_cmd host
+@@ -1748,7 +1741,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" },
index ff5f1c86d441c8f8eae1818c2ea91aa4b1eb1320..5cd89e73d34fa88e12950ebfe5fbae00bd5bd397 100644 (file)
@@ -16,7 +16,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality
  else
 --- a/hostapd/ctrl_iface.c
 +++ b/hostapd/ctrl_iface.c
-@@ -3978,6 +3978,7 @@ static int hostapd_ctrl_iface_receive_pr
+@@ -3987,6 +3987,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);
@@ -24,7 +24,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality
        } else if (os_strcmp(buf, "MIB") == 0) {
                reply_len = ieee802_11_get_mib(hapd, reply, reply_size);
                if (reply_len >= 0) {
-@@ -4019,6 +4020,7 @@ static int hostapd_ctrl_iface_receive_pr
+@@ -4028,6 +4029,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);
@@ -131,7 +131,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality
  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
-@@ -6544,6 +6544,7 @@ static const char * wpa_bool_txt(int val
+@@ -6548,6 +6548,7 @@ static const char * wpa_bool_txt(int val
        return val ? "TRUE" : "FALSE";
  }
  
@@ -139,7 +139,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality
  
  #define RSN_SUITE "%02x-%02x-%02x-%d"
  #define RSN_SUITE_ARG(s) \
-@@ -6696,7 +6697,7 @@ int wpa_get_mib_sta(struct wpa_state_mac
+@@ -6700,7 +6701,7 @@ int wpa_get_mib_sta(struct wpa_state_mac
  
        return len;
  }
@@ -150,7 +150,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality
  {
 --- a/src/rsn_supp/wpa.c
 +++ b/src/rsn_supp/wpa.c
-@@ -4272,6 +4272,8 @@ static u32 wpa_key_mgmt_suite(struct wpa
+@@ -4301,6 +4301,8 @@ static u32 wpa_key_mgmt_suite(struct wpa
  }
  
  
@@ -159,7 +159,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality
  #define RSN_SUITE "%02x-%02x-%02x-%d"
  #define RSN_SUITE_ARG(s) \
  ((s) >> 24) & 0xff, ((s) >> 16) & 0xff, ((s) >> 8) & 0xff, (s) & 0xff
-@@ -4353,6 +4355,7 @@ int wpa_sm_get_mib(struct wpa_sm *sm, ch
+@@ -4382,6 +4384,7 @@ int wpa_sm_get_mib(struct wpa_sm *sm, ch
  
        return (int) len;
  }
@@ -169,7 +169,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality
  
 --- a/wpa_supplicant/Makefile
 +++ b/wpa_supplicant/Makefile
-@@ -1078,6 +1078,9 @@ ifdef CONFIG_FILS
+@@ -1083,6 +1083,9 @@ ifdef CONFIG_FILS
  OBJS += ../src/ap/fils_hlp.o
  endif
  ifdef CONFIG_CTRL_IFACE
@@ -181,7 +181,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality
  
 --- a/wpa_supplicant/ap.c
 +++ b/wpa_supplicant/ap.c
-@@ -1535,7 +1535,7 @@ int wpas_ap_wps_nfc_report_handover(stru
+@@ -1538,7 +1538,7 @@ int wpas_ap_wps_nfc_report_handover(stru
  #endif /* CONFIG_WPS */
  
  
@@ -201,7 +201,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality
                if (wpa_s->ap_iface) {
                        pos += ap_ctrl_iface_wpa_get_status(wpa_s, pos,
                                                            end - pos,
-@@ -13336,6 +13336,7 @@ char * wpa_supplicant_ctrl_iface_process
+@@ -13563,6 +13563,7 @@ char * wpa_supplicant_ctrl_iface_process
        } else if (os_strncmp(buf, "NOTE ", 5) == 0) {
                wpa_printf(MSG_INFO, "NOTE: %s", buf + 5);
                wpa_trace_set_context(buf + 5);
@@ -209,7 +209,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality
        } else if (os_strcmp(buf, "MIB") == 0) {
                reply_len = wpa_sm_get_mib(wpa_s->wpa, reply, reply_size);
                if (reply_len >= 0) {
-@@ -13348,6 +13349,7 @@ char * wpa_supplicant_ctrl_iface_process
+@@ -13575,6 +13576,7 @@ char * wpa_supplicant_ctrl_iface_process
                                reply_size - reply_len);
  #endif /* CONFIG_MACSEC */
                }
@@ -217,7 +217,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality
        } else if (os_strncmp(buf, "STATUS", 6) == 0) {
                reply_len = wpa_supplicant_ctrl_iface_status(
                        wpa_s, buf + 6, reply, reply_size);
-@@ -13835,6 +13837,7 @@ char * wpa_supplicant_ctrl_iface_process
+@@ -14062,6 +14064,7 @@ char * wpa_supplicant_ctrl_iface_process
                reply_len = wpa_supplicant_ctrl_iface_bss(
                        wpa_s, buf + 4, reply, reply_size);
  #ifdef CONFIG_AP
@@ -225,7 +225,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality
        } 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) {
-@@ -13843,12 +13846,15 @@ char * wpa_supplicant_ctrl_iface_process
+@@ -14070,12 +14073,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);
index ab3df7c1b44265c985408a5536998addd70d6fc7..ea71a12c1b884ec48f7fa8d13c96a3acf1fdbd7a 100644 (file)
@@ -18,7 +18,7 @@ Subject: [PATCH] Add noscan, no_ht_coex config options
        } else if (os_strcmp(buf, "ht_capab") == 0) {
 --- a/src/ap/ap_config.h
 +++ b/src/ap/ap_config.h
-@@ -1119,6 +1119,8 @@ struct hostapd_config {
+@@ -1131,6 +1131,8 @@ struct hostapd_config {
  
        int ht_op_mode_fixed;
        u16 ht_capab;
index cb7378264566c8655aa2f9edf8e3d2f9d0c1eb35..500a8ca6afdf4b2035a2b7126105612f2a79033b 100644 (file)
@@ -5,7 +5,7 @@ Subject: [PATCH] Allow HT40 also on 2.4GHz if noscan option is set, which also
 
 --- a/wpa_supplicant/config.c
 +++ b/wpa_supplicant/config.c
-@@ -2795,6 +2795,7 @@ static const struct parse_data ssid_fiel
+@@ -2827,6 +2827,7 @@ static const struct parse_data ssid_fiel
  #else /* CONFIG_MESH */
        { INT_RANGE(mode, 0, 4) },
  #endif /* CONFIG_MESH */
@@ -47,7 +47,7 @@ Subject: [PATCH] Allow HT40 also on 2.4GHz if noscan option is set, which also
                /*
 --- a/wpa_supplicant/wpa_supplicant.c
 +++ b/wpa_supplicant/wpa_supplicant.c
-@@ -3120,7 +3120,7 @@ static bool ibss_mesh_can_use_vht(struct
+@@ -3134,7 +3134,7 @@ static bool ibss_mesh_can_use_vht(struct
                                  const struct wpa_ssid *ssid,
                                  struct hostapd_hw_modes *mode)
  {
@@ -56,7 +56,7 @@ Subject: [PATCH] Allow HT40 also on 2.4GHz if noscan option is set, which also
                return false;
  
        if (!drv_supports_vht(wpa_s, ssid))
-@@ -3194,7 +3194,7 @@ static void ibss_mesh_select_40mhz(struc
+@@ -3208,7 +3208,7 @@ static void ibss_mesh_select_40mhz(struc
        int i, res;
        unsigned int j;
        static const int ht40plus_5ghz[] = {
@@ -65,7 +65,7 @@ Subject: [PATCH] Allow HT40 also on 2.4GHz if noscan option is set, which also
                149, 157, 165, 173, 184, 192
        };
        static const int ht40plus_6ghz[] = {
-@@ -3547,7 +3547,7 @@ void ibss_mesh_setup_freq(struct wpa_sup
+@@ -3561,7 +3561,7 @@ void ibss_mesh_setup_freq(struct wpa_sup
        int ieee80211_mode = wpas_mode_to_ieee80211_mode(ssid->mode);
        enum hostapd_hw_mode hw_mode;
        struct hostapd_hw_modes *mode = NULL;
@@ -74,7 +74,7 @@ Subject: [PATCH] Allow HT40 also on 2.4GHz if noscan option is set, which also
        u8 channel;
        bool is_6ghz, is_24ghz;
        bool dfs_enabled = wpa_s->conf->country[0] && (wpa_s->drv_flags & WPA_DRIVER_FLAGS_RADAR);
-@@ -3591,6 +3591,8 @@ void ibss_mesh_setup_freq(struct wpa_sup
+@@ -3605,6 +3605,8 @@ void ibss_mesh_setup_freq(struct wpa_sup
                freq->he_enabled = ibss_mesh_can_use_he(wpa_s, ssid, mode,
                                                        ieee80211_mode);
        freq->channel = channel;
index 14bf064defc1cfb468afbba65092ab23931e2384..7a32e1d2fdefa70eb80440c2f1fab89cf0690543 100644 (file)
@@ -5,7 +5,7 @@ Subject: [PATCH] rescan_immediately.patch
 
 --- a/wpa_supplicant/wpa_supplicant.c
 +++ b/wpa_supplicant/wpa_supplicant.c
-@@ -6481,7 +6481,7 @@ wpa_supplicant_alloc(struct wpa_supplica
+@@ -6519,7 +6519,7 @@ wpa_supplicant_alloc(struct wpa_supplica
        if (wpa_s == NULL)
                return NULL;
        wpa_s->scan_req = INITIAL_SCAN_REQ;
index 8a9d0ad88904115b048144da6ec8042269634dcd..bd79546592a7ebbe3b33f8f0f20a777779089494 100644 (file)
@@ -5,7 +5,7 @@ Subject: [PATCH] wpa_supplicant: fix calling channel switch via wpa_cli on
 
 --- a/wpa_supplicant/ap.c
 +++ b/wpa_supplicant/ap.c
-@@ -1863,6 +1863,21 @@ int ap_switch_channel(struct wpa_supplic
+@@ -1866,6 +1866,21 @@ int ap_switch_channel(struct wpa_supplic
  
  
  #ifdef CONFIG_CTRL_IFACE
@@ -27,7 +27,7 @@ Subject: [PATCH] wpa_supplicant: fix calling channel switch via wpa_cli on
  int ap_ctrl_iface_chanswitch(struct wpa_supplicant *wpa_s, const char *pos)
  {
        struct csa_settings settings;
-@@ -1882,12 +1897,18 @@ int ap_ctrl_iface_chanswitch(struct wpa_
+@@ -1885,12 +1900,18 @@ int ap_ctrl_iface_chanswitch(struct wpa_
                return -1;
  
        ret = hostapd_parse_csa_settings(iface, pos, &settings);
index c933208ba20344313ec9d878dc3007a4dcaf4245..81725f8e66b031fb7c7a8ca091026b89fa7f8eed 100644 (file)
@@ -1,6 +1,6 @@
 --- a/src/drivers/driver_nl80211.h
 +++ b/src/drivers/driver_nl80211.h
-@@ -95,6 +95,7 @@ struct i802_bss {
+@@ -99,6 +99,7 @@ struct i802_bss {
        u64 wdev_id;
        char ifname[IFNAMSIZ + 1];
        char brname[IFNAMSIZ];
@@ -8,7 +8,7 @@
        unsigned int added_if_into_bridge:1;
        unsigned int already_in_bridge:1;
        unsigned int added_bridge:1;
-@@ -346,7 +347,7 @@ send_and_recv_resp(struct wpa_driver_nl8
+@@ -354,7 +355,7 @@ send_and_recv_resp(struct wpa_driver_nl8
  
  int nl80211_create_iface(struct wpa_driver_nl80211_data *drv,
                         const char *ifname, enum nl80211_iftype iftype,
  void nl80211_remove_iface(struct wpa_driver_nl80211_data *drv, int ifidx);
 --- a/src/drivers/driver_nl80211.c
 +++ b/src/drivers/driver_nl80211.c
-@@ -887,6 +887,7 @@ struct wiphy_idx_data {
-       enum nl80211_iftype nlmode;
-       u8 *macaddr;
+@@ -894,6 +894,7 @@ struct wiphy_idx_data {
        u8 use_4addr;
+       u64 wdev_id;
+       bool wdev_id_set;
 +      u32 radio_mask;
  };
  
  
-@@ -912,6 +913,9 @@ static int netdev_info_handler(struct nl
-       if (tb[NL80211_ATTR_4ADDR])
-               info->use_4addr = nla_get_u8(tb[NL80211_ATTR_4ADDR]);
+@@ -924,6 +925,9 @@ static int netdev_info_handler(struct nl
+               info->wdev_id_set = true;
+       }
  
 +      if (tb[NL80211_ATTR_VIF_RADIO_MASK])
 +              info->radio_mask = nla_get_u32(tb[NL80211_ATTR_VIF_RADIO_MASK]);
@@ -37,7 +37,7 @@
        return NL_SKIP;
  }
  
-@@ -978,6 +982,20 @@ static int nl80211_get_4addr(struct i802
+@@ -990,6 +994,20 @@ static int nl80211_get_4addr(struct i802
  }
  
  
@@ -58,7 +58,7 @@
  static int nl80211_register_beacons(struct wpa_driver_nl80211_data *drv,
                                    struct nl80211_wiphy_data *w)
  {
-@@ -2584,6 +2602,8 @@ static void * wpa_driver_nl80211_drv_ini
+@@ -2608,6 +2626,8 @@ static void * wpa_driver_nl80211_drv_ini
                                               p2p_mode))
                goto failed;
  
@@ -67,7 +67,7 @@
        if (drv->capa.flags2 & WPA_DRIVER_FLAGS2_CONTROL_PORT_TX_STATUS) {
                drv->control_port_ap = 1;
                goto skip_wifi_status;
-@@ -6531,7 +6551,7 @@ const char * nl80211_iftype_str(enum nl8
+@@ -6797,7 +6817,7 @@ const char * nl80211_iftype_str(enum nl8
  static int nl80211_create_iface_once(struct wpa_driver_nl80211_data *drv,
                                     const char *ifname,
                                     enum nl80211_iftype iftype,
@@ -76,7 +76,7 @@
                                     int (*handler)(struct nl_msg *, void *),
                                     void *arg)
  {
-@@ -6551,6 +6571,10 @@ static int nl80211_create_iface_once(str
+@@ -6817,6 +6837,10 @@ static int nl80211_create_iface_once(str
        if (wds && nla_put_u8(msg, NL80211_ATTR_4ADDR, wds))
                goto fail;
  
@@ -87,7 +87,7 @@
        /*
         * Tell cfg80211 that the interface belongs to the socket that created
         * it, and the interface should be deleted when the socket is closed.
-@@ -6643,14 +6667,14 @@ static int nl80211_create_iface_once(str
+@@ -6910,14 +6934,14 @@ static int nl80211_create_iface_once(str
  
  int nl80211_create_iface(struct wpa_driver_nl80211_data *drv,
                         const char *ifname, enum nl80211_iftype iftype,
  
        /* if error occurred and interface exists already */
        if (ret < 0 && if_nametoindex(ifname)) {
-@@ -6676,7 +6700,7 @@ int nl80211_create_iface(struct wpa_driv
+@@ -6943,7 +6967,7 @@ int nl80211_create_iface(struct wpa_driv
  
                /* Try to create the interface again */
                ret = nl80211_create_iface_once(drv, ifname, iftype, addr,
        }
  
        if (ret >= 0 && is_p2p_net_interface(iftype)) {
-@@ -9012,8 +9036,8 @@ static int i802_set_wds_sta(void *priv,
+@@ -9308,8 +9332,8 @@ static int i802_set_wds_sta(void *priv,
                if (!if_nametoindex(name)) {
                        if (nl80211_create_iface(drv, name,
                                                 NL80211_IFTYPE_AP_VLAN,
                                return -1;
  
                        if (bridge_ifname)
-@@ -9386,7 +9410,8 @@ static int wpa_driver_nl80211_if_add(voi
+@@ -9686,7 +9710,8 @@ static int wpa_driver_nl80211_if_add(voi
  
                os_memset(&nonnetdev_info, 0, sizeof(nonnetdev_info));
                ifidx = nl80211_create_iface(drv, ifname, nlmode, addr,
                                             &nonnetdev_info, use_existing);
                if (!nonnetdev_info.wdev_id_set || ifidx != 0) {
                        wpa_printf(MSG_ERROR,
-@@ -9405,7 +9430,8 @@ static int wpa_driver_nl80211_if_add(voi
+@@ -9705,7 +9730,8 @@ static int wpa_driver_nl80211_if_add(voi
                           (long long unsigned int) nonnetdev_info.wdev_id);
        } else {
                ifidx = nl80211_create_iface(drv, ifname, nlmode, addr,
                if (use_existing && ifidx == -ENFILE) {
                        added = 0;
                        ifidx = if_nametoindex(ifname);
-@@ -9475,6 +9501,8 @@ static int wpa_driver_nl80211_if_add(voi
+@@ -9775,6 +9801,8 @@ static int wpa_driver_nl80211_if_add(voi
                new_bss->ctx = bss_ctx;
                new_bss->added_if = added;
  
index 29026ac9d1c0a960bc53403cdf23453054cd9323..dcbdd230bcb90a6d961bf1d7e3727a86afca877c 100644 (file)
@@ -11,7 +11,7 @@ if CONFIG_CTRL_IFACE_MIB is not defined.
 
 --- a/hostapd/hostapd_cli.c
 +++ b/hostapd/hostapd_cli.c
-@@ -761,7 +761,7 @@ static int wpa_ctrl_command_sta(struct w
+@@ -763,7 +763,7 @@ static int wpa_ctrl_command_sta(struct w
        }
  
        buf[len] = '\0';
index 949b0ef4b5684299906d1535692de8d41cc7a328..144fd54ccdb6f578dd1824fafa401badb1c5dda5 100644 (file)
@@ -14,7 +14,7 @@ Signed-hostap: Antonio Quartulli <ordex@autistici.org>
 
 --- a/src/drivers/driver.h
 +++ b/src/drivers/driver.h
-@@ -1023,6 +1023,9 @@ struct wpa_driver_associate_params {
+@@ -1024,6 +1024,9 @@ struct wpa_driver_associate_params {
         * responsible for selecting with which BSS to associate. */
        const u8 *bssid;
  
@@ -34,8 +34,8 @@ Signed-hostap: Antonio Quartulli <ordex@autistici.org>
  #include "config.h"
  
  
-@@ -2561,6 +2562,97 @@ static char * wpa_config_write_mac_value
- #endif /* NO_CONFIG_WRITE */
+@@ -2593,6 +2594,97 @@ static char * wpa_config_write_pasn_grou
+ #endif /* CONFIG_PASN */
  
  
 +static int wpa_config_parse_mcast_rate(const struct parse_data *data,
@@ -132,7 +132,7 @@ Signed-hostap: Antonio Quartulli <ordex@autistici.org>
  /* Helper macros for network block parser */
  
  #ifdef OFFSET
-@@ -2871,6 +2963,8 @@ static const struct parse_data ssid_fiel
+@@ -2903,6 +2995,8 @@ static const struct parse_data ssid_fiel
        { INT(ap_max_inactivity) },
        { INT(dtim_period) },
        { INT(beacon_int) },
@@ -155,7 +155,7 @@ Signed-hostap: Antonio Quartulli <ordex@autistici.org>
         * macsec_policy - Determines the policy for MACsec secure session
 --- a/wpa_supplicant/wpa_supplicant.c
 +++ b/wpa_supplicant/wpa_supplicant.c
-@@ -4759,6 +4759,12 @@ static void wpas_start_assoc_cb(struct w
+@@ -4784,6 +4784,12 @@ static void wpas_start_assoc_cb(struct w
                        params.beacon_int = ssid->beacon_int;
                else
                        params.beacon_int = wpa_s->conf->beacon_int;
index 69ceec1c0dab7d2d6caaca6043bfcbbb5b03b2c9..ea506f509afd188bf6e2e40206d1c749f1b5f9fc 100644 (file)
@@ -19,7 +19,7 @@ Tested-by: Simon Wunderlich <simon.wunderlich@openmesh.com>
 
 --- a/src/drivers/driver.h
 +++ b/src/drivers/driver.h
-@@ -1969,6 +1969,7 @@ struct wpa_driver_mesh_join_params {
+@@ -1975,6 +1975,7 @@ struct wpa_driver_mesh_join_params {
  #define WPA_DRIVER_MESH_FLAG_AMPE     0x00000008
        unsigned int flags;
        bool handle_dfs;
@@ -29,7 +29,7 @@ Tested-by: Simon Wunderlich <simon.wunderlich@openmesh.com>
  struct wpa_driver_set_key_params {
 --- a/src/drivers/driver_nl80211.c
 +++ b/src/drivers/driver_nl80211.c
-@@ -12718,6 +12718,18 @@ static int nl80211_put_mesh_id(struct nl
+@@ -13055,6 +13055,18 @@ static int nl80211_put_mesh_id(struct nl
  }
  
  
@@ -48,7 +48,7 @@ Tested-by: Simon Wunderlich <simon.wunderlich@openmesh.com>
  static int nl80211_put_mesh_config(struct nl_msg *msg,
                                   struct wpa_driver_mesh_bss_params *params)
  {
-@@ -12779,6 +12791,7 @@ static int nl80211_join_mesh(struct i802
+@@ -13116,6 +13128,7 @@ static int nl80211_join_mesh(struct i802
            nl80211_put_basic_rates(msg, params->basic_rates) ||
            nl80211_put_mesh_id(msg, params->meshid, params->meshid_len) ||
            nl80211_put_beacon_int(msg, params->beacon_int) ||
index 7f9c6fdeb8a25233e519c5741a32be6297f11539..bb75ca2ea1369256d7cdee11e948af9ca5cbc8f8 100644 (file)
@@ -5,7 +5,7 @@ Subject: [PATCH] Fix issues with disabling obss scan when using fixed_freq on
 
 --- a/wpa_supplicant/wpa_supplicant.c
 +++ b/wpa_supplicant/wpa_supplicant.c
-@@ -3554,6 +3554,10 @@ void ibss_mesh_setup_freq(struct wpa_sup
+@@ -3568,6 +3568,10 @@ void ibss_mesh_setup_freq(struct wpa_sup
  
        freq->freq = ssid->frequency;
  
index 7dfdc5b8f15184323c3d900dce573a385fe573b5..38151ea422f002d971abbeaaa7794a2ef8da50bd 100644 (file)
@@ -39,7 +39,7 @@ probe/assoc/auth requests via object subscribe.
  }
  
  
-@@ -244,7 +250,10 @@ int airtime_policy_new_sta(struct hostap
+@@ -249,7 +255,10 @@ int airtime_policy_new_sta(struct hostap
        unsigned int weight;
  
        if (hapd->iconf->airtime_mode == AIRTIME_MODE_STATIC) {
@@ -53,7 +53,7 @@ probe/assoc/auth requests via object subscribe.
        }
 --- a/src/ap/beacon.c
 +++ b/src/ap/beacon.c
-@@ -1467,6 +1467,12 @@ void handle_probe_req(struct hostapd_dat
+@@ -1471,6 +1471,12 @@ void handle_probe_req(struct hostapd_dat
        int mld_id;
        u16 links;
  #endif /* CONFIG_IEEE80211BE */
@@ -66,7 +66,7 @@ probe/assoc/auth requests via object subscribe.
  
        if (hapd->iconf->rssi_ignore_probe_request && ssi_signal &&
            ssi_signal < hapd->iconf->rssi_ignore_probe_request)
-@@ -1674,6 +1680,12 @@ void handle_probe_req(struct hostapd_dat
+@@ -1678,6 +1684,12 @@ void handle_probe_req(struct hostapd_dat
        }
  #endif /* CONFIG_P2P */
  
@@ -92,7 +92,7 @@ probe/assoc/auth requests via object subscribe.
        /* Proceed only if DFS is not offloaded to the driver */
 --- a/src/ap/drv_callbacks.c
 +++ b/src/ap/drv_callbacks.c
-@@ -333,6 +333,10 @@ int hostapd_notif_assoc(struct hostapd_d
+@@ -335,6 +335,10 @@ int hostapd_notif_assoc(struct hostapd_d
  #endif /* CONFIG_OWE */
        bool updated = false;
        bool driver_acl;
@@ -103,7 +103,7 @@ probe/assoc/auth requests via object subscribe.
  
  #ifdef CONFIG_P2P
        if (hapd->p2p_group && (!hapd->started || hapd->disabled)) {
-@@ -528,6 +532,12 @@ int hostapd_notif_assoc(struct hostapd_d
+@@ -530,6 +534,12 @@ int hostapd_notif_assoc(struct hostapd_d
        }
  #endif /* CONFIG_IEEE80211BE */
  
@@ -116,7 +116,7 @@ probe/assoc/auth requests via object subscribe.
  #ifdef CONFIG_P2P
        if (elems.p2p) {
                wpabuf_free(sta->p2p_ie);
-@@ -1425,6 +1435,7 @@ void hostapd_event_ch_switch(struct host
+@@ -1428,6 +1438,7 @@ void hostapd_event_ch_switch(struct host
  
                wpa_msg(hapd->msg_ctx, MSG_INFO, AP_CSA_FINISHED
                        "freq=%d dfs=%d", freq, is_dfs);
@@ -203,7 +203,7 @@ probe/assoc/auth requests via object subscribe.
                                if (sae_password_track_fail(hapd, sta)) {
                                        wpa_printf(MSG_DEBUG,
                                                   "SAE: Reject mismatching Confirm so that another password can be attempted by "
-@@ -4077,7 +4078,7 @@ static void handle_auth(struct hostapd_d
+@@ -4218,7 +4219,7 @@ static void handle_auth(struct hostapd_d
        u16 auth_alg, auth_transaction, status_code;
        u16 resp = WLAN_STATUS_SUCCESS;
        struct sta_info *sta = NULL;
@@ -212,7 +212,7 @@ probe/assoc/auth requests via object subscribe.
        u16 fc;
        const u8 *challenge = NULL;
        u8 resp_ies[2 + WLAN_AUTH_CHALLENGE_LEN];
-@@ -4116,6 +4117,11 @@ static void handle_auth(struct hostapd_d
+@@ -4257,6 +4258,11 @@ static void handle_auth(struct hostapd_d
        else
                sa = mgmt->sa;
  #endif /* CONFIG_IEEE80211BE */
@@ -224,7 +224,7 @@ probe/assoc/auth requests via object subscribe.
  
        auth_alg = le_to_host16(mgmt->u.auth.auth_alg);
        auth_transaction = le_to_host16(mgmt->u.auth.auth_transaction);
-@@ -4306,6 +4312,13 @@ static void handle_auth(struct hostapd_d
+@@ -4447,6 +4453,13 @@ static void handle_auth(struct hostapd_d
                resp = WLAN_STATUS_UNSPECIFIED_FAILURE;
                goto fail;
        }
@@ -238,7 +238,7 @@ probe/assoc/auth requests via object subscribe.
        if (res == HOSTAPD_ACL_PENDING)
                return;
  
-@@ -6999,7 +7012,7 @@ static void handle_assoc(struct hostapd_
+@@ -7190,7 +7203,7 @@ static void handle_assoc(struct hostapd_
        int resp = WLAN_STATUS_SUCCESS;
        u16 reply_res = WLAN_STATUS_UNSPECIFIED_FAILURE;
        const u8 *pos;
@@ -247,7 +247,7 @@ probe/assoc/auth requests via object subscribe.
        struct sta_info *sta;
        u8 *tmp = NULL;
  #ifdef CONFIG_FILS
-@@ -7255,6 +7268,11 @@ static void handle_assoc(struct hostapd_
+@@ -7446,6 +7459,11 @@ static void handle_assoc(struct hostapd_
                left = res;
        }
  #endif /* CONFIG_FILS */
@@ -259,7 +259,7 @@ probe/assoc/auth requests via object subscribe.
  
        /* followed by SSID and Supported rates; and HT capabilities if 802.11n
         * is used */
-@@ -7347,6 +7365,7 @@ static void handle_assoc(struct hostapd_
+@@ -7538,6 +7556,7 @@ static void handle_assoc(struct hostapd_
  
  #ifdef CONFIG_TAXONOMY
        taxonomy_sta_info_assoc_req(hapd, sta, pos, left);
@@ -267,7 +267,7 @@ probe/assoc/auth requests via object subscribe.
  #endif /* CONFIG_TAXONOMY */
  
        sta->pending_wds_enable = 0;
-@@ -7360,6 +7379,13 @@ static void handle_assoc(struct hostapd_
+@@ -7551,6 +7570,13 @@ static void handle_assoc(struct hostapd_
        }
  #endif /* CONFIG_FILS */
  
@@ -281,7 +281,7 @@ probe/assoc/auth requests via object subscribe.
   fail:
  
        /*
-@@ -7598,6 +7624,7 @@ static void handle_disassoc(struct hosta
+@@ -7798,6 +7824,7 @@ static void handle_disassoc(struct hosta
                           (unsigned long) len);
                return;
        }
@@ -289,7 +289,7 @@ probe/assoc/auth requests via object subscribe.
  
        sta = ap_get_sta(hapd, mgmt->sa);
        if (!sta) {
-@@ -7629,6 +7656,8 @@ static void handle_deauth(struct hostapd
+@@ -7829,6 +7856,8 @@ static void handle_deauth(struct hostapd
        /* Clear the PTKSA cache entries for PASN */
        ptksa_cache_flush(hapd->ptksa, mgmt->sa, WPA_CIPHER_NONE);
  
@@ -504,7 +504,7 @@ probe/assoc/auth requests via object subscribe.
  }
 --- a/src/ap/wpa_auth_glue.c
 +++ b/src/ap/wpa_auth_glue.c
-@@ -412,6 +412,7 @@ static void hostapd_wpa_auth_psk_failure
+@@ -415,6 +415,7 @@ static void hostapd_wpa_auth_psk_failure
        struct hostapd_data *hapd = ctx;
        wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_POSSIBLE_PSK_MISMATCH MACSTR,
                MAC2STR(addr));
@@ -671,8 +671,8 @@ probe/assoc/auth requests via object subscribe.
                if (c < 0)
                        break;
                switch (c) {
-@@ -279,6 +279,9 @@ int main(int argc, char *argv[])
-                       params.conf_p2p_dev = optarg;
+@@ -280,6 +280,9 @@ int main(int argc, char *argv[])
+                       params.conf_p2p_dev = os_rel2abs_path(optarg);
                        break;
  #endif /* CONFIG_P2P */
 +              case 'n':
index 948481cc1c9678332ededfff521886b90d48a814..0d40eda49de0ea0581934bcf88b3c230b3d71249 100644 (file)
@@ -8,7 +8,7 @@ as adding/removing interfaces.
 
 --- a/wpa_supplicant/wpa_supplicant.c
 +++ b/wpa_supplicant/wpa_supplicant.c
-@@ -1267,6 +1267,7 @@ void wpa_supplicant_set_state(struct wpa
+@@ -1276,6 +1276,7 @@ void wpa_supplicant_set_state(struct wpa
                sme_sched_obss_scan(wpa_s, 0);
        }
        wpa_s->wpa_state = state;
@@ -16,7 +16,7 @@ as adding/removing interfaces.
  
  #ifndef CONFIG_NO_ROBUST_AV
        if (state == WPA_COMPLETED && dl_list_len(&wpa_s->active_scs_ids) &&
-@@ -8392,6 +8393,8 @@ struct wpa_supplicant * wpa_supplicant_a
+@@ -8436,6 +8437,8 @@ struct wpa_supplicant * wpa_supplicant_a
        }
  #endif /* CONFIG_P2P */
  
@@ -25,7 +25,7 @@ as adding/removing interfaces.
        return wpa_s;
  }
  
-@@ -8418,6 +8421,8 @@ int wpa_supplicant_remove_iface(struct w
+@@ -8462,6 +8465,8 @@ int wpa_supplicant_remove_iface(struct w
        struct wpa_supplicant *parent = wpa_s->parent;
  #endif /* CONFIG_MESH */
  
@@ -34,7 +34,7 @@ as adding/removing interfaces.
        /* Remove interface from the global list of interfaces */
        prev = global->ifaces;
        if (prev == wpa_s) {
-@@ -8737,6 +8742,7 @@ struct wpa_global * wpa_supplicant_init(
+@@ -8781,6 +8786,7 @@ struct wpa_global * wpa_supplicant_init(
  
        eloop_register_timeout(WPA_SUPPLICANT_CLEANUP_INTERVAL, 0,
                               wpas_periodic, global, NULL);
@@ -42,7 +42,7 @@ as adding/removing interfaces.
  
        return global;
  }
-@@ -8809,6 +8815,8 @@ void wpa_supplicant_deinit(struct wpa_gl
+@@ -8853,6 +8859,8 @@ void wpa_supplicant_deinit(struct wpa_gl
  
        wpas_notify_supplicant_deinitialized(global);
  
@@ -53,7 +53,7 @@ as adding/removing interfaces.
        eap_server_unregister_methods();
 --- a/wpa_supplicant/wpa_supplicant_i.h
 +++ b/wpa_supplicant/wpa_supplicant_i.h
-@@ -15,12 +15,14 @@
+@@ -15,6 +15,7 @@
  #include "common/sae.h"
  #include "common/wpa_ctrl.h"
  #include "common/dpp.h"
@@ -61,14 +61,15 @@ as adding/removing interfaces.
  #include "crypto/sha384.h"
  #include "eapol_supp/eapol_supp_sm.h"
  #include "wps/wps_defs.h"
- #include "config_ssid.h"
+@@ -22,6 +23,7 @@
  #include "wmm_ac.h"
  #include "pasn/pasn_common.h"
+ #include "nan/nan.h"
 +#include "ucode.h"
  
  extern const char *const wpa_supplicant_version;
  extern const char *const wpa_supplicant_license;
-@@ -756,6 +758,7 @@ struct wpa_supplicant {
+@@ -762,6 +764,7 @@ struct wpa_supplicant {
        unsigned char own_addr[ETH_ALEN];
        unsigned char perm_addr[ETH_ALEN];
        char ifname[100];
@@ -76,7 +77,7 @@ as adding/removing interfaces.
        u8 hw_dfs_domain;
  #ifdef CONFIG_MATCH_IFACE
        int matched;
-@@ -1633,6 +1636,8 @@ struct wpa_supplicant {
+@@ -1647,6 +1650,8 @@ struct wpa_supplicant {
        unsigned int enabled_4addr_mode:1;
        unsigned int multi_bss_support:1;
        unsigned int drv_authorized_port:1;
@@ -164,7 +165,7 @@ as adding/removing interfaces.
  ifdef CONFIG_CODE_COVERAGE
 --- a/hostapd/ctrl_iface.c
 +++ b/hostapd/ctrl_iface.c
-@@ -5951,6 +5951,7 @@ try_again:
+@@ -5960,6 +5960,7 @@ try_again:
                return -1;
        }
  
@@ -172,7 +173,7 @@ as adding/removing interfaces.
        wpa_msg_register_cb(hostapd_ctrl_iface_msg_cb);
  
        return 0;
-@@ -6052,6 +6053,7 @@ fail:
+@@ -6061,6 +6062,7 @@ fail:
        os_free(fname);
  
        interface->global_ctrl_sock = s;
@@ -182,7 +183,7 @@ as adding/removing interfaces.
  
 --- a/hostapd/main.c
 +++ b/hostapd/main.c
-@@ -1097,6 +1097,7 @@ int main(int argc, char *argv[])
+@@ -1102,6 +1102,7 @@ int main(int argc, char *argv[])
        }
  
        hostapd_global_ctrl_iface_init(&interfaces);
@@ -190,7 +191,7 @@ as adding/removing interfaces.
  
        if (hostapd_global_run(&interfaces, daemonize, pid_file)) {
                wpa_printf(MSG_ERROR, "Failed to start eloop");
-@@ -1106,6 +1107,7 @@ int main(int argc, char *argv[])
+@@ -1111,6 +1112,7 @@ int main(int argc, char *argv[])
        ret = 0;
  
   out:
@@ -268,21 +269,20 @@ as adding/removing interfaces.
  
        return 0;
  }
-@@ -1415,8 +1420,7 @@ static int hostapd_bss_radius_init(struc
+@@ -1415,7 +1420,7 @@ static int hostapd_bss_radius_init(struc
   * initialized. Most of the modules that are initialized here will be
   * deinitialized in hostapd_cleanup().
   */
--static int hostapd_setup_bss(struct hostapd_data *hapd, int first,
--                           bool start_beacon)
-+int hostapd_setup_bss(struct hostapd_data *hapd, int first, bool start_beacon)
+-static int hostapd_setup_bss(struct hostapd_data *hapd, bool first,
++int hostapd_setup_bss(struct hostapd_data *hapd, bool first,
+                            bool start_beacon)
  {
        struct hostapd_bss_config *conf = hapd->conf;
-       u8 ssid[SSID_MAX_LEN + 1];
-@@ -1458,12 +1462,17 @@ static int hostapd_setup_bss(struct host
+@@ -1458,12 +1463,17 @@ static int hostapd_setup_bss(struct host
  
-       if (!first || first == -1) {
+       if (!first) {
                u8 *addr = hapd->own_addr;
-+              bool use_existing = first == -1;
++              bool use_existing = !first;
  
 +#ifdef CONFIG_IEEE80211BE
 +              if (hapd->conf->mld_ap)
@@ -297,7 +297,7 @@ as adding/removing interfaces.
                                             hapd->iface->bss[0]->own_addr) ==
                            0) {
                                wpa_printf(MSG_ERROR, "BSS '%s' may not have "
-@@ -1493,6 +1502,7 @@ static int hostapd_setup_bss(struct host
+@@ -1493,6 +1503,7 @@ static int hostapd_setup_bss(struct host
                                           hapd->mld_link_id, hapd->conf->iface);
                                goto setup_mld;
                        }
@@ -305,25 +305,16 @@ as adding/removing interfaces.
                }
  #endif /* CONFIG_IEEE80211BE */
  
-@@ -1501,7 +1511,7 @@ static int hostapd_setup_bss(struct host
+@@ -1501,7 +1512,7 @@ static int hostapd_setup_bss(struct host
                                   conf->iface, addr, hapd,
                                   &hapd->drv_priv, force_ifname, if_addr,
                                   conf->bridge[0] ? conf->bridge : NULL,
--                                 first == -1)) {
+-                                 1)) {
 +                                 use_existing)) {
                        wpa_printf(MSG_ERROR, "Failed to add BSS (BSSID="
                                   MACSTR ")", MAC2STR(hapd->own_addr));
                        hapd->interface_added = 0;
-@@ -1524,7 +1534,7 @@ static int hostapd_setup_bss(struct host
- #ifdef CONFIG_IEEE80211BE
- setup_mld:
--      if (hapd->conf->mld_ap && !first) {
-+      if (hapd->conf->mld_ap && first != 1) {
-               wpa_printf(MSG_DEBUG,
-                          "MLD: Set link_id=%u, mld_addr=" MACSTR
-                          ", own_addr=" MACSTR,
-@@ -1542,6 +1552,8 @@ setup_mld:
+@@ -1542,6 +1553,8 @@ setup_mld:
        }
  #endif /* CONFIG_IEEE80211BE */
  
@@ -332,7 +323,7 @@ as adding/removing interfaces.
        if (conf->wmm_enabled < 0)
                conf->wmm_enabled = hapd->iconf->ieee80211n |
                        hapd->iconf->ieee80211ax;
-@@ -1870,7 +1882,7 @@ int hostapd_set_acl(struct hostapd_data
+@@ -1870,7 +1883,7 @@ int hostapd_set_acl(struct hostapd_data
  }
  
  
@@ -341,7 +332,7 @@ as adding/removing interfaces.
  {
  #ifdef CONFIG_IEEE80211BE
        int ret;
-@@ -2543,7 +2555,7 @@ static int hostapd_owe_iface_iter2(struc
+@@ -2543,7 +2556,7 @@ static int hostapd_owe_iface_iter2(struc
  #endif /* CONFIG_OWE */
  
  
@@ -350,7 +341,7 @@ as adding/removing interfaces.
  {
  #ifdef CONFIG_OWE
        /* Check whether the enabled BSS can complete OWE transition mode
-@@ -3000,7 +3012,7 @@ hostapd_alloc_bss_data(struct hostapd_if
+@@ -3000,7 +3013,7 @@ hostapd_alloc_bss_data(struct hostapd_if
  }
  
  
@@ -359,7 +350,7 @@ as adding/removing interfaces.
  {
        if (!hapd)
                return;
-@@ -3208,7 +3220,7 @@ fail:
+@@ -3208,7 +3221,7 @@ fail:
  }
  
  
@@ -368,7 +359,7 @@ as adding/removing interfaces.
  {
  #ifdef CONFIG_IEEE80211BE
        struct hostapd_mld *mld, **all_mld;
-@@ -4089,7 +4101,8 @@ int hostapd_remove_iface(struct hapd_int
+@@ -4089,7 +4102,8 @@ int hostapd_remove_iface(struct hapd_int
                hapd_iface = interfaces->iface[i];
                if (hapd_iface == NULL)
                        return -1;
@@ -420,7 +411,7 @@ as adding/removing interfaces.
  hostapd_interface_init_bss(struct hapd_interfaces *interfaces, const char *phy,
                           const char *config_fname, int debug);
 +int hostapd_set_ctrl_sock_iface(struct hostapd_data *hapd);
-+int hostapd_setup_bss(struct hostapd_data *hapd, int first, bool start_beacon);
++int hostapd_setup_bss(struct hostapd_data *hapd, bool first, bool start_beacon);
 +void hostapd_bss_link_deinit(struct hostapd_data *hapd);
 +void hostapd_bss_deinit(struct hostapd_data *hapd);
  void hostapd_bss_setup_multi_link(struct hostapd_data *hapd,
@@ -494,7 +485,7 @@ as adding/removing interfaces.
                }
        }
  
-@@ -4467,6 +4490,12 @@ static void handle_auth(struct hostapd_d
+@@ -4608,6 +4631,12 @@ static void handle_auth(struct hostapd_d
                goto fail;
        }
  
@@ -544,7 +535,7 @@ as adding/removing interfaces.
        char *radius_cui; /* Chargeable-User-Identity from RADIUS */
 --- a/src/ap/wpa_auth_glue.c
 +++ b/src/ap/wpa_auth_glue.c
-@@ -484,6 +484,7 @@ static const u8 * hostapd_wpa_auth_get_p
+@@ -487,6 +487,7 @@ static const u8 * hostapd_wpa_auth_get_p
        struct sta_info *sta = ap_get_sta(hapd, addr);
        const u8 *psk;
  
@@ -552,7 +543,7 @@ as adding/removing interfaces.
        if (vlan_id)
                *vlan_id = 0;
        if (psk_len)
-@@ -534,13 +535,18 @@ static const u8 * hostapd_wpa_auth_get_p
+@@ -537,13 +538,18 @@ static const u8 * hostapd_wpa_auth_get_p
         * returned psk which should not be returned again.
         * logic list (all hostapd_get_psk; all sta->psk)
         */
@@ -572,7 +563,7 @@ as adding/removing interfaces.
                        if (pos->is_passphrase) {
                                if (pbkdf2_sha1(pos->passphrase,
                                                hapd->conf->ssid.ssid,
-@@ -554,9 +560,13 @@ static const u8 * hostapd_wpa_auth_get_p
+@@ -557,9 +563,13 @@ static const u8 * hostapd_wpa_auth_get_p
                        }
                        if (pos->psk == prev_psk) {
                                psk = pos->next ? pos->next->psk : NULL;
@@ -588,7 +579,7 @@ as adding/removing interfaces.
  }
 --- a/src/drivers/driver.h
 +++ b/src/drivers/driver.h
-@@ -4176,6 +4176,25 @@ struct wpa_driver_ops {
+@@ -4429,6 +4429,25 @@ struct wpa_driver_ops {
                         const char *ifname);
  
        /**
@@ -614,7 +605,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)
-@@ -7027,6 +7046,7 @@ union wpa_event_data {
+@@ -7424,6 +7443,7 @@ union wpa_event_data {
  
        /**
         * struct ch_switch
@@ -622,7 +613,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
-@@ -7037,6 +7057,7 @@ union wpa_event_data {
+@@ -7434,6 +7454,7 @@ union wpa_event_data {
         * @punct_bitmap: Puncturing bitmap
         */
        struct ch_switch {
@@ -632,7 +623,7 @@ as adding/removing interfaces.
                int ch_offset;
 --- a/src/drivers/driver_nl80211.c
 +++ b/src/drivers/driver_nl80211.c
-@@ -77,6 +77,16 @@ enum nlmsgerr_attrs {
+@@ -78,6 +78,16 @@ enum nlmsgerr_attrs {
  
  #endif /* ANDROID */
  
@@ -649,7 +640,7 @@ as adding/removing interfaces.
  
  static struct nl_sock * nl_create_handle(struct nl_cb *cb, const char *dbg)
  {
-@@ -449,6 +459,11 @@ static int no_seq_check(struct nl_msg *m
+@@ -454,6 +464,11 @@ static int no_seq_check(struct nl_msg *m
        return NL_OK;
  }
  
@@ -661,7 +652,7 @@ as adding/removing interfaces.
  
  static void nl80211_nlmsg_clear(struct nl_msg *msg)
  {
-@@ -633,6 +648,8 @@ int send_and_recv_glb(struct nl80211_glo
+@@ -638,6 +653,8 @@ int send_and_recv_glb(struct nl80211_glo
        if (!msg)
                return -ENOMEM;
  
@@ -670,7 +661,7 @@ as adding/removing interfaces.
        err.err = -ENOMEM;
  
        s_nl_cb = nl_socket_get_cb(nl_handle);
-@@ -677,6 +694,7 @@ int send_and_recv_glb(struct nl80211_glo
+@@ -682,6 +699,7 @@ int send_and_recv_glb(struct nl80211_glo
        err.err_info = err_info;
        err.drv = drv;
  
@@ -678,7 +669,7 @@ as adding/removing interfaces.
        nl_cb_err(cb, NL_CB_CUSTOM, error_handler, &err);
        nl_cb_set(cb, NL_CB_FINISH, NL_CB_CUSTOM, finish_handler, &err.err);
        if (ack_handler_custom) {
-@@ -1105,6 +1123,7 @@ nl80211_get_wiphy_data_ap(struct i802_bs
+@@ -1117,6 +1135,7 @@ nl80211_get_wiphy_data_ap(struct i802_bs
                        os_free(w);
                        return NULL;
                }
@@ -686,7 +677,7 @@ as adding/removing interfaces.
                nl_cb_set(w->nl_cb, NL_CB_SEQ_CHECK, NL_CB_CUSTOM,
                          no_seq_check, NULL);
                nl_cb_set(w->nl_cb, NL_CB_VALID, NL_CB_CUSTOM,
-@@ -2212,6 +2231,7 @@ static int wpa_driver_nl80211_init_nl_gl
+@@ -2224,6 +2243,7 @@ static int wpa_driver_nl80211_init_nl_gl
        /* Needs to be registered early so that process_global_event() calls
         * the sync reply handler hook.
         */
@@ -694,7 +685,7 @@ as adding/removing interfaces.
        nl_cb_set(global->nl_cb, NL_CB_SEQ_CHECK, NL_CB_CUSTOM,
                  no_seq_check, NULL);
        nl_cb_set(global->nl_cb, NL_CB_VALID, NL_CB_CUSTOM,
-@@ -2445,6 +2465,7 @@ static int nl80211_init_bss(struct i802_
+@@ -2469,6 +2489,7 @@ static int nl80211_init_bss(struct i802_
        if (!bss->nl_cb)
                return -1;
  
@@ -702,7 +693,7 @@ as adding/removing interfaces.
        nl_cb_set(bss->nl_cb, NL_CB_SEQ_CHECK, NL_CB_CUSTOM,
                  no_seq_check, NULL);
        nl_cb_set(bss->nl_cb, NL_CB_VALID, NL_CB_CUSTOM,
-@@ -9180,6 +9201,7 @@ static void *i802_init(struct hostapd_da
+@@ -9476,6 +9497,7 @@ static void *i802_init(struct hostapd_da
        char master_ifname[IFNAMSIZ];
        int ifindex, br_ifindex = 0;
        int br_added = 0;
@@ -710,7 +701,7 @@ as adding/removing interfaces.
  
        bss = wpa_driver_nl80211_drv_init(hapd, params->ifname,
                                          params->global_priv, 1,
-@@ -9240,21 +9262,17 @@ static void *i802_init(struct hostapd_da
+@@ -9536,21 +9558,17 @@ static void *i802_init(struct hostapd_da
            (params->num_bridge == 0 || !params->bridge[0]))
                add_ifidx(drv, br_ifindex, drv->ifindex);
  
@@ -742,7 +733,7 @@ as adding/removing interfaces.
        }
  
        if (drv->capa.flags2 & WPA_DRIVER_FLAGS2_CONTROL_PORT_RX) {
-@@ -9641,6 +9659,50 @@ static int wpa_driver_nl80211_if_remove(
+@@ -9941,6 +9959,50 @@ static int wpa_driver_nl80211_if_remove(
        return 0;
  }
  
@@ -793,7 +784,7 @@ as adding/removing interfaces.
  
  static int cookie_handler(struct nl_msg *msg, void *arg)
  {
-@@ -11540,6 +11602,37 @@ static bool nl80211_is_drv_shared(void *
+@@ -11877,6 +11939,37 @@ static bool nl80211_is_drv_shared(void *
  #endif /* CONFIG_IEEE80211BE */
  
  
@@ -831,7 +822,7 @@ as adding/removing interfaces.
  static int driver_nl80211_send_mlme(void *priv, const u8 *data,
                                    size_t data_len, int noack,
                                    unsigned int freq,
-@@ -15546,6 +15639,8 @@ const struct wpa_driver_ops wpa_driver_n
+@@ -16705,6 +16798,8 @@ const struct wpa_driver_ops wpa_driver_n
        .set_acl = wpa_driver_nl80211_set_acl,
        .if_add = wpa_driver_nl80211_if_add,
        .if_remove = driver_nl80211_if_remove,
@@ -842,7 +833,7 @@ as adding/removing interfaces.
        .sta_add = wpa_driver_nl80211_sta_add,
 --- a/src/drivers/driver_nl80211_event.c
 +++ b/src/drivers/driver_nl80211_event.c
-@@ -1263,6 +1263,7 @@ static void mlme_event_ch_switch(struct
+@@ -1276,6 +1276,7 @@ static void mlme_event_ch_switch(struct
                                 struct nlattr *bw, struct nlattr *cf1,
                                 struct nlattr *cf2,
                                 struct nlattr *punct_bitmap,
@@ -850,7 +841,7 @@ as adding/removing interfaces.
                                 int finished)
  {
        struct i802_bss *bss;
-@@ -1328,6 +1329,8 @@ static void mlme_event_ch_switch(struct
+@@ -1341,6 +1342,8 @@ static void mlme_event_ch_switch(struct
                data.ch_switch.cf1 = nla_get_u32(cf1);
        if (cf2)
                data.ch_switch.cf2 = nla_get_u32(cf2);
@@ -859,7 +850,7 @@ as adding/removing interfaces.
  
        if (link) {
                data.ch_switch.link_id = nla_get_u8(link);
-@@ -4423,6 +4426,7 @@ static void do_process_drv_event(struct
+@@ -4970,6 +4973,7 @@ static void do_process_drv_event(struct
                                     tb[NL80211_ATTR_CENTER_FREQ1],
                                     tb[NL80211_ATTR_CENTER_FREQ2],
                                     tb[NL80211_ATTR_PUNCT_BITMAP],
@@ -867,7 +858,7 @@ as adding/removing interfaces.
                                     0);
                break;
        case NL80211_CMD_CH_SWITCH_NOTIFY:
-@@ -4435,6 +4439,7 @@ static void do_process_drv_event(struct
+@@ -4982,6 +4986,7 @@ static void do_process_drv_event(struct
                                     tb[NL80211_ATTR_CENTER_FREQ1],
                                     tb[NL80211_ATTR_CENTER_FREQ2],
                                     tb[NL80211_ATTR_PUNCT_BITMAP],
@@ -941,7 +932,7 @@ as adding/removing interfaces.
  ifdef CONFIG_CODE_COVERAGE
  CFLAGS += -O0 -fprofile-arcs -ftest-coverage -U_FORTIFY_SOURCE
  LIBS += -lgcov
-@@ -1082,6 +1090,9 @@ ifdef CONFIG_CTRL_IFACE_MIB
+@@ -1087,6 +1095,9 @@ ifdef CONFIG_CTRL_IFACE_MIB
  CFLAGS += -DCONFIG_CTRL_IFACE_MIB
  endif
  OBJS += ../src/ap/ctrl_iface_ap.o
@@ -1001,7 +992,7 @@ as adding/removing interfaces.
                                       MULTI_AP_FRONTHAUL_BSS);
        wpa_s->multi_ap_ie = 1;
  }
-@@ -5873,6 +5880,13 @@ static void wpas_event_rx_mgmt_action(st
+@@ -5916,6 +5923,13 @@ static void wpas_event_rx_mgmt_action(st
        }
  #endif /* CONFIG_WNM */
  
@@ -1015,7 +1006,7 @@ as adding/removing interfaces.
  #ifdef CONFIG_GAS
        if ((mgmt->u.action.category == WLAN_ACTION_PUBLIC ||
             mgmt->u.action.category == WLAN_ACTION_PROTECTED_DUAL) &&
-@@ -6679,6 +6693,7 @@ void supplicant_event(void *ctx, enum wp
+@@ -6739,6 +6753,7 @@ void supplicant_event(void *ctx, enum wp
                event_to_string(event), event);
  #endif /* CONFIG_NO_STDOUT_DEBUG */
  
@@ -1051,7 +1042,7 @@ as adding/removing interfaces.
  
  
  static void hostapd_dpp_reply_wait_timeout(void *eloop_ctx, void *timeout_ctx);
-@@ -3017,6 +3018,9 @@ void hostapd_dpp_rx_action(struct hostap
+@@ -3018,6 +3019,9 @@ void hostapd_dpp_rx_action(struct hostap
        wpa_msg(hapd->msg_ctx, MSG_INFO, DPP_EVENT_RX "src=" MACSTR
                " freq=%u type=%d", MAC2STR(src), freq, type);
  
@@ -1061,7 +1052,7 @@ as adding/removing interfaces.
  #ifdef CONFIG_DPP2
        if (dpp_relay_rx_action(hapd->iface->interfaces->dpp,
                                src, hdr, buf, len, freq, NULL, NULL,
-@@ -3116,13 +3120,19 @@ void hostapd_dpp_rx_action(struct hostap
+@@ -3117,13 +3121,19 @@ void hostapd_dpp_rx_action(struct hostap
  
  struct wpabuf *
  hostapd_dpp_gas_req_handler(struct hostapd_data *hapd, const u8 *sa,
@@ -1116,7 +1107,7 @@ as adding/removing interfaces.
  
  
  static int wpas_dpp_listen_start(struct wpa_supplicant *wpa_s,
-@@ -4119,6 +4120,9 @@ void wpas_dpp_rx_action(struct wpa_suppl
+@@ -4122,6 +4123,9 @@ void wpas_dpp_rx_action(struct wpa_suppl
                return;
        }
        wpa_hexdump(MSG_MSGDUMP, "DPP: Received message attributes", buf, len);
index 86ee0e49527b20d0ba85a4835f037b74fad73629..006b9a333edbbd0ce5588c7ed884f070e92799f5 100644 (file)
@@ -8,7 +8,7 @@ as adding/removing interfaces.
 
 --- a/hostapd/config_file.c
 +++ b/hostapd/config_file.c
-@@ -5012,7 +5012,14 @@ struct hostapd_config * hostapd_config_r
+@@ -5027,7 +5027,14 @@ struct hostapd_config * hostapd_config_r
        int errors = 0;
        size_t i;
  
@@ -43,7 +43,7 @@ as adding/removing interfaces.
                        wpa_printf(MSG_ERROR,
 --- a/hostapd/main.c
 +++ b/hostapd/main.c
-@@ -407,7 +407,11 @@ hostapd_interface_init(struct hapd_inter
+@@ -412,7 +412,11 @@ hostapd_interface_init(struct hapd_inter
        struct hostapd_iface *iface;
        int k;
  
@@ -58,7 +58,7 @@ as adding/removing interfaces.
                return NULL;
 --- a/src/ap/hostapd.c
 +++ b/src/ap/hostapd.c
-@@ -3413,8 +3413,13 @@ hostapd_interface_init_bss(struct hapd_i
+@@ -3414,8 +3414,13 @@ hostapd_interface_init_bss(struct hapd_i
                }
        }
  
index f2d380ba44759e42435235908d707f683c0c4ee1..8719afe9508b5d6459b14fd9a2a6898a2a56d310 100644 (file)
@@ -25,7 +25,7 @@ full device, e.g. in order to deal with hardware/driver limitations
        } else if (os_strcmp(buf, "extended_key_id") == 0) {
 --- a/src/ap/ap_config.h
 +++ b/src/ap/ap_config.h
-@@ -1083,6 +1083,8 @@ struct hostapd_config {
+@@ -1095,6 +1095,8 @@ struct hostapd_config {
        unsigned int track_sta_max_num;
        unsigned int track_sta_max_age;
  
@@ -36,7 +36,7 @@ full device, e.g. in order to deal with hardware/driver limitations
                          * ' ' (ascii 32): all environments
 --- a/src/ap/beacon.c
 +++ b/src/ap/beacon.c
-@@ -1704,7 +1704,7 @@ void handle_probe_req(struct hostapd_dat
+@@ -1708,7 +1708,7 @@ void handle_probe_req(struct hostapd_dat
        if (hapd->conf->no_probe_resp_if_max_sta &&
            is_multicast_ether_addr(mgmt->da) &&
            is_multicast_ether_addr(mgmt->bssid) &&
index f6a6493f7531c09caddbc550a0039ecc7744de86..e1ce995119bff1665fe36cf55375bca45eba0c23 100644 (file)
@@ -29,7 +29,7 @@ a VLAN interface on top of the bridge, instead of using the bridge directly
        int bridge_hairpin; /* hairpin_mode on bridge members */
 --- a/src/ap/wpa_auth_glue.c
 +++ b/src/ap/wpa_auth_glue.c
-@@ -1925,8 +1925,12 @@ int hostapd_setup_wpa(struct hostapd_dat
+@@ -1928,8 +1928,12 @@ int hostapd_setup_wpa(struct hostapd_dat
            wpa_key_mgmt_ft(hapd->conf->wpa_key_mgmt)) {
                const char *ft_iface;
  
index 3a372e63d7b40f7a9cde1400442df9be4412a145..a8f07d6c228ccd08ab3b0ea72b6dbd8acbbd540d 100644 (file)
@@ -112,7 +112,7 @@ untagged DHCP packets
        hapd->x_snoop_initialized = false;
 --- a/src/drivers/driver.h
 +++ b/src/drivers/driver.h
-@@ -4590,7 +4590,7 @@ struct wpa_driver_ops {
+@@ -4849,7 +4849,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,
@@ -123,7 +123,7 @@ untagged DHCP packets
         * get_wowlan - Get wake-on-wireless status
 --- a/src/drivers/driver_nl80211.c
 +++ b/src/drivers/driver_nl80211.c
-@@ -13238,7 +13238,7 @@ static const char * drv_br_net_param_str
+@@ -13575,7 +13575,7 @@ static const char * drv_br_net_param_str
  
  
  static int wpa_driver_br_set_net_param(void *priv, enum drv_br_net_param param,
@@ -132,7 +132,7 @@ untagged DHCP packets
  {
        struct i802_bss *bss = priv;
        char path[128];
-@@ -13264,8 +13264,11 @@ static int wpa_driver_br_set_net_param(v
+@@ -13601,8 +13601,11 @@ static int wpa_driver_br_set_net_param(v
                        return -EINVAL;
        }
  
index c28d7f56b7201d484143452116f7430bae4622b7..a605ab308e0f75082ef52d59e196de6292c04aeb 100644 (file)
@@ -28,7 +28,7 @@ Signed-off-by: David Bauer <mail@david-bauer.net>
 
 --- a/src/ap/beacon.c
 +++ b/src/ap/beacon.c
-@@ -1526,7 +1526,7 @@ void handle_probe_req(struct hostapd_dat
+@@ -1530,7 +1530,7 @@ void handle_probe_req(struct hostapd_dat
         * is less likely to see them (Probe Request frame sent on a
         * neighboring, but partially overlapping, channel).
         */
index ba1db508b4702052f7f07c28f2ad6eeab9426918..4e6a6f3ab20a6a5773f80f2a351798659e170722 100644 (file)
@@ -29,7 +29,7 @@ handle reload.
  
  #ifndef CONFIG_NO_HOSTAPD_LOGGER
  static void hostapd_logger_cb(void *ctx, const u8 *addr, unsigned int module,
-@@ -848,6 +849,11 @@ int main(int argc, char *argv[])
+@@ -853,6 +854,11 @@ int main(int argc, char *argv[])
        if (os_program_init())
                return -1;
  
index d0f4d8ffaf08bda01a3faf7b1648d85b092a9eac..7d051d9eb0b64354a5fd68dfe4ac217aa57e456d 100644 (file)
@@ -53,10 +53,10 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6
  
 --- a/hostapd/config_file.c
 +++ b/hostapd/config_file.c
-@@ -5003,6 +5003,15 @@ static int hostapd_config_fill(struct ho
-               conf->disable_mcs15_rx = atoi(pos);
- #endif /* CONFIG_TESTING_OPTIONS */
+@@ -5020,6 +5020,15 @@ static int hostapd_config_fill(struct ho
  #endif /* CONFIG_IEEE80211BE */
+       } else if (os_strcmp(buf, "i2r_lmr_policy") == 0) {
+               conf->i2r_lmr_policy = atoi(pos);
 +#ifdef CONFIG_APUP
 +      } else if (os_strcmp(buf, "apup") == 0) {
 +              bss->apup = !!atoi(pos);
@@ -66,15 +66,16 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6
 +              os_strlcpy(bss->apup_peer_ifname_prefix,
 +                         pos, sizeof(bss->apup_peer_ifname_prefix));
 +#endif // def CONFIG_APUP
-       } else if (os_strcmp(buf, "i2r_lmr_policy") == 0) {
-               conf->i2r_lmr_policy = atoi(pos);
        } else {
+               wpa_printf(MSG_ERROR,
+                          "Line %d: unknown configuration item '%s'",
 --- a/src/ap/ap_config.h
 +++ b/src/ap/ap_config.h
-@@ -1001,6 +1001,34 @@ struct hostapd_bss_config {
+@@ -1013,6 +1013,35 @@ struct hostapd_bss_config {
        unsigned int pmksa_caching_privacy:1;
        unsigned int eap_using_authentication_frames:1;
  #endif /* CONFIG_ENC_ASSOC  */
++
 +#ifdef CONFIG_APUP
 +      /**
 +       * Access Point Micro Peering
@@ -163,7 +164,7 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6
  int hostapd_sta_add(struct hostapd_data *hapd,
 --- /dev/null
 +++ b/src/ap/apup.c
-@@ -0,0 +1,170 @@
+@@ -0,0 +1,169 @@
 +/*
 + * hostapd / APuP Access Point Micro Peering
 + *
@@ -225,9 +226,8 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6
 +       * understand what could be a proper implementation in this context too
 +       */
 +      const u8 *mld_link_addr = NULL;
-+      bool mld_link_sta = false;
++      bool mld_link_sta = false, epp_sta = false;
 +      u16 eml_cap = 0;
-+  bool epp_sta = false;
 +
 +      /* First add the station without more information */
 +      int aRet = hostapd_sta_add(
@@ -373,7 +373,7 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6
  
  #ifdef CONFIG_FILS
  static struct wpabuf *
-@@ -4869,8 +4872,8 @@ static u16 check_multi_ap(struct hostapd
+@@ -5010,8 +5013,8 @@ static u16 check_multi_ap(struct hostapd
  }
  
  
@@ -384,7 +384,7 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6
  {
        /* Supported rates not used in IEEE 802.11ad/DMG */
        if (hapd->iface->current_mode &&
-@@ -5338,7 +5341,7 @@ static int __check_assoc_ies(struct host
+@@ -5479,7 +5482,7 @@ static int __check_assoc_ies(struct host
                               elems->ext_capab_len);
        if (resp != WLAN_STATUS_SUCCESS)
                goto out;
@@ -393,7 +393,7 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6
        if (resp != WLAN_STATUS_SUCCESS)
                goto out;
  
-@@ -7720,6 +7723,11 @@ static void handle_beacon(struct hostapd
+@@ -7920,6 +7923,11 @@ static void handle_beacon(struct hostapd
                                      0);
  
        ap_list_process_beacon(hapd->iface, mgmt, &elems, fi);
@@ -418,7 +418,7 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6
  u16 copy_sta_vendor_vht(struct hostapd_data *hapd, struct sta_info *sta,
 --- a/src/drivers/driver.h
 +++ b/src/drivers/driver.h
-@@ -4284,7 +4284,7 @@ struct wpa_driver_ops {
+@@ -4537,7 +4537,7 @@ struct wpa_driver_ops {
         * Returns: 0 on success, -1 on failure
         */
        int (*set_wds_sta)(void *priv, const u8 *addr, int aid, int val,
@@ -429,7 +429,7 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6
         * send_action - Transmit an Action frame
 --- a/src/drivers/driver_nl80211.c
 +++ b/src/drivers/driver_nl80211.c
-@@ -9032,25 +9032,15 @@ int nl80211_has_ifidx(struct wpa_driver_
+@@ -9328,25 +9328,15 @@ int nl80211_has_ifidx(struct wpa_driver_
  
  
  static int i802_set_wds_sta(void *priv, const u8 *addr, int aid, int val,