主题:[讨论]关于hostapd软件802.1x部分代码的请教
hostapd是认证客户端,而802.1x只是其中的很少一部分,我看的内容只是其中的
ieee802_1x.c
eapol_sm.c
l2_packet_linux.c
一些数据结构有问题,
就是eapol_state_machine及其他状态机
当对数据处理后,将结果记录在eapol_state_machine
当收到eapol_start报文时, 做 eapol_sm -> eapol_Start = TURE 处理
当收到RADIUS返回的认证成功报文时 做 sm->eap_if->aaaSuccess = TRUE; 处理
当收到RADUIS返回的认证失败报文时 做 sm->eap_if->aaaFail = TRUE; 处理
当收到RADUIS返回的挑战字时 做 sm->eap_if->aaaEapReq = TRUE; 处理
此时根据发生情况,将eapol_state_machine设置成功,
然后调用eapol_auth_step(sm);来监听eapol_state_machine的状态改变
现在做到eapol_auth_step() 做不下去了
下面是我的理解
eapol_auth_step(sm)
call eapol_sm_step_cb()
call eapol_sm_step_run(struct eapol_state_machine *sm)
看到这个函数直接傻眼了,和我想象中的对eapol_sm状态机各状态监听并处理完全不一样,我想的是通过对布尔变量的判断方法监听,也就是通过while(状态)的方法监听,下面是处理方法。但是这里又出现了PAE状态机,并且是怎么调用的发包函数,也看不到了,
希望高手能帮助一下。
ieee802_1x.c
eapol_sm.c
l2_packet_linux.c
一些数据结构有问题,
就是eapol_state_machine及其他状态机
当对数据处理后,将结果记录在eapol_state_machine
当收到eapol_start报文时, 做 eapol_sm -> eapol_Start = TURE 处理
当收到RADIUS返回的认证成功报文时 做 sm->eap_if->aaaSuccess = TRUE; 处理
当收到RADUIS返回的认证失败报文时 做 sm->eap_if->aaaFail = TRUE; 处理
当收到RADUIS返回的挑战字时 做 sm->eap_if->aaaEapReq = TRUE; 处理
此时根据发生情况,将eapol_state_machine设置成功,
然后调用eapol_auth_step(sm);来监听eapol_state_machine的状态改变
现在做到eapol_auth_step() 做不下去了
下面是我的理解
eapol_auth_step(sm)
call eapol_sm_step_cb()
call eapol_sm_step_run(struct eapol_state_machine *sm)
看到这个函数直接傻眼了,和我想象中的对eapol_sm状态机各状态监听并处理完全不一样,我想的是通过对布尔变量的判断方法监听,也就是通过while(状态)的方法监听,下面是处理方法。但是这里又出现了PAE状态机,并且是怎么调用的发包函数,也看不到了,
希望高手能帮助一下。