2025-04-27 07:49:33 -04:00

375 lines
6.9 KiB
C++

//***************************************************************************
//
// 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 };
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 BOOL EncodePduFrame (
OUT SnmpPdu &a_SnmpPdu ,
IN RequestId a_RequestId,
IN PduType a_PduType,
IN SnmpErrorReport &a_SnmpErrorReport ,
IN SnmpCommunityBasedSecurity &a_SnmpCommunityBasedSecuity ,
IN SnmpVarBindList &a_SnmpVarBindList,
IN SnmpTransportAddress &a_SrcTransportAddress ,
IN SnmpTransportAddress &a_DstTransportAddress
) ;
virtual BOOL SetPduVarBindList (
IN SnmpPdu &a_SnmpPdu ,
OUT SnmpVarBindList &a_SnmpVarBindList
) ;
virtual BOOL SetPduCommunityName (
IN SnmpPdu &a_SnmpPdu ,
IN SnmpCommunityBasedSecurity &a_SnmpCommunityBasedSecurity
) ;
virtual BOOL SetPduErrorReport (
IN SnmpPdu &a_SnmpPdu ,
OUT SnmpErrorReport &a_SnmpErrorReport
) ;
virtual BOOL SetPduPduType (
IN SnmpPdu &a_SnmpPdu ,
OUT PduType a_PduType
) ;
virtual BOOL SetPduSourceAddress (
IN OUT SnmpPdu &a_SnmpPdu ,
IN SnmpTransportAddress &a_TransportAddress
) ;
virtual BOOL SetPduDestinationAddress (
IN OUT SnmpPdu &a_SnmpPdu ,
IN SnmpTransportAddress &a_TransportAddress
) ;
virtual BOOL SetPduRequestId (
IN OUT SnmpPdu &a_SnmpPdu ,
IN RequestId request_id
) ;
virtual BOOL DecodePduFrame (
IN SnmpPdu &a_SnmpPdu ,
OUT RequestId a_RequestId,
OUT PduType a_PduType ,
OUT SnmpErrorReport &a_SnmpErrorReport ,
OUT SnmpCommunityBasedSecurity &a_SnmpCommunityBasedSecurity ,
OUT SnmpVarBindList &a_SnmpVarBindList ,
OUT SnmpTransportAddress *&a_SrcTransportAddress ,
OUT SnmpTransportAddress *&a_DstTransportAddress
) ;
virtual BOOL GetPduPduType (
IN SnmpPdu &a_SnmpPdu ,
OUT PduType &a_PduType
) ;
virtual BOOL GetPduRequestId (
IN SnmpPdu &a_SnmpPdu ,
RequestId &a_RequestId
) ;
virtual BOOL GetPduErrorReport (
IN SnmpPdu &a_SnmpPdu ,
OUT SnmpErrorReport &a_SnmpErrorReport
) ;
virtual BOOL GetPduCommunityName (
IN SnmpPdu &a_SnmpPdu ,
OUT SnmpCommunityBasedSecurity &a_SnmpCommunityBasedSecurity
) ;
virtual BOOL GetPduVarbindList (
IN SnmpPdu &a_SnmpPdu ,
OUT SnmpVarBindList &a_SnmpVarBindList
) ;
virtual BOOL GetPduSourceAddress (
IN SnmpPdu &a_SnmpPdu ,
SnmpTransportAddress *&a_TransportAddress
) ;
virtual BOOL GetPduDestinationAddress (
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__