1 /* 2 * This file is a copy of the header file <snmp.h> from the MinGW project. 3 * The licensing for the Win32 API is defined in the 4 * MinGW file README.w32api, which states: 5 6 "Unless otherwise stated in individual source files, 7 8 THIS SOFTWARE IS NOT COPYRIGHTED 9 10 This source code is offered for use in the public domain. You may use, 11 modify or distribute it freely. 12 13 This source code is distributed in the hope that it will be useful but 14 WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 15 DISCLAIMED. This includes but is not limited to warranties of 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 17 18 */ 19 20 /* 21 snmp.h - Header file for the Windows SNMP API 22 23 Written by Filip Navara <xnavara@volny.cz> 24 25 References (2003-08-25): 26 http://msdn.microsoft.com/library/en-us/snmp/snmp/snmp_reference.asp 27 28 This library is distributed in the hope that it will be useful, 29 but WITHOUT ANY WARRANTY; without even the implied warranty of 30 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 31 */ 32 33 #ifndef _SNMP_H 34 #define _SNMP_H 35 #if __GNUC__ >= 3 36 #pragma GCC system_header 37 #endif 38 39 #ifndef _WINDOWS_H 40 #include <windows.h> 41 #endif 42 43 #include <pshpack4.h> 44 45 #ifndef WINSNMPAPI 46 #define WINSNMPAPI WINAPI 47 #endif 48 49 #ifdef __cplusplus 50 extern "C" { 51 #endif 52 53 #define DEFAULT_SNMP_PORT_UDP 161 54 #define DEFAULT_SNMP_PORT_IPX 36879 55 #define DEFAULT_SNMPTRAP_PORT_UDP 162 56 #define DEFAULT_SNMPTRAP_PORT_IPX 36880 57 #ifndef _SNMP_ASN_DEFINED 58 #define _SNMP_ASN_DEFINED 59 #define MS_ASN_UNIVERSAL 0x00 60 #define MS_ASN_PRIMITIVE 0x00 61 #define MS_ASN_CONSTRUCTOR 0x20 62 #define MS_ASN_APPLICATION 0x40 63 #define MS_ASN_CONTEXT 0x80 64 #define MS_ASN_PRIVATE 0xC0 65 #define SNMP_PDU_GET (ASN_CONTEXT | MS_ASN_CONSTRUCTOR | 0) 66 #define SNMP_PDU_GETNEXT (ASN_CONTEXT | MS_ASN_CONSTRUCTOR | 1) 67 #define SNMP_PDU_RESPONSE (ASN_CONTEXT | MS_ASN_CONSTRUCTOR | 2) 68 #define SNMP_PDU_SET (ASN_CONTEXT | MS_ASN_CONSTRUCTOR | 3) 69 #define SNMP_PDU_GETBULK (ASN_CONTEXT | MS_ASN_CONSTRUCTOR | 4) 70 #define SNMP_PDU_V1TRAP (ASN_CONTEXT | MS_ASN_CONSTRUCTOR | 4) 71 #define SNMP_PDU_INFORM (ASN_CONTEXT | MS_ASN_CONSTRUCTOR | 6) 72 #define SNMP_PDU_TRAP (ASN_CONTEXT | MS_ASN_CONSTRUCTOR | 7) 73 #define SNMP_PDU_REPORT (ASN_CONTEXT | MS_ASN_CONSTRUCTOR | 8) 74 #endif /* _SNMP_ASN_DEFINED */ 75 #define MS_ASN_INTEGER (ASN_UNIVERSAL | MS_ASN_PRIMITIVE | 2) 76 #define MS_ASN_BITS (ASN_UNIVERSAL | MS_ASN_PRIMITIVE | 3) 77 #define MS_ASN_OCTETSTRING (ASN_UNIVERSAL | MS_ASN_PRIMITIVE | 4) 78 #define MS_ASN_NULL (ASN_UNIVERSAL | MS_ASN_PRIMITIVE | 5) 79 #define MS_ASN_OBJECTIDENTIFIER (ASN_UNIVERSAL | MS_ASN_PRIMITIVE | 6) 80 #define MS_ASN_INTEGER32 ASN_INTEGER 81 #define MS_ASN_SEQUENCE (ASN_UNIVERSAL | MS_ASN_CONSTRUCTOR | 0x10) 82 #define MS_ASN_SEQUENCEOF ASN_SEQUENCE 83 #define MS_ASN_IPADDRESS (ASN_APPLICATION | MS_ASN_PRIMITIVE | 0x00) 84 #define MS_ASN_COUNTER32 (ASN_APPLICATION | MS_ASN_PRIMITIVE | 0x01) 85 #define MS_ASN_GAUGE32 (ASN_APPLICATION | MS_ASN_PRIMITIVE | 0x02) 86 #define MS_ASN_TIMETICKS (ASN_APPLICATION | MS_ASN_PRIMITIVE | 0x03) 87 #define MS_ASN_OPAQUE (ASN_APPLICATION | MS_ASN_PRIMITIVE | 0x04) 88 #define MS_ASN_COUNTER64 (ASN_APPLICATION | MS_ASN_PRIMITIVE | 0x06) 89 #define MS_ASN_UNSIGNED32 (ASN_APPLICATION | MS_ASN_PRIMITIVE | 0x07) 90 #define SNMP_EXCEPTION_NOSUCHOBJECT (ASN_CONTEXT | MS_ASN_PRIMITIVE | 0x00) 91 #define SNMP_EXCEPTION_NOSUCHINSTANCE (ASN_CONTEXT | MS_ASN_PRIMITIVE | 0x01) 92 #define SNMP_EXCEPTION_ENDOFMIBVIEW (ASN_CONTEXT | MS_ASN_PRIMITIVE | 0x02) 93 #define SNMP_EXTENSION_GET SNMP_PDU_GET 94 #define SNMP_EXTENSION_GET_NEXT SNMP_PDU_GETNEXT 95 #define SNMP_EXTENSION_GET_BULK SNMP_PDU_GETBULK 96 #define SNMP_EXTENSION_SET_TEST (ASN_PRIVATE | MS_ASN_CONSTRUCTOR | 0x0) 97 #define SNMP_EXTENSION_SET_COMMIT SNMP_PDU_SET 98 #define SNMP_EXTENSION_SET_UNDO (ASN_PRIVATE | MS_ASN_CONSTRUCTOR | 0x1) 99 #define SNMP_EXTENSION_SET_CLEANUP (ASN_PRIVATE | MS_ASN_CONSTRUCTOR | 0x2) 100 #define SNMP_ERRORSTATUS_NOERROR 0 101 #define SNMP_ERRORSTATUS_TOOBIG 1 102 #define SNMP_ERRORSTATUS_NOSUCHNAME 2 103 #define SNMP_ERRORSTATUS_BADVALUE 3 104 #define SNMP_ERRORSTATUS_READONLY 4 105 #define SNMP_ERRORSTATUS_GENERR 5 106 #define SNMP_ERRORSTATUS_NOACCESS 6 107 #define SNMP_ERRORSTATUS_WRONGTYPE 7 108 #define SNMP_ERRORSTATUS_WRONGLENGTH 8 109 #define SNMP_ERRORSTATUS_WRONGENCODING 9 110 #define SNMP_ERRORSTATUS_WRONGVALUE 10 111 #define SNMP_ERRORSTATUS_NOCREATION 11 112 #define SNMP_ERRORSTATUS_INCONSISTENTVALUE 12 113 #define SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE 13 114 #define SNMP_ERRORSTATUS_COMMITFAILED 14 115 #define SNMP_ERRORSTATUS_UNDOFAILED 15 116 #define SNMP_ERRORSTATUS_AUTHORIZATIONERROR 16 117 #define SNMP_ERRORSTATUS_NOTWRITABLE 17 118 #define SNMP_ERRORSTATUS_INCONSISTENTNAME 18 119 #define SNMP_GENERICTRAP_COLDSTART 0 120 #define SNMP_GENERICTRAP_WARMSTART 1 121 #define SNMP_GENERICTRAP_LINKDOWN 2 122 #define SNMP_GENERICTRAP_LINKUP 3 123 #define SNMP_GENERICTRAP_AUTHFAILURE 4 124 #define SNMP_GENERICTRAP_EGPNEIGHLOSS 5 125 #define SNMP_GENERICTRAP_ENTERSPECIFIC 6 126 #define SNMP_ACCESS_NONE 0 127 #define SNMP_ACCESS_NOTIFY 1 128 #define SNMP_ACCESS_READ_ONLY 2 129 #define SNMP_ACCESS_READ_WRITE 3 130 #define SNMP_ACCESS_READ_CREATE 4 131 #define SNMPAPI_ERROR FALSE 132 #define SNMPAPI_NOERROR TRUE 133 #define SNMP_LOG_SILENT 0 134 #define SNMP_LOG_FATAL 1 135 #define SNMP_LOG_ERROR 2 136 #define SNMP_LOG_WARNING 3 137 #define SNMP_LOG_TRACE 4 138 #define SNMP_LOG_VERBOSE 5 139 #define SNMP_OUTPUT_TO_CONSOLE 1 140 #define SNMP_OUTPUT_TO_LOGFILE 2 141 #define SNMP_OUTPUT_TO_EVENTLOG 4 142 #define SNMP_OUTPUT_TO_DEBUGGER 8 143 #define SNMP_MAX_OID_LEN 128 144 #define SNMP_MEM_ALLOC_ERROR 1 145 #define SNMP_BERAPI_INVALID_LENGTH 10 146 #define SNMP_BERAPI_INVALID_TAG 11 147 #define SNMP_BERAPI_OVERFLOW 12 148 #define SNMP_BERAPI_SHORT_BUFFER 13 149 #define SNMP_BERAPI_INVALID_OBJELEM 14 150 #define SNMP_PDUAPI_UNRECOGNIZED_PDU 20 151 #define SNMP_PDUAPI_INVALID_ES 21 152 #define SNMP_PDUAPI_INVALID_GT 22 153 #define SNMP_AUTHAPI_INVALID_VERSION 30 154 #define SNMP_AUTHAPI_INVALID_MSG_TYPE 31 155 #define SNMP_AUTHAPI_TRIV_AUTH_FAILED 32 156 157 #ifndef RC_INVOKED 158 159 typedef INT SNMPAPI; 160 typedef LONG AsnInteger32; 161 typedef ULONG AsnUnsigned32; 162 typedef ULARGE_INTEGER AsnCounter64; 163 typedef AsnUnsigned32 AsnCounter32; 164 typedef AsnUnsigned32 AsnGauge32; 165 typedef AsnUnsigned32 AsnTimeticks; 166 typedef struct { 167 BYTE *stream; 168 UINT length; 169 BOOL dynamic; 170 } AsnOctetString, AsnBits, AsnSequence, AsnImplicitSequence, AsnIPAddress, AsnNetworkAddress, AsnDisplayString, AsnOpaque; 171 typedef struct { 172 UINT idLength; 173 UINT *ids; 174 } AsnObjectIdentifier, AsnObjectName; 175 typedef struct { 176 BYTE asnType; 177 union { 178 AsnInteger32 number; 179 AsnUnsigned32 unsigned32; 180 AsnCounter64 counter64; 181 AsnOctetString string; 182 AsnBits bits; 183 AsnObjectIdentifier object; 184 AsnSequence sequence; 185 AsnIPAddress address; 186 AsnCounter32 counter; 187 AsnGauge32 gauge; 188 AsnTimeticks ticks; 189 AsnOpaque arbitrary; 190 } asnValue; 191 } AsnAny, AsnObjectSyntax; 192 typedef struct { 193 AsnObjectName name; 194 AsnObjectSyntax value; 195 } SnmpVarBind; 196 typedef struct { 197 SnmpVarBind *list; 198 UINT len; 199 } SnmpVarBindList; 200 201 VOID WINSNMPAPI SnmpExtensionClose(void); 202 BOOL WINSNMPAPI SnmpExtensionInit(DWORD,HANDLE*,AsnObjectIdentifier*); 203 BOOL WINSNMPAPI SnmpExtensionInitEx(AsnObjectIdentifier*); 204 BOOL WINSNMPAPI SnmpExtensionMonitor(LPVOID); 205 BOOL WINSNMPAPI SnmpExtensionQuery(BYTE,SnmpVarBindList*,AsnInteger32*,AsnInteger32*); 206 BOOL WINSNMPAPI SnmpExtensionQueryEx(DWORD,DWORD,SnmpVarBindList*,AsnOctetString*,AsnInteger32*,AsnInteger32*); 207 BOOL WINSNMPAPI SnmpExtensionTrap(AsnObjectIdentifier*,AsnInteger32*,AsnInteger32*,AsnTimeticks*,SnmpVarBindList*); 208 DWORD WINSNMPAPI SnmpSvcGetUptime(void); 209 VOID WINSNMPAPI SnmpSvcSetLogLevel(INT); 210 VOID WINSNMPAPI SnmpSvcSetLogType(INT); 211 SNMPAPI WINSNMPAPI SnmpUtilAsnAnyCpy(AsnAny*,AsnAny*); 212 VOID WINSNMPAPI SnmpUtilAsnAnyFree(AsnAny*); 213 VOID WINSNMPAPI SnmpUtilDbgPrint(INT,LPSTR,...); 214 LPSTR WINSNMPAPI SnmpUtilIdsToA(UINT*,UINT); 215 LPVOID WINSNMPAPI SnmpUtilMemAlloc(UINT); 216 VOID WINSNMPAPI SnmpUtilMemFree(LPVOID); 217 LPVOID WINSNMPAPI SnmpUtilMemReAlloc(LPVOID,UINT); 218 SNMPAPI WINSNMPAPI SnmpUtilOctetsCmp(AsnOctetString*,AsnOctetString*); 219 SNMPAPI WINSNMPAPI SnmpUtilOctetsCpy(AsnOctetString*,AsnOctetString*); 220 VOID WINSNMPAPI SnmpUtilOctetsFree(AsnOctetString*); 221 SNMPAPI WINSNMPAPI SnmpUtilOctetsNCmp(AsnOctetString*,AsnOctetString*,UINT); 222 SNMPAPI WINSNMPAPI SnmpUtilOidAppend(AsnObjectIdentifier*,AsnObjectIdentifier*); 223 SNMPAPI WINSNMPAPI SnmpUtilOidCmp(AsnObjectIdentifier*,AsnObjectIdentifier*); 224 SNMPAPI WINSNMPAPI SnmpUtilOidCpy(AsnObjectIdentifier*,AsnObjectIdentifier*); 225 VOID WINSNMPAPI SnmpUtilOidFree(AsnObjectIdentifier*); 226 SNMPAPI WINSNMPAPI SnmpUtilOidNCmp(AsnObjectIdentifier*,AsnObjectIdentifier*,UINT); 227 LPSTR WINSNMPAPI SnmpUtilOidToA(AsnObjectIdentifier*); 228 VOID WINSNMPAPI SnmpUtilPrintAsnAny(AsnAny*); 229 VOID WINSNMPAPI SnmpUtilPrintOid(AsnObjectIdentifier*); 230 SNMPAPI WINSNMPAPI SnmpUtilVarBindCpy( SnmpVarBind*,SnmpVarBind*); 231 SNMPAPI WINSNMPAPI SnmpUtilVarBindListCpy(SnmpVarBindList*,SnmpVarBindList*); 232 VOID WINSNMPAPI SnmpUtilVarBindFree(SnmpVarBind*); 233 VOID WINSNMPAPI SnmpUtilVarBindListFree(SnmpVarBindList*); 234 235 #ifndef SNMPSTRICT 236 #define SNMP_malloc SnmpUtilMemAlloc 237 #define SNMP_free SnmpUtilMemFree 238 #define SNMP_realloc SnmpUtilMemReAlloc 239 #define SNMP_DBG_malloc SnmpUtilMemAlloc 240 #define SNMP_DBG_free SnmpUtilMemFree 241 #define SNMP_DBG_realloc SnmpUtilMemReAlloc 242 #define SNMP_oidappend SnmpUtilOidAppend 243 #define SNMP_oidcmp SnmpUtilOidCmp 244 #define SNMP_oidcpy SnmpUtilOidCpy 245 #define SNMP_oidfree SnmpUtilOidFree 246 #define SNMP_oidncmp SnmpUtilOidNCmp 247 #define SNMP_printany SnmpUtilPrintAsnAny 248 #define SNMP_CopyVarBind SnmpUtilVarBindCpy 249 #define SNMP_CopyVarBindList SnmpUtilVarBindListCpy 250 #define SNMP_FreeVarBind SnmpUtilVarBindFree 251 #define SNMP_FreeVarBindList SnmpUtilVarBindListFree 252 #define MS_ASN_RFC1155_IPADDRESS MS_ASN_IPADDRESS 253 #define MS_ASN_RFC1155_COUNTER MS_ASN_COUNTER32 254 #define MS_ASN_RFC1155_GAUGE MS_ASN_GAUGE32 255 #define MS_ASN_RFC1155_TIMETICKS MS_ASN_TIMETICKS 256 #define MS_ASN_RFC1155_OPAQUE MS_ASN_OPAQUE 257 #define MS_ASN_RFC1213_DISPSTRING MS_ASN_OCTETSTRING 258 #define MS_ASN_RFC1157_GETREQUEST SNMP_PDU_GET 259 #define MS_ASN_RFC1157_GETNEXTREQUEST SNMP_PDU_GETNEXT 260 #define MS_ASN_RFC1157_GETRESPONSE SNMP_PDU_RESPONSE 261 #define MS_ASN_RFC1157_SETREQUEST SNMP_PDU_SET 262 #define MS_ASN_RFC1157_TRAP SNMP_PDU_V1TRAP 263 #define MS_ASN_CONTEXTSPECIFIC MS_ASN_CONTEXT 264 #define MS_ASN_PRIMATIVE MS_ASN_PRIMITIVE 265 #define RFC1157VarBindList SnmpVarBindList 266 #define RFC1157VarBind SnmpVarBind 267 #define AsnInteger AsnInteger32 268 #define AsnCounter AsnCounter32 269 #define AsnGauge AsnGauge32 270 #endif /* SNMPSTRICT */ 271 272 #endif /* RC_INVOKED */ 273 274 #ifdef __cplusplus 275 } 276 #endif 277 #include <poppack.h> 278 #endif 279