|
@@ -680,6 +680,7 @@ void ieee802_1x_receive(struct hostapd_data *hapd, const u8 *sa, const u8 *buf,
|
|
|
struct ieee802_1x_eapol_key *key;
|
|
|
u16 datalen;
|
|
|
struct rsn_pmksa_cache_entry *pmksa;
|
|
|
+ int key_mgmt;
|
|
|
|
|
|
if (!hapd->conf->ieee802_1x && !hapd->conf->wpa &&
|
|
|
!hapd->conf->wps_state)
|
|
@@ -731,10 +732,19 @@ void ieee802_1x_receive(struct hostapd_data *hapd, const u8 *sa, const u8 *buf,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- if ((!hapd->conf->ieee802_1x &&
|
|
|
- !(sta->flags & (WLAN_STA_WPS | WLAN_STA_MAYBE_WPS))) ||
|
|
|
- wpa_key_mgmt_wpa_psk(wpa_auth_sta_key_mgmt(sta->wpa_sm)))
|
|
|
+ if (!hapd->conf->ieee802_1x &&
|
|
|
+ !(sta->flags & (WLAN_STA_WPS | WLAN_STA_MAYBE_WPS))) {
|
|
|
+ wpa_printf(MSG_DEBUG, "IEEE 802.1X: Ignore EAPOL message - "
|
|
|
+ "802.1X not enabled and WPS not used");
|
|
|
return;
|
|
|
+ }
|
|
|
+
|
|
|
+ key_mgmt = wpa_auth_sta_key_mgmt(sta->wpa_sm);
|
|
|
+ if (key_mgmt != -1 && wpa_key_mgmt_wpa_psk(key_mgmt)) {
|
|
|
+ wpa_printf(MSG_DEBUG, "IEEE 802.1X: Ignore EAPOL message - "
|
|
|
+ "STA is using PSK");
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
if (!sta->eapol_sm) {
|
|
|
sta->eapol_sm = ieee802_1x_alloc_eapol_sm(hapd, sta);
|
|
@@ -836,6 +846,7 @@ void ieee802_1x_new_station(struct hostapd_data *hapd, struct sta_info *sta)
|
|
|
struct rsn_pmksa_cache_entry *pmksa;
|
|
|
int reassoc = 1;
|
|
|
int force_1x = 0;
|
|
|
+ int key_mgmt;
|
|
|
|
|
|
#ifdef CONFIG_WPS
|
|
|
if (hapd->conf->wps_state && hapd->conf->wpa &&
|
|
@@ -849,9 +860,17 @@ void ieee802_1x_new_station(struct hostapd_data *hapd, struct sta_info *sta)
|
|
|
}
|
|
|
#endif /* CONFIG_WPS */
|
|
|
|
|
|
- if ((!force_1x && !hapd->conf->ieee802_1x) ||
|
|
|
- wpa_key_mgmt_wpa_psk(wpa_auth_sta_key_mgmt(sta->wpa_sm)))
|
|
|
+ if (!force_1x && !hapd->conf->ieee802_1x) {
|
|
|
+ wpa_printf(MSG_DEBUG, "IEEE 802.1X: Ignore STA - "
|
|
|
+ "802.1X not enabled or forced for WPS");
|
|
|
return;
|
|
|
+ }
|
|
|
+
|
|
|
+ key_mgmt = wpa_auth_sta_key_mgmt(sta->wpa_sm);
|
|
|
+ if (key_mgmt != -1 && wpa_key_mgmt_wpa_psk(key_mgmt)) {
|
|
|
+ wpa_printf(MSG_DEBUG, "IEEE 802.1X: Ignore STA - using PSK");
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
if (sta->eapol_sm == NULL) {
|
|
|
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
|