root/trunk/win32/snmp.d

Revision 172, 8.7 kB (checked in by smjg, 5 years ago)

Polish a few off

Line 
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;
Note: See TracBrowser for help on using the browser.