MFP: Add MFPR flag into station RSN IE if 802.11w is mandatory
This commit is contained in:
parent
a042f8447d
commit
e820cf952f
5 changed files with 10 additions and 2 deletions
|
@ -2124,6 +2124,9 @@ int wpa_sm_set_param(struct wpa_sm *sm, enum wpa_sm_conf_params param,
|
||||||
case WPA_PARAM_RSN_ENABLED:
|
case WPA_PARAM_RSN_ENABLED:
|
||||||
sm->rsn_enabled = value;
|
sm->rsn_enabled = value;
|
||||||
break;
|
break;
|
||||||
|
case WPA_PARAM_MFP:
|
||||||
|
sm->mfp = value;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,7 +67,8 @@ enum wpa_sm_conf_params {
|
||||||
WPA_PARAM_GROUP,
|
WPA_PARAM_GROUP,
|
||||||
WPA_PARAM_KEY_MGMT,
|
WPA_PARAM_KEY_MGMT,
|
||||||
WPA_PARAM_MGMT_GROUP,
|
WPA_PARAM_MGMT_GROUP,
|
||||||
WPA_PARAM_RSN_ENABLED
|
WPA_PARAM_RSN_ENABLED,
|
||||||
|
WPA_PARAM_MFP
|
||||||
};
|
};
|
||||||
|
|
||||||
struct rsn_supp_config {
|
struct rsn_supp_config {
|
||||||
|
|
|
@ -82,6 +82,7 @@ struct wpa_sm {
|
||||||
unsigned int mgmt_group_cipher;
|
unsigned int mgmt_group_cipher;
|
||||||
|
|
||||||
int rsn_enabled; /* Whether RSN is enabled in configuration */
|
int rsn_enabled; /* Whether RSN is enabled in configuration */
|
||||||
|
int mfp; /* 0 = disabled, 1 = optional, 2 = mandatory */
|
||||||
|
|
||||||
u8 *assoc_wpa_ie; /* Own WPA/RSN IE from (Re)AssocReq */
|
u8 *assoc_wpa_ie; /* Own WPA/RSN IE from (Re)AssocReq */
|
||||||
size_t assoc_wpa_ie_len;
|
size_t assoc_wpa_ie_len;
|
||||||
|
|
|
@ -332,8 +332,10 @@ static int wpa_gen_wpa_ie_rsn(u8 *rsn_ie, size_t rsn_ie_len,
|
||||||
/* RSN Capabilities */
|
/* RSN Capabilities */
|
||||||
capab = 0;
|
capab = 0;
|
||||||
#ifdef CONFIG_IEEE80211W
|
#ifdef CONFIG_IEEE80211W
|
||||||
if (mgmt_group_cipher == WPA_CIPHER_AES_128_CMAC)
|
if (sm->mfp)
|
||||||
capab |= WPA_CAPABILITY_MFPC;
|
capab |= WPA_CAPABILITY_MFPC;
|
||||||
|
if (sm->mfp == 2)
|
||||||
|
capab |= WPA_CAPABILITY_MFPR;
|
||||||
#endif /* CONFIG_IEEE80211W */
|
#endif /* CONFIG_IEEE80211W */
|
||||||
WPA_PUT_LE16(pos, capab);
|
WPA_PUT_LE16(pos, capab);
|
||||||
pos += 2;
|
pos += 2;
|
||||||
|
|
|
@ -958,6 +958,7 @@ int wpa_supplicant_set_suites(struct wpa_supplicant *wpa_s,
|
||||||
}
|
}
|
||||||
wpa_sm_set_param(wpa_s->wpa, WPA_PARAM_MGMT_GROUP,
|
wpa_sm_set_param(wpa_s->wpa, WPA_PARAM_MGMT_GROUP,
|
||||||
wpa_s->mgmt_group_cipher);
|
wpa_s->mgmt_group_cipher);
|
||||||
|
wpa_sm_set_param(wpa_s->wpa, WPA_PARAM_MFP, ssid->ieee80211w);
|
||||||
#endif /* CONFIG_IEEE80211W */
|
#endif /* CONFIG_IEEE80211W */
|
||||||
|
|
||||||
if (wpa_sm_set_assoc_wpa_ie_default(wpa_s->wpa, wpa_ie, wpa_ie_len)) {
|
if (wpa_sm_set_assoc_wpa_ie_default(wpa_s->wpa, wpa_ie, wpa_ie_len)) {
|
||||||
|
|
Loading…
Reference in a new issue