📄 pana_paa_fsm.cxx
字号:
///////////////////////////////////////////////////////////////// // - - - - - - - - - - (PANA-Error-Message-Processing)- - // Rx:PER && PEA.insert_avp("AUTH"); CLOSED // fatal Tx:PEA(); // (PER.RESULT_CODE) && Disconnect(); // PER.exist_avp("AUTH") && // key_available() // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PER); ev.Do_FatalError(); // fatal(PER.RESULT_CODE) && // PER.exist_avp("AUTH") && // key_available() AddStateTableEntry(PANA_ST_OPEN, ev.Get(), PANA_ST_CLOSED, m_PaaExitActionTxPEA); ///////////////////////////////////////////////////////////////// // Rx:PER && Tx:PEA(); (no change) // !fatal // (PER.RESULT_CODE) || // !PER.exist_avp("AUTH") || // !key_available() // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PER); AddStateTableEntry(PANA_ST_OPEN, ev.Get(), PANA_ST_OPEN, m_PaaExitActionTxPEA); ///////////////////////////////////////////////////////////////// // - - - - - - - - - - (Catch all processing)- - //#if !defined(PANA_DEBUG) AddWildcardStateTableEntry(PANA_ST_OPEN, PANA_ST_OPEN);#endif // --------------- // State: WAIT_PPA // --------------- ///////////////////////////////////////////////////////////////// // - - - - - - - - - - - - - -(PPA processing) - - - - - - - - - - // Rx:PPA RtxTimerStop(); OPEN // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PPA); AddStateTableEntry(PANA_ST_WAIT_PPA, ev.Get(), PANA_ST_OPEN, m_PaaWaitPaaExitActionRxPPA); ///////////////////////////////////////////////////////////////// // SESS_TIMEOUT Disconnect(); CLOSED // ev.Reset(); ev.Do_SessTimeout(); AddStateTableEntry(PANA_ST_WAIT_PPA, ev.Get(), PANA_ST_CLOSED, m_PaaExitActionTimeout); ///////////////////////////////////////////////////////////////// // RTX_TIMEOUT && Disconnect(); CLOSED // RTX_COUNTER>= // RTX_MAX_NUM // ev.Reset(); ev.Do_RetryTimeout(); AddStateTableEntry(PANA_ST_WAIT_PPA, ev.Get(), PANA_ST_CLOSED, m_PaaExitActionTimeout); ///////////////////////////////////////////////////////////////// // - - - - - - - - - - (Reach maximum number of retransmission)- - // RTX_TIMEOUT && Retransmit(); (no change) // RTX_COUNTER< // RTX_MAX_NUM // ev.Reset(); ev.Do_ReTransmission(); AddStateTableEntry(PANA_ST_WAIT_PPA, ev.Get(), PANA_ST_WAIT_PPA, m_PaaExitActionRetransmission); ///////////////////////////////////////////////////////////////// // - - - - - - - - - - (PANA-Error-Message-Processing)- - // Rx:PER && PEA.insert_avp("AUTH"); CLOSED // fatal Tx:PEA(); // (PER.RESULT_CODE) && Disconnect(); // PER.exist_avp("AUTH") && // key_available() // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PER); ev.Do_FatalError(); // fatal(PER.RESULT_CODE) && // PER.exist_avp("AUTH") && // key_available() AddStateTableEntry(PANA_ST_WAIT_PPA, ev.Get(), PANA_ST_CLOSED, m_PaaExitActionTxPEA); ///////////////////////////////////////////////////////////////// // Rx:PER && Tx:PEA(); (no change) // !fatal // (PER.RESULT_CODE) || // !PER.exist_avp("AUTH") || // !key_available() // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PER); AddStateTableEntry(PANA_ST_WAIT_PPA, ev.Get(), PANA_ST_WAIT_PPA, m_PaaExitActionTxPEA); ///////////////////////////////////////////////////////////////// // - - - - - - - - - - (Catch all processing)- - //#if !defined(PANA_DEBUG) AddWildcardStateTableEntry(PANA_ST_WAIT_PPA, PANA_ST_WAIT_PPA);#endif // ---------------------- // State: WAIT_PAN_OR_PAR // ---------------------- ///////////////////////////////////////////////////////////////// // ------------------------+--------------------------+------------ // - - - - - - (Pass EAP Resposne to the EAP authenticator)- - - - // Rx:PAN && TxEAP(); WAIT_EAP_MSG // PAN.exist_avp RtxTimerStop(); // ("EAP-Payload") // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PAN); ev.AvpExist_EapPayload(); AddStateTableEntry(PANA_ST_WAIT_PAN_OR_PAR, ev.Get(), PANA_ST_WAIT_EAP_MSG, m_PaaWaitPANExitActionRxPAN); ///////////////////////////////////////////////////////////////// // Rx:PAR TxEAP(); WAIT_EAP_MSG // if (key_available()) // PAN.insert_avp("AUTH"); // if (SEPARATE==Set) { // PAN.S_flag=1; // if (NAP_AUTH==Set) // PAN.N_flag=1; // } // RtxTimerStop(); // Tx:PAN(); // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PAR); AddStateTableEntry(PANA_ST_WAIT_PAN_OR_PAR, ev.Get(), PANA_ST_WAIT_EAP_MSG, m_PaaWaitPANExitActionRxPAR); ///////////////////////////////////////////////////////////////// // - - - - - - - - - - (PAN without an EAP response) - - - - - - // Rx:PAN && RtxTimerStop(); WAIT_PAN_OR_PAR // !PAN.exist_avp // ("EAP-Payload") // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PAN); AddStateTableEntry(PANA_ST_WAIT_PAN_OR_PAR, ev.Get(), PANA_ST_WAIT_PAN_OR_PAR, m_PaaWaitPANExitActionRxPAN); ///////////////////////////////////////////////////////////////// // - - - - - - - - - - - -(EAP retransmission) - - - - - - - - - // EAP_REQUEST if (key_available()) WAIT_PAN_OR_PAR // PAR.insert_avp("AUTH"); // if (SEPARATE==Set) { // PAR.S_flag=1; // if (NAP_AUTH==Set) // PAR.N_flag=1; // } // Tx:PAR(); // RtxTimerStart(); // ev.Reset(); ev.Event_Eap(PANA_EV_EAP_REQUEST); AddStateTableEntry(PANA_ST_WAIT_PAN_OR_PAR, ev.Get(), PANA_ST_WAIT_PAN_OR_PAR, m_PaaExitActionTxPAR); ///////////////////////////////////////////////////////////////// // - - - - - - - - -(EAP authentication timeout)- - - - - - - - // EAP_TIMEOUT && if (key_available()) WAIT_PEA // 1ST_EAP==Unset && PER.insert_avp("AUTH"); // SEPARATE==Unset Tx:PER(); // RtxTimerStart(); // ev.Reset(); ev.Event_Eap(PANA_EV_EAP_TIMEOUT); ev.Result_FirstEap(PANA_EAP_RESULT_UNSET); AddStateTableEntry(PANA_ST_WAIT_PAN_OR_PAR, ev.Get(), PANA_ST_WAIT_PEA, m_PaaExitActionTxPER); ///////////////////////////////////////////////////////////////// // - - - - - -(EAP authentication timeout for 1st EAP)- - - - - // EAP_TIMEOUT && 1ST_EAP=Failure WAIT_PFEA // 1ST_EAP==Unset && if (key_available()) // SEPARATE==Set && PFER.insert_avp("AUTH"); // ABORT_ON_1ST_EAP_FAILURE PFER.S_flag=1; // ==Unset if (NAP_AUTH) // PFER.N_flag=1; // Tx:PFER(); // RtxTimerStart(); // ev.Reset(); ev.Event_Eap(PANA_EV_EAP_TIMEOUT); ev.Result_FirstEap(PANA_EAP_RESULT_UNSET); ev.Do_Separate(); AddStateTableEntry(PANA_ST_WAIT_PAN_OR_PAR, ev.Get(), PANA_ST_WAIT_PFEA, m_PaaExitActionTxPFEREapTimeout); ///////////////////////////////////////////////////////////////// // EAP_TIMEOUT && 1ST_EAP=Failure WAIT_FAIL_PFEA // 1ST_EAP==Unset && if (key_available()) // SEPARATE==Set && PFER.insert_avp("AUTH"); // ABORT_ON_1ST_EAP_FAILURE SEPARATE=Unset; // ==Set PFER.S_flag=0; // Tx:PFER(); // RtxTimerStart(); // ev.Reset(); ev.Event_Eap(PANA_EV_EAP_TIMEOUT); ev.Result_FirstEap(PANA_EAP_RESULT_UNSET); ev.Do_Separate(); ev.Do_AbortOnFirstEap(); AddStateTableEntry(PANA_ST_WAIT_PAN_OR_PAR, ev.Get(), PANA_ST_WAIT_FAIL_PFEA, m_PaaExitActionTxPFEREapTimeout); ///////////////////////////////////////////////////////////////// // - - - - - -(EAP authentication timeout for 2nd EAP)- - - - - // EAP_TIMEOUT && if (key_available()) WAIT_FAIL_PBA // 1ST_EAP==Failure && PBR.insert_avp("AUTH"); // SEPARATE==Set PBR.S_flag=1; // if (NAP_AUTH) // PBR.N_flag=1; // Tx:PBR(); // RtxTimerStart(); // ev.Reset(); ev.Event_Eap(PANA_EV_EAP_TIMEOUT); ev.Result_FirstEap(PANA_EAP_RESULT_FAIL); ev.Do_Separate(); AddStateTableEntry(PANA_ST_WAIT_PAN_OR_PAR, ev.Get(), PANA_ST_WAIT_FAIL_PBA, m_PaaExitActionTxPBREapTimeout); ///////////////////////////////////////////////////////////////// // EAP_TIMEOUT && if (CARRY_DEVICE_ID==Set) WAIT_SUCC_PBA // 1ST_EAP==Success && PBR.insert_avp // SEPARATE==Set && ("Device-Id"); // Authorize() if (CARRY_LIFETIME==Set) // PBR.insert_avp // ("Session-Lifetime"); // if (PROTECTION_CAP_IN_PBR // ==Set) // PBR.insert_avp // ("Protection-Cap."); // if (new_key_available()) // PBR.insert_avp // ("Key-Id"); // if (key_available()) // PBR.insert_avp("AUTH"); // PBR.S_flag=1; // if (NAP_AUTH) // PBR.N_flag=1; // Tx:PBR(); // RtxTimerStart(); // ev.Reset(); ev.Event_Eap(PANA_EV_EAP_TIMEOUT); ev.Result_FirstEap(PANA_EAP_RESULT_SUCCESS); ev.Do_Separate(); ev.Do_Authorize(); AddStateTableEntry(PANA_ST_WAIT_PAN_OR_PAR, ev.Get(), PANA_ST_WAIT_SUCC_PBA, m_PaaExitActionTxPBREapTimeoutSuccess); ///////////////////////////////////////////////////////////////// // EAP_TIMEOUT && if (key_available()) WAIT_FAIL_PBA // 1ST_EAP==Success && PBR.insert_avp("AUTH"); // SEPARATE==Set && PBR.S_flag=1; // !Authorize() if (NAP_AUTH) // PBR.N_flag=1; // Tx:PBR(); // RtxTimerStart(); // ev.Reset(); ev.Event_Eap(PANA_EV_EAP_TIMEOUT); ev.Result_FirstEap(PANA_EAP_RESULT_SUCCESS); ev.Do_Separate(); AddStateTableEntry(PANA_ST_WAIT_PAN_OR_PAR, ev.Get(), PANA_ST_WAIT_FAIL_PBA, m_PaaExitActionTxPBREapTimeout); ///////////////////////////////////////////////////////////////// // RTX_TIMEOUT && Disconnect(); CLOSED // RTX_COUNTER>= // RTX_MAX_NUM // ev.Reset(); ev.Do_RetryTimeout(); AddStateTableEntry(P
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -