📄 pana_paa_fsm.cxx
字号:
AddStateTableEntry(PANA_ST_WAIT_EAP_MSG, ev.Get(), PANA_ST_WAIT_SUCC_PBA, m_PaaExitActionTxPBREapSuccess); ///////////////////////////////////////////////////////////////// // EAP_SUCCESS && PBR.insert_avp WAIT_FAIL_PBA // 1ST_EAP==Failure && ("EAP-Payload"); <--- victor: new_key_available() // SEPARATE==Set && if (key_available()) // !Authorize() 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_SUCCESS); ev.Result_FirstEap(PANA_EAP_RESULT_FAIL); ev.Do_Separate(); AddStateTableEntry(PANA_ST_WAIT_EAP_MSG, ev.Get(), PANA_ST_WAIT_FAIL_PBA, m_PaaExitActionTxPBREapSuccessFail); ///////////////////////////////////////////////////////////////// // 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_EAP_MSG, 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_EAP_MSG, 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_EAP_MSG, ev.Get(), PANA_ST_WAIT_FAIL_PBA, m_PaaExitActionTxPBREapTimeout); ///////////////////////////////////////////////////////////////// // RTX_TIMEOUT && Disconnect(); CLOSED // RTX_COUNTER>= // RTX_MAX_NUM // ev.Reset(); ev.Do_RetryTimeout(); AddStateTableEntry(PANA_ST_WAIT_EAP_MSG, 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_EAP_MSG, ev.Get(), PANA_ST_WAIT_EAP_MSG, 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_EAP_MSG, 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_EAP_MSG, ev.Get(), PANA_ST_WAIT_EAP_MSG, m_PaaExitActionTxPEA); ///////////////////////////////////////////////////////////////// // - - - - - - - - - - (Catch all processing)- - //#if !defined(PANA_DEBUG) AddWildcardStateTableEntry(PANA_ST_WAIT_EAP_MSG, PANA_ST_WAIT_EAP_MSG);#endif // ---------------- // State: WAIT_PFEA // ---------------- ///////////////////////////////////////////////////////////////// // - - - - - - - - - - - -(PFEA Processing)- - - - - - - - - - - - // Rx:PFEA && RtxTimerStop(); WAIT_EAP_MSG // (1ST_EAP==Success || EAP_Restart(); // (PFEA.S_flag==1 && if (NAP_AUTH==Set) // 1ST_EAP==Failure)) NAP_AUTH=Unset; // else // NAP_AUTH=Set; // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PFEA); ev.EnableFlag_Separate(); // (1ST_EAP==Success || // (PFEA.S_flag==1 && // 1ST_EAP==Failure)) AddStateTableEntry(PANA_ST_WAIT_PFEA, ev.Get(), PANA_ST_WAIT_EAP_MSG, m_PaaWaitPFEAExitActionRxPFEASuccess); ///////////////////////////////////////////////////////////////// // Rx:PFEA && RtxTimerStop(); CLOSED // PFEA.S_flag==0 && Disconnect(); // 1ST_EAP==Failure // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PFEA); AddStateTableEntry(PANA_ST_WAIT_PFEA, ev.Get(), PANA_ST_CLOSED, m_PaaWaitPFEAExitActionRxPFEAFail); ///////////////////////////////////////////////////////////////// // RTX_TIMEOUT && Disconnect(); CLOSED // RTX_COUNTER>= // RTX_MAX_NUM // ev.Reset(); ev.Do_RetryTimeout(); AddStateTableEntry(PANA_ST_WAIT_PFEA, 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_PFEA, ev.Get(), PANA_ST_WAIT_PFEA, 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_PFEA, 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_PFEA, ev.Get(), PANA_ST_WAIT_PFEA, m_PaaExitActionTxPEA); ///////////////////////////////////////////////////////////////// // - - - - - - - - - - (Catch all processing)- - //#if !defined(PANA_DEBUG) AddWildcardStateTableEntry(PANA_ST_WAIT_PFEA, PANA_ST_WAIT_PFEA);#endif // --------------------- // State: WAIT_FAIL_PFEA // --------------------- ///////////////////////////////////////////////////////////////// // - - - - - - - - - - - - - -(PFEA Processing)- - - - - - - - - - // Rx:PFEA RtxTimerStop(); CLOSED // Disconnect(); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PFEA); AddStateTableEntry(PANA_ST_WAIT_FAIL_PFEA, ev.Get(), PANA_ST_CLOSED, m_PaaWaitPFEAExitActionRxPFEAFail); ///////////////////////////////////////////////////////////////// // RTX_TIMEOUT && Disconnect(); CLOSED // RTX_COUNTER>= // RTX_MAX_NUM // ev.Reset(); ev.Do_RetryTimeout(); AddStateTableEntry(PANA_ST_WAIT_FAIL_PFEA, 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_FAIL_PFEA, ev.Get(), PANA_ST_WAIT_FAIL_PFEA, 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_FAIL_PFEA, 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_FAIL_PFEA, ev.Get(), PANA_ST_WAIT_FAIL_PFEA, m_PaaExitActionTxPEA); ///////////////////////////////////////////////////////////////// // - - - - - - - - - - (Catch all processing)- - //
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -