00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef __PANA_PAA_H__
00035 #define __PANA_PAA_H__
00036
00037 #include "pana_exports.h"
00038 #include "pana_session.h"
00039 #include "pana_provider_info.h"
00040
00041 class PANA_EXPORT PANA_PaaEventInterface : public PANA_SessionEventInterface
00042 {
00043 public:
00044 virtual void EapStart(bool separate) = 0;
00045 virtual void EapResponse(AAAMessageBlock *request, bool separate) = 0;
00046 };
00047
00048 class PANA_EXPORT PANA_Paa : public PANA_Session
00049 {
00050 public:
00051 PANA_Paa(PANA_SessionTxInterface &tp,
00052 PANA_SessionTimerInterface &tm,
00053 PANA_PaaEventInterface &ev) :
00054 PANA_Session(tp, tm, ev) { }
00055 virtual ~PANA_Paa() { }
00056
00057 virtual void ReceiveDiscover();
00058 virtual void ReceiveStartAnswer();
00059 virtual void ReceiveEapResponse();
00060 virtual void ReceiveEapReAuth();
00061 virtual void Receive2ndEapStart();
00062 virtual void ReceiveBindAnswer();
00063
00064 virtual void RetryBindRequest();
00065
00066 virtual void SendStartRequest(AAAMessageBlock *request,
00067 PANA_PINFO type = PANA_PINFO_NONE);
00068 virtual void SendEapRequest(AAAMessageBlock *request,
00069 PANA_PINFO type = PANA_PINFO_NONE);
00070 virtual void SendBindRequest(AAAMessageBlock *request,
00071 ACE_UINT32 resultCode);
00072
00073 virtual void SendEapMessage(AAAMessageBlock *request,
00074 PANA_PINFO type = PANA_PINFO_NONE) {
00075 (m_InStatefulDiscovery) ? SendStartRequest(request) :
00076 SendEapRequest(request, type);
00077 }
00078
00079 void MSK(diameter_octetstring_t &m) {
00080 m_SA.MSK(m, m_InitialPacTsec, m_InitialPaaTsec);
00081 m_SA.KeyId(m_SA.KeyId() + 1);
00082 }
00083
00084 static void ValidateCookie(PANA_Message &psa) throw(PANA_Exception);
00085
00086 private:
00087 virtual void DestinationAddressFormatting(PANA_Message &msg,
00088 AAAMessageBlock *eapPayload = NULL);
00089 };
00090
00091 #endif
00092