From 170589aa784c08489ce73dc1416093935530b16a Mon Sep 17 00:00:00 2001 From: John Crispin Date: Wed, 26 Aug 2020 08:49:11 +0200 Subject: [PATCH 817/820] multiple_bssid: non-inheratence IE Signed-off-by: John Crispin --- src/ap/ieee802_11.c | 14 ++++++++++++-- src/common/ieee802_11_defs.h | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c index bf5041b95..3809ac64c 100644 --- a/src/ap/ieee802_11.c +++ b/src/ap/ieee802_11.c @@ -5671,7 +5671,7 @@ static u8 * hostapd_eid_multiple_bssid_chunk(struct hostapd_data *hapd, for (i = *count; i < hapd->iface->num_bss; i++) { struct hostapd_data *bss = hapd->iface->bss[i]; - u8 *bss_size_offset, *index_size_offset, *pos = eid; + u8 *bss_size_offset, *index_size_offset, *pos = eid, *rsn; u16 capab_info; *eid++ = WLAN_EID_SUBELEMENT_NONTRANSMITTED_BSSID_PROFILE; @@ -5697,7 +5697,17 @@ static u8 * hostapd_eid_multiple_bssid_chunk(struct hostapd_data *hapd, } *index_size_offset = (eid - index_size_offset) - 1; - eid = hostapd_get_rsne(bss, eid, end - eid); + rsn = hostapd_get_rsne(bss, eid, end - eid); + if (rsn == eid) { + /* add RSN non-inheritance IE */ + *eid++ = WLAN_EID_EXTENSION; + *eid++ = 3; + *eid++ = WLAN_EID_EXT_NON_INHERITANCE; + *eid++ = 1; + *eid++ = WLAN_EID_RSN; + } else { + eid = rsn; + } *bss_size_offset = (eid - bss_size_offset) - 1; if ((eid - size_offset) - 1 > 255) { diff --git a/src/common/ieee802_11_defs.h b/src/common/ieee802_11_defs.h index f493718e0..07c24214d 100644 --- a/src/common/ieee802_11_defs.h +++ b/src/common/ieee802_11_defs.h @@ -477,6 +477,7 @@ #define WLAN_EID_EXT_SPATIAL_REUSE 39 #define WLAN_EID_EXT_COLOR_CHANGE_ANNOUNCEMENT 42 #define WLAN_EID_EXT_OCV_OCI 54 +#define WLAN_EID_EXT_NON_INHERITANCE 56 #define WLAN_EID_EXT_SHORT_SSID_LIST 58 #define WLAN_EID_EXT_HE_6GHZ_BAND_CAP 59 #define WLAN_EID_EXT_EDMG_CAPABILITIES 61 -- 2.25.1