Added WLAN_STA_MFP flag for driver wrappers so that they can configure the

driver to enable MFP (IEEE 802.11w) processing for the STA.
This commit is contained in:
Jouni Malinen 2008-06-17 11:21:11 +03:00
parent 94e5af7948
commit f3f7540edc
5 changed files with 17 additions and 1 deletions

View file

@ -26,6 +26,7 @@
#define WLAN_STA_SHORT_PREAMBLE BIT(7) #define WLAN_STA_SHORT_PREAMBLE BIT(7)
#define WLAN_STA_PREAUTH BIT(8) #define WLAN_STA_PREAUTH BIT(8)
#define WLAN_STA_WME BIT(9) #define WLAN_STA_WME BIT(9)
#define WLAN_STA_MFP BIT(10)
#define WLAN_STA_NONERP BIT(31) #define WLAN_STA_NONERP BIT(31)
/* Maximum number of supported rates (from both Supported Rates and Extended /* Maximum number of supported rates (from both Supported Rates and Extended

View file

@ -398,7 +398,7 @@ static void hostapd_dump_state(struct hostapd_data *hapd)
fprintf(f, "\nSTA=" MACSTR "\n", MAC2STR(sta->addr)); fprintf(f, "\nSTA=" MACSTR "\n", MAC2STR(sta->addr));
fprintf(f, fprintf(f,
" AID=%d flags=0x%x %s%s%s%s%s%s%s%s%s%s\n" " AID=%d flags=0x%x %s%s%s%s%s%s%s%s%s%s%s%s\n"
" capability=0x%x listen_interval=%d\n", " capability=0x%x listen_interval=%d\n",
sta->aid, sta->aid,
sta->flags, sta->flags,
@ -414,6 +414,8 @@ static void hostapd_dump_state(struct hostapd_data *hapd)
(sta->flags & WLAN_STA_SHORT_PREAMBLE ? (sta->flags & WLAN_STA_SHORT_PREAMBLE ?
"[SHORT_PREAMBLE]" : ""), "[SHORT_PREAMBLE]" : ""),
(sta->flags & WLAN_STA_PREAUTH ? "[PREAUTH]" : ""), (sta->flags & WLAN_STA_PREAUTH ? "[PREAUTH]" : ""),
(sta->flags & WLAN_STA_WME ? "[WME]" : ""),
(sta->flags & WLAN_STA_MFP ? "[MFP]" : ""),
(sta->flags & WLAN_STA_NONERP ? "[NonERP]" : ""), (sta->flags & WLAN_STA_NONERP ? "[NonERP]" : ""),
sta->capability, sta->capability,
sta->listen_interval); sta->listen_interval);

View file

@ -996,6 +996,12 @@ static void handle_assoc(struct hostapd_data *hapd,
resp = WLAN_STATUS_INVALID_IE; resp = WLAN_STATUS_INVALID_IE;
if (resp != WLAN_STATUS_SUCCESS) if (resp != WLAN_STATUS_SUCCESS)
goto fail; goto fail;
#ifdef CONFIG_IEEE80211W
if (wpa_auth_uses_mfp(sta->wpa_sm))
sta->flags |= WLAN_STA_MFP;
else
sta->flags &= ~WLAN_STA_MFP;
#endif /* CONFIG_IEEE80211W */
#ifdef CONFIG_IEEE80211R #ifdef CONFIG_IEEE80211R
if (sta->auth_alg == WLAN_AUTH_FT) { if (sta->auth_alg == WLAN_AUTH_FT) {

View file

@ -219,6 +219,7 @@ int wpa_validate_wpa_ie(struct wpa_authenticator *wpa_auth,
struct wpa_state_machine *sm, struct wpa_state_machine *sm,
const u8 *wpa_ie, size_t wpa_ie_len, const u8 *wpa_ie, size_t wpa_ie_len,
const u8 *mdie, size_t mdie_len); const u8 *mdie, size_t mdie_len);
int wpa_auth_uses_mfp(struct wpa_state_machine *sm);
struct wpa_state_machine * struct wpa_state_machine *
wpa_auth_sta_init(struct wpa_authenticator *wpa_auth, const u8 *addr); wpa_auth_sta_init(struct wpa_authenticator *wpa_auth, const u8 *addr);
void wpa_auth_sta_associated(struct wpa_authenticator *wpa_auth, void wpa_auth_sta_associated(struct wpa_authenticator *wpa_auth,

View file

@ -783,3 +783,9 @@ int wpa_parse_kde_ies(const u8 *buf, size_t len, struct wpa_eapol_ie_parse *ie)
return ret; return ret;
} }
int wpa_auth_uses_mfp(struct wpa_state_machine *sm)
{
return sm ? sm->mgmt_frame_prot : 0;
}