home *** CD-ROM | disk | FTP | other *** search
- /*++
-
- Copyright (C) 1992-1996 Microsoft Corporation
-
- Module Name:
-
- snmp.h
-
- Abstract:
-
- Definitions for SNMP Extension Agent development.
-
- --*/
-
- #ifndef _INC_SNMP
- #define _INC_SNMP
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // Additional header files //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- #include <windows.h>
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // SNMP API return type definitions //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- #define SNMPAPI INT
- #define SNMP_FUNC_TYPE WINAPI
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // SNMP API return code definitions //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- #define SNMPAPI_NOERROR TRUE
- #define SNMPAPI_ERROR FALSE
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // SNMP API error code definitions //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- #define SNMP_MEM_ALLOC_ERROR 1
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // BER API error code definitions //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- #define SNMP_BERAPI_INVALID_LENGTH 10
- #define SNMP_BERAPI_INVALID_TAG 11
- #define SNMP_BERAPI_OVERFLOW 12
- #define SNMP_BERAPI_SHORT_BUFFER 13
- #define SNMP_BERAPI_INVALID_OBJELEM 14
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // PDU API error code definitions //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- #define SNMP_PDUAPI_UNRECOGNIZED_PDU 20
- #define SNMP_PDUAPI_INVALID_ES 21
- #define SNMP_PDUAPI_INVALID_GT 22
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // AUTH API error code definitions //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- #define SNMP_AUTHAPI_INVALID_VERSION 30
- #define SNMP_AUTHAPI_INVALID_MSG_TYPE 31
- #define SNMP_AUTHAPI_TRIV_AUTH_FAILED 32
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // SNMP PDU error status definitions //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- #define SNMP_ERRORSTATUS_NOERROR 0
- #define SNMP_ERRORSTATUS_TOOBIG 1
- #define SNMP_ERRORSTATUS_NOSUCHNAME 2
- #define SNMP_ERRORSTATUS_BADVALUE 3
- #define SNMP_ERRORSTATUS_READONLY 4
- #define SNMP_ERRORSTATUS_GENERR 5
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // SNMP PDU generic trap definitions //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- #define SNMP_GENERICTRAP_COLDSTART 0
- #define SNMP_GENERICTRAP_WARMSTART 1
- #define SNMP_GENERICTRAP_LINKDOWN 2
- #define SNMP_GENERICTRAP_LINKUP 3
- #define SNMP_GENERICTRAP_AUTHFAILURE 4
- #define SNMP_GENERICTRAP_EGPNEIGHLOSS 5
- #define SNMP_GENERICTRAP_ENTERSPECIFIC 6
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // BER encoding definitions //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- #define ASN_UNIVERSAL 0x00
- #define ASN_APPLICATION 0x40
- #define ASN_CONTEXTSPECIFIC 0x80
- #define ASN_PRIVATE 0xC0
-
- #define ASN_PRIMATIVE 0x00
- #define ASN_CONSTRUCTOR 0x20
-
- //
- // For BER tags with a number ranging from 0 to 30 (inclusive), the
- // identifier octets consists of a single octet encoded as follows:
- //
- // 7 6 5 4 3 2 1 0
- // +---+-+---------+
- // |Cls|P| Tag Num |
- // +---+-+---------+
- //
- // where
- //
- // Cls - is the class of the tag
- //
- // 00 - universal
- // 01 - application
- // 10 - context-specific
- // 11 - private
- //
- // P - indicates whether encoding is primitive
- //
- // 0 - primitive
- // 1 - constructed
- //
- // Tag Num - is the number of the tag
- //
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // ASN.1 simple types //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- #define ASN_INTEGER (ASN_UNIVERSAL|ASN_PRIMATIVE|0x02)
- #define ASN_OCTETSTRING (ASN_UNIVERSAL|ASN_PRIMATIVE|0x04)
- #define ASN_NULL (ASN_UNIVERSAL|ASN_PRIMATIVE|0x05)
- #define ASN_OBJECTIDENTIFIER (ASN_UNIVERSAL|ASN_PRIMATIVE|0x06)
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // ASN.1 constructor types //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- #define ASN_SEQUENCE (ASN_UNIVERSAL|ASN_CONSTRUCTOR|0x10)
- #define ASN_SEQUENCEOF ASN_SEQUENCE
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // ASN.1 application specific primatives //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- #define ASN_RFC1155_IPADDRESS (ASN_APPLICATION|ASN_PRIMATIVE|0x00)
- #define ASN_RFC1155_COUNTER (ASN_APPLICATION|ASN_PRIMATIVE|0x01)
- #define ASN_RFC1155_GAUGE (ASN_APPLICATION|ASN_PRIMATIVE|0x02)
- #define ASN_RFC1155_TIMETICKS (ASN_APPLICATION|ASN_PRIMATIVE|0x03)
- #define ASN_RFC1155_OPAQUE (ASN_APPLICATION|ASN_PRIMATIVE|0x04)
- #define ASN_RFC1213_DISPSTRING ASN_OCTETSTRING
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // ASN.1 application specific constructors //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- #define ASN_RFC1157_GETREQUEST (ASN_CONTEXTSPECIFIC|ASN_CONSTRUCTOR|0x00)
- #define ASN_RFC1157_GETNEXTREQUEST (ASN_CONTEXTSPECIFIC|ASN_CONSTRUCTOR|0x01)
- #define ASN_RFC1157_GETRESPONSE (ASN_CONTEXTSPECIFIC|ASN_CONSTRUCTOR|0x02)
- #define ASN_RFC1157_SETREQUEST (ASN_CONTEXTSPECIFIC|ASN_CONSTRUCTOR|0x03)
- #define ASN_RFC1157_TRAP (ASN_CONTEXTSPECIFIC|ASN_CONSTRUCTOR|0x04)
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // SNMP ASN type definitions //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- typedef struct {
- BYTE * stream; // pointer to octet stream
- UINT length; // number of octets in stream
- BOOL dynamic; // true if octets must be freed
- } AsnOctetString;
-
- typedef struct {
- UINT idLength; // number of integers in oid
- UINT * ids; // pointer to integer stream
- } AsnObjectIdentifier;
-
- typedef LONG AsnInteger;
- typedef DWORD AsnCounter;
- typedef DWORD AsnGauge;
- typedef DWORD AsnTimeticks;
-
- typedef AsnOctetString AsnSequence;
- typedef AsnOctetString AsnImplicitSequence;
- typedef AsnOctetString AsnIPAddress;
- typedef AsnOctetString AsnDisplayString;
- typedef AsnOctetString AsnOpaque;
-
- typedef AsnObjectIdentifier AsnObjectName;
- typedef AsnIPAddress AsnNetworkAddress;
-
- typedef struct {
- BYTE asnType;
- union {
- AsnInteger number;
- AsnOctetString string;
- AsnObjectIdentifier object;
- AsnSequence sequence;
- AsnIPAddress address;
- AsnCounter counter;
- AsnGauge gauge;
- AsnTimeticks ticks;
- AsnOpaque arbitrary;
- } asnValue;
- } AsnAny;
-
- typedef AsnAny AsnObjectSyntax;
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // SNMP API type definitions //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- typedef struct vb {
- AsnObjectName name; // variable's object identifer
- AsnObjectSyntax value; // variable's value (in asn terms)
- } RFC1157VarBind;
-
- typedef struct {
- RFC1157VarBind * list; // array of variable bindings
- UINT len; // number of bindings in array
- } RFC1157VarBindList;
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // SNMP API prototypes //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- SNMPAPI
- SNMP_FUNC_TYPE
- SnmpUtilOidCpy(
- OUT AsnObjectIdentifier *DstObjId,
- IN AsnObjectIdentifier *SrcObjId
- );
-
- SNMPAPI
- SNMP_FUNC_TYPE
- SnmpUtilOidAppend(
- IN OUT AsnObjectIdentifier *DstObjId,
- IN AsnObjectIdentifier *SrcObjId
- );
-
- SNMPAPI
- SNMP_FUNC_TYPE
- SnmpUtilOidNCmp(
- IN AsnObjectIdentifier *ObjIdA,
- IN AsnObjectIdentifier *ObjIdB,
- IN UINT Len
- );
-
- SNMPAPI
- SNMP_FUNC_TYPE
- SnmpUtilOidCmp(
- IN AsnObjectIdentifier *ObjIdA,
- IN AsnObjectIdentifier *ObjIdB
- );
-
- VOID
- SNMP_FUNC_TYPE
- SnmpUtilOidFree(
- IN OUT AsnObjectIdentifier *ObjId
- );
-
- SNMPAPI
- SNMP_FUNC_TYPE
- SnmpUtilVarBindListCpy(
- OUT RFC1157VarBindList *DstVarBindList,
- IN RFC1157VarBindList *SrcVarBindList
- );
-
- SNMPAPI
- SNMP_FUNC_TYPE
- SnmpUtilVarBindCpy(
- OUT RFC1157VarBind *DstVarBind,
- IN RFC1157VarBind *SrcVarBind
- );
-
- VOID
- SNMP_FUNC_TYPE
- SnmpUtilVarBindListFree(
- IN OUT RFC1157VarBindList *VarBindList
- );
-
- VOID
- SNMP_FUNC_TYPE
- SnmpUtilVarBindFree(
- IN OUT RFC1157VarBind *VarBind
- );
-
- VOID
- SNMP_FUNC_TYPE
- SnmpUtilPrintAsnAny(
- IN AsnAny *Any
- );
-
- VOID
- SNMP_FUNC_TYPE
- SnmpUtilMemFree(
- IN OUT LPVOID Addr
- );
-
- LPVOID
- SNMP_FUNC_TYPE
- SnmpUtilMemAlloc(
- IN UINT Size
- );
-
- LPVOID
- SNMP_FUNC_TYPE
- SnmpUtilMemReAlloc(
- IN LPVOID Addr,
- IN UINT NewSize
- );
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // SNMP debugging definitions //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- #define SNMP_LOG_SILENT 0x0
- #define SNMP_LOG_FATAL 0x1
- #define SNMP_LOG_ERROR 0x2
- #define SNMP_LOG_WARNING 0x3
- #define SNMP_LOG_TRACE 0x4
- #define SNMP_LOG_VERBOSE 0x5
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // SNMP debugging prototypes //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- VOID
- SNMP_FUNC_TYPE
- SnmpUtilDbgPrint(
- IN INT nLogLevel, // see log levels above...
- IN LPSTR szFormat,
- IN ...
- );
-
- #if DBG
- #define SNMPDBG(_x_) SnmpUtilDbgPrint _x_
- #else
- #define SNMPDBG(_x_)
- #endif
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // Miscellaneous definitions //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- #define SNMP_MAX_OID_LEN 0x7f00 // max number of elements in oid
-
- ///////////////////////////////////////////////////////////////////////////////
- // //
- // Support for old definitions (support disabled via SNMPSTRICT) //
- // //
- ///////////////////////////////////////////////////////////////////////////////
-
- #ifndef SNMPSTRICT
-
- #define SNMP_oidcpy SnmpUtilOidCpy
- #define SNMP_oidappend SnmpUtilOidAppend
- #define SNMP_oidncmp SnmpUtilOidNCmp
- #define SNMP_oidcmp SnmpUtilOidCmp
- #define SNMP_oidfree SnmpUtilOidFree
-
- #define SNMP_CopyVarBindList SnmpUtilVarBindListCpy
- #define SNMP_FreeVarBindList SnmpUtilVarBindListFree
- #define SNMP_CopyVarBind SnmpUtilVarBindCpy
- #define SNMP_FreeVarBind SnmpUtilVarBindFree
-
- #define SNMP_printany SnmpUtilPrintAsnAny
-
- #define SNMP_free SnmpUtilMemFree
- #define SNMP_malloc SnmpUtilMemAlloc
- #define SNMP_realloc SnmpUtilMemReAlloc
-
- #define SNMP_DBG_free SnmpUtilMemFree
- #define SNMP_DBG_malloc SnmpUtilMemAlloc
- #define SNMP_DBG_realloc SnmpUtilMemReAlloc
-
- #endif // SNMPSTRICT
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif // _INC_SNMP
-