From: Jouni Malinen Date: Mon, 22 Mar 2021 09:12:39 +0000 (+0200) Subject: Simplify extended capability determination in AP mode X-Git-Tag: hostap_2_10~350 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8ca09293eaa6d8a3458a859e1f198259eb4c4f80;p=thirdparty%2Fhostap.git Simplify extended capability determination in AP mode There is no need to determine the exact length of the element before filling in the octets since this function is already capable of truncated the fields based on what the actual values are. Signed-off-by: Jouni Malinen --- diff --git a/src/ap/ieee802_11_shared.c b/src/ap/ieee802_11_shared.c index d0074f6ba..727de75d7 100644 --- a/src/ap/ieee802_11_shared.c +++ b/src/ap/ieee802_11_shared.c @@ -451,70 +451,10 @@ static void hostapd_ext_capab_byte(struct hostapd_data *hapd, u8 *pos, int idx) u8 * hostapd_eid_ext_capab(struct hostapd_data *hapd, u8 *eid) { u8 *pos = eid; - u8 len = 0, i; - - if (hapd->conf->qos_map_set_len || - (hapd->conf->tdls & (TDLS_PROHIBIT | TDLS_PROHIBIT_CHAN_SWITCH))) - len = 5; - if (len < 4 && - (hapd->conf->time_advertisement == 2 || hapd->conf->interworking)) - len = 4; - if (len < 3 && - (hapd->conf->wnm_sleep_mode || hapd->conf->bss_transition)) - len = 3; - if (len < 1 && - (hapd->iconf->obss_interval || - (hapd->iface->drv_flags & WPA_DRIVER_FLAGS_AP_CSA))) - len = 1; - if (len < 2 && - (hapd->conf->proxy_arp || hapd->conf->coloc_intf_reporting)) - len = 2; - if (len < 7 && hapd->conf->ssid.utf8_ssid) - len = 7; - if (len < 9 && - (hapd->conf->ftm_initiator || hapd->conf->ftm_responder)) - len = 9; -#ifdef CONFIG_WNM_AP - if (len < 4) - len = 4; -#endif /* CONFIG_WNM_AP */ -#ifdef CONFIG_HS20 - if (hapd->conf->hs20 && len < 6) - len = 6; -#endif /* CONFIG_HS20 */ -#ifdef CONFIG_MBO - if (hapd->conf->mbo_enabled && len < 6) - len = 6; -#endif /* CONFIG_MBO */ -#ifdef CONFIG_FILS - if ((!(hapd->conf->wpa & WPA_PROTO_RSN) || - !wpa_key_mgmt_fils(hapd->conf->wpa_key_mgmt)) && len < 10) - len = 10; -#endif /* CONFIG_FILS */ -#ifdef CONFIG_IEEE80211AX - if (len < 10 && hapd->iconf->ieee80211ax && - hostapd_get_he_twt_responder(hapd, IEEE80211_MODE_AP)) - len = 10; -#endif /* CONFIG_IEEE80211AX */ -#ifdef CONFIG_SAE - if (len < 11 && hapd->conf->wpa && - wpa_key_mgmt_sae(hapd->conf->wpa_key_mgmt) && - hostapd_sae_pw_id_in_use(hapd->conf)) - len = 11; -#endif /* CONFIG_SAE */ - if (len < 11 && hapd->conf->beacon_prot && - (hapd->iface->drv_flags & WPA_DRIVER_FLAGS_BEACON_PROTECTION)) - len = 11; -#ifdef CONFIG_SAE_PK - if (len < 12 && hapd->conf->wpa && - wpa_key_mgmt_sae(hapd->conf->wpa_key_mgmt) && - hostapd_sae_pk_exclusively(hapd->conf)) - len = 12; -#endif /* CONFIG_SAE_PK */ + u8 len = 12, i; + if (len < hapd->iface->extended_capa_len) len = hapd->iface->extended_capa_len; - if (len == 0) - return eid; *pos++ = WLAN_EID_EXT_CAPAB; *pos++ = len;