📄 pana_paa_fsm.cxx
字号:
#if !defined(PANA_DEBUG) AddWildcardStateTableEntry(PANA_ST_WAIT_FAIL_PFEA, PANA_ST_WAIT_FAIL_PFEA);#endif // -------------------- // State: WAIT_SUCC_PBA // -------------------- ///////////////////////////////////////////////////////////////// // - - - - - - - - - - - - - (PBA Processing)- - - - - - - - - - - // Rx:PBA && SessionTimerStart(); OPEN // (CARRY_DEVICE_ID==Unset || // (CARRY_DEVICE_ID==Set && // PBA.exit_avp("Device-Id"))) // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PBA); AddStateTableEntry(PANA_ST_WAIT_SUCC_PBA, ev.Get(), PANA_ST_OPEN, m_PaaExitActionRxPBASuccess); ///////////////////////////////////////////////////////////////// // Rx:PBA && PER.RESULT_CODE= WAIT_PEA // CARRY_DEVICE_ID==Set && PANA_MISSING_AVP // !PBA.exit_avp Tx:PER(); // ("Device-Id") RtxTimerStart(); // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PBA); ev.Do_MissingId(); // CARRY_DEVICE_ID==Set && // !PBA.exit_avp // ("Device-Id") AddStateTableEntry(PANA_ST_WAIT_SUCC_PBA, ev.Get(), PANA_ST_WAIT_PEA, m_PaaExitActionTxPERMissingAvp); ///////////////////////////////////////////////////////////////// // RTX_TIMEOUT && Disconnect(); CLOSED // RTX_COUNTER>= // RTX_MAX_NUM // ev.Reset(); ev.Do_RetryTimeout(); AddStateTableEntry(PANA_ST_WAIT_SUCC_PBA, 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_SUCC_PBA, ev.Get(), PANA_ST_WAIT_SUCC_PBA, 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_SUCC_PBA, 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_SUCC_PBA, ev.Get(), PANA_ST_WAIT_SUCC_PBA, m_PaaExitActionTxPEA); ///////////////////////////////////////////////////////////////// // - - - - - - - - - - (Catch all processing)- - - - - - - - - - //#if !defined(PANA_DEBUG) AddWildcardStateTableEntry(PANA_ST_WAIT_SUCC_PBA, PANA_ST_WAIT_SUCC_PBA);#endif // -------------------- // State: WAIT_FAIL_PBA // -------------------- ///////////////////////////////////////////////////////////////// // - - - - - - - - - - - - - - (PBA Processing)- - - - - - - - - - // Rx:PBA RtxTimerStop(); CLOSED // Disconnect(); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PBA); AddStateTableEntry(PANA_ST_WAIT_FAIL_PBA, ev.Get(), PANA_ST_CLOSED, m_PaaExitActionRxPBAFail); ///////////////////////////////////////////////////////////////// // RTX_TIMEOUT && Disconnect(); CLOSED // RTX_COUNTER>= // RTX_MAX_NUM // ev.Reset(); ev.Do_RetryTimeout(); AddStateTableEntry(PANA_ST_WAIT_FAIL_PBA, 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_PBA, ev.Get(), PANA_ST_WAIT_FAIL_PBA, 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_PBA, 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_PBA, ev.Get(), PANA_ST_WAIT_FAIL_PBA, m_PaaExitActionTxPEA); ///////////////////////////////////////////////////////////////// // - - - - - - - - - - (Catch all processing)- - //#if !defined(PANA_DEBUG) AddWildcardStateTableEntry(PANA_ST_WAIT_FAIL_PBA, PANA_ST_WAIT_FAIL_PBA);#endif // ----------- // State: OPEN // ----------- ///////////////////////////////////////////////////////////////// // - - - - - - - - - - - (re-authentication initiated by PaC) - - // Rx:PRAR if (key_available()) WAIT_EAP_MSG // PRAA.insert_avp("AUTH"); // EAP_Restart(); // 1ST_EAP=Unset; // NAP_AUTH=Set|Unset; // Tx:PRAA(); // SessionTimerStop(); // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PRAR); AddStateTableEntry(PANA_ST_OPEN, ev.Get(), PANA_ST_WAIT_EAP_MSG, m_PaaOpenExitActionRxPRAR); ///////////////////////////////////////////////////////////////// // - - - - - - (re-authentication initiated by PAA) - - - - - - // REAUTH EAP_Restart(); WAIT_EAP_MSG // 1ST_EAP=Unset; // NAP_AUTH=Set|Unset; // SessionTimerStop(); // ev.Reset(); ev.Event_App(PANA_EV_APP_REAUTH); AddStateTableEntry(PANA_ST_OPEN, ev.Get(), PANA_ST_WAIT_EAP_MSG, m_PaaOpenExitActionReAuth); ///////////////////////////////////////////////////////////////// // - - (liveness test based on PPR-PPA exchange initiated by PAA)- // PANA_PING Tx:PPR(); WAIT_PPA // RtxTimerStart(); // ev.Reset(); ev.Event_App(PANA_EV_APP_PING); AddStateTableEntry(PANA_ST_OPEN, ev.Get(), PANA_ST_WAIT_PAA, m_PaaOpenExitActionTxPPR); ///////////////////////////////////////////////////////////////// // - - - - - - - - (liveness test based initiated by PAA)- - - - - - // Rx:PPR if (key_available()) OPEN // PPA.insert_avp("AUTH"); // Tx:PPA(); // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PPR); AddStateTableEntry(PANA_ST_OPEN, ev.Get(), PANA_ST_OPEN, m_PaaOpenExitActionRxPPR); ///////////////////////////////////////////////////////////////// // - - - - - - - - (Session termination initated from PAA) - - - - // TERMINATE if (key_available()) SESS_TERM // PTR.insert_avp("AUTH"); // Tx:PTR(); // RtxTimerStart(); // ev.Reset(); ev.Event_App(PANA_EV_APP_TERMINATE); AddStateTableEntry(PANA_ST_OPEN, ev.Get(), PANA_ST_SESS_TERM, m_PaaOpenExitActionTxPTR); ///////////////////////////////////////////////////////////////// // - - - - - - - - (Session termination initated from PaC) - - - - // Rx:PTR if (key_available()) CLOSED // PTA.insert_avp("AUTH"); // Tx:PTA(); // Disconnect(); // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PTR); AddStateTableEntry(PANA_ST_OPEN, ev.Get(), PANA_ST_CLOSED, m_PaaOpenExitActionRxPTR); ///////////////////////////////////////////////////////////////// // - - - - - - - - - -(Notification message) - - - - - - - - - - // NOTIFY if (key_available()) WAIT_PUA // PUR.insert_avp("AUTH"); // Tx:PUR(); // RtxTimerStart(); // ev.Reset(); ev.Event_App(PANA_EV_APP_NOTIFICATION); AddStateTableEntry(PANA_ST_OPEN, ev.Get(), PANA_ST_WAIT_PUA, m_PaaOpenExitActionTxPUR); ///////////////////////////////////////////////////////////////// // - - - - - - - -(Notification/Address update) - - - - - - - - // Rx:PUR If (key_avaialble()) OPEN // PUA.insert_avp("AUTH"); // Tx:PUA(); // if (new_source_address()) // update_popa(); // ev.Reset(); ev.MsgType(PANA_EV_MTYPE_PUR); AddStateTableEntry(PANA_ST_OPEN, ev.Get(), PANA_ST_OPEN, m_PaaOpenExitActionRxPUR); ///////////////////////////////////////////////////////////////// // SESS_TIMEOUT Disconnect(); CLOSED // ev.Reset(); ev.Do_SessTimeout(); AddStateTableEntry(PANA_ST_OPEN, ev.Get(), PANA_ST_CLOSED, m_PaaExitActionTimeout); ///////////////////////////////////////////////////////////////// // RTX_TIMEOUT && Disconnect(); CLOSED // RTX_COUNTER>= // RTX_MAX_NUM // ev.Reset(); ev.Do_RetryTimeout(); AddStateTableEntry(PANA_ST_OPEN, 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_OPEN, ev.Get(), PANA_ST_OPEN, m_PaaExitActionRetransmission);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -