/*++ Copyright (C) 1992 - 1996 Microsoft Corporation Module Name: snmputil.h Abstract: Definitions for SNMP Extension Agent development (internal). --*/ #ifndef _INC_SNMPUTIL #define _INC_SNMPUTIL /////////////////////////////////////////////////////////////////////////////// // // // Additional header files // // // /////////////////////////////////////////////////////////////////////////////// #include #ifdef __cplusplus extern "C" { #endif /////////////////////////////////////////////////////////////////////////////// // // // AUTH API type definitions // // // /////////////////////////////////////////////////////////////////////////////// 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; } SnmpMgmtCom; /////////////////////////////////////////////////////////////////////////////// // // // AUTH API prototypes // // // /////////////////////////////////////////////////////////////////////////////// SNMPAPI SNMP_FUNC_TYPE SnmpSvcEncodeMessage( IN UINT snmpAuthType, IN SnmpMgmtCom * snmpMgmtCom, IN OUT BYTE ** pBuffer, IN OUT UINT * nLength ); SNMPAPI SNMP_FUNC_TYPE SnmpSvcDecodeMessage( OUT UINT * snmpAuthType, OUT SnmpMgmtCom * snmpMgmtCom, IN BYTE * pBuffer, IN UINT nLength, IN BOOL fAuthMsg ); SNMPAPI SNMP_FUNC_TYPE SnmpSvcReleaseMessage( IN OUT SnmpMgmtCom * snmpMgmtCom ); /////////////////////////////////////////////////////////////////////////////// // // // Internal utility prototypes (publish via snmp.h as needed) // // // /////////////////////////////////////////////////////////////////////////////// VOID SNMP_FUNC_TYPE SnmpUtilPrintOid( IN AsnObjectIdentifier *Oid ); LPSTR SNMP_FUNC_TYPE SnmpUtilOidToA( IN AsnObjectIdentifier *Oid ); LPSTR SNMP_FUNC_TYPE SnmpUtilIdsToA( IN UINT *Ids, IN UINT IdLength ); LONG SNMP_FUNC_TYPE SnmpUtilUnicodeToAnsi( LPSTR *ansi_string, LPWSTR uni_string, BOOLEAN alloc_it ); LONG SNMP_FUNC_TYPE SnmpUtilUnicodeToUTF8( LPSTR *pUtfString, LPWSTR wcsString, BOOLEAN bAllocBuffer ); LONG SNMP_FUNC_TYPE SnmpUtilAnsiToUnicode( LPWSTR *uni_string, LPSTR ansi_string, BOOLEAN alloc_it ); LONG SNMP_FUNC_TYPE SnmpUtilUTF8ToUnicode( LPWSTR *pWcsString, LPSTR utfString, BOOLEAN bAllocBuffer ); /////////////////////////////////////////////////////////////////////////////// // // // Service utility prototypes (leave these unpublished) // // // /////////////////////////////////////////////////////////////////////////////// DWORD SNMP_FUNC_TYPE SnmpSvcInitUptime( ); DWORD SNMP_FUNC_TYPE SnmpSvcGetUptime( ); DWORD SNMP_FUNC_TYPE SnmpSvcGetUptimeFromTime( DWORD time ); SNMPAPI SNMP_FUNC_TYPE SnmpSvcGenerateTrap( IN AsnObjectIdentifier * enterprise, IN AsnInteger genericTrap, IN AsnInteger specificTrap, IN AsnTimeticks timeStamp, IN RFC1157VarBindList * variableBindings ); SNMPAPI SNMP_FUNC_TYPE SnmpSvcGenerateColdStartTrap( IN AsnInteger timeStamp ); SNMPAPI SNMP_FUNC_TYPE SnmpSvcGenerateWarmStartTrap( IN AsnInteger timeStamp ); SNMPAPI SNMP_FUNC_TYPE SnmpSvcGenerateLinkUpTrap( IN AsnInteger timeStamp, IN RFC1157VarBindList * variableBindings ); SNMPAPI SNMP_FUNC_TYPE SnmpSvcGenerateLinkDownTrap( IN AsnInteger timeStamp, IN RFC1157VarBindList * variableBindings ); SNMPAPI SNMP_FUNC_TYPE SnmpSvcGenerateAuthFailTrap( AsnInteger timeStamp ); VOID SNMP_FUNC_TYPE SnmpSvcReportEvent( IN DWORD nMsgId, IN DWORD cSubStrings, IN LPSTR *SubStrings, IN DWORD nErrorCode ); VOID SNMP_FUNC_TYPE SnmpSvcBufRevInPlace( IN OUT BYTE * pBuf, IN UINT nLen ); VOID SNMP_FUNC_TYPE SnmpSvcBufRevAndCpy( OUT BYTE * pDstBuf, IN BYTE * pSrcBuf, IN UINT nLen ); BOOL SNMP_FUNC_TYPE SnmpSvcAddrIsIpx( IN LPSTR addrText, OUT char pNetNum[], OUT char pNodeNum[] ); BOOL SNMP_FUNC_TYPE SnmpSvcAddrToSocket( IN LPSTR addrText, OUT struct sockaddr * addrEncoding ); AsnObjectIdentifier * SNMP_FUNC_TYPE SnmpSvcGetEnterpriseOID( ); /////////////////////////////////////////////////////////////////////////////// // // // SNMP debugging definitions // // // /////////////////////////////////////////////////////////////////////////////// #define SNMP_OUTPUT_TO_CONSOLE 0x1 #define SNMP_OUTPUT_TO_LOGFILE 0x2 #define SNMP_OUTPUT_TO_EVENTLOG 0x4 #define SNMP_OUTPUT_TO_DEBUGGER 0x8 /////////////////////////////////////////////////////////////////////////////// // // // SNMP debugging prototypes // // // /////////////////////////////////////////////////////////////////////////////// VOID SNMP_FUNC_TYPE SnmpSvcSetLogLevel( IN INT nLevel ); VOID SNMP_FUNC_TYPE SnmpSvcSetLogType( IN INT nOutput ); /////////////////////////////////////////////////////////////////////////////// // // // Miscellaneous definitions // // // /////////////////////////////////////////////////////////////////////////////// #define asn_t asnType #define asn_v asnValue #define asn_n asnValue.number #define asn_s asnValue.string #define asn_sl asnValue.string.length #define asn_ss asnValue.string.stream #define asn_sd asnValue.string.dynamic #define asn_o asnValue.object #define asn_ol asnValue.object.idLength #define asn_oi asnValue.object.ids #define asn_l asnValue.sequence #define asn_a asnValue.address #define asn_c asnValue.counter #define asn_g asnValue.gauge #define asn_tt asnValue.timeticks #define asn_x asnValue.arbitrary /////////////////////////////////////////////////////////////////////////////// // // // Support for old definitions (support disabled via SNMPSTRICT) // // // /////////////////////////////////////////////////////////////////////////////// #ifndef SNMPSTRICT #define dbgprintf SnmpUtilDbgPrint #define SNMP_oiddisp SnmpUtilPrintOid #define SNMP_oidtoa SnmpUtilOidToA #define SNMP_oidtoa2 SnmpUtilIdsToA #define SNMP_bufrev SnmpUtilBufRevInPlace #define SNMP_bufcpyrev SnmpUtilBufRevAndCpy #define addrtosocket SnmpUtilAddrToSocket #define isIPX SnmpUtilAddrIsIpx #define DBGCONSOLEBASEDLOG SNMP_OUTPUT_TO_CONSOLE #define DBGFILEBASEDLOG SNMP_OUTPUT_TO_LOGFILE #define DBGEVENTLOGBASEDLOG SNMP_OUTPUT_TO_EVENTLOG #endif // SNMPSTRICT #ifdef __cplusplus } #endif #endif // _INC_SNMPUTIL