1 /** 2 * Windows API header module 3 * 4 * Translated from MinGW Windows headers 5 * 6 * Authors: Stewart Gordon 7 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 8 * Source: $(DRUNTIMESRC src/core/sys/windows/_snmp.d) 9 */ 10 module core.sys.windows.snmp; 11 version (Windows): 12 @system: 13 14 import core.sys.windows.basetsd /+: HANDLE+/; 15 import core.sys.windows.windef /+: BOOL, BYTE, DWORD, INT, LONG, UINT, ULONG+/; 16 import core.sys.windows.winnt /+: LPSTR, LPVOID, ULARGE_INTEGER, VOID+/; 17 18 // These are not documented on MSDN 19 enum { 20 DEFAULT_SNMP_PORT_UDP = 161, 21 DEFAULT_SNMP_PORT_IPX = 36879, 22 DEFAULT_SNMPTRAP_PORT_UDP = 162, 23 DEFAULT_SNMPTRAP_PORT_IPX = 36880 24 } 25 26 enum : BYTE { 27 ASN_UNIVERSAL = 0x00, 28 ASN_PRIMITIVE = 0x00, 29 ASN_CONSTRUCTOR = 0x20, 30 ASN_APPLICATION = 0x40, 31 ASN_CONTEXT = 0x80, 32 ASN_PRIVATE = 0xC0, 33 34 SNMP_PDU_GET = ASN_CONTEXT | ASN_CONSTRUCTOR, 35 SNMP_PDU_GETNEXT, 36 SNMP_PDU_RESPONSE, 37 SNMP_PDU_SET, 38 SNMP_PDU_GETBULK, // = ASN_CONTEXT | ASN_CONSTRUCTOR | 4 39 SNMP_PDU_V1TRAP = ASN_CONTEXT | ASN_CONSTRUCTOR | 4, 40 SNMP_PDU_INFORM = ASN_CONTEXT | ASN_CONSTRUCTOR | 6, 41 SNMP_PDU_TRAP, 42 SNMP_PDU_REPORT, 43 ASN_INTEGER = ASN_UNIVERSAL | ASN_PRIMITIVE | 2, 44 ASN_BITS, 45 ASN_OCTETSTRING, 46 ASN_NULL, 47 ASN_OBJECTIDENTIFIER, // = ASN_UNIVERSAL | ASN_PRIMITIVE | 6 48 ASN_INTEGER32 = ASN_INTEGER, 49 ASN_SEQUENCE = ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10, 50 ASN_SEQUENCEOF = ASN_SEQUENCE, 51 ASN_IPADDRESS = ASN_APPLICATION | ASN_PRIMITIVE, 52 ASN_COUNTER32, 53 ASN_GAUGE32, 54 ASN_TIMETICKS, 55 ASN_OPAQUE, // = ASN_APPLICATION | ASN_PRIMITIVE | 4 56 ASN_COUNTER64 = ASN_APPLICATION | ASN_PRIMITIVE | 6, 57 ASN_UNSIGNED32, // = ASN_APPLICATION | ASN_PRIMITIVE | 7 58 SNMP_EXCEPTION_NOSUCHOBJECT = ASN_CONTEXT | ASN_PRIMITIVE, 59 SNMP_EXCEPTION_NOSUCHINSTANCE, 60 SNMP_EXCEPTION_ENDOFMIBVIEW, 61 SNMP_EXTENSION_GET = SNMP_PDU_GET, 62 SNMP_EXTENSION_GET_NEXT = SNMP_PDU_GETNEXT, 63 SNMP_EXTENSION_GET_BULK = SNMP_PDU_GETBULK, 64 SNMP_EXTENSION_SET_TEST = ASN_PRIVATE | ASN_CONSTRUCTOR, 65 SNMP_EXTENSION_SET_COMMIT = SNMP_PDU_SET, 66 SNMP_EXTENSION_SET_UNDO = ASN_PRIVATE | ASN_CONSTRUCTOR | 1, 67 SNMP_EXTENSION_SET_CLEANUP 68 } 69 70 71 enum : AsnInteger { 72 SNMP_ERRORSTATUS_NOERROR, 73 SNMP_ERRORSTATUS_TOOBIG, 74 SNMP_ERRORSTATUS_NOSUCHNAME, 75 SNMP_ERRORSTATUS_BADVALUE, 76 SNMP_ERRORSTATUS_READONLY, 77 SNMP_ERRORSTATUS_GENERR, 78 SNMP_ERRORSTATUS_NOACCESS, 79 SNMP_ERRORSTATUS_WRONGTYPE, 80 SNMP_ERRORSTATUS_WRONGLENGTH, 81 SNMP_ERRORSTATUS_WRONGENCODING, 82 SNMP_ERRORSTATUS_WRONGVALUE, 83 SNMP_ERRORSTATUS_NOCREATION, 84 SNMP_ERRORSTATUS_INCONSISTENTVALUE, 85 SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE, 86 SNMP_ERRORSTATUS_COMMITFAILED, 87 SNMP_ERRORSTATUS_UNDOFAILED, 88 SNMP_ERRORSTATUS_AUTHORIZATIONERROR, 89 SNMP_ERRORSTATUS_NOTWRITABLE, 90 SNMP_ERRORSTATUS_INCONSISTENTNAME 91 } 92 93 enum : AsnInteger { 94 SNMP_GENERICTRAP_COLDSTART, 95 SNMP_GENERICTRAP_WARMSTART, 96 SNMP_GENERICTRAP_LINKDOWN, 97 SNMP_GENERICTRAP_LINKUP, 98 SNMP_GENERICTRAP_AUTHFAILURE, 99 SNMP_GENERICTRAP_EGPNEIGHLOSS, 100 SNMP_GENERICTRAP_ENTERSPECIFIC 101 } 102 103 // These are not documented on MSDN 104 enum { 105 SNMP_ACCESS_NONE, 106 SNMP_ACCESS_NOTIFY, 107 SNMP_ACCESS_READ_ONLY, 108 SNMP_ACCESS_READ_WRITE, 109 SNMP_ACCESS_READ_CREATE 110 } 111 112 enum : BOOL { 113 SNMPAPI_ERROR = false, 114 SNMPAPI_NOERROR = true 115 } 116 117 enum : INT { 118 SNMP_LOG_SILENT, 119 SNMP_LOG_FATAL, 120 SNMP_LOG_ERROR, 121 SNMP_LOG_WARNING, 122 SNMP_LOG_TRACE, 123 SNMP_LOG_VERBOSE 124 } 125 126 enum INT 127 SNMP_OUTPUT_TO_CONSOLE = 1, 128 SNMP_OUTPUT_TO_LOGFILE = 2, 129 SNMP_OUTPUT_TO_EVENTLOG = 4, 130 SNMP_OUTPUT_TO_DEBUGGER = 8; 131 132 enum size_t SNMP_MAX_OID_LEN = 128; 133 134 enum : DWORD { 135 SNMP_MEM_ALLOC_ERROR = 1, 136 SNMP_BERAPI_INVALID_LENGTH = 10, 137 SNMP_BERAPI_INVALID_TAG, 138 SNMP_BERAPI_OVERFLOW, 139 SNMP_BERAPI_SHORT_BUFFER, 140 SNMP_BERAPI_INVALID_OBJELEM, 141 SNMP_PDUAPI_UNRECOGNIZED_PDU = 20, 142 SNMP_PDUAPI_INVALID_ES, 143 SNMP_PDUAPI_INVALID_GT, 144 SNMP_AUTHAPI_INVALID_VERSION = 30, 145 SNMP_AUTHAPI_INVALID_MSG_TYPE, 146 SNMP_AUTHAPI_TRIV_AUTH_FAILED, 147 } 148 149 alias INT SNMPAPI; 150 alias LONG AsnInteger32; 151 alias ULONG AsnUnsigned32, AsnCounter32, AsnGauge32, AsnTimeticks; 152 alias ULARGE_INTEGER AsnCounter64; 153 154 align (4): 155 156 struct AsnOctetString { 157 align (4): 158 BYTE* stream; 159 UINT length; 160 BOOL dynamic; 161 } 162 alias AsnOctetString AsnBits, AsnSequence, AsnImplicitSequence, 163 AsnIPAddress, AsnNetworkAddress, AsnDisplayString, AsnOpaque; 164 165 struct AsnObjectIdentifier { 166 align (4): 167 UINT idLength; 168 UINT* ids; 169 } 170 alias AsnObjectIdentifier AsnObjectName; 171 172 struct AsnAny { 173 align (4): 174 BYTE asnType; 175 union _asnValue { 176 AsnInteger32 number; 177 AsnUnsigned32 unsigned32; 178 AsnCounter64 counter64; 179 AsnOctetString string; 180 AsnBits bits; 181 AsnObjectIdentifier object; 182 AsnSequence sequence; 183 AsnIPAddress address; 184 AsnCounter32 counter; 185 AsnGauge32 gauge; 186 AsnTimeticks ticks; 187 AsnOpaque arbitrary; 188 } 189 _asnValue asnValue; 190 } 191 alias AsnAny AsnObjectSyntax; 192 193 struct SnmpVarBind { 194 align (4): 195 AsnObjectName name; 196 AsnObjectSyntax value; 197 } 198 199 struct SnmpVarBindList { 200 align (4): 201 SnmpVarBind* list; 202 UINT len; 203 } 204 205 extern (Windows) { 206 VOID SnmpExtensionClose(); 207 BOOL SnmpExtensionInit(DWORD, HANDLE*, AsnObjectIdentifier*); 208 BOOL SnmpExtensionInitEx(AsnObjectIdentifier*); 209 BOOL SnmpExtensionMonitor(LPVOID); 210 BOOL SnmpExtensionQuery(BYTE, SnmpVarBindList*, AsnInteger32*, 211 AsnInteger32*); 212 BOOL SnmpExtensionQueryEx(DWORD, DWORD, SnmpVarBindList*, AsnOctetString*, 213 AsnInteger32*, AsnInteger32*); 214 BOOL SnmpExtensionTrap(AsnObjectIdentifier*, AsnInteger32*, AsnInteger32*, 215 AsnTimeticks*, SnmpVarBindList*); 216 DWORD SnmpSvcGetUptime(); 217 VOID SnmpSvcSetLogLevel(INT); 218 VOID SnmpSvcSetLogType(INT); 219 SNMPAPI SnmpUtilAsnAnyCpy(AsnAny*, AsnAny*); 220 VOID SnmpUtilAsnAnyFree(AsnAny*); 221 VOID SnmpUtilDbgPrint(INT, LPSTR, ...); 222 LPSTR SnmpUtilIdsToA(UINT*, UINT); 223 LPVOID SnmpUtilMemAlloc(UINT); 224 VOID SnmpUtilMemFree(LPVOID); 225 LPVOID SnmpUtilMemReAlloc(LPVOID, UINT); 226 SNMPAPI SnmpUtilOctetsCmp(AsnOctetString*, AsnOctetString*); 227 SNMPAPI SnmpUtilOctetsCpy(AsnOctetString*, AsnOctetString*); 228 VOID SnmpUtilOctetsFree(AsnOctetString*); 229 SNMPAPI SnmpUtilOctetsNCmp(AsnOctetString*, AsnOctetString*, UINT); 230 SNMPAPI SnmpUtilOidAppend(AsnObjectIdentifier*, AsnObjectIdentifier*); 231 SNMPAPI SnmpUtilOidCmp(AsnObjectIdentifier*, AsnObjectIdentifier*); 232 SNMPAPI SnmpUtilOidCpy(AsnObjectIdentifier*, AsnObjectIdentifier*); 233 VOID SnmpUtilOidFree(AsnObjectIdentifier*); 234 SNMPAPI SnmpUtilOidNCmp(AsnObjectIdentifier*, AsnObjectIdentifier*, UINT); 235 LPSTR SnmpUtilOidToA(AsnObjectIdentifier*); 236 VOID SnmpUtilPrintAsnAny(AsnAny*); 237 VOID SnmpUtilPrintOid(AsnObjectIdentifier*); 238 SNMPAPI SnmpUtilVarBindCpy(SnmpVarBind*, SnmpVarBind*); 239 SNMPAPI SnmpUtilVarBindListCpy(SnmpVarBindList*, SnmpVarBindList*); 240 VOID SnmpUtilVarBindFree(SnmpVarBind*); 241 VOID SnmpUtilVarBindListFree(SnmpVarBindList*); 242 } 243 244 alias SnmpUtilMemAlloc SNMP_malloc; 245 alias SnmpUtilMemFree SNMP_free; 246 alias SnmpUtilMemReAlloc SNMP_realloc; 247 alias SnmpUtilMemAlloc SNMP_DBG_malloc; 248 alias SnmpUtilMemFree SNMP_DBG_free; 249 alias SnmpUtilMemReAlloc SNMP_DBG_realloc; 250 alias SnmpUtilOidAppend SNMP_oidappend; 251 alias SnmpUtilOidCmp SNMP_oidcmp; 252 alias SnmpUtilOidCpy SNMP_oidcpy; 253 alias SnmpUtilOidFree SNMP_oidfree; 254 alias SnmpUtilOidNCmp SNMP_oidncmp; 255 alias SnmpUtilPrintAsnAny SNMP_printany; 256 alias SnmpUtilVarBindCpy SNMP_CopyVarBind; 257 alias SnmpUtilVarBindListCpy SNMP_CopyVarBindList; 258 alias SnmpUtilVarBindFree SNMP_FreeVarBind; 259 alias SnmpUtilVarBindListFree SNMP_FreeVarBindList; 260 alias ASN_IPADDRESS ASN_RFC1155_IPADDRESS; 261 alias ASN_COUNTER32 ASN_RFC1155_COUNTER; 262 alias ASN_GAUGE32 ASN_RFC1155_GAUGE; 263 alias ASN_TIMETICKS ASN_RFC1155_TIMETICKS; 264 alias ASN_OPAQUE ASN_RFC1155_OPAQUE; 265 alias ASN_OCTETSTRING ASN_RFC1213_DISPSTRING; 266 alias SNMP_PDU_GET ASN_RFC1157_GETREQUEST; 267 alias SNMP_PDU_GETNEXT ASN_RFC1157_GETNEXTREQUEST; 268 alias SNMP_PDU_RESPONSE ASN_RFC1157_GETRESPONSE; 269 alias SNMP_PDU_SET ASN_RFC1157_SETREQUEST; 270 alias SNMP_PDU_V1TRAP ASN_RFC1157_TRAP; 271 alias ASN_CONTEXT ASN_CONTEXTSPECIFIC; 272 alias ASN_PRIMITIVE ASN_PRIMATIVE; 273 alias SnmpVarBindList RFC1157VarBindList; 274 alias SnmpVarBind RFC1157VarBind; 275 alias AsnInteger32 AsnInteger; 276 alias AsnCounter32 AsnCounter; 277 alias AsnGauge32 AsnGauge; 278