ReactOS 0.4.17-dev-966-gf06eace
main.c File Reference
#include <stdio.h>
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "snmp.h"
#include "wine/debug.h"
Include dependency graph for main.c:

Go to the source code of this file.

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (snmpapi)
 
static INT asn_any_copy (AsnAny *dst, const AsnAny *src)
 
static void asn_any_free (AsnAny *any)
 
BOOL WINAPI DllMain (HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpvReserved)
 
DWORD WINAPI SnmpSvcGetUptime (void)
 
VOID WINAPIV SnmpUtilDbgPrint (INT loglevel, LPSTR format,...)
 
LPVOID WINAPI SnmpUtilMemAlloc (UINT nbytes)
 
LPVOID WINAPI SnmpUtilMemReAlloc (LPVOID mem, UINT nbytes)
 
VOID WINAPI SnmpUtilMemFree (LPVOID mem)
 
INT WINAPI SnmpUtilAsnAnyCpy (AsnAny *dst, AsnAny *src)
 
VOID WINAPI SnmpUtilAsnAnyFree (AsnAny *any)
 
INT WINAPI SnmpUtilOctetsCpy (AsnOctetString *dst, AsnOctetString *src)
 
VOID WINAPI SnmpUtilOctetsFree (AsnOctetString *octets)
 
INT WINAPI SnmpUtilOctetsNCmp (AsnOctetString *octets1, AsnOctetString *octets2, UINT count)
 
INT WINAPI SnmpUtilOctetsCmp (AsnOctetString *octets1, AsnOctetString *octets2)
 
INT WINAPI SnmpUtilOidAppend (AsnObjectIdentifier *dst, AsnObjectIdentifier *src)
 
INT WINAPI SnmpUtilOidCpy (AsnObjectIdentifier *dst, AsnObjectIdentifier *src)
 
VOID WINAPI SnmpUtilOidFree (AsnObjectIdentifier *oid)
 
INT WINAPI SnmpUtilOidNCmp (AsnObjectIdentifier *oid1, AsnObjectIdentifier *oid2, UINT count)
 
INT WINAPI SnmpUtilOidCmp (AsnObjectIdentifier *oid1, AsnObjectIdentifier *oid2)
 
INT WINAPI SnmpUtilVarBindCpy (SnmpVarBind *dst, SnmpVarBind *src)
 
VOID WINAPI SnmpUtilVarBindFree (SnmpVarBind *vb)
 
INT WINAPI SnmpUtilVarBindListCpy (SnmpVarBindList *dst, SnmpVarBindList *src)
 
VOID WINAPI SnmpUtilVarBindListFree (SnmpVarBindList *vb)
 
LPSTR WINAPI SnmpUtilIdsToA (UINT *ids, UINT length)
 
LPSTR WINAPI SnmpUtilOidToA (AsnObjectIdentifier *oid)
 
VOID WINAPI SnmpUtilPrintOid (AsnObjectIdentifier *oid)
 
VOID WINAPI SnmpUtilPrintAsnAny (AsnAny *any)
 

Variables

static ULONGLONG startTime
 

Function Documentation

◆ asn_any_copy()

static INT asn_any_copy ( AsnAny *  dst,
const AsnAny *  src 
)
static

Definition at line 33 of file main.c.

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}
#define WARN(fmt,...)
Definition: precomp.h:61
#define malloc
Definition: debug_ros.c:4
#define TRUE
Definition: types.h:120
GLenum src
Definition: glext.h:6340
GLuint * ids
Definition: glext.h:5907
GLsizeiptr size
Definition: glext.h:5919
GLenum GLenum dst
Definition: glext.h:6340
GLuint GLsizei GLsizei * length
Definition: glext.h:6040
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
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#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_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 ASN_INTEGER32
Definition: snmp.h:108
#define ASN_IPADDRESS
Definition: snmp.h:113
#define memset(x, y, z)
Definition: compat.h:39
#define UINT
Definition: utils.c:29
Definition: snmp.h:54
Definition: parse.h:23
unsigned char BYTE
Definition: xxhash.c:193

Referenced by SnmpUtilAsnAnyCpy(), and SnmpUtilVarBindCpy().

◆ asn_any_free()

static void asn_any_free ( AsnAny *  any)
static

Definition at line 85 of file main.c.

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}
#define free
Definition: debug_ros.c:5
#define NULL
Definition: types.h:112
#define ASN_NULL
Definition: snmp.h:106
BYTE asnType
Definition: snmp.h:55
AsnObjectIdentifier object
Definition: snmp.h:62
AsnOctetString string
Definition: snmp.h:60
union AsnAny::@3959 asnValue
UINT * ids
Definition: snmp.h:37
BOOL dynamic
Definition: snmp.h:32
BYTE * stream
Definition: snmp.h:30

Referenced by SnmpUtilAsnAnyFree(), and SnmpUtilVarBindFree().

◆ DllMain()

BOOL WINAPI DllMain ( HINSTANCE  hInstDLL,
DWORD  fdwReason,
LPVOID  lpvReserved 
)

Definition at line 118 of file main.c.

122{
123 TRACE("(%p,%ld,%p)\n", hInstDLL, fdwReason, lpvReserved);
124
125 switch(fdwReason) {
129 break;
130 }
131
132 return TRUE;
133}
static DWORD const fdwReason
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
ULONGLONG WINAPI DECLSPEC_HOTPATCH GetTickCount64(void)
Definition: sync.c:192
static ULONGLONG startTime
Definition: main.c:113
static IN DWORD IN LPVOID lpvReserved
#define TRACE(s)
Definition: solgame.cpp:4

◆ SnmpSvcGetUptime()

DWORD WINAPI SnmpSvcGetUptime ( void  )

Definition at line 143 of file main.c.

144{
146
147 return (now - startTime) / 10;
148}
time_t now
Definition: finger.c:65
uint64_t ULONGLONG
Definition: typedefs.h:67

◆ SnmpUtilAsnAnyCpy()

INT WINAPI SnmpUtilAsnAnyCpy ( AsnAny *  dst,
AsnAny *  src 
)

Definition at line 195 of file main.c.

196{
197 TRACE("(%p, %p)\n", dst, src);
198 return asn_any_copy(dst, src);
199}
static INT asn_any_copy(AsnAny *dst, const AsnAny *src)
Definition: main.c:33

Referenced by InitFunctionPtrs(), and setStringValue().

◆ SnmpUtilAsnAnyFree()

VOID WINAPI SnmpUtilAsnAnyFree ( AsnAny *  any)

Definition at line 204 of file main.c.

205{
206 TRACE("(%p)\n", any);
207 asn_any_free(any);
208}
static void asn_any_free(AsnAny *any)
Definition: main.c:85

Referenced by InitFunctionPtrs().

◆ SnmpUtilDbgPrint()

VOID WINAPIV SnmpUtilDbgPrint ( INT  loglevel,
LPSTR  format,
  ... 
)

Definition at line 160 of file main.c.

161{
162 FIXME("(%d, %s)\n", loglevel, debugstr_a(format));
163}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define debugstr_a
Definition: kernel32.h:31

◆ SnmpUtilIdsToA()

LPSTR WINAPI SnmpUtilIdsToA ( UINT *  ids,
UINT  length 
)

Definition at line 495 of file main.c.

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}
_ACRTIMP size_t __cdecl strlen(const char *)
Definition: string.c:1597
GLint left
Definition: glext.h:7726
GLenum GLsizei len
Definition: glext.h:6722
#define sprintf
Definition: sprintf.c:45
strcat
Definition: string.h:92
int one
Definition: sehframes.cpp:28

Referenced by SnmpUtilOidToA().

◆ SnmpUtilMemAlloc()

LPVOID WINAPI SnmpUtilMemAlloc ( UINT  nbytes)

Definition at line 168 of file main.c.

169{
170 TRACE("(%d)\n", nbytes);
171 return malloc(nbytes);
172}

Referenced by test_SnmpUtilOidAppend().

◆ SnmpUtilMemFree()

VOID WINAPI SnmpUtilMemFree ( LPVOID  mem)

Definition at line 186 of file main.c.

187{
188 TRACE("(%p)\n", mem);
189 free(mem);
190}
Definition: mem.c:349

◆ SnmpUtilMemReAlloc()

LPVOID WINAPI SnmpUtilMemReAlloc ( LPVOID  mem,
UINT  nbytes 
)

Definition at line 177 of file main.c.

178{
179 TRACE("(%p, %d)\n", mem, nbytes);
180 return realloc(mem, nbytes);
181}
#define realloc
Definition: debug_ros.c:6

◆ SnmpUtilOctetsCmp()

INT WINAPI SnmpUtilOctetsCmp ( AsnOctetString *  octets1,
AsnOctetString *  octets2 
)

Definition at line 274 of file main.c.

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}
INT WINAPI SnmpUtilOctetsNCmp(AsnOctetString *octets1, AsnOctetString *octets2, UINT count)
Definition: main.c:256
UINT length
Definition: snmp.h:31

Referenced by InitFunctionPtrs().

◆ SnmpUtilOctetsCpy()

INT WINAPI SnmpUtilOctetsCpy ( AsnOctetString *  dst,
AsnOctetString *  src 
)

Definition at line 213 of file main.c.

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}
#define FALSE
Definition: types.h:117

Referenced by InitFunctionPtrs().

◆ SnmpUtilOctetsFree()

VOID WINAPI SnmpUtilOctetsFree ( AsnOctetString *  octets)

Definition at line 240 of file main.c.

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}

Referenced by InitFunctionPtrs().

◆ SnmpUtilOctetsNCmp()

INT WINAPI SnmpUtilOctetsNCmp ( AsnOctetString *  octets1,
AsnOctetString *  octets2,
UINT  count 
)

Definition at line 256 of file main.c.

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}
return ret
Definition: mutex.c:147
GLuint GLuint GLsizei count
Definition: gl.h:1545
int32_t INT
Definition: typedefs.h:58

Referenced by InitFunctionPtrs(), and SnmpUtilOctetsCmp().

◆ SnmpUtilOidAppend()

INT WINAPI SnmpUtilOidAppend ( AsnObjectIdentifier *  dst,
AsnObjectIdentifier *  src 
)

Definition at line 287 of file main.c.

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}
#define SetLastError(x)
Definition: compat.h:752
#define SNMP_MEM_ALLOC_ERROR
Definition: snmp.h:191

Referenced by mib2UdpEntryQuery(), setOidWithItem(), setOidWithItemAndInteger(), setOidWithItemAndIpAddr(), and test_SnmpUtilOidAppend().

◆ SnmpUtilOidCmp()

INT WINAPI SnmpUtilOidCmp ( AsnObjectIdentifier *  oid1,
AsnObjectIdentifier *  oid2 
)

Definition at line 380 of file main.c.

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}
INT WINAPI SnmpUtilOidNCmp(AsnObjectIdentifier *oid1, AsnObjectIdentifier *oid2, UINT count)
Definition: main.c:356
static char oid1[]
Definition: encode.c:7512

Referenced by test_SnmpUtilOidCmp(), and testQuery().

◆ SnmpUtilOidCpy()

INT WINAPI SnmpUtilOidCpy ( AsnObjectIdentifier *  dst,
AsnObjectIdentifier *  src 
)

Definition at line 317 of file main.c.

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}

Referenced by mib2IfNumberQuery(), setOidWithItem(), SnmpExtensionInit(), SnmpExtensionQuery(), test_SnmpUtilOidCpyFree(), and testQuery().

◆ SnmpUtilOidFree()

VOID WINAPI SnmpUtilOidFree ( AsnObjectIdentifier *  oid)

Definition at line 342 of file main.c.

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}

Referenced by mib2IfNumberQuery(), setOidWithItem(), SnmpExtensionQuery(), test_SnmpUtilOidAppend(), test_SnmpUtilOidCpyFree(), and testInit().

◆ SnmpUtilOidNCmp()

INT WINAPI SnmpUtilOidNCmp ( AsnObjectIdentifier *  oid1,
AsnObjectIdentifier *  oid2,
UINT  count 
)

Definition at line 356 of file main.c.

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}
#define min(a, b)
Definition: monoChain.cc:55

Referenced by findSupportedQuery(), getItemAndInstanceFromTable(), getItemAndIntegerInstanceFromOid(), getItemFromOid(), mib2IfNumberQuery(), SnmpExtensionQuery(), SnmpUtilOidCmp(), test_SnmpUtilOidNCmp(), and testQuery().

◆ SnmpUtilOidToA()

LPSTR WINAPI SnmpUtilOidToA ( AsnObjectIdentifier *  oid)

Definition at line 532 of file main.c.

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}
LPSTR WINAPI SnmpUtilIdsToA(UINT *ids, UINT length)
Definition: main.c:495

Referenced by mib2IcmpQuery(), mib2IfEntryQuery(), mib2IfNumberQuery(), mib2IpAddrQuery(), mib2IpNetQuery(), mib2IpRouteQuery(), mib2IpStatsQuery(), mib2TcpQuery(), mib2UdpEntryQuery(), mib2UdpQuery(), SnmpExtensionQuery(), test_SnmpUtilOidToA(), testInit(), and testQuery().

◆ SnmpUtilPrintAsnAny()

VOID WINAPI SnmpUtilPrintAsnAny ( AsnAny *  any)

Definition at line 566 of file main.c.

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}
AsnCounter64 counter64
Definition: snmp.h:59
AsnGauge32 gauge
Definition: snmp.h:66
AsnTimeticks ticks
Definition: snmp.h:67
AsnCounter32 counter
Definition: snmp.h:65
AsnInteger32 number
Definition: snmp.h:57
AsnUnsigned32 unsigned32
Definition: snmp.h:58
ULONGLONG QuadPart
Definition: ms-dtyp.idl:185

◆ SnmpUtilPrintOid()

VOID WINAPI SnmpUtilPrintOid ( AsnObjectIdentifier *  oid)

Definition at line 547 of file main.c.

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}

◆ SnmpUtilVarBindCpy()

INT WINAPI SnmpUtilVarBindCpy ( SnmpVarBind *  dst,
SnmpVarBind *  src 
)

Definition at line 393 of file main.c.

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}
if(dx< 0)
Definition: linetemp.h:194
char * value
Definition: wpp.c:53
char * name
Definition: wpp.c:52

Referenced by SnmpUtilVarBindListCpy(), and test_SnmpUtilVarBindCpyFree().

◆ SnmpUtilVarBindFree()

VOID WINAPI SnmpUtilVarBindFree ( SnmpVarBind *  vb)

Definition at line 423 of file main.c.

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}
AsnObjectName name
Definition: snmp.h:76
AsnObjectSyntax value
Definition: snmp.h:77

Referenced by SnmpUtilVarBindListCpy(), SnmpUtilVarBindListFree(), test_SnmpUtilVarBindCpyFree(), and testQuery().

◆ SnmpUtilVarBindListCpy()

INT WINAPI SnmpUtilVarBindListCpy ( SnmpVarBindList *  dst,
SnmpVarBindList *  src 
)

Definition at line 438 of file main.c.

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}
INT WINAPI SnmpUtilVarBindCpy(SnmpVarBind *dst, SnmpVarBind *src)
Definition: main.c:393
VOID WINAPI SnmpUtilVarBindFree(SnmpVarBind *vb)
Definition: main.c:423
Definition: tcpcore.h:1673

Referenced by test_SnmpUtilVarBindListCpyFree().

◆ SnmpUtilVarBindListFree()

VOID WINAPI SnmpUtilVarBindListFree ( SnmpVarBindList *  vb)

Definition at line 478 of file main.c.

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}
uint32_t entry
Definition: isohybrid.c:63
SnmpVarBind * list
Definition: snmp.h:81
UINT len
Definition: snmp.h:82

Referenced by test_SnmpUtilVarBindListCpyFree().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( snmpapi  )

Variable Documentation

◆ startTime