Merge commit 'garage/master'
[wpasupplicant] / hostapd / wpa_auth_i.h
index 7770d17..925d3ee 100644 (file)
@@ -15,6 +15,9 @@
 #ifndef WPA_AUTH_I_H
 #define WPA_AUTH_I_H
 
+/* max(dot11RSNAConfigGroupUpdateCount,dot11RSNAConfigPairwiseUpdateCount) */
+#define RSNA_MAX_EAPOL_RETRIES 4
+
 struct wpa_group;
 
 struct wpa_stsl_negotiation {
@@ -66,8 +69,10 @@ struct wpa_state_machine {
        Boolean pairwise_set;
        int keycount;
        Boolean Pair;
-       u8 key_replay_counter[WPA_REPLAY_COUNTER_LEN];
-       Boolean key_replay_counter_valid;
+       struct {
+               u8 counter[WPA_REPLAY_COUNTER_LEN];
+               Boolean valid;
+       } key_replay[RSNA_MAX_EAPOL_RETRIES];
        Boolean PInitAKeys; /* WPA only, not in IEEE 802.11i */
        Boolean PTKRequest; /* not in IEEE 802.11i state machine */
        Boolean has_GTK;
@@ -208,7 +213,7 @@ void wpa_smk_m3(struct wpa_authenticator *wpa_auth,
 #ifdef CONFIG_IEEE80211R
 int wpa_write_mdie(struct wpa_auth_config *conf, u8 *buf, size_t len);
 int wpa_auth_derive_ptk_ft(struct wpa_state_machine *sm, const u8 *pmk,
-                          struct wpa_ptk *ptk);
+                          struct wpa_ptk *ptk, size_t ptk_len);
 struct wpa_ft_pmk_cache * wpa_ft_pmk_cache_init(void);
 void wpa_ft_pmk_cache_deinit(struct wpa_ft_pmk_cache *cache);
 #endif /* CONFIG_IEEE80211R */