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