aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJouni Malinen <j@w1.fi>2010-04-04 06:16:11 (GMT)
committerJouni Malinen <j@w1.fi>2010-04-04 06:16:11 (GMT)
commitd8ad6cb966bf6e2e25b9d406eb837102a87833e6 (patch)
tree225442f819e762f5759966f892e39330357556c9
parent9a3cb18d743ec9939fb8d6c81aafdbe4be5d6e00 (diff)
downloadhostap-d8ad6cb966bf6e2e25b9d406eb837102a87833e6.zip
hostap-d8ad6cb966bf6e2e25b9d406eb837102a87833e6.tar.gz
hostap-d8ad6cb966bf6e2e25b9d406eb837102a87833e6.tar.bz2
FT: Force key configuration after association in FT-over-DS
This seems to be needed at least with mac80211 when a STA is using FT-over-DS to reassociate back to the AP when the AP still has the previous association state.
-rw-r--r--src/ap/wpa_auth.c2
-rw-r--r--src/ap/wpa_auth_ft.c1
-rw-r--r--src/ap/wpa_auth_i.h1
3 files changed, 3 insertions, 1 deletions
diff --git a/src/ap/wpa_auth.c b/src/ap/wpa_auth.c
index 7e32051..2299c0e 100644
--- a/src/ap/wpa_auth.c
+++ b/src/ap/wpa_auth.c
@@ -1208,7 +1208,7 @@ int wpa_auth_sm_event(struct wpa_state_machine *sm, wpa_event event)
break;
case WPA_ASSOC_FT:
#ifdef CONFIG_IEEE80211R
- if (!sm->pairwise_set) {
+ if (!sm->pairwise_set || sm->ft_over_ds) {
wpa_printf(MSG_DEBUG, "FT: Retry PTK configuration "
"after association");
wpa_ft_install_ptk(sm);
diff --git a/src/ap/wpa_auth_ft.c b/src/ap/wpa_auth_ft.c
index 2bf646b..11bb88a 100644
--- a/src/ap/wpa_auth_ft.c
+++ b/src/ap/wpa_auth_ft.c
@@ -1227,6 +1227,7 @@ static int wpa_ft_rrb_rx_request(struct wpa_authenticator *wpa_auth,
"RRB Request");
return -1;
}
+ sm->ft_over_ds = 1;
wpa_hexdump(MSG_MSGDUMP, "FT: RRB Request Frame body", body, len);
diff --git a/src/ap/wpa_auth_i.h b/src/ap/wpa_auth_i.h
index 86df3a4..3901c7d 100644
--- a/src/ap/wpa_auth_i.h
+++ b/src/ap/wpa_auth_i.h
@@ -116,6 +116,7 @@ struct wpa_state_machine {
* Request */
u8 r0kh_id[FT_R0KH_ID_MAX_LEN]; /* R0KH-ID from FT Auth Request */
size_t r0kh_id_len;
+ int ft_over_ds;
#endif /* CONFIG_IEEE80211R */
};