⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diameter_nasreq_client_fsm.hxx

📁 Diameter协议栈
💻 HXX
📖 第 1 页 / 共 2 页
字号:
/* BEGIN_COPYRIGHT                                                        *//*                                                                        *//* Open Diameter: Open-source software for the Diameter and               *//*                Diameter related protocols                              *//*                                                                        *//* Copyright (C) 2002-2004 Open Diameter Project                          *//*                                                                        *//* This library is free software; you can redistribute it and/or modify   *//* it under the terms of the GNU Lesser General Public License as         *//* published by the Free Software Foundation; either version 2.1 of the   *//* License, or (at your option) any later version.                        *//*                                                                        *//* This library is distributed in the hope that it will be useful,        *//* but WITHOUT ANY WARRANTY; without even the implied warranty of         *//* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU      *//* Lesser General Public License for more details.                        *//*                                                                        *//* You should have received a copy of the GNU Lesser General Public       *//* License along with this library; if not, write to the Free Software    *//* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307    *//* USA.                                                                   *//*                                                                        *//* In addition, when you copy and redistribute some or the entire part of *//* the source code of this software with or without modification, you     *//* MUST include this copyright notice in each copy.                       *//*                                                                        *//* If you make any changes that are appeared to be useful, please send    *//* sources that include the changed part to                               *//* diameter-developers@lists.sourceforge.net so that we can reflect your  *//* changes to one unified version of this software.                       *//*                                                                        *//* END_COPYRIGHT                                                          *//* $Id: *//*    diameter_nasreq_client_fsm.hxx   Client Statemachine definition for Diameter NASREQ Application    Written by Yoshihiro Ohba   Created May 1, 2004.*/#ifndef __NASREQ_CLIENT_FSM_H__#define __NASREQ_CLIENT_FSM_H__#include "framework.h"#include "diameter_nasreq_parser.hxx"#include "diameter_nasreq_authinfo.hxx"/*! * Windows specific export declarations */#ifdef WIN32   #if defined(DIAMETER_NASREQ_CLIENT_EXPORT)       #define DIAMETER_NASREQ_CLIENT_EXPORTS __declspec(dllexport)   #else       #define DIAMETER_NASREQ_CLIENT_EXPORTS __declspec(dllimport)   #endif#else   #define DIAMETER_NASREQ_CLIENT_EXPORTS   #define DIAMETER_NASREQ_CLIENT_EXPORTS#endiftypedef AAA_JobHandle<AAA_GroupedJob> DiameterJobHandle;class DiameterNasreqClientSession;/// State machine for Diameter NASREQ clients.  It has many member/// functions for enforcement of attributes (i.e., EnforceXYZ) and /// for setting attributes (i.e., SetXYX).  Arguments of enforcement/// functions are not enveloped with AAA_ScholorAttribute or/// AAA_VectorAttributes since they are intended to be unmodified.class DIAMETER_NASREQ_CLIENT_EXPORTS DiameterNasreqClientStateMachine   : public AAA_StateMachine<DiameterNasreqClientStateMachine>,    public AAA_EventQueueJob{  friend class DiameterJobMultiplexor; public:  /// Constructor.  DiameterNasreqClientStateMachine(DiameterNasreqClientSession& s,				   DiameterJobHandle &h);  ~DiameterNasreqClientStateMachine()   {    handle.Job().Remove(this);   }  enum {    //    EvSgStartLocalMethod,    EvSgStart=-1,    EvRxAuthInfo=-2,    EvRxAA_Answer=-3,    EvSgSessionTimeout=-4,    EvSgAuthLifetimeTimeout=-5,    EvSgAuthGracePeriodTimeout=-6,    EvSgTimeout=-7,    EvSgDisconnect=-8  };  /// Store an event and notify the session.  inline void Notify(AAA_Event ev) {    // Enqueue the event.    if (AAA_EventQueueJob::Enqueue(ev) <= 0)      Abort();    if (handle.Job().Schedule(this) < 0)      Abort();  }  inline DiameterNasreqClientSession& Session() { return session; }  /// This is used for aborting the state machine.  Usually called  /// when Notify() fails.  virtual void Abort()=0;  /// This is used for constructing and sending a AA-Request.  void SendAA_Request();  /// This virtual function is called when a continuation of the  /// authentication is signaled to the application.  virtual void SignalContinue(DiameterNasreqAuthenticationInfo &authInfo)=0;  /// This virtual function is called when an authentication success  /// is signaled to the application.  virtual void SignalSuccess()=0;  /// This virtual function is called when an authentication failure  /// is signaled to the application.  virtual void SignalFailure()=0;  /// This is called by the application when authentication info is  /// passed to the NAS.  void ForwardAuthenticationInfo  (DiameterNasreqAuthenticationInfo &authenticationInfo);  /// This virtual function is called when the current authorization  /// lifetime is expired.  XXX: this should also be called when an Re-Auth  /// Request is received from the server.  virtual void SignalReauthentication()=0;  /// This virtual function is called when the session lifetime or the  /// auth grace period is expired, or a disconect event is received  /// from libdiameter.  virtual void SignalDisconnect()=0;  inline AAA_JobData& JobData() { return *handle.Job().Data(); }  template <class T> inline T& JobData(Type2Type<T>)   { return (T&)*handle.Job().Data(); }  // Insert-AVP member functions.  /// This function is used for setting Destination-Realm AVP  /// contents.    virtual void SetDestinationRealm  (AAA_ScholarAttribute<diameter_utf8string_t> &destinationRealm)  {  }  /// This function is used for setting Destination-Host AVP  /// contents.    virtual void SetDestinationHost  (AAA_ScholarAttribute<diameter_utf8string_t> &destinationHost)  {  }  /// This function is used for setting Auth-Request-Type AVP  /// contents.  AUTH_REQUEST_TYPE_AUTHORIZE_AUTHENTICATE is set by  /// default.  virtual void SetAuthRequestType  (AAA_ScholarAttribute<diameter_enumerated_t> &authRequestType)  {    authRequestType = AUTH_REQUEST_TYPE_AUTHORIZE_AUTHENTICATE;  }  /// This function is used for setting Nas-Identifier AVP contents.    virtual void SetNasIdentifier  (AAA_ScholarAttribute<diameter_utf8string_t> &nasIdentifier)  {  }  /// This function is used for setting Nas-IP-Address AVP contents.    virtual void SetNasIpAddress  (AAA_ScholarAttribute<diameter_octetstring_t> &nasIpAddress)  {  }  /// This function is used for setting Nas-IPv6-Address AVP contents.    virtual void SetNasIpv6Address  (AAA_ScholarAttribute<diameter_octetstring_t> &nasIpv6Address)  {  }  /// This function is used for setting Nas-Port AVP contents.    virtual void SetNasPort  (AAA_ScholarAttribute<diameter_unsigned32_t> &nasPort)  {  }  /// This function is used for setting Nas-Port-Type AVP contents.    virtual void SetNasPortType  (AAA_ScholarAttribute<diameter_enumerated_t> &nasPortType)  {  }  /// This function is used for setting Nas-Port-Id AVP contents.    virtual void SetNasPortId  (AAA_ScholarAttribute<diameter_utf8string_t> &nasPortId)  {  }  /// This function is used for setting Origin-State-Id AVP contents.    virtual void SetOriginStateId  (AAA_ScholarAttribute<diameter_unsigned32_t> &originStateId)  {  }  /// This function is used for setting Port-Limit AVP contents.    virtual void SetPortLimit  (AAA_ScholarAttribute<diameter_unsigned32_t> &portLimit)  {  }  /// This function is used for setting Service-Type AVP contents.  virtual void  SetServiceType(AAA_ScholarAttribute<diameter_enumerated_t> &serviceType)  {  }  /// This function is used for setting State AVP contents.  virtual void  SetState(AAA_ScholarAttribute<diameter_octetstring_t> &state)  {  }  /// This function is used for setting Authorization-Lifetime AVP  /// contents.  virtual void  SetAuthorizationLifetime  (AAA_ScholarAttribute<diameter_unsigned32_t> &authorizationLifetime)  {  }  /// This function is used for setting Auth-Grace-Period AVP  /// contents.  virtual void  SetAuthGracePeriod  (AAA_ScholarAttribute<diameter_unsigned32_t> &authGracePeriod)  {  }  /// This function is used for setting Auth-Session-State AVP  /// contents.  virtual void  SetAuthSessionState  (AAA_ScholarAttribute<diameter_enumerated_t> &authSessionState)  {  }  /// This function is used for setting Callback-Number AVP contents.  virtual void SetCallbackNumber  (AAA_ScholarAttribute<diameter_utf8string_t> &callbackNumber)  {  }  /// This function is used for setting Called-Station-Id AVP  /// contents.  virtual void SetCalledStationId  (AAA_ScholarAttribute<diameter_utf8string_t> &calledStationId)  {  }  /// This function is used for setting Called-Station-Id AVP  /// contents.  virtual void SetCallingStationId  (AAA_ScholarAttribute<diameter_utf8string_t> &callingStationId)  {  }  /// This function is used for setting Originating-Line-Info AVP  /// contents.  virtual void SetOriginatingLineInfo  (AAA_ScholarAttribute<diameter_octetstring_t> &originatingLineInfo)  {  }  /// This function is used for setting Connect-Info AVP contents.  virtual void SetConnectInfo  (AAA_ScholarAttribute<diameter_utf8string_t> &connectInfo)  {  }  /// This function is used for setting Framed-Compression AVP  /// contents.  virtual void SetFramedCompression  (AAA_VectorAttribute<diameter_enumerated_t> &framedCompression)  {  }  /// This function is used for setting Framed-Interface-Id AVP  /// contents.  virtual void SetFramedInterfaceId  (AAA_ScholarAttribute<diameter_unsigned64_t> &framedInterfaceId)  {  }  /// This function is used for setting Framed-IP-Address AVP  /// contents.  virtual void SetFramedIpAddress  (AAA_ScholarAttribute<diameter_octetstring_t> &framedIpAddress)  {  }  /// This function is used for setting Framed-IPv6-Prefix AVP  /// contents.  virtual void SetFramedIpv6Prefix  (AAA_VectorAttribute<diameter_octetstring_t> &framedIpv6Prefix)  {  }  /// This function is used for setting Framed-IP-Netmask AVP  /// contents.  virtual void SetFramedIpNetmask  (AAA_ScholarAttribute<diameter_octetstring_t> &framedIpNetmask)  {  }  /// This function is used for setting Framed-MTU AVP contents.  virtual void SetFramedMtu  (AAA_ScholarAttribute<diameter_unsigned32_t> &framedMtu)  {  }  /// This function is used for setting Framed-Protocol AVP contents.  virtual void SetFramedProtocol  (AAA_ScholarAttribute<diameter_enumerated_t> &framedProtocol)  {  }  /// This function is used for setting Login-IP-Host AVP contents.  virtual void SetLoginIpHost  (AAA_VectorAttribute<diameter_octetstring_t> &loginIpHost)  {  }  /// This function is used for setting Login-IPv6-Host AVP contents.  virtual void SetLoginIpv6Host  (AAA_VectorAttribute<diameter_octetstring_t> &loginIpv6Host)  {  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -