home *** CD-ROM | disk | FTP | other *** search
- /*++ BUILD Version: 0001 // Increment this if a change has global effects
-
- Copyright (c) 1992, Microsoft Corporation
-
- Module Name:
-
- snmp.h
-
- Abstract:
-
- Type definitions for SNMP Extension Agent Development.
-
-
- This PRE-RELEASE header file contains definitions that may change
- prior to the official release of Windows NT. Microsoft makes no
- warranty of any kind as to the suitability or correctness of this
- code.
-
-
- --*/
-
- #ifndef __SNMP_H
- #define __SNMP_H
-
- static char *snmp__h = "@(#) $Logfile: Y:/ADMIN/BC4RTL/RTLAPI/SNMP.H_V $ $Revision: 1.1 $";
-
-
- #ifndef __WINDOWS_H
- #include <windows.h>
- #endif
-
-
- //
- // SNMP API Constant Definitions
- //
-
- // Purely for code readability
- #define IN
- #define OUT
-
-
- // API return type
-
- #define SNMPAPI int
-
- #if (_MSC_VER >= 800) || defined(__BORLANDC__)
- #define SNMP_FUNC_TYPE __stdcall
- #else
- #define SNMP_FUNC_TYPE
- #endif
-
-
- // API return codes
- #define SNMPAPI_NOERROR TRUE
- #define SNMPAPI_ERROR FALSE
-
-
- // class field of BER tag
- #define ASN_UNIVERSAL 0x00
- #define ASN_APPLICATION 0x40
- #define ASN_CONTEXTSPECIFIC 0x80
- #define ASN_PRIVATE 0xC0
-
- // primative/constructed field of BER tag
- #define ASN_PRIMATIVE 0x00
- #define ASN_CONSTRUCTOR 0x20
-
-
- // 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)
-
-
- // PDU error status
- #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
-
-
- // PDU generic traps
- #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
-
-
-
- //
- // SNMP Error codes
- //
-
- // General error codes
- #define SNMP_MEM_ALLOC_ERROR 1
-
- // BER API error codes (using Get/Set LastError)
- #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 Codes
- #define SNMP_PDUAPI_UNRECOGNIZED_PDU 20
- #define SNMP_PDUAPI_INVALID_ES 21
- #define SNMP_PDUAPI_INVALID_GT 22
-
- // AUTHENTICATION API Error Codes
- #define SNMP_AUTHAPI_INVALID_VERSION 30
- #define SNMP_AUTHAPI_INVALID_MSG_TYPE 31
- #define SNMP_AUTHAPI_TRIV_AUTH_FAILED 32
-
-
-
- //
- // SNMP API Type Definitions
- //
-
- typedef long AsnInteger;
- typedef struct {
- BYTE *stream;
- UINT length;
- BOOL dynamic;
- } AsnOctetString;
- typedef struct {
- UINT idLength;
- UINT *ids;
- } AsnObjectIdentifier;
-
- typedef AsnOctetString AsnSequence;
- typedef AsnSequence AsnImplicitSequence;
-
- typedef AsnOctetString AsnIPAddress;
- typedef AsnOctetString AsnDisplayString;
- typedef DWORD AsnCounter;
- typedef DWORD AsnGauge;
- typedef DWORD AsnTimeticks;
- typedef AsnOctetString AsnOpaque;
-
- typedef struct {
- BYTE asnType;
- union {
- // RFC 1155 SimpleSyntax (subset of ISO ASN.1)
- AsnInteger number;
- AsnOctetString string;
- AsnObjectIdentifier object;
-
- // ISO ASN.1
- AsnSequence sequence;
-
- // RFC 1155 ApplicationSyntax
- AsnIPAddress address;
- AsnCounter counter;
- AsnGauge gauge;
- AsnTimeticks ticks;
- AsnOpaque arbitrary;
- } asnValue;
- } AsnAny;
-
- typedef AsnObjectIdentifier AsnObjectName;
- typedef AsnAny AsnObjectSyntax;
- typedef AsnIPAddress AsnNetworkAddress;
-
- typedef struct vb {
- AsnObjectName name;
- AsnObjectSyntax value;
- } RFC1157VarBind;
-
- typedef struct {
- RFC1157VarBind *list;
- UINT len;
- } RFC1157VarBindList;
-
- typedef struct {
- RFC1157VarBindList varBinds;
- AsnInteger requestType;
- AsnInteger requestId;
- AsnInteger errorStatus;
- AsnInteger errorIndex;
- } RFC1157Pdu;
-
- typedef struct {
- RFC1157VarBindList varBinds;
- AsnObjectIdentifier enterprise;
- AsnNetworkAddress agentAddr;
- AsnInteger genericTrap;
- AsnInteger specificTrap;
- AsnTimeticks timeStamp;
- } RFC1157TrapPdu;
-
- typedef struct {
- BYTE pduType;
- union {
- RFC1157Pdu pdu;
- RFC1157TrapPdu trap;
- } pduValue;
- } RFC1157Pdus;
-
- typedef struct {
- AsnObjectIdentifier dstParty;
- AsnObjectIdentifier srcParty;
- RFC1157Pdus pdu;
- AsnOctetString community; // This is temporary
- } SnmpMgmtCom;
-
-
-
- //
- // SNMP Utility Prototypes
- //
-
-
- // Preferred names for the APIs, prototypes following may change in future.
-
- #define SnmpUtilOidCpy(a,b) SNMP_oidcpy(a,b)
- #define SnmpUtilOidAppend(a,b) SNMP_oidappend(a,b)
- #define SnmpUtilOidNCmp(a,b,c) SNMP_oidncmp(a,b,c)
- #define SnmpUtilOidCmp(a,b) SNMP_oidcmp(a,b)
- #define SnmpUtilOidFree(a) SNMP_oidfree(a)
-
- #define SnmpUtilVarBindListCpy(a,b) SNMP_CopyVarBindList(a,b)
- #define SnmpUtilVarBindCpy(a,b) SNMP_CopyVarBind(a,b)
- #define SnmpUtilVarBindListFree(a) SNMP_FreeVarBindList(a)
- #define SnmpUtilVarBindFree(a) SNMP_FreeVarBind(a)
-
- #define SnmpUtilPrintAsnAny(a) SNMP_printany(a)
-
- #ifdef SNMPDBG
- #define SNMP_free(x) SNMP_DBG_free(x, __LINE__, __FILE__)
- #define SNMP_malloc(x) SNMP_DBG_malloc(x, __LINE__, __FILE__)
- #define SNMP_realloc(x, y) SNMP_DBG_realloc(x, y, __LINE__, __FILE__)
- #else
- #define SNMP_free(x) free(x)
- #define SNMP_malloc(x) malloc(x)
- #define SNMP_realloc(x, y) realloc(x, y)
- #endif
-
- void
- SNMP_FUNC_TYPE SNMP_DBG_free(
- IN void *x,
- IN int line,
- IN char *file
- );
-
- void *
- SNMP_FUNC_TYPE SNMP_DBG_malloc(
- IN unsigned int x,
- IN int line,
- IN char *file
- );
-
- void *
- SNMP_FUNC_TYPE SNMP_DBG_realloc(
- IN void *x,
- IN unsigned int y,
- IN int line,
- IN char *file
- );
-
- SNMPAPI
- SNMP_FUNC_TYPE SNMP_oidcpy(
- OUT AsnObjectIdentifier *DestObjId, // Destination OID
- IN AsnObjectIdentifier *SrcObjId // Source OID
- );
-
- SNMPAPI
- SNMP_FUNC_TYPE SNMP_oidappend(
- IN OUT AsnObjectIdentifier *DestObjId, // Destination OID
- IN AsnObjectIdentifier *SrcObjId // Source OID
- );
-
- SNMPAPI
- SNMP_FUNC_TYPE SNMP_oidncmp(
- IN AsnObjectIdentifier *A, // First OID
- IN AsnObjectIdentifier *B, // Second OID
- IN UINT Len // Max len to compare
- );
-
- #define SNMP_oidcmp(A,B) SNMP_oidncmp(A,B,max((A)->idLength,(B)->idLength))
-
- void
- SNMP_FUNC_TYPE SNMP_oidfree(
- IN OUT AsnObjectIdentifier *Obj // OID to free
- );
-
- SNMPAPI
- SNMP_FUNC_TYPE SNMP_CopyVarBindList(
- RFC1157VarBindList *dst, // Destination var bind list
- RFC1157VarBindList *src // Source var bind list
- );
-
- SNMPAPI
- SNMP_FUNC_TYPE SNMP_CopyVarBind(
- RFC1157VarBind *dst, // Destination var bind
- RFC1157VarBind *src // Source var bind
- );
-
-
- void
- SNMP_FUNC_TYPE SNMP_FreeVarBindList(
- RFC1157VarBindList *VarBindList // Variable bindings list to free
- );
-
- void
- SNMP_FUNC_TYPE SNMP_FreeVarBind(
- RFC1157VarBind *VarBind // Variable binding to free
- );
-
-
- void
- SNMP_FUNC_TYPE SNMP_printany(
- IN AsnAny *Any
- );
-
-
- #endif /* snmp_h */
-
-