mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-12-21 11:22:50 +00:00
Some checks failed
Build OpenWrt/uCentral images / build (cig_wf186h) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cig_wf186w) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cig_wf188n) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cig_wf189) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cig_wf196) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cybertan_eww631-a1) (push) Has been cancelled
Build OpenWrt/uCentral images / build (cybertan_eww631-b1) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap101) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap102) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap104) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap105) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap111) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_eap112) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_oap101) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_oap101-6e) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_oap101e) (push) Has been cancelled
Build OpenWrt/uCentral images / build (edgecore_oap101e-6e) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4x) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4x_2) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4x_3) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4x_w) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4xe) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4xi) (push) Has been cancelled
Build OpenWrt/uCentral images / build (hfcl_ion4xi_w) (push) Has been cancelled
Build OpenWrt/uCentral images / build (indio_um-305ax) (push) Has been cancelled
Build OpenWrt/uCentral images / build (sercomm_ap72tip) (push) Has been cancelled
Build OpenWrt/uCentral images / build (sonicfi_rap630c-311g) (push) Has been cancelled
Build OpenWrt/uCentral images / build (sonicfi_rap630w-211g) (push) Has been cancelled
Build OpenWrt/uCentral images / build (sonicfi_rap630w-311g) (push) Has been cancelled
Build OpenWrt/uCentral images / build (udaya_a6-id2) (push) Has been cancelled
Build OpenWrt/uCentral images / build (udaya_a6-od2) (push) Has been cancelled
Build OpenWrt/uCentral images / build (wallys_dr5018) (push) Has been cancelled
Build OpenWrt/uCentral images / build (wallys_dr6018) (push) Has been cancelled
Build OpenWrt/uCentral images / build (wallys_dr6018-v4) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_ax820) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_ax840) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_fap640) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_fap650) (push) Has been cancelled
Build OpenWrt/uCentral images / build (yuncore_fap655) (push) Has been cancelled
Build OpenWrt/uCentral images / trigger-testing (push) Has been cancelled
Build OpenWrt/uCentral images / create-x64_vm-ami (push) Has been cancelled
Signed-off-by: John Crispin <john@phrozen.org>
89 lines
2.9 KiB
Diff
89 lines
2.9 KiB
Diff
From 2fa58b2c643017980d5b54a1c708e68b7be52f37 Mon Sep 17 00:00:00 2001
|
|
From: Aditya Kumar Singh <quic_adisi@quicinc.com>
|
|
Date: Thu, 11 Jan 2024 12:08:37 +0530
|
|
Subject: [PATCH] hostapd: fix overwriting MLD info during auth handling
|
|
|
|
Currently whenever we handle auth frame and if the transaction is one, we
|
|
memset the mld info and read it again with the incoming frame. However,
|
|
this should be done only when kernel is also aware of the change in the
|
|
sta info. Or else, source address will be STA's MLD MAC address and it
|
|
will be copied in link address which will be wrong.
|
|
|
|
This leads to issue where in STA entry is created with its link address as
|
|
MLD MAC address and hence even after address translation, frames are sent
|
|
out on MLD MAC address which is incorrect.
|
|
|
|
Fix this by memseting the MLD info and processing it only when the STA is
|
|
going to get re-added in the kernel so that the info is same across hostapd
|
|
and the kernel.
|
|
|
|
Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com>
|
|
---
|
|
src/ap/ieee802_11.c | 36 ++++++++++++++++++------------------
|
|
1 file changed, 18 insertions(+), 18 deletions(-)
|
|
|
|
--- a/src/ap/ieee802_11.c
|
|
+++ b/src/ap/ieee802_11.c
|
|
@@ -3133,30 +3133,6 @@ static void handle_auth(struct hostapd_d
|
|
}
|
|
}
|
|
|
|
-#ifdef CONFIG_IEEE80211BE
|
|
- if (auth_transaction == 1) {
|
|
- os_memset(&sta->mld_info, 0, sizeof(sta->mld_info));
|
|
-
|
|
- if (mld_sta) {
|
|
- u8 link_id = hapd->mld_link_id;
|
|
-
|
|
- sta->mld_info.mld_sta = true;
|
|
- sta->mld_assoc_link_id = link_id;
|
|
-
|
|
- /*
|
|
- * Set the MLD address as the station address and the
|
|
- * station addresses.
|
|
- */
|
|
- os_memcpy(sta->mld_info.common_info.mld_addr, sa,
|
|
- ETH_ALEN);
|
|
- os_memcpy(sta->mld_info.links[link_id].peer_addr,
|
|
- mgmt->sa, ETH_ALEN);
|
|
- os_memcpy(sta->mld_info.links[link_id].local_addr,
|
|
- hapd->own_addr, ETH_ALEN);
|
|
- }
|
|
- }
|
|
-#endif /* CONFIG_IEEE80211BE */
|
|
-
|
|
sta->last_seq_ctrl = seq_ctrl;
|
|
sta->last_subtype = WLAN_FC_STYPE_AUTH;
|
|
#ifdef CONFIG_MBO
|
|
@@ -3199,6 +3175,30 @@ static void handle_auth(struct hostapd_d
|
|
(!(sta->flags & WLAN_STA_MFP) || !ap_sta_is_authorized(sta)) &&
|
|
!(hapd->conf->mesh & MESH_ENABLED) &&
|
|
!(sta->added_unassoc) && auth_alg != WLAN_AUTH_PASN) {
|
|
+#ifdef CONFIG_IEEE80211BE
|
|
+ if (auth_transaction == 1) {
|
|
+ os_memset(&sta->mld_info, 0, sizeof(sta->mld_info));
|
|
+
|
|
+ if (mld_sta) {
|
|
+ u8 link_id = hapd->mld_link_id;
|
|
+
|
|
+ sta->mld_info.mld_sta = true;
|
|
+ sta->mld_assoc_link_id = link_id;
|
|
+
|
|
+ /*
|
|
+ * Set the MLD address as the station address and the
|
|
+ * station addresses.
|
|
+ */
|
|
+ os_memcpy(sta->mld_info.common_info.mld_addr, sa,
|
|
+ ETH_ALEN);
|
|
+ os_memcpy(sta->mld_info.links[link_id].peer_addr,
|
|
+ mgmt->sa, ETH_ALEN);
|
|
+ os_memcpy(sta->mld_info.links[link_id].local_addr,
|
|
+ hapd->own_addr, ETH_ALEN);
|
|
+ }
|
|
+ }
|
|
+#endif /* CONFIG_IEEE80211BE */
|
|
+
|
|
if (ap_sta_re_add(hapd, sta) < 0) {
|
|
resp = WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA;
|
|
goto fail;
|