|
|
//***************************************************************************
//
// File:
//
// Module: MS SNMP Provider
//
// Purpose:
//
// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
//
//***************************************************************************
/*-------------------------------------------------------
filename: encdec.hpp author: B.Rajeev purpose: Provides declarations for the class PseudoSession. -------------------------------------------------------*/
#ifndef __ENCODE_DECODE__
#define __ENCODE_DECODE__
#include "forward.h"
#include "error.h"
#define IP_ADDR_LEN 4
#define ILLEGAL_REQUEST_ID 0
typedef long RequestId;
class DllImportExport SnmpEncodeDecode { friend VBList; friend SnmpImpTransport; friend SnmpImpSession; friend SnmpCommunityBasedSecurity; friend SnmpClassLibrary; friend TransportWindow;
protected:
BOOL m_IsValid;
void *m_Session; void *m_Window ;
static CriticalSection s_CriticalSection;
void *GetWinSnmpSession () { return m_Session ; }
virtual void SetTranslateMode () = 0 ;
static BOOL DestroyStaticComponents () ; static BOOL InitializeStaticComponents () ;
public:
enum PduType {GET, GETNEXT, SET, GETBULK, RESPONSE, TRAP, V1TRAP, INFORM, UNKNOWN };
SnmpEncodeDecode ();
virtual BOOL EncodeFrame (
OUT SnmpPdu &a_SnmpPdu , IN RequestId a_RequestId, IN PduType a_PduType, IN SnmpErrorReport &a_SnmpErrorReport , IN SnmpVarBindList &a_SnmpVarBindList, IN SnmpCommunityBasedSecurity *&a_SnmpCommunityBasedSecuity , IN SnmpTransportAddress *&a_SrcTransportAddress , IN SnmpTransportAddress *&a_DstTransportAddress ) ;
virtual BOOL EncodeFrame (
IN SnmpPdu &a_SnmpPdu , OUT void *a_ImplementationEncoding
) ;
virtual BOOL SetVarBindList (
IN SnmpPdu &a_SnmpPdu , OUT SnmpVarBindList &a_SnmpVarBindList
) ;
virtual BOOL SetCommunityName (
IN SnmpPdu &a_SnmpPdu , IN SnmpCommunityBasedSecurity &a_SnmpCommunityBasedSecurity ) ;
virtual BOOL SetErrorReport (
IN SnmpPdu &a_SnmpPdu , OUT SnmpErrorReport &a_SnmpErrorReport
) ;
virtual BOOL SetPduType (
IN SnmpPdu &a_SnmpPdu , OUT PduType a_PduType
) ;
virtual BOOL SetSourceAddress (
IN OUT SnmpPdu &a_SnmpPdu , IN SnmpTransportAddress &a_TransportAddress
) ;
virtual BOOL SetDestinationAddress (
IN OUT SnmpPdu &a_SnmpPdu , IN SnmpTransportAddress &a_TransportAddress
) ;
virtual BOOL SetRequestId (
IN OUT SnmpPdu &a_SnmpPdu , IN RequestId request_id
) ;
virtual BOOL DecodeFrame (
IN SnmpPdu &a_SnmpPdu , OUT RequestId a_RequestId, OUT PduType a_PduType , OUT SnmpErrorReport &a_SnmpErrorReport , OUT SnmpVarBindList *&a_SnmpVarBindList , OUT SnmpCommunityBasedSecurity *&a_SnmpCommunityBasedSecurity , OUT SnmpTransportAddress *&a_SrcTransportAddress , OUT SnmpTransportAddress *&a_DstTransportAddress
) ;
virtual BOOL DecodeFrame (
IN void *a_ImplementationEncoding , OUT SnmpPdu &a_SnmpPdu ) ;
virtual BOOL GetPduType (
IN SnmpPdu &a_SnmpPdu , OUT PduType &a_PduType
) ;
virtual BOOL GetRequestId (
IN SnmpPdu &a_SnmpPdu , RequestId &a_RequestId
) ;
virtual BOOL GetErrorReport (
IN SnmpPdu &a_SnmpPdu , OUT SnmpErrorReport &a_SnmpErrorReport
) ;
virtual BOOL GetCommunityName (
IN SnmpPdu &a_SnmpPdu , OUT SnmpCommunityBasedSecurity &a_SnmpCommunityBasedSecurity ) ;
virtual BOOL GetVarbindList (
IN SnmpPdu &a_SnmpPdu , OUT SnmpVarBindList &a_SnmpVarBindList
) ;
virtual BOOL GetSourceAddress (
IN SnmpPdu &a_SnmpPdu , SnmpTransportAddress *&a_TransportAddress
) ;
virtual BOOL GetDestinationAddress (
IN SnmpPdu &a_SnmpPdu , SnmpTransportAddress *&a_TransportAddress
) ;
virtual void *operator()() const { return ( m_IsValid ? (void *) this: NULL ); }
virtual ~SnmpEncodeDecode (); };
class DllImportExport SnmpV1EncodeDecode : public SnmpEncodeDecode { friend VBList; friend SnmpImpTransport; friend SnmpImpSession; friend SnmpCommunityBasedSecurity;
private:
void InitializeVariables();
protected:
void SetTranslateMode () ; public:
SnmpV1EncodeDecode () ; ~SnmpV1EncodeDecode (); };
class DllImportExport SnmpV2CEncodeDecode : public SnmpEncodeDecode { private:
// initializes the pdu
void InitializeVariables();
protected:
void SetTranslateMode () ;
public:
SnmpV2CEncodeDecode () ; ~SnmpV2CEncodeDecode (); };
#endif // __ENCODE_DECODE__
|