Add RSNXE into (Re)Association Response frames
Add the new RSNXE into (Re)Association Response frames if any of the capability bits is nonzero. Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
30628e0d2d
commit
cb99259775
4 changed files with 26 additions and 0 deletions
|
@ -107,6 +107,10 @@ int hostapd_build_ap_extra_ies(struct hostapd_data *hapd,
|
||||||
goto fail;
|
goto fail;
|
||||||
#endif /* CONFIG_FILS */
|
#endif /* CONFIG_FILS */
|
||||||
|
|
||||||
|
pos = hostapd_eid_rsnxe(hapd, buf, sizeof(buf));
|
||||||
|
if (add_buf_data(&assocresp, buf, pos - buf) < 0)
|
||||||
|
goto fail;
|
||||||
|
|
||||||
if (add_buf(&beacon, hapd->wps_beacon_ie) < 0 ||
|
if (add_buf(&beacon, hapd->wps_beacon_ie) < 0 ||
|
||||||
add_buf(&proberesp, hapd->wps_probe_resp_ie) < 0)
|
add_buf(&proberesp, hapd->wps_probe_resp_ie) < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
|
@ -3717,6 +3717,8 @@ static u16 send_assoc_resp(struct hostapd_data *hapd, struct sta_info *sta,
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_FST */
|
#endif /* CONFIG_FST */
|
||||||
|
|
||||||
|
p = hostapd_eid_rsnxe(hapd, p, buf + buflen - p);
|
||||||
|
|
||||||
#ifdef CONFIG_OWE
|
#ifdef CONFIG_OWE
|
||||||
if ((hapd->conf->wpa_key_mgmt & WPA_KEY_MGMT_OWE) &&
|
if ((hapd->conf->wpa_key_mgmt & WPA_KEY_MGMT_OWE) &&
|
||||||
sta && sta->owe_ecdh && status_code == WLAN_STATUS_SUCCESS &&
|
sta && sta->owe_ecdh && status_code == WLAN_STATUS_SUCCESS &&
|
||||||
|
|
|
@ -192,5 +192,6 @@ int get_tx_parameters(struct sta_info *sta, int ap_max_chanwidth,
|
||||||
int ap_seg1_idx, int *bandwidth, int *seg1_idx);
|
int ap_seg1_idx, int *bandwidth, int *seg1_idx);
|
||||||
|
|
||||||
void auth_sae_process_commit(void *eloop_ctx, void *user_ctx);
|
void auth_sae_process_commit(void *eloop_ctx, void *user_ctx);
|
||||||
|
u8 * hostapd_eid_rsnxe(struct hostapd_data *hapd, u8 *eid, size_t len);
|
||||||
|
|
||||||
#endif /* IEEE802_11_H */
|
#endif /* IEEE802_11_H */
|
||||||
|
|
|
@ -996,3 +996,22 @@ int get_tx_parameters(struct sta_info *sta, int ap_max_chanwidth,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_OCV */
|
#endif /* CONFIG_OCV */
|
||||||
|
|
||||||
|
|
||||||
|
u8 * hostapd_eid_rsnxe(struct hostapd_data *hapd, u8 *eid, size_t len)
|
||||||
|
{
|
||||||
|
u8 *pos = eid;
|
||||||
|
|
||||||
|
if (!(hapd->conf->wpa & WPA_PROTO_RSN) ||
|
||||||
|
(hapd->conf->sae_pwe != 1 && hapd->conf->sae_pwe != 2) ||
|
||||||
|
len < 3)
|
||||||
|
return pos;
|
||||||
|
|
||||||
|
*pos++ = WLAN_EID_RSNX;
|
||||||
|
*pos++ = 1;
|
||||||
|
/* bits 0-3 = 0 since only one octet of Extended RSN Capabilities is
|
||||||
|
* used for now */
|
||||||
|
*pos++ = BIT(WLAN_RSNX_CAPAB_SAE_H2E);
|
||||||
|
|
||||||
|
return pos;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue