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