3
0
mirror of https://git.kernel.org/pub/scm/network/wireless/iwd.git synced 2025-02-18 09:10:38 +01:00

eapol: Add eapol_start_preauthentication

Add a wrapper for eapol_start that sets the sm->preauth flag and sends
the EAPOL-Start frame immediately to skip the timeout since we know
that the supplicant has to initiate the authentication.
This commit is contained in:
Andrew Zaborowski 2017-04-15 13:58:47 +02:00 committed by Denis Kenzior
parent f340ea510c
commit 4e9ed2d686
2 changed files with 17 additions and 0 deletions

View File

@ -728,6 +728,7 @@ struct eapol_sm {
bool have_replay:1; bool have_replay:1;
bool started:1; bool started:1;
bool use_eapol_start:1; bool use_eapol_start:1;
bool preauth:1;
struct eap_state *eap; struct eap_state *eap;
struct eapol_buffer *early_frame; struct eapol_buffer *early_frame;
}; };
@ -1677,6 +1678,21 @@ eap_error:
(int) sm->handshake->ifindex); (int) sm->handshake->ifindex);
} }
void eapol_start_preauthentication(struct eapol_sm *sm)
{
/*
* The only difference here is that we send the EAPOL-Start immeditely
* instead of in a timeout, and we set sm->preauth so that pae_write
* uses the preauthentication protocol id.
*/
sm->use_eapol_start = false;
sm->preauth = true;
eapol_start(sm);
send_eapol_start(NULL, sm);
}
bool eapol_init() bool eapol_init()
{ {
state_machines = l_queue_new(); state_machines = l_queue_new();

View File

@ -182,6 +182,7 @@ void eapol_sm_set_event_func(struct eapol_sm *sm, eapol_sm_event_func_t func);
void eapol_register(struct eapol_sm *sm); void eapol_register(struct eapol_sm *sm);
void eapol_start(struct eapol_sm *sm); void eapol_start(struct eapol_sm *sm);
void eapol_start_preauthentication(struct eapol_sm *sm);
void eapol_pae_open(); void eapol_pae_open();
void eapol_pae_close(); void eapol_pae_close();