ReactOS 0.4.17-dev-966-gf06eace
main.c
Go to the documentation of this file.
1/*
2 * Implementation of SNMPAPI.DLL
3 *
4 * Copyright 2002 Patrik Stridvall
5 * Copyright 2007 Hans Leidekker
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 */
21
22#include <stdio.h>
23#include <stdarg.h>
24
25#include "windef.h"
26#include "winbase.h"
27#include "snmp.h"
28
29#include "wine/debug.h"
30
32
34{
35 memset(dst, 0, sizeof(AsnAny));
36 switch (src->asnType)
37 {
38 case ASN_INTEGER32: dst->asnValue.number = src->asnValue.number; break;
39 case ASN_UNSIGNED32: dst->asnValue.unsigned32 = src->asnValue.unsigned32; break;
40 case ASN_COUNTER64: dst->asnValue.counter64 = src->asnValue.counter64; break;
41 case ASN_COUNTER32: dst->asnValue.counter = src->asnValue.counter; break;
42 case ASN_GAUGE32: dst->asnValue.gauge = src->asnValue.gauge; break;
43 case ASN_TIMETICKS: dst->asnValue.ticks = src->asnValue.ticks; break;
44
45 case ASN_OCTETSTRING:
46 case ASN_BITS:
47 case ASN_SEQUENCE:
48 case ASN_IPADDRESS:
49 case ASN_OPAQUE:
50 {
51 BYTE *stream;
52 UINT length = src->asnValue.string.length;
53
54 if (!(stream = malloc(length))) return SNMPAPI_ERROR;
55 memcpy(stream, src->asnValue.string.stream, length);
56
57 dst->asnValue.string.stream = stream;
58 dst->asnValue.string.length = length;
59 dst->asnValue.string.dynamic = TRUE;
60 break;
61 }
63 {
64 UINT *ids, i, size = src->asnValue.object.idLength * sizeof(UINT);
65
66 if (!(ids = malloc(size))) return SNMPAPI_ERROR;
67
68 dst->asnValue.object.ids = ids;
69 dst->asnValue.object.idLength = src->asnValue.object.idLength;
70
71 for (i = 0; i < dst->asnValue.object.idLength; i++)
72 dst->asnValue.object.ids[i] = src->asnValue.object.ids[i];
73 break;
74 }
75 default:
76 {
77 WARN("unknown ASN type: %d\n", src->asnType);
78 return SNMPAPI_ERROR;
79 }
80 }
81 dst->asnType = src->asnType;
82 return SNMPAPI_NOERROR;
83}
84
85static void asn_any_free(AsnAny *any)
86{
87 switch (any->asnType)
88 {
89 case ASN_OCTETSTRING:
90 case ASN_BITS:
91 case ASN_SEQUENCE:
92 case ASN_IPADDRESS:
93 case ASN_OPAQUE:
94 {
95 if (any->asnValue.string.dynamic)
96 {
99 }
100 break;
101 }
103 {
104 free(any->asnValue.object.ids);
105 any->asnValue.object.ids = NULL;
106 break;
107 }
108 default: break;
109 }
110 any->asnType = ASN_NULL;
111}
112
114
115/***********************************************************************
116 * DllMain for SNMPAPI
117 */
119 HINSTANCE hInstDLL,
122{
123 TRACE("(%p,%ld,%p)\n", hInstDLL, fdwReason, lpvReserved);
124
125 switch(fdwReason) {
129 break;
130 }
131
132 return TRUE;
133}
134
135/***********************************************************************
136 * SnmpSvcGetUptime (SNMPAPI.@)
137 *
138 * BUGS
139 * This returns the number of centiseconds since the DLL was loaded,
140 * rather than the number of centiseconds since the SNMP service was
141 * started, since there isn't yet any SNMP service in Wine.
142 */
144{
146
147 return (now - startTime) / 10;
148}
149
150/***********************************************************************
151 * SnmpUtilDbgPrint (SNMPAPI.@)
152 *
153 * NOTES
154 * The Microsoft headers claim this function uses the stdcall calling
155 * convention. But stdcall functions cannot take a variable number of
156 * arguments so this does not make sense. The stdcall specification is
157 * probably ignored by Microsoft's compiler in this case. So declare it
158 * correctly in Wine so it works with all compilers.
159 */
161{
162 FIXME("(%d, %s)\n", loglevel, debugstr_a(format));
163}
164
165/***********************************************************************
166 * SnmpUtilMemAlloc (SNMPAPI.@)
167 */
169{
170 TRACE("(%d)\n", nbytes);
171 return malloc(nbytes);
172}
173
174/***********************************************************************
175 * SnmpUtilMemReAlloc (SNMPAPI.@)
176 */
178{
179 TRACE("(%p, %d)\n", mem, nbytes);
180 return realloc(mem, nbytes);
181}
182
183/***********************************************************************
184 * SnmpUtilMemFree (SNMPAPI.@)
185 */
187{
188 TRACE("(%p)\n", mem);
189 free(mem);
190}
191
192/***********************************************************************
193 * SnmpUtilAsnAnyCpy (SNMPAPI.@)
194 */
196{
197 TRACE("(%p, %p)\n", dst, src);
198 return asn_any_copy(dst, src);
199}
200
201/***********************************************************************
202 * SnmpUtilAsnAnyFree (SNMPAPI.@)
203 */
205{
206 TRACE("(%p)\n", any);
207 asn_any_free(any);
208}
209
210/***********************************************************************
211 * SnmpUtilOctetsCpy (SNMPAPI.@)
212 */
214{
215 TRACE("(%p, %p)\n", dst, src);
216
217 if (!dst) return SNMPAPI_ERROR;
218 if (!src)
219 {
220 dst->dynamic = FALSE;
221 dst->length = 0;
222 dst->stream = NULL;
223 return SNMPAPI_NOERROR;
224 }
225 if ((dst->stream = malloc(src->length)))
226 {
227 unsigned int i;
228
229 dst->dynamic = TRUE;
230 dst->length = src->length;
231 for (i = 0; i < dst->length; i++) dst->stream[i] = src->stream[i];
232 return SNMPAPI_NOERROR;
233 }
234 return SNMPAPI_ERROR;
235}
236
237/***********************************************************************
238 * SnmpUtilOctetsFree (SNMPAPI.@)
239 */
241{
242 TRACE("(%p)\n", octets);
243
244 if (octets)
245 {
246 octets->length = 0;
247 if (octets->dynamic) free(octets->stream);
248 octets->stream = NULL;
249 octets->dynamic = FALSE;
250 }
251}
252
253/***********************************************************************
254 * SnmpUtilOctetsNCmp (SNMPAPI.@)
255 */
257{
258 INT ret;
259 unsigned int i;
260
261 TRACE("(%p, %p, %d)\n", octets1, octets2, count);
262
263 if (!octets1 || !octets2) return 0;
264
265 for (i = 0; i < count; i++)
266 if ((ret = octets1->stream[i] - octets2->stream[i])) return ret;
267
268 return 0;
269}
270
271/***********************************************************************
272 * SnmpUtilOctetsCmp (SNMPAPI.@)
273 */
275{
276 TRACE("(%p, %p)\n", octets1, octets2);
277
278 if (octets1->length < octets2->length) return -1;
279 if (octets1->length > octets2->length) return 1;
280
281 return SnmpUtilOctetsNCmp(octets1, octets2, octets1->length);
282}
283
284/***********************************************************************
285 * SnmpUtilOidAppend (SNMPAPI.@)
286 */
288{
289 UINT *ids, i, size;
290
291 TRACE("(%p, %p)\n", dst, src);
292
293 if (!dst) return SNMPAPI_ERROR;
294 if (!src) return SNMPAPI_NOERROR;
295
296 size = (src->idLength + dst->idLength) * sizeof(UINT);
297 if (!(ids = realloc(dst->ids, size)))
298 {
299 if (!(ids = malloc(size)))
300 {
302 return SNMPAPI_ERROR;
303 }
304 else memcpy(ids, dst->ids, dst->idLength * sizeof(UINT));
305 }
306
307 for (i = 0; i < src->idLength; i++) ids[i + dst->idLength] = src->ids[i];
308 dst->idLength = dst->idLength + src->idLength;
309 dst->ids = ids;
310
311 return SNMPAPI_NOERROR;
312}
313
314/***********************************************************************
315 * SnmpUtilOidCpy (SNMPAPI.@)
316 */
318{
319 TRACE("(%p, %p)\n", dst, src);
320
321 if (!dst) return SNMPAPI_ERROR;
322 if (!src)
323 {
324 dst->idLength = 0;
325 dst->ids = NULL;
326 return SNMPAPI_NOERROR;
327 }
328 if ((dst->ids = malloc(src->idLength * sizeof(UINT))))
329 {
330 unsigned int i;
331
332 dst->idLength = src->idLength;
333 for (i = 0; i < dst->idLength; i++) dst->ids[i] = src->ids[i];
334 return SNMPAPI_NOERROR;
335 }
336 return SNMPAPI_ERROR;
337}
338
339/***********************************************************************
340 * SnmpUtilOidFree (SNMPAPI.@)
341 */
343{
344 TRACE("(%p)\n", oid);
345
346 if (!oid) return;
347
348 oid->idLength = 0;
349 free(oid->ids);
350 oid->ids = NULL;
351}
352
353/***********************************************************************
354 * SnmpUtilOidNCmp (SNMPAPI.@)
355 */
357{
358 unsigned int i, len;
359
360 TRACE("(%p, %p, %d)\n", oid1, oid2, count);
361
362 if (!oid1 || !oid2) return 0;
363
364 len = min(count, oid1->idLength);
365 len = min(len, oid2->idLength);
366 for (i = 0; i < len; i++)
367 {
368 if (oid1->ids[i] > oid2->ids[i]) return 1;
369 if (oid1->ids[i] < oid2->ids[i]) return -1;
370 }
371 if (i == count) return 0;
372 if (oid1->idLength < oid2->idLength) return -1;
373 if (oid1->idLength > oid2->idLength) return 1;
374 return 0;
375}
376
377/***********************************************************************
378 * SnmpUtilOidCmp (SNMPAPI.@)
379 */
381{
382 TRACE("(%p, %p)\n", oid1, oid2);
383
384 if (oid1->idLength < oid2->idLength) return -1;
385 if (oid1->idLength > oid2->idLength) return 1;
386
387 return SnmpUtilOidNCmp(oid1, oid2, oid1->idLength);
388}
389
390/***********************************************************************
391 * SnmpUtilVarBindCpy (SNMPAPI.@)
392 */
394{
395 unsigned int i, size;
396
397 TRACE("(%p, %p)\n", dst, src);
398
399 if (!dst) return SNMPAPI_ERROR;
400 if (!src)
401 {
402 dst->value.asnType = ASN_NULL;
403 return SNMPAPI_NOERROR;
404 }
405
406 size = src->name.idLength * sizeof(UINT);
407 if (!(dst->name.ids = malloc(size))) return SNMPAPI_ERROR;
408
409 for (i = 0; i < src->name.idLength; i++) dst->name.ids[i] = src->name.ids[i];
410 dst->name.idLength = src->name.idLength;
411
412 if (!asn_any_copy(&dst->value, &src->value))
413 {
414 free(dst->name.ids);
415 return SNMPAPI_ERROR;
416 }
417 return SNMPAPI_NOERROR;
418}
419
420/***********************************************************************
421 * SnmpUtilVarBindFree (SNMPAPI.@)
422 */
424{
425 TRACE("(%p)\n", vb);
426
427 if (!vb) return;
428
429 asn_any_free(&vb->value);
430 free(vb->name.ids);
431 vb->name.idLength = 0;
432 vb->name.ids = NULL;
433}
434
435/***********************************************************************
436 * SnmpUtilVarBindListCpy (SNMPAPI.@)
437 */
439{
440 unsigned int i, size;
441 SnmpVarBind *src_entry, *dst_entry;
442
443 TRACE("(%p, %p)\n", dst, src);
444
445 if (!src)
446 {
447 dst->list = NULL;
448 dst->len = 0;
449 return SNMPAPI_NOERROR;
450 }
451 size = src->len * sizeof(SnmpVarBind);
452 if (!(dst->list = malloc(size)))
453 return SNMPAPI_ERROR;
454
455 src_entry = src->list;
456 dst_entry = dst->list;
457 for (i = 0; i < src->len; i++)
458 {
459 if (SnmpUtilVarBindCpy(dst_entry, src_entry))
460 {
461 src_entry++;
462 dst_entry++;
463 }
464 else
465 {
466 for (--i; i > 0; i--) SnmpUtilVarBindFree(--dst_entry);
467 free(dst->list);
468 return SNMPAPI_ERROR;
469 }
470 }
471 dst->len = src->len;
472 return SNMPAPI_NOERROR;
473}
474
475/***********************************************************************
476 * SnmpUtilVarBindListFree (SNMPAPI.@)
477 */
479{
480 unsigned int i;
482
483 TRACE("(%p)\n", vb);
484
485 entry = vb->list;
486 for (i = 0; i < vb->len; i++) SnmpUtilVarBindFree(entry++);
487 free(vb->list);
488 vb->list = NULL;
489 vb->len = 0;
490}
491
492/***********************************************************************
493 * SnmpUtilIdsToA (SNMPAPI.@)
494 */
496{
497 static char one[10], oid[514], null_oid[] = "<null oid>";
498 unsigned int i, len, left = sizeof(oid) - 1;
499
500 TRACE("(%p, %d)\n", ids, length);
501
502 if (!ids || !length) return null_oid;
503
504 *oid = 0;
505 for (i = 0; i < length; i++)
506 {
507 sprintf(one, "%d", ids[i]);
508 len = strlen(one);
509 if (left >= len)
510 {
511 strcat(oid, one);
512 left -= len;
513 }
514 else return oid;
515
516 if (i < length - 1)
517 {
518 if (left > 0)
519 {
520 strcat(oid, ".");
521 left--;
522 }
523 else return oid;
524 }
525 }
526 return oid;
527}
528
529/***********************************************************************
530 * SnmpUtilOidToA (SNMPAPI.@)
531 */
533{
534 static char null_oid[] = "<null oid>";
535
536 TRACE("(%p)\n", oid);
537
538 if (oid)
539 return SnmpUtilIdsToA(oid->ids, oid->idLength);
540 else
541 return null_oid;
542}
543
544/***********************************************************************
545 * SnmpUtilPrintOid (SNMPAPI.@)
546 */
548{
549 unsigned int i;
550
551 TRACE("(%p)\n", oid);
552
553 if (!oid) return;
554
555 for (i = 0; i < oid->idLength; i++)
556 {
557 TRACE("%u", oid->ids[i]);
558 if (i < oid->idLength - 1) TRACE(".");
559 }
560 TRACE("\n");
561}
562
563/***********************************************************************
564 * SnmpUtilPrintAsnAny (SNMPAPI.@)
565 */
567{
568 unsigned int i;
569
570 TRACE("(%p)\n", any);
571
572 switch (any->asnType)
573 {
574 case ASN_NULL: TRACE("Null value\n"); return;
575 case ASN_INTEGER32: TRACE("Integer32 %ld\n", any->asnValue.number); return;
576 case ASN_UNSIGNED32: TRACE("Unsigned32 %lu\n", any->asnValue.unsigned32); return;
577 case ASN_COUNTER32: TRACE("Counter32 %lu\n", any->asnValue.counter); return;
578 case ASN_GAUGE32: TRACE("Gauge32 %lu\n", any->asnValue.gauge); return;
579 case ASN_TIMETICKS: TRACE("Timeticks %lu\n", any->asnValue.ticks); return;
580 case ASN_COUNTER64:
581 {
582 TRACE("Counter64 %I64x\n", any->asnValue.counter64.QuadPart);
583 return;
584 }
585 case ASN_OCTETSTRING:
586 {
587 TRACE("String ");
588 for (i = 0; i < any->asnValue.string.length; i++)
589 TRACE("%c", any->asnValue.string.stream[i]);
590 TRACE("\n");
591 return;
592 }
593 case ASN_IPADDRESS:
594 {
595 TRACE("IpAddress ");
596 if (any->asnValue.string.length < 4)
597 {
598 TRACE("Invalid\n");
599 return;
600 }
601 for (i = 0; i < 4; i++)
602 {
603 TRACE("%u", any->asnValue.string.stream[i]);
604 if (i < 3) TRACE(".");
605 }
606 TRACE("\n");
607 return;
608 }
609 case ASN_BITS:
610 {
611 TRACE("Bits ");
612 for (i = 0; i < any->asnValue.string.length; i++)
613 {
614 TRACE("0x%02x", any->asnValue.string.stream[i]);
615 if (i < any->asnValue.object.idLength - 1) TRACE(" ");
616 }
617 TRACE("\n");
618 return;
619 }
620 case ASN_OPAQUE:
621 {
622 TRACE("Opaque ");
623 for (i = 0; i < any->asnValue.string.length; i++)
624 {
625 TRACE("0x%02x", any->asnValue.string.stream[i]);
626 if (i < any->asnValue.object.idLength - 1) TRACE(" ");
627 }
628 TRACE("\n");
629 return;
630 }
632 {
633 TRACE("ObjectID ");
634 for (i = 0; i < any->asnValue.object.idLength; i++)
635 {
636 TRACE("%u", any->asnValue.object.ids[i]);
637 if (i < any->asnValue.object.idLength - 1) TRACE(".");
638 }
639 TRACE("\n");
640 return;
641 }
642 default:
643 {
644 TRACE("Invalid type %d\n", any->asnType);
645 return;
646 }
647 }
648}
static DWORD const fdwReason
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
BOOL NTAPI DllMain(_In_ HINSTANCE hDll, _In_ ULONG dwReason, _In_opt_ PVOID pReserved)
Definition: main.c:33
#define FIXME(fmt,...)
Definition: precomp.h:53
#define WARN(fmt,...)
Definition: precomp.h:61
#define realloc
Definition: debug_ros.c:6
#define free
Definition: debug_ros.c:5
#define malloc
Definition: debug_ros.c:4
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
#define SetLastError(x)
Definition: compat.h:752
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
ULONGLONG WINAPI DECLSPEC_HOTPATCH GetTickCount64(void)
Definition: sync.c:192
_ACRTIMP size_t __cdecl strlen(const char *)
Definition: string.c:1597
static void asn_any_free(AsnAny *any)
Definition: main.c:85
INT WINAPI SnmpUtilVarBindCpy(SnmpVarBind *dst, SnmpVarBind *src)
Definition: main.c:393
VOID WINAPI SnmpUtilOctetsFree(AsnOctetString *octets)
Definition: main.c:240
DWORD WINAPI SnmpSvcGetUptime(void)
Definition: main.c:143
INT WINAPI SnmpUtilOidAppend(AsnObjectIdentifier *dst, AsnObjectIdentifier *src)
Definition: main.c:287
INT WINAPI SnmpUtilVarBindListCpy(SnmpVarBindList *dst, SnmpVarBindList *src)
Definition: main.c:438
INT WINAPI SnmpUtilOctetsCpy(AsnOctetString *dst, AsnOctetString *src)
Definition: main.c:213
VOID WINAPIV SnmpUtilDbgPrint(INT loglevel, LPSTR format,...)
Definition: main.c:160
LPSTR WINAPI SnmpUtilIdsToA(UINT *ids, UINT length)
Definition: main.c:495
INT WINAPI SnmpUtilOctetsCmp(AsnOctetString *octets1, AsnOctetString *octets2)
Definition: main.c:274
static INT asn_any_copy(AsnAny *dst, const AsnAny *src)
Definition: main.c:33
INT WINAPI SnmpUtilOctetsNCmp(AsnOctetString *octets1, AsnOctetString *octets2, UINT count)
Definition: main.c:256
INT WINAPI SnmpUtilOidCmp(AsnObjectIdentifier *oid1, AsnObjectIdentifier *oid2)
Definition: main.c:380
static ULONGLONG startTime
Definition: main.c:113
VOID WINAPI SnmpUtilAsnAnyFree(AsnAny *any)
Definition: main.c:204
VOID WINAPI SnmpUtilPrintOid(AsnObjectIdentifier *oid)
Definition: main.c:547
LPVOID WINAPI SnmpUtilMemAlloc(UINT nbytes)
Definition: main.c:168
VOID WINAPI SnmpUtilVarBindListFree(SnmpVarBindList *vb)
Definition: main.c:478
INT WINAPI SnmpUtilOidNCmp(AsnObjectIdentifier *oid1, AsnObjectIdentifier *oid2, UINT count)
Definition: main.c:356
INT WINAPI SnmpUtilAsnAnyCpy(AsnAny *dst, AsnAny *src)
Definition: main.c:195
VOID WINAPI SnmpUtilPrintAsnAny(AsnAny *any)
Definition: main.c:566
VOID WINAPI SnmpUtilOidFree(AsnObjectIdentifier *oid)
Definition: main.c:342
INT WINAPI SnmpUtilOidCpy(AsnObjectIdentifier *dst, AsnObjectIdentifier *src)
Definition: main.c:317
VOID WINAPI SnmpUtilVarBindFree(SnmpVarBind *vb)
Definition: main.c:423
LPSTR WINAPI SnmpUtilOidToA(AsnObjectIdentifier *oid)
Definition: main.c:532
VOID WINAPI SnmpUtilMemFree(LPVOID mem)
Definition: main.c:186
LPVOID WINAPI SnmpUtilMemReAlloc(LPVOID mem, UINT nbytes)
Definition: main.c:177
return ret
Definition: mutex.c:147
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
time_t now
Definition: finger.c:65
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLenum src
Definition: glext.h:6340
GLuint * ids
Definition: glext.h:5907
GLsizeiptr size
Definition: glext.h:5919
GLint left
Definition: glext.h:7726
GLenum GLenum dst
Definition: glext.h:6340
GLuint GLsizei GLsizei * length
Definition: glext.h:6040
GLenum GLsizei len
Definition: glext.h:6722
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
unsigned int UINT
Definition: sysinfo.c:13
uint32_t entry
Definition: isohybrid.c:63
#define debugstr_a
Definition: kernel32.h:31
if(dx< 0)
Definition: linetemp.h:194
static IN DWORD IN LPVOID lpvReserved
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define sprintf
Definition: sprintf.c:45
static char oid1[]
Definition: encode.c:7512
#define min(a, b)
Definition: monoChain.cc:55
#define WINAPIV
Definition: sdbpapi.h:64
#define ASN_BITS
Definition: snmp.h:104
#define ASN_TIMETICKS
Definition: snmp.h:116
#define ASN_OCTETSTRING
Definition: snmp.h:105
#define ASN_UNSIGNED32
Definition: snmp.h:119
#define ASN_NULL
Definition: snmp.h:106
#define ASN_SEQUENCE
Definition: snmp.h:110
#define ASN_OPAQUE
Definition: snmp.h:117
#define ASN_COUNTER32
Definition: snmp.h:114
#define ASN_COUNTER64
Definition: snmp.h:118
#define SNMPAPI_ERROR
Definition: snmp.h:205
#define SNMPAPI_NOERROR
Definition: snmp.h:204
#define ASN_GAUGE32
Definition: snmp.h:115
#define ASN_OBJECTIDENTIFIER
Definition: snmp.h:107
#define SNMP_MEM_ALLOC_ERROR
Definition: snmp.h:191
#define ASN_INTEGER32
Definition: snmp.h:108
#define ASN_IPADDRESS
Definition: snmp.h:113
strcat
Definition: string.h:92
#define memset(x, y, z)
Definition: compat.h:39
#define UINT
Definition: utils.c:29
int one
Definition: sehframes.cpp:28
#define TRACE(s)
Definition: solgame.cpp:4
Definition: snmp.h:54
AsnCounter64 counter64
Definition: snmp.h:59
AsnGauge32 gauge
Definition: snmp.h:66
AsnTimeticks ticks
Definition: snmp.h:67
BYTE asnType
Definition: snmp.h:55
AsnCounter32 counter
Definition: snmp.h:65
AsnInteger32 number
Definition: snmp.h:57
AsnObjectIdentifier object
Definition: snmp.h:62
AsnUnsigned32 unsigned32
Definition: snmp.h:58
AsnOctetString string
Definition: snmp.h:60
union AsnAny::@3959 asnValue
UINT * ids
Definition: snmp.h:37
BOOL dynamic
Definition: snmp.h:32
UINT length
Definition: snmp.h:31
BYTE * stream
Definition: snmp.h:30
SnmpVarBind * list
Definition: snmp.h:81
UINT len
Definition: snmp.h:82
AsnObjectName name
Definition: snmp.h:76
AsnObjectSyntax value
Definition: snmp.h:77
ULONGLONG QuadPart
Definition: ms-dtyp.idl:185
char * value
Definition: wpp.c:53
char * name
Definition: wpp.c:52
Definition: tcpcore.h:1673
Definition: mem.c:349
Definition: parse.h:23
char * LPSTR
Definition: typedefs.h:51
int32_t INT
Definition: typedefs.h:58
uint64_t ULONGLONG
Definition: typedefs.h:67
#define WINAPI
Definition: msvc.h:6
unsigned char BYTE
Definition: xxhash.c:193