📄 pana_client_fsm.cxx
字号:
// PFER.S_flag==1 // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PFER); ev.Result_FirstEap(PANA_EAP_RESULT_UNSET); ev.EnableCfg_Separate(); ev.Result_Eap(PANA_EAP_RESULT_SUCCESS); ev.EnableFlag_Separate(); AddStateTableEntry(PANA_ST_WAIT_PAA, ev.Get(), PANA_ST_WAIT_1ST_EAP_RESULT, m_PacWaitPaaExitActionRxPFER); ///////////////////////////////////////////////////////////////// // Rx:PFER && 1ST_EAP=Failure; WAIT_1ST_EAP_RESULT // 1ST_EAP==Unset && TxEAP(); // SEPARATE==Set && // PFER.RESULT_CODE!= // PANA_SUCCESS && // PFER.S_flag==1 && // ABORT_ON_1ST_EAP_FAILURE // ==Unset && // PFER.exit_avp // ("EAP-Payload") // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PFER); ev.Result_FirstEap(PANA_EAP_RESULT_UNSET); ev.EnableCfg_Separate(); ev.Result_Eap(PANA_EAP_RESULT_FAIL); ev.EnableFlag_Separate(); ev.AvpExist_EapPayload(); AddStateTableEntry(PANA_ST_WAIT_PAA, ev.Get(), PANA_ST_WAIT_1ST_EAP_RESULT, m_PacWaitPaaExitActionRxPFER); ///////////////////////////////////////////////////////////////// // Rx:PFER && 1ST_EAP=Failure; WAIT_1ST_EAP_RESULT // 1ST_EAP==Unset && alt_reject(); // SEPARATE==Set && // PFER.RESULT_CODE!= // PANA_SUCCESS && // PFER.S_flag==1 && // ABORT_ON_1ST_EAP_FAILURE // ==Unset && // !PFER.exit_avp // ("EAP-Payload") // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PFER); ev.Result_FirstEap(PANA_EAP_RESULT_UNSET); ev.EnableCfg_Separate(); ev.Result_Eap(PANA_EAP_RESULT_FAIL); ev.EnableFlag_Separate(); AddStateTableEntry(PANA_ST_WAIT_PAA, ev.Get(), PANA_ST_WAIT_1ST_EAP_RESULT, m_PacWaitPaaExitActionRxPFER); ///////////////////////////////////////////////////////////////// // Rx:PFER && 1ST_EAP=Failure; WAIT_1ST_EAP_ // 1ST_EAP==Unset && TxEAP(); RESULT_CLOSED // SEPARATE==Set && // PFER.RESULT_CODE!= // PANA_SUCCESS && // (PFER.S_flag==0 || // ABORT_ON_1ST_EAP_FAILURE // ==Set) && // PFER.exist_avp // ("EAP-Payload") // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PFER); ev.Result_FirstEap(PANA_EAP_RESULT_UNSET); ev.EnableCfg_Separate(); ev.Result_Eap(PANA_EAP_RESULT_FAIL); ev.AvpExist_EapPayload(); AddStateTableEntry(PANA_ST_WAIT_PAA, ev.Get(), PANA_ST_WAIT_1ST_EAP_RESULT_CLOSE, m_PacWaitPaaExitActionRxPFER); // // (PFER.S_flag==0 || // ABORT_ON_1ST_EAP_FAILURE==Set // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PFER); ev.Result_FirstEap(PANA_EAP_RESULT_UNSET); ev.EnableCfg_Separate(); ev.Result_Eap(PANA_EAP_RESULT_FAIL); ev.EnableCfg_AbortOnFirstEap(); ev.AvpExist_EapPayload(); AddStateTableEntry(PANA_ST_WAIT_PAA, ev.Get(), PANA_ST_WAIT_1ST_EAP_RESULT_CLOSE, m_PacWaitPaaExitActionRxPFER); ///////////////////////////////////////////////////////////////// // Rx:PFER && 1ST_EAP=Failure; WAIT_1ST_EAP_ // 1ST_EAP==Unset && alt_reject(); RESULT_CLOSED // SEPARATE==Set && // PFER.RESULT_CODE!= // PANA_SUCCESS && // (PFER.S_flag==0 || // ABORT_ON_1ST_EAP_FAILURE // ==Set) && // !PFER.exist_avp // ("EAP-Payload") // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PFER); ev.Result_FirstEap(PANA_EAP_RESULT_UNSET); ev.EnableCfg_Separate(); ev.Result_Eap(PANA_EAP_RESULT_FAIL); AddStateTableEntry(PANA_ST_WAIT_PAA, ev.Get(), PANA_ST_WAIT_1ST_EAP_RESULT_CLOSE, m_PacWaitPaaExitActionRxPFER); // // (PFER.S_flag==0 || // ABORT_ON_1ST_EAP_FAILURE==Set // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PFER); ev.Result_FirstEap(PANA_EAP_RESULT_UNSET); ev.EnableCfg_Separate(); ev.Result_Eap(PANA_EAP_RESULT_FAIL); ev.EnableCfg_AbortOnFirstEap(); AddStateTableEntry(PANA_ST_WAIT_PAA, ev.Get(), PANA_ST_WAIT_1ST_EAP_RESULT_CLOSE, m_PacWaitPaaExitActionRxPFER); ///////////////////////////////////////////////////////////////// // Rx:PBR && TxEAP(); WAIT_EAP_RESULT // 1ST_EAP==Unset && if (PBR.exist_avp // SEPARATE==Unset && ("Device-Id")) // PBR.RESULT_CODE== CARRY_DEVICE_ID=Set; // PANA_SUCCESS && // PANA_SA_RESUMED!=Set // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PBR); ev.Result_FirstEap(PANA_EAP_RESULT_UNSET); ev.Result_Eap(PANA_EAP_RESULT_SUCCESS); ev.AvpExist_EapPayload(); // implicit AddStateTableEntry(PANA_ST_WAIT_PAA, ev.Get(), PANA_ST_WAIT_EAP_RESULT, m_PacWaitPaaExitActionRxPBR); ///////////////////////////////////////////////////////////////// // Rx:PBR && TxEAP(); WAIT_EAP_RESULT_ // 1ST_EAP==Unset && CLOSE // SEPARATE==Unset && // PBR.RESULT_CODE!= // PANA_SUCCESS && // PBR.exist_avp // ("EAP-Payload") // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PBR); ev.Result_FirstEap(PANA_EAP_RESULT_UNSET); ev.Result_Eap(PANA_EAP_RESULT_FAIL); ev.AvpExist_EapPayload(); AddStateTableEntry(PANA_ST_WAIT_PAA, ev.Get(), PANA_ST_WAIT_EAP_RESULT_CLOSE, m_PacWaitPaaExitActionRxPBR); ///////////////////////////////////////////////////////////////// // Rx:PBR && alt_reject(); WAIT_EAP_RESULT_ // 1ST_EAP==Unset && CLOSE // SEPARATE==Unset && // PBR.RESULT_CODE!= // PANA_SUCCESS && // !PBR.exist_avp // ("EAP-Payload") // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PBR); ev.Result_FirstEap(PANA_EAP_RESULT_UNSET); ev.Result_Eap(PANA_EAP_RESULT_FAIL); AddStateTableEntry(PANA_ST_WAIT_PAA, ev.Get(), PANA_ST_WAIT_EAP_RESULT_CLOSE, m_PacWaitPaaExitActionRxPBR); ///////////////////////////////////////////////////////////////// // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - -(2nd EAP result) - - - - - - - - - // Rx:PBR && TxEAP(); WAIT_EAP_RESULT // 1ST_EAP==Success && if (PBR.exist_avp // PBR.RESULT_CODE== ("Device-Id")) // PANA_SUCCESS && CARRY_DEVICE_ID=Set; // PBR.exist_avp // ("EAP-Payload"); // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PBR); ev.Result_FirstEap(PANA_EAP_RESULT_SUCCESS); ev.Result_Eap(PANA_EAP_RESULT_SUCCESS); ev.AvpExist_EapPayload(); AddStateTableEntry(PANA_ST_WAIT_PAA, ev.Get(), PANA_ST_WAIT_EAP_RESULT, m_PacWaitPaaExitActionRxPBR); ///////////////////////////////////////////////////////////////// // Rx:PBR && alt_reject(); WAIT_EAP_RESULT // 1ST_EAP==Success && if (PBR.exist_avp // PBR.RESULT_CODE== ("Device-Id")) // PANA_SUCCESS && CARRY_DEVICE_ID=Set; // !PBR.exist_avp // ("EAP-Payload"); // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PBR); ev.Result_FirstEap(PANA_EAP_RESULT_SUCCESS); ev.Result_Eap(PANA_EAP_RESULT_SUCCESS); AddStateTableEntry(PANA_ST_WAIT_PAA, ev.Get(), PANA_ST_WAIT_EAP_RESULT, m_PacWaitPaaExitActionRxPBR); ///////////////////////////////////////////////////////////////// // Rx:PBR && TxEAP(); WAIT_EAP_RESULT_CLOSE // 1ST_EAP==Success && // PBR.RESULT_CODE!= // PANA_SUCCESS && // PBR.exist_avp // ("EAP-Payload") // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PBR); ev.Result_FirstEap(PANA_EAP_RESULT_SUCCESS); ev.Result_Eap(PANA_EAP_RESULT_FAIL); ev.AvpExist_EapPayload(); AddStateTableEntry(PANA_ST_WAIT_PAA, ev.Get(), PANA_ST_WAIT_EAP_RESULT_CLOSE, m_PacWaitPaaExitActionRxPBR); ///////////////////////////////////////////////////////////////// // Rx:PBR && alt_reject(); WAIT_EAP_RESULT // 1ST_EAP==Success && _CLOSE // PBR.RESULT_CODE!= // PANA_SUCCESS && // !PBR.exist_avp // ("EAP-Payload") // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PBR); ev.Result_FirstEap(PANA_EAP_RESULT_SUCCESS); ev.Result_Eap(PANA_EAP_RESULT_FAIL); AddStateTableEntry(PANA_ST_WAIT_PAA, ev.Get(), PANA_ST_WAIT_EAP_RESULT_CLOSE, m_PacWaitPaaExitActionRxPBR); ///////////////////////////////////////////////////////////////// // Rx:PBR && TxEAP(); WAIT_EAP_RESULT // 1ST_EAP==Failure && if (PBR.exist_avp // PBR.RESULT_CODE== ("Device-Id")) // PANA_SUCCESS CARRY_DEVICE_ID=Set; // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PBR); ev.Result_FirstEap(PANA_EAP_RESULT_FAIL); ev.Result_Eap(PANA_EAP_RESULT_SUCCESS); AddStateTableEntry(PANA_ST_WAIT_PAA, ev.Get(), PANA_ST_WAIT_EAP_RESULT, m_PacWaitPaaExitActionRxPBR); ///////////////////////////////////////////////////////////////// // Rx:PBR && TxEAP() WAIT_EAP_RESULT_ // 1ST_EAP==Failure && CLOSE // PBR.RESULT_CODE!= // PANA_SUCCESS && // PBR.exist_avp // ("EAP-Payload") // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PBR); ev.Result_FirstEap(PANA_EAP_RESULT_FAIL); ev.Result_Eap(PANA_EAP_RESULT_FAIL); ev.AvpExist_EapPayload(); AddStateTableEntry(PANA_ST_WAIT_PAA, ev.Get(), PANA_ST_WAIT_EAP_RESULT_CLOSE, m_PacWaitPaaExitActionRxPBR); ///////////////////////////////////////////////////////////////// // Rx:PBR && alt_reject() WAIT_EAP_RESULT_ // 1ST_EAP==Failure && CLOSE // PBR.RESULT_CODE!= // PANA_SUCCESS && // !PBR.exist_avp // ("EAP-Payload") // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PBR); ev.Result_FirstEap(PANA_EAP_RESULT_FAIL); ev.Result_Eap(PANA_EAP_RESULT_FAIL); AddStateTableEntry(PANA_ST_WAIT_PAA, ev.Get(), PANA_ST_WAIT_EAP_RESULT_CLOSE, m_PacWaitPaaExitActionRxPBR); ///////////////////////////////////////////////////////////////// // - - - - - - - (PBR processing with mobility support)- - - - - // Rx:PBR && PBA.insert_avp("Key-Id"); OPEN // 1ST_EAP==Unset && PBA.insert_avp("AUTH"); // SEPARATE==Unset && if (PBR.exist_avp // PBR.RESULT_CODE== ("Device-Id")) // PANA_SUCCESS && PBA.insert("Device-Id"); // PANA_SA_RESUMED==Set && Tx:PBA(); // PBR.exist_avp Authorize(); // ("Key-Id") && SessionTimerStart(); // PBR.exist_avp // ("AUTH") // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PBR); ev.Result_FirstEap(PANA_EAP_RESULT_UNSET); ev.Result_Eap(PANA_EAP_RESULT_SUCCESS); ev.Do_ResumeSession(); // PANA_SA_RESUMED==Set ev.AvpExist_KeyId(); ev.AvpExist_Auth(); AddStateTableEntry(PANA_ST_WAIT_PAA, ev.Get(), PANA_ST_OPEN, m_PacWaitPaaExitActionRxPBR); ///////////////////////////////////////////////////////////////// // - - - - - - (Reach maximum number of retransmission)- - - - - // RTX_TIMEOUT && Retransmit(); (no change) // RTX_COUNTER< // RTX_MAX_NUM // ev.Reset(); ev.Do_ReTransmission(); AddStateTableEntry(PANA_ST_WAIT_PAA, ev.Get(), PANA_ST_WAIT_PAA, m_PacExitActionRetransmission); ///////////////////////////////////////////////////////////////// // RTX_TIMEOUT && Disconnect(); CLOSED
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -