📄 pana_paa_fsm.h
字号:
p.TxPFER(PANA_AUTHENTICATION_REJECTED, PANA_Paa::EAP_TIMEOUT); } }; class PaaExitActionTxPER : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.TxPER(PANA_UNABLE_TO_COMPLY); } }; class PaaExitActionTxPERMissingAvp : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.TxPER(PANA_MISSING_AVP); } }; class PaaExitActionTxPEA : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.TxPEA(); } }; class PaaExitActionRxPER : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.RxPER(); } }; class PaaWaitPEAExitActionRxPEA : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.RxPEA(true); } }; class PaaWaitPFEAExitActionRxPFEASuccess : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.RxPFEA(true); } }; class PaaWaitPFEAExitActionRxPFEAFail : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.RxPFEA(false); } }; class PaaExitActionRxPBASuccess : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.RxPBA(true); } }; class PaaExitActionRxPBAFail : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.RxPBA(false); } }; class PaaOpenExitActionRxPPR : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.RxPPR(); } }; class PaaOpenExitActionRxPRAR : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.RxPRAR(); } }; class PaaOpenExitActionReAuth : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.NotifyEapReAuth(); } }; class PaaOpenExitActionTxPPR : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.TxPPR(); } }; class PaaOpenExitActionTxPTR : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.TxPTR(PANA_TERMCAUSE_ADMINISTRATIVE); } }; class PaaOpenExitActionRxPTR : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.RxPTR(); } }; class PaaOpenExitActionTxPUR : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.TxPUR(); } }; class PaaWaitPUAExitActionRxPUA : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.RxPUA(); } }; class PaaOpenExitActionRxPUR : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.RxPUR(); } }; class PaaWaitPaaExitActionRxPPA : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.RxPPA(); } }; class PaaWaitPANExitActionRxPAN : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.RxPAN(); } }; class PaaWaitPANExitActionRxPAR : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.RxPAR(); } }; class PaaSessExitActionRxPTA : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.Disconnect(); } }; class PaaExitActionRxPEA : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.RxPEA(false); } }; class PaaExitActionTimeout : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p) { p.Disconnect(PANA_TERMCAUSE_SESSION_TIMEOUT); } }; class PaaExitActionRetransmission : public AAA_Action<PANA_Paa> { virtual void operator()(PANA_Paa &p); }; typedef AAA_NullAction<PANA_Paa> PaaNullAction; PANA_PaaStateTable(); private: PaaExitActionPaaEapRestart m_PaaExitActionPaaEapRestart; PaaExitActionTxPSR m_PaaExitActionTxPSR; PaaExitActionRxPSA m_PaaExitActionRxPSA; PaaExitActionEapTimeout m_PaaExitActionEapTimeout; PaaExitActionTxPAR m_PaaExitActionTxPAR; PaaExitActionTxPBREapSuccess m_PaaExitActionTxPBREapSuccess; PaaExitActionTxPBREapFail m_PaaExitActionTxPBREapFail; PaaExitActionTxPBREapFailSuccess m_PaaExitActionTxPBREapFailSuccess; PaaExitActionTxPBREapTimeout m_PaaExitActionTxPBREapTimeout; PaaExitActionTxPBREapTimeoutSuccess m_PaaExitActionTxPBREapTimeoutSuccess; PaaExitActionTxPFEREapSuccess m_PaaExitActionTxPFEREapSuccess; PaaExitActionTxPBREapSuccessFail m_PaaExitActionTxPBREapSuccessFail; PaaExitActionTxPFEREapFail m_PaaExitActionTxPFEREapFail; PaaExitActionTxPFEREapTimeout m_PaaExitActionTxPFEREapTimeout; PaaExitActionTxPER m_PaaExitActionTxPER; PaaExitActionTxPERMissingAvp m_PaaExitActionTxPERMissingAvp; PaaExitActionTxPEA m_PaaExitActionTxPEA; PaaExitActionRxPER m_PaaExitActionRxPER; PaaWaitPEAExitActionRxPEA m_PaaWaitPEAExitActionRxPEA; PaaWaitPFEAExitActionRxPFEASuccess m_PaaWaitPFEAExitActionRxPFEASuccess; PaaWaitPFEAExitActionRxPFEAFail m_PaaWaitPFEAExitActionRxPFEAFail; PaaExitActionRxPBASuccess m_PaaExitActionRxPBASuccess; PaaExitActionRxPBAFail m_PaaExitActionRxPBAFail; PaaOpenExitActionRxPPR m_PaaOpenExitActionRxPPR; PaaOpenExitActionRxPRAR m_PaaOpenExitActionRxPRAR; PaaOpenExitActionReAuth m_PaaOpenExitActionReAuth; PaaOpenExitActionTxPPR m_PaaOpenExitActionTxPPR; PaaOpenExitActionTxPTR m_PaaOpenExitActionTxPTR; PaaOpenExitActionRxPTR m_PaaOpenExitActionRxPTR; PaaOpenExitActionTxPUR m_PaaOpenExitActionTxPUR; PaaOpenExitActionRxPUR m_PaaOpenExitActionRxPUR; PaaWaitPUAExitActionRxPUA m_PaaWaitPUAExitActionRxPUA; PaaWaitPaaExitActionRxPPA m_PaaWaitPaaExitActionRxPPA; PaaWaitPANExitActionRxPAN m_PaaWaitPANExitActionRxPAN; PaaWaitPANExitActionRxPAR m_PaaWaitPANExitActionRxPAR; PaaSessExitActionRxPTA m_PaaSessExitActionRxPTA; PaaExitActionRxPEA m_PaaExitActionRxPEA; PaaExitActionTimeout m_PaaExitActionTimeout; PaaExitActionRetransmission m_PaaExitActionRetransmission;};class PANA_EXPORT PANA_PaaSessionChannel{ public: PANA_PaaSessionChannel(PANA_Node &n) : m_Node(n), m_UdpChannel(n.Job(), "PAA Channel") { char strAddr[256]; ACE_OS::sprintf(strAddr, "%s:%d", PANA_CFG_PAA().m_McastAddress.data(), PANA_CFG_GENERAL().m_ListenPort); ACE_INET_Addr mcastAddr(strAddr); m_UdpChannel.Open(mcastAddr); } ~PANA_PaaSessionChannel() { m_UdpChannel.Close(); } PANA_Node &Node() { return m_Node; } PANA_ListenerChannel &UdpChannel() { return m_UdpChannel; } void RegisterHandler(OD_Utl_CbFunction1<PANA_Message&> &h) { m_UdpChannel.RegisterHandler(h); } void RemoveHandler() { m_UdpChannel.RemoveHandler(); } protected: PANA_Node &m_Node; PANA_ListenerChannel m_UdpChannel;};class PANA_PaaSessionFactory;class PANA_EXPORT PANA_PaaSession : public PANA_StateMachine<PANA_Paa, PANA_ListenerChannel>{ private: friend class PANA_PaaSessionFactory; public: PANA_PaaSession(PANA_PaaSessionChannel &ch, PANA_PaaEventInterface &eif) : PANA_StateMachine<PANA_Paa, PANA_ListenerChannel> (m_PAA, m_StateTable, ch.Node(), ch.UdpChannel()), m_Timer(*this), m_PAA(m_TxChannel, m_Timer, eif) { InitializeMsgMaps(); PANA_StateMachine<PANA_Paa, PANA_ListenerChannel>::Start(); } virtual ~PANA_PaaSession() { PANA_StateMachine<PANA_Paa, PANA_ListenerChannel>::Stop(); FlushMsgMaps(); } virtual void Start() throw (AAA_Error) { } virtual void EapSendRequest(AAAMessageBlock *req); virtual void EapInvalidMessage(); virtual void EapSuccess(AAAMessageBlock *req = 0); virtual void EapFailure(AAAMessageBlock *req = 0); virtual void EapTimeout(); virtual void EapReAuthenticate(); virtual void SendNotification(std::string &message); virtual void Ping(); virtual void Stop(); PANA_CfgProviderInfo &PreferedISP() { return m_PAA.PreferedISP(); } PANA_CfgProviderInfo &PreferedNAP() { return m_PAA.PreferedNAP(); } bool &EnableDhcpBootstrap() { return m_PAA.DhcpBootstrap().Enable(); } std::string &SessionId() { return m_PAA.SessionId(); } PANA_DeviceId &PeerDeviceId() { return m_PAA.PacDeviceId(); } private: void InitializeMsgMaps(); void FlushMsgMaps(); static PANA_PaaStateTable m_StateTable; FsmTimer<PANA_PaaEventVariable, PANA_PaaSession> m_Timer; PANA_Paa m_PAA;};typedef OD_Utl_DbaseTree<std::string, PANA_PaaSession> PANA_SessionDb;typedef ACE_Singleton<PANA_SessionDb, ACE_Recursive_Thread_Mutex> PANA_SessionDb_S;#define PANA_SESSIONDB() PANA_SessionDb_S::instance()#define PANA_SESSIONDB_ADD(x, y) PANA_SessionDb_S::instance()->Add((x), (y))#define PANA_SESSIONDB_DEL(x, y) PANA_SessionDb_S::instance()->Remove((x), (y))#define PANA_SESSIONDB_SEARCH(x) PANA_SessionDb_S::instance()->Search((x))#endif /* __PANA_PAA_FSM_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -