diff --git a/contrib/wpa/src/drivers/driver_bsd.c b/contrib/wpa/src/drivers/driver_bsd.c --- a/contrib/wpa/src/drivers/driver_bsd.c +++ b/contrib/wpa/src/drivers/driver_bsd.c @@ -1267,6 +1267,7 @@ u32 mode; int ret = 0; const u8 *wpa_ie, *rsn_ie; + int value = 0; wpa_printf(MSG_DEBUG, "%s: ssid '%.*s' wpa ie len %u pairwise %u group %u key mgmt %u" @@ -1316,6 +1317,25 @@ if (wpa_driver_bsd_set_auth_alg(drv, params->auth_alg) < 0) ret = -1; + /* XXX TODO: only if IEEE80211_IOC_MFP is defined? */ + switch (params->mgmt_frame_protection) { + case NO_MGMT_FRAME_PROTECTION: + value = IEEE80211_MFP_DISABLED; + break; + case MGMT_FRAME_PROTECTION_OPTIONAL: + value = IEEE80211_MFP_OPTIONAL; + break; + case MGMT_FRAME_PROTECTION_REQUIRED: + value = IEEE80211_MFP_REQUIRED; + break; + } + + /* XXX TODO: only make this a perm failure if the request is optional/required? */ + if (set80211param(priv, IEEE80211_IOC_MFP, value)) { + wpa_printf(MSG_INFO, + "Unable to set MFP configuration to %d", value); + } + if (params->wpa_ie_len) { rsn_ie = get_ie(params->wpa_ie, params->wpa_ie_len, WLAN_EID_RSN);