Fixed WPS with open and shared WEP networks

Do not initialize EAPOL state machine for the STA when hostapd is
configured to use WPS with open or shared WEP networks. This allows the
STA to use EAPOL-Start to indicate it wants to start WPS in such a case
and hostapd does not end up running through EAPOL authentication timeout
and disconnecting the STA if WPS is not used.

There was already code for starting EAPOL state machines based on
received EAPOL packets, but that was not working properly since
portEnabled was not set to TRUE on that code path. This is now fixed,
too.
This commit is contained in:
Jouni Malinen 2009-01-21 14:18:14 +02:00 committed by Jouni Malinen
parent aabe26a136
commit a60e7213e1

View file

@ -747,6 +747,8 @@ void ieee802_1x_receive(struct hostapd_data *hapd, const u8 *sa, const u8 *buf,
sta->eapol_sm->flags |= EAPOL_SM_WAIT_START; sta->eapol_sm->flags |= EAPOL_SM_WAIT_START;
} }
#endif /* CONFIG_WPS */ #endif /* CONFIG_WPS */
sta->eapol_sm->eap_if->portEnabled = TRUE;
} }
/* since we support version 1, we can ignore version field and proceed /* since we support version 1, we can ignore version field and proceed
@ -829,7 +831,7 @@ void ieee802_1x_new_station(struct hostapd_data *hapd, struct sta_info *sta)
int force_1x = 0; int force_1x = 0;
#ifdef CONFIG_WPS #ifdef CONFIG_WPS
if (hapd->conf->wps_state && if (hapd->conf->wps_state && hapd->conf->wpa &&
(sta->flags & (WLAN_STA_WPS | WLAN_STA_MAYBE_WPS))) { (sta->flags & (WLAN_STA_WPS | WLAN_STA_MAYBE_WPS))) {
/* /*
* Need to enable IEEE 802.1X/EAPOL state machines for possible * Need to enable IEEE 802.1X/EAPOL state machines for possible