从ieee_802_1x_receive到eap算法选择

回icanmey

 

 

 

ieee802_1x_receive
call  eapol_auth_step(sta->eapol_sm);//void eapol_auth_step(struct eapol_state_machine *sm)

eapol_auth_step注册超时处理器,启动了eapol_sm_step_cb,其第一个参数为sta->eapol_sm.注册这个也是为了以免阻塞不能处理其他消息。
static void eapol_sm_step_cb(void *eloop_ctx, void *timeout_ctx)
{
 struct eapol_state_machine *sm = eloop_ctx;
 eapol_sm_step_run(sm);
}

static void eapol_sm_step_run(struct eapol_state_machine *sm)


eap_server_sm_step(sm->eap)   eap.c   //int eap_server_sm_step(struct eap_sm *sm)

这个调用了sm_EAP_Step即SM_STEP(EAP)的实现,见eap.c


在到了EAP_INITIALIZE的时候
[1]如果是作为backend auth server的话,进入PICK_UP_METHOD的处理,即SM_STATE(EAP, PICK_UP_METHOD),看一下其实现:如果为eap-resp/identity的话则调用eap_server_get_eap_method进行选择相应算法。后续还可能会有算法协商过程
[2]如果是PASSTHROUGH的话进入SELECT_ACTION的流程,这个可以看下eap_sm_Policy_getDecision的实现

你可能感兴趣的:(算法,server,struct,UP,action)