FT: Process reassoc resp FT IEs when using wpa_supplicant SME

This commit is contained in:
Jouni Malinen 2010-03-13 21:13:18 +02:00
parent 0e84c25434
commit 62c72d7299
3 changed files with 18 additions and 0 deletions

View file

@ -1024,6 +1024,21 @@ static void wpa_supplicant_event_associnfo(struct wpa_supplicant *wpa_s,
wpa_sm_set_assoc_wpa_ie(wpa_s->wpa, NULL, 0);
#ifdef CONFIG_IEEE80211R
#ifdef CONFIG_SME
if (wpa_s->sme.auth_alg == WPA_AUTH_ALG_FT) {
u8 bssid[ETH_ALEN];
if (wpa_drv_get_bssid(wpa_s, bssid) < 0 ||
wpa_ft_validate_reassoc_resp(wpa_s->wpa,
data->assoc_info.resp_ies,
data->assoc_info.resp_ies_len,
bssid) < 0) {
wpa_printf(MSG_DEBUG, "FT: Validation of "
"Reassociation Response failed");
/* TODO: force disconnection? */
}
}
#endif /* CONFIG_SME */
p = data->assoc_info.resp_ies;
l = data->assoc_info.resp_ies_len;
@ -1551,6 +1566,7 @@ static void ft_rx_action(struct wpa_supplicant *wpa_s, const u8 *data,
bss = wpa_bss_get_bssid(wpa_s, target_ap_addr);
if (bss)
wpa_s->sme.freq = bss->freq;
wpa_s->sme.auth_alg = WPA_AUTH_ALG_FT;
sme_associate(wpa_s, WPAS_MODE_INFRA, target_ap_addr,
WLAN_AUTH_FT);
}

View file

@ -222,6 +222,7 @@ void sme_authenticate(struct wpa_supplicant *wpa_s,
if (old_ssid != wpa_s->current_ssid)
wpas_notify_network_changed(wpa_s);
wpa_s->sme.auth_alg = params.auth_alg;
if (wpa_drv_authenticate(wpa_s, &params) < 0) {
wpa_msg(wpa_s, MSG_INFO, "Authentication request to the "
"driver failed");

View file

@ -414,6 +414,7 @@ struct wpa_supplicant {
size_t ft_ies_len;
u8 prev_bssid[ETH_ALEN];
int prev_bssid_set;
int auth_alg;
} sme;
#endif /* CONFIG_SME */