1 // generated on Sep 17, 2010 4:11 PM
2 
3 #include "yatesnmp.h"
4 
5 namespace Snmp {
6 
7 /**
8   * ObjectName
9   */
ObjectName()10 ObjectName::ObjectName()
11 {
12 }
13 
ObjectName(void * data,int len)14 ObjectName::ObjectName(void* data, int len)
15 {
16 	DataBlock db(data,len);
17 	decode(db);
18 }
19 
~ObjectName()20 ObjectName::~ObjectName()
21 {
22 }
23 
decode(DataBlock & data)24 int ObjectName::decode(DataBlock& data)
25 {
26 	int length = 0;
27 	length = ASNLib::decodeOID(data,&m_ObjectName,true);
28 	return length;
29 }
30 
encode(DataBlock & data)31 int ObjectName::encode(DataBlock& data)
32 {
33 	int length = -1;
34 	const DataBlock db = ASNLib::encodeOID(m_ObjectName,true);
35 	data.append(db);
36 	length = db.length();
37 	return length;
38 }
39 
getParams(NamedList * params)40 void ObjectName::getParams(NamedList* params)
41 {}
42 
setParams(NamedList * params)43 void ObjectName::setParams(NamedList* params)
44 {}
45 
46 /**
47   * ObjectSyntax
48   */
ObjectSyntax()49 ObjectSyntax::ObjectSyntax()
50 {
51 	m_simple = new SimpleSyntax();
52 	m_application_wide = new ApplicationSyntax();
53 }
54 
ObjectSyntax(void * data,int len)55 ObjectSyntax::ObjectSyntax(void* data, int len)
56 {
57 	m_simple = new SimpleSyntax();
58 	m_application_wide = new ApplicationSyntax();
59 
60 	DataBlock db(data,len);
61 	decode(db);
62 }
63 
~ObjectSyntax()64 ObjectSyntax::~ObjectSyntax()
65 {
66 	TelEngine::destruct(m_simple);
67 	TelEngine::destruct(m_application_wide);
68 }
69 
decode(DataBlock & data)70 int ObjectSyntax::decode(DataBlock& data)
71 {
72 	int length = 0;
73 	length = m_simple->decode(data);
74 	if (length >= 0) {
75 		m_choiceType = SIMPLE;
76 		return length;
77 	}
78 	length = m_application_wide->decode(data);
79 	if (length >= 0) {
80 		m_choiceType = APPLICATION_WIDE;
81 		return length;
82 	}
83 	return length;
84 }
85 
encode(DataBlock & data)86 int ObjectSyntax::encode(DataBlock& data)
87 {
88 	int length = -1;
89 	if (m_choiceType == SIMPLE) {
90 		length = m_simple->encode(data);
91 	}
92 	if (m_choiceType == APPLICATION_WIDE) {
93 		length = m_application_wide->encode(data);
94 	}
95 	return length;
96 }
97 
getParams(NamedList * params)98 void ObjectSyntax::getParams(NamedList* params)
99 {}
100 
setParams(NamedList * params)101 void ObjectSyntax::setParams(NamedList* params)
102 {}
103 
104 /**
105   * SimpleSyntax
106   */
SimpleSyntax()107 SimpleSyntax::SimpleSyntax()
108 {
109 }
110 
SimpleSyntax(void * data,int len)111 SimpleSyntax::SimpleSyntax(void* data, int len)
112 {
113 	DataBlock db(data,len);
114 	decode(db);
115 }
116 
~SimpleSyntax()117 SimpleSyntax::~SimpleSyntax()
118 {
119 }
120 
decode(DataBlock & data)121 int SimpleSyntax::decode(DataBlock& data)
122 {
123 	int length = 0;
124 	length = ASNLib::decodeINT32(data,&m_integer_value,true);
125 	if (m_integer_value < s_integer_valueMinSize)
126 		DDebug(DebugAll,"Constraint break error");
127 	if (s_integer_valueMaxSize < m_integer_value)
128 		DDebug(DebugAll,"Constraint break error");
129 	if (length >= 0) {
130 		m_choiceType = INTEGER_VALUE;
131 		return length;
132 	}
133 	length = ASNLib::decodeOctetString(data,&m_string_value,true);
134 	if (length < s_string_valueSizeMinSize)
135 		DDebug(DebugAll,"Constraint break error");
136 	if (s_string_valueSizeMaxSize < length)
137 		DDebug(DebugAll,"Constraint break error");
138 	if (length >= 0) {
139 		m_choiceType = STRING_VALUE;
140 		return length;
141 	}
142 	length = ASNLib::decodeOID(data,&m_objectID_value,true);
143 	if (length >= 0) {
144 		m_choiceType = OBJECTID_VALUE;
145 		return length;
146 	}
147 	return length;
148 }
149 
encode(DataBlock & data)150 int SimpleSyntax::encode(DataBlock& data)
151 {
152 	int length = -1;
153 	if (m_choiceType == INTEGER_VALUE) {
154 		const DataBlock db = ASNLib::encodeInteger(m_integer_value,true);
155 		data.append(db);
156 		length = db.length();
157 	}
158 	if (m_choiceType == STRING_VALUE) {
159 		const DataBlock db = ASNLib::encodeOctetString(m_string_value,true);
160 		data.append(db);
161 		length = db.length();
162 	}
163 	if (m_choiceType == OBJECTID_VALUE) {
164 		const DataBlock db = ASNLib::encodeOID(m_objectID_value,true);
165 		data.append(db);
166 		length = db.length();
167 	}
168 	return length;
169 }
170 
getParams(NamedList * params)171 void SimpleSyntax::getParams(NamedList* params)
172 {}
173 
setParams(NamedList * params)174 void SimpleSyntax::setParams(NamedList* params)
175 {}
176 
177 /**
178   * ApplicationSyntax
179   */
ApplicationSyntax()180 ApplicationSyntax::ApplicationSyntax()
181 {
182 	m_ipAddress_value = new IpAddress();
183 	m_counter_value = new Counter32();
184 	m_timeticks_value = new TimeTicks();
185 	m_arbitrary_value = new Opaque();
186 	m_big_counter_value = new Counter64();
187 	m_unsigned_integer_value = new Unsigned32();
188 }
189 
ApplicationSyntax(void * data,int len)190 ApplicationSyntax::ApplicationSyntax(void* data, int len)
191 {
192 	m_ipAddress_value = new IpAddress();
193 	m_counter_value = new Counter32();
194 	m_timeticks_value = new TimeTicks();
195 	m_arbitrary_value = new Opaque();
196 	m_big_counter_value = new Counter64();
197 	m_unsigned_integer_value = new Unsigned32();
198 
199 	DataBlock db(data,len);
200 	decode(db);
201 }
202 
~ApplicationSyntax()203 ApplicationSyntax::~ApplicationSyntax()
204 {
205 	TelEngine::destruct(m_ipAddress_value);
206 	TelEngine::destruct(m_counter_value);
207 	TelEngine::destruct(m_timeticks_value);
208 	TelEngine::destruct(m_arbitrary_value);
209 	TelEngine::destruct(m_big_counter_value);
210 	TelEngine::destruct(m_unsigned_integer_value);
211 }
212 
decode(DataBlock & data)213 int ApplicationSyntax::decode(DataBlock& data)
214 {
215 	int length = 0;
216 	length = m_ipAddress_value->decode(data);
217 	if (length >= 0) {
218 		m_choiceType = IPADDRESS_VALUE;
219 		return length;
220 	}
221 	length = m_counter_value->decode(data);
222 	if (length >= 0) {
223 		m_choiceType = COUNTER_VALUE;
224 		return length;
225 	}
226 	length = m_timeticks_value->decode(data);
227 	if (length >= 0) {
228 		m_choiceType = TIMETICKS_VALUE;
229 		return length;
230 	}
231 	length = m_arbitrary_value->decode(data);
232 	if (length >= 0) {
233 		m_choiceType = ARBITRARY_VALUE;
234 		return length;
235 	}
236 	length = m_big_counter_value->decode(data);
237 	if (length >= 0) {
238 		m_choiceType = BIG_COUNTER_VALUE;
239 		return length;
240 	}
241 	length = m_unsigned_integer_value->decode(data);
242 	if (length >= 0) {
243 		m_choiceType = UNSIGNED_INTEGER_VALUE;
244 		return length;
245 	}
246 	return length;
247 }
248 
encode(DataBlock & data)249 int ApplicationSyntax::encode(DataBlock& data)
250 {
251 	int length = -1;
252 	if (m_choiceType == IPADDRESS_VALUE) {
253 		length = m_ipAddress_value->encode(data);
254 	}
255 	if (m_choiceType == COUNTER_VALUE) {
256 		length = m_counter_value->encode(data);
257 	}
258 	if (m_choiceType == TIMETICKS_VALUE) {
259 		length = m_timeticks_value->encode(data);
260 	}
261 	if (m_choiceType == ARBITRARY_VALUE) {
262 		length = m_arbitrary_value->encode(data);
263 	}
264 	if (m_choiceType == BIG_COUNTER_VALUE) {
265 		length = m_big_counter_value->encode(data);
266 	}
267 	if (m_choiceType == UNSIGNED_INTEGER_VALUE) {
268 		length = m_unsigned_integer_value->encode(data);
269 	}
270 	return length;
271 }
272 
getParams(NamedList * params)273 void ApplicationSyntax::getParams(NamedList* params)
274 {}
275 
setParams(NamedList * params)276 void ApplicationSyntax::setParams(NamedList* params)
277 {}
278 
279 /**
280   * IpAddress
281   */
IpAddress()282 IpAddress::IpAddress()
283 {
284 }
285 
IpAddress(void * data,int len)286 IpAddress::IpAddress(void* data, int len)
287 {
288 	DataBlock db(data,len);
289 	decode(db);
290 }
291 
~IpAddress()292 IpAddress::~IpAddress()
293 {
294 }
295 
decode(DataBlock & data)296 int IpAddress::decode(DataBlock& data)
297 {
298 	int length = 0;
299 	length = -1;
300 	if (data.length() < 2)
301 		return ASNLib::InvalidLengthOrTag;
302 	if (data[0] == tag_IpAddress) {
303 		data.cut(-1);
304 		length = ASNLib::decodeOctetString(data,&m_IpAddress,false);
305 		if (length != s_IpAddressSize)
306 			DDebug(DebugAll,"Constraint break error");
307 	}
308 	return length;
309 }
310 
encode(DataBlock & data)311 int IpAddress::encode(DataBlock& data)
312 {
313 	int length = -1;
314 	DataBlock contents;
315 	u_int8_t tag = tag_IpAddress;
316 	const DataBlock db = ASNLib::encodeOctetString(m_IpAddress,false);
317 	contents.append(db);
318 	length = db.length();
319 	DataBlock len = ASNLib::buildLength(contents);
320 	data.append(&tag,1);
321 	data.append(len);
322 	data.append(contents);
323 	return length;
324 }
325 
getParams(NamedList * params)326 void IpAddress::getParams(NamedList* params)
327 {}
328 
setParams(NamedList * params)329 void IpAddress::setParams(NamedList* params)
330 {}
331 
332 /**
333   * Counter32
334   */
Counter32()335 Counter32::Counter32()
336 {
337 }
338 
Counter32(void * data,int len)339 Counter32::Counter32(void* data, int len)
340 {
341 	DataBlock db(data,len);
342 	decode(db);
343 }
344 
~Counter32()345 Counter32::~Counter32()
346 {
347 }
348 
decode(DataBlock & data)349 int Counter32::decode(DataBlock& data)
350 {
351 	int length = 0;
352 	length = -1;
353 	if (data.length() < 2)
354 		return ASNLib::InvalidLengthOrTag;
355 	if (data[0] == tag_Counter32) {
356 		data.cut(-1);
357 		length = ASNLib::decodeUINT32(data,&m_Counter32,false);
358 		if (m_Counter32 < s_Counter32MinSize)
359 			DDebug(DebugAll,"Constraint break error");
360 		if (s_Counter32MaxSize < m_Counter32)
361 			DDebug(DebugAll,"Constraint break error");
362 	}
363 	return length;
364 }
365 
encode(DataBlock & data)366 int Counter32::encode(DataBlock& data)
367 {
368 	int length = -1;
369 	DataBlock contents;
370 	u_int8_t tag = tag_Counter32;
371 	const DataBlock db = ASNLib::encodeInteger(m_Counter32,false);
372 	contents.append(db);
373 	length = db.length();
374 	DataBlock len = ASNLib::buildLength(contents);
375 	data.append(&tag,1);
376 	data.append(len);
377 	data.append(contents);
378 	return length;
379 }
380 
getParams(NamedList * params)381 void Counter32::getParams(NamedList* params)
382 {}
383 
setParams(NamedList * params)384 void Counter32::setParams(NamedList* params)
385 {}
386 
387 /**
388   * Unsigned32
389   */
Unsigned32()390 Unsigned32::Unsigned32()
391 {
392 }
393 
Unsigned32(void * data,int len)394 Unsigned32::Unsigned32(void* data, int len)
395 {
396 	DataBlock db(data,len);
397 	decode(db);
398 }
399 
~Unsigned32()400 Unsigned32::~Unsigned32()
401 {
402 }
403 
decode(DataBlock & data)404 int Unsigned32::decode(DataBlock& data)
405 {
406 	int length = 0;
407 	length = -1;
408 	if (data.length() < 2)
409 		return ASNLib::InvalidLengthOrTag;
410 	if (data[0] == tag_Unsigned32) {
411 		data.cut(-1);
412 		length = ASNLib::decodeUINT32(data,&m_Unsigned32,false);
413 		if (m_Unsigned32 < s_Unsigned32MinSize)
414 			DDebug(DebugAll,"Constraint break error");
415 		if (s_Unsigned32MaxSize < m_Unsigned32)
416 			DDebug(DebugAll,"Constraint break error");
417 	}
418 	return length;
419 }
420 
encode(DataBlock & data)421 int Unsigned32::encode(DataBlock& data)
422 {
423 	int length = -1;
424 	DataBlock contents;
425 	u_int8_t tag = tag_Unsigned32;
426 	const DataBlock db = ASNLib::encodeInteger(m_Unsigned32,false);
427 	contents.append(db);
428 	length = db.length();
429 	DataBlock len = ASNLib::buildLength(contents);
430 	data.append(&tag,1);
431 	data.append(len);
432 	data.append(contents);
433 	return length;
434 }
435 
getParams(NamedList * params)436 void Unsigned32::getParams(NamedList* params)
437 {}
438 
setParams(NamedList * params)439 void Unsigned32::setParams(NamedList* params)
440 {}
441 
442 /**
443   * Gauge32
444   */
Gauge32()445 Gauge32::Gauge32()
446 {
447 	m_Gauge32 = new Unsigned32();
448 }
449 
Gauge32(void * data,int len)450 Gauge32::Gauge32(void* data, int len)
451 {
452 	m_Gauge32 = new Unsigned32();
453 
454 	DataBlock db(data,len);
455 	decode(db);
456 }
457 
~Gauge32()458 Gauge32::~Gauge32()
459 {
460 	TelEngine::destruct(m_Gauge32);
461 }
462 
decode(DataBlock & data)463 int Gauge32::decode(DataBlock& data)
464 {
465 	int length = 0;
466 	length = m_Gauge32->decode(data);
467 	return length;
468 }
469 
encode(DataBlock & data)470 int Gauge32::encode(DataBlock& data)
471 {
472 	int length = -1;
473 	length = m_Gauge32->encode(data);
474 	return length;
475 }
476 
getParams(NamedList * params)477 void Gauge32::getParams(NamedList* params)
478 {}
479 
setParams(NamedList * params)480 void Gauge32::setParams(NamedList* params)
481 {}
482 
483 /**
484   * TimeTicks
485   */
TimeTicks()486 TimeTicks::TimeTicks()
487 {
488 }
489 
TimeTicks(void * data,int len)490 TimeTicks::TimeTicks(void* data, int len)
491 {
492 	DataBlock db(data,len);
493 	decode(db);
494 }
495 
~TimeTicks()496 TimeTicks::~TimeTicks()
497 {
498 }
499 
decode(DataBlock & data)500 int TimeTicks::decode(DataBlock& data)
501 {
502 	int length = 0;
503 	length = -1;
504 	if (data.length() < 2)
505 		return ASNLib::InvalidLengthOrTag;
506 	if (data[0] == tag_TimeTicks) {
507 		data.cut(-1);
508 		length = ASNLib::decodeUINT32(data,&m_TimeTicks,false);
509 		if (m_TimeTicks < s_TimeTicksMinSize)
510 			DDebug(DebugAll,"Constraint break error");
511 		if (s_TimeTicksMaxSize < m_TimeTicks)
512 			DDebug(DebugAll,"Constraint break error");
513 	}
514 	return length;
515 }
516 
encode(DataBlock & data)517 int TimeTicks::encode(DataBlock& data)
518 {
519 	int length = -1;
520 	DataBlock contents;
521 	u_int8_t tag = tag_TimeTicks;
522 	const DataBlock db = ASNLib::encodeInteger(m_TimeTicks,false);
523 	contents.append(db);
524 	length = db.length();
525 	DataBlock len = ASNLib::buildLength(contents);
526 	data.append(&tag,1);
527 	data.append(len);
528 	data.append(contents);
529 	return length;
530 }
531 
getParams(NamedList * params)532 void TimeTicks::getParams(NamedList* params)
533 {}
534 
setParams(NamedList * params)535 void TimeTicks::setParams(NamedList* params)
536 {}
537 
538 /**
539   * Opaque
540   */
Opaque()541 Opaque::Opaque()
542 {
543 }
544 
Opaque(void * data,int len)545 Opaque::Opaque(void* data, int len)
546 {
547 	DataBlock db(data,len);
548 	decode(db);
549 }
550 
~Opaque()551 Opaque::~Opaque()
552 {
553 }
554 
decode(DataBlock & data)555 int Opaque::decode(DataBlock& data)
556 {
557 	int length = 0;
558 	length = -1;
559 	if (data.length() < 2)
560 		return ASNLib::InvalidLengthOrTag;
561 	if (data[0] == tag_Opaque) {
562 		data.cut(-1);
563 		length = ASNLib::decodeOctetString(data,&m_Opaque,false);
564 	}
565 	return length;
566 }
567 
encode(DataBlock & data)568 int Opaque::encode(DataBlock& data)
569 {
570 	int length = -1;
571 	DataBlock contents;
572 	u_int8_t tag = tag_Opaque;
573 	const DataBlock db = ASNLib::encodeOctetString(m_Opaque,false);
574 	contents.append(db);
575 	length = db.length();
576 	DataBlock len = ASNLib::buildLength(contents);
577 	data.append(&tag,1);
578 	data.append(len);
579 	data.append(contents);
580 	return length;
581 }
582 
getParams(NamedList * params)583 void Opaque::getParams(NamedList* params)
584 {}
585 
setParams(NamedList * params)586 void Opaque::setParams(NamedList* params)
587 {}
588 
589 /**
590   * Counter64
591   */
Counter64()592 Counter64::Counter64()
593 {
594 }
595 
Counter64(void * data,int len)596 Counter64::Counter64(void* data, int len)
597 {
598 	DataBlock db(data,len);
599 	decode(db);
600 }
601 
~Counter64()602 Counter64::~Counter64()
603 {
604 }
605 
decode(DataBlock & data)606 int Counter64::decode(DataBlock& data)
607 {
608 	int length = 0;
609 	length = -1;
610 	if (data.length() < 2)
611 		return ASNLib::InvalidLengthOrTag;
612 	if (data[0] == tag_Counter64) {
613 		data.cut(-1);
614 		length = ASNLib::decodeUINT64(data,&m_Counter64,false);
615 		if (m_Counter64 < s_Counter64MinSize)
616 			DDebug(DebugAll,"Constraint break error");
617 		if (s_Counter64MaxSize < m_Counter64)
618 			DDebug(DebugAll,"Constraint break error");
619 	}
620 	return length;
621 }
622 
encode(DataBlock & data)623 int Counter64::encode(DataBlock& data)
624 {
625 	int length = -1;
626 	DataBlock contents;
627 	u_int8_t tag = tag_Counter64;
628 	const DataBlock db = ASNLib::encodeInteger(m_Counter64,false);
629 	contents.append(db);
630 	length = db.length();
631 	DataBlock len = ASNLib::buildLength(contents);
632 	data.append(&tag,1);
633 	data.append(len);
634 	data.append(contents);
635 	return length;
636 }
637 
getParams(NamedList * params)638 void Counter64::getParams(NamedList* params)
639 {}
640 
setParams(NamedList * params)641 void Counter64::setParams(NamedList* params)
642 {}
643 
644 /**
645   * PDUs
646   */
PDUs()647 PDUs::PDUs()
648 {
649 	m_get_request = new GetRequest_PDU();
650 	m_get_next_request = new GetNextRequest_PDU();
651 	m_get_bulk_request = new GetBulkRequest_PDU();
652 	m_response = new Response_PDU();
653 	m_set_request = new SetRequest_PDU();
654 	m_inform_request = new InformRequest_PDU();
655 	m_snmpV2_trap = new SNMPv2_Trap_PDU();
656 	m_report = new Report_PDU();
657 }
658 
PDUs(void * data,int len)659 PDUs::PDUs(void* data, int len)
660 {
661 	m_get_request = new GetRequest_PDU();
662 	m_get_next_request = new GetNextRequest_PDU();
663 	m_get_bulk_request = new GetBulkRequest_PDU();
664 	m_response = new Response_PDU();
665 	m_set_request = new SetRequest_PDU();
666 	m_inform_request = new InformRequest_PDU();
667 	m_snmpV2_trap = new SNMPv2_Trap_PDU();
668 	m_report = new Report_PDU();
669 
670 	DataBlock db(data,len);
671 	decode(db);
672 }
673 
~PDUs()674 PDUs::~PDUs()
675 {
676 	TelEngine::destruct(m_get_request);
677 	TelEngine::destruct(m_get_next_request);
678 	TelEngine::destruct(m_get_bulk_request);
679 	TelEngine::destruct(m_response);
680 	TelEngine::destruct(m_set_request);
681 	TelEngine::destruct(m_inform_request);
682 	TelEngine::destruct(m_snmpV2_trap);
683 	TelEngine::destruct(m_report);
684 }
685 
decode(DataBlock & data)686 int PDUs::decode(DataBlock& data)
687 {
688 	int length = 0;
689 	length = m_get_request->decode(data);
690 	if (length >= 0) {
691 		m_choiceType = GET_REQUEST;
692 		return length;
693 	}
694 	length = m_get_next_request->decode(data);
695 	if (length >= 0) {
696 		m_choiceType = GET_NEXT_REQUEST;
697 		return length;
698 	}
699 	length = m_get_bulk_request->decode(data);
700 	if (length >= 0) {
701 		m_choiceType = GET_BULK_REQUEST;
702 		return length;
703 	}
704 	length = m_response->decode(data);
705 	if (length >= 0) {
706 		m_choiceType = RESPONSE;
707 		return length;
708 	}
709 	length = m_set_request->decode(data);
710 	if (length >= 0) {
711 		m_choiceType = SET_REQUEST;
712 		return length;
713 	}
714 	length = m_inform_request->decode(data);
715 	if (length >= 0) {
716 		m_choiceType = INFORM_REQUEST;
717 		return length;
718 	}
719 	length = m_snmpV2_trap->decode(data);
720 	if (length >= 0) {
721 		m_choiceType = SNMPV2_TRAP;
722 		return length;
723 	}
724 	length = m_report->decode(data);
725 	if (length >= 0) {
726 		m_choiceType = REPORT;
727 		return length;
728 	}
729 	return length;
730 }
731 
encode(DataBlock & data)732 int PDUs::encode(DataBlock& data)
733 {
734 	int length = -1;
735 	if (m_choiceType == GET_REQUEST) {
736 		length = m_get_request->encode(data);
737 	}
738 	if (m_choiceType == GET_NEXT_REQUEST) {
739 		length = m_get_next_request->encode(data);
740 	}
741 	if (m_choiceType == GET_BULK_REQUEST) {
742 		length = m_get_bulk_request->encode(data);
743 	}
744 	if (m_choiceType == RESPONSE) {
745 		length = m_response->encode(data);
746 	}
747 	if (m_choiceType == SET_REQUEST) {
748 		length = m_set_request->encode(data);
749 	}
750 	if (m_choiceType == INFORM_REQUEST) {
751 		length = m_inform_request->encode(data);
752 	}
753 	if (m_choiceType == SNMPV2_TRAP) {
754 		length = m_snmpV2_trap->encode(data);
755 	}
756 	if (m_choiceType == REPORT) {
757 		length = m_report->encode(data);
758 	}
759 	return length;
760 }
761 
getParams(NamedList * params)762 void PDUs::getParams(NamedList* params)
763 {}
764 
setParams(NamedList * params)765 void PDUs::setParams(NamedList* params)
766 {}
767 
768 /**
769   * GetRequest_PDU
770   */
GetRequest_PDU()771 GetRequest_PDU::GetRequest_PDU()
772 {
773 	m_GetRequest_PDU = new PDU();
774 }
775 
GetRequest_PDU(void * data,int len)776 GetRequest_PDU::GetRequest_PDU(void* data, int len)
777 {
778 	m_GetRequest_PDU = new PDU();
779 	DataBlock db(data,len);
780 	decode(db);
781 }
782 
~GetRequest_PDU()783 GetRequest_PDU::~GetRequest_PDU()
784 {
785 	TelEngine::destruct(m_GetRequest_PDU);
786 }
787 
decode(DataBlock & data)788 int GetRequest_PDU::decode(DataBlock& data)
789 {
790 	int length = 0;
791 	length = -1;
792 	if (data.length() < 2)
793 		return ASNLib::InvalidLengthOrTag;
794 	if (data[0] == tag_GetRequest_PDU) {
795 		data.cut(-1);
796 		length = m_GetRequest_PDU->decode(data);
797 	}
798 	return length;
799 }
800 
encode(DataBlock & data)801 int GetRequest_PDU::encode(DataBlock& data)
802 {
803 	int length = -1;
804 	DataBlock contents;
805 	u_int8_t tag = tag_GetRequest_PDU;
806 	length = m_GetRequest_PDU->encode(contents);
807 	DataBlock len = ASNLib::buildLength(contents);
808 	data.append(&tag,1);
809 	data.append(len);
810 	data.append(contents);
811 	return length;
812 }
813 
getParams(NamedList * params)814 void GetRequest_PDU::getParams(NamedList* params)
815 {}
816 
setParams(NamedList * params)817 void GetRequest_PDU::setParams(NamedList* params)
818 {}
819 
820 /**
821   * GetNextRequest_PDU
822   */
GetNextRequest_PDU()823 GetNextRequest_PDU::GetNextRequest_PDU()
824 {
825 	m_GetNextRequest_PDU = new PDU();
826 }
827 
GetNextRequest_PDU(void * data,int len)828 GetNextRequest_PDU::GetNextRequest_PDU(void* data, int len)
829 {
830 	m_GetNextRequest_PDU = new PDU();
831 	DataBlock db(data,len);
832 	decode(db);
833 }
834 
~GetNextRequest_PDU()835 GetNextRequest_PDU::~GetNextRequest_PDU()
836 {
837 	TelEngine::destruct(m_GetNextRequest_PDU);
838 }
839 
decode(DataBlock & data)840 int GetNextRequest_PDU::decode(DataBlock& data)
841 {
842 	int length = 0;
843 	length = -1;
844 	if (data.length() < 2)
845 		return ASNLib::InvalidLengthOrTag;
846 	if (data[0] == tag_GetNextRequest_PDU) {
847 		data.cut(-1);
848 		length = m_GetNextRequest_PDU->decode(data);
849 	}
850 	return length;
851 }
852 
encode(DataBlock & data)853 int GetNextRequest_PDU::encode(DataBlock& data)
854 {
855 	int length = -1;
856 	DataBlock contents;
857 	u_int8_t tag = tag_GetNextRequest_PDU;
858 	length = m_GetNextRequest_PDU->encode(contents);
859 	DataBlock len = ASNLib::buildLength(contents);
860 	data.append(&tag,1);
861 	data.append(len);
862 	data.append(contents);
863 	return length;
864 }
865 
getParams(NamedList * params)866 void GetNextRequest_PDU::getParams(NamedList* params)
867 {}
868 
setParams(NamedList * params)869 void GetNextRequest_PDU::setParams(NamedList* params)
870 {}
871 
872 /**
873   * Response_PDU
874   */
Response_PDU()875 Response_PDU::Response_PDU()
876 {
877 	m_Response_PDU = new PDU();
878 }
879 
Response_PDU(void * data,int len)880 Response_PDU::Response_PDU(void* data, int len)
881 {
882 	m_Response_PDU = new PDU();
883 	DataBlock db(data,len);
884 	decode(db);
885 }
886 
~Response_PDU()887 Response_PDU::~Response_PDU()
888 {
889 	TelEngine::destruct(m_Response_PDU);
890 }
891 
decode(DataBlock & data)892 int Response_PDU::decode(DataBlock& data)
893 {
894 	int length = 0;
895 	length = -1;
896 	if (data.length() < 2)
897 		return ASNLib::InvalidLengthOrTag;
898 	if (data[0] == tag_Response_PDU) {
899 		data.cut(-1);
900 		length = m_Response_PDU->decode(data);
901 	}
902 	return length;
903 }
904 
encode(DataBlock & data)905 int Response_PDU::encode(DataBlock& data)
906 {
907 	int length = -1;
908 	DataBlock contents;
909 	u_int8_t tag = tag_Response_PDU;
910 	length = m_Response_PDU->encode(contents);
911 	DataBlock len = ASNLib::buildLength(contents);
912 	data.append(&tag,1);
913 	data.append(len);
914 	data.append(contents);
915 	return length;
916 }
917 
getParams(NamedList * params)918 void Response_PDU::getParams(NamedList* params)
919 {}
920 
setParams(NamedList * params)921 void Response_PDU::setParams(NamedList* params)
922 {}
923 
924 /**
925   * SetRequest_PDU
926   */
SetRequest_PDU()927 SetRequest_PDU::SetRequest_PDU()
928 {
929 	m_SetRequest_PDU = new PDU();
930 }
931 
SetRequest_PDU(void * data,int len)932 SetRequest_PDU::SetRequest_PDU(void* data, int len)
933 {
934 	m_SetRequest_PDU = new PDU();
935 	DataBlock db(data,len);
936 	decode(db);
937 }
938 
~SetRequest_PDU()939 SetRequest_PDU::~SetRequest_PDU()
940 {
941 	TelEngine::destruct(m_SetRequest_PDU);
942 }
943 
decode(DataBlock & data)944 int SetRequest_PDU::decode(DataBlock& data)
945 {
946 	int length = 0;
947 	length = -1;
948 	if (data.length() < 2)
949 		return ASNLib::InvalidLengthOrTag;
950 	if (data[0] == tag_SetRequest_PDU) {
951 		data.cut(-1);
952 		length = m_SetRequest_PDU->decode(data);
953 	}
954 	return length;
955 }
956 
encode(DataBlock & data)957 int SetRequest_PDU::encode(DataBlock& data)
958 {
959 	int length = -1;
960 	DataBlock contents;
961 	u_int8_t tag = tag_SetRequest_PDU;
962 	length = m_SetRequest_PDU->encode(contents);
963 	DataBlock len = ASNLib::buildLength(contents);
964 	data.append(&tag,1);
965 	data.append(len);
966 	data.append(contents);
967 	return length;
968 }
969 
getParams(NamedList * params)970 void SetRequest_PDU::getParams(NamedList* params)
971 {}
972 
setParams(NamedList * params)973 void SetRequest_PDU::setParams(NamedList* params)
974 {}
975 
976 /**
977   * GetBulkRequest_PDU
978   */
GetBulkRequest_PDU()979 GetBulkRequest_PDU::GetBulkRequest_PDU()
980 {
981 	m_GetBulkRequest_PDU = new BulkPDU();
982 }
983 
GetBulkRequest_PDU(void * data,int len)984 GetBulkRequest_PDU::GetBulkRequest_PDU(void* data, int len)
985 {
986 	m_GetBulkRequest_PDU = new BulkPDU();
987 	DataBlock db(data,len);
988 	decode(db);
989 }
990 
~GetBulkRequest_PDU()991 GetBulkRequest_PDU::~GetBulkRequest_PDU()
992 {
993 	TelEngine::destruct(m_GetBulkRequest_PDU);
994 }
995 
decode(DataBlock & data)996 int GetBulkRequest_PDU::decode(DataBlock& data)
997 {
998 	int length = 0;
999 	length = -1;
1000 	if (data.length() < 2)
1001 		return ASNLib::InvalidLengthOrTag;
1002 	if (data[0] == tag_GetBulkRequest_PDU) {
1003 		data.cut(-1);
1004 		length = m_GetBulkRequest_PDU->decode(data);
1005 	}
1006 	return length;
1007 }
1008 
encode(DataBlock & data)1009 int GetBulkRequest_PDU::encode(DataBlock& data)
1010 {
1011 	int length = -1;
1012 	DataBlock contents;
1013 	u_int8_t tag = tag_GetBulkRequest_PDU;
1014 	length = m_GetBulkRequest_PDU->encode(contents);
1015 	DataBlock len = ASNLib::buildLength(contents);
1016 	data.append(&tag,1);
1017 	data.append(len);
1018 	data.append(contents);
1019 	return length;
1020 }
1021 
getParams(NamedList * params)1022 void GetBulkRequest_PDU::getParams(NamedList* params)
1023 {}
1024 
setParams(NamedList * params)1025 void GetBulkRequest_PDU::setParams(NamedList* params)
1026 {}
1027 
1028 /**
1029   * InformRequest_PDU
1030   */
InformRequest_PDU()1031 InformRequest_PDU::InformRequest_PDU()
1032 {
1033 	m_InformRequest_PDU = new PDU();
1034 }
1035 
InformRequest_PDU(void * data,int len)1036 InformRequest_PDU::InformRequest_PDU(void* data, int len)
1037 {
1038 	m_InformRequest_PDU = new PDU();
1039 	DataBlock db(data,len);
1040 	decode(db);
1041 }
1042 
~InformRequest_PDU()1043 InformRequest_PDU::~InformRequest_PDU()
1044 {
1045 	TelEngine::destruct(m_InformRequest_PDU);
1046 }
1047 
decode(DataBlock & data)1048 int InformRequest_PDU::decode(DataBlock& data)
1049 {
1050 	int length = 0;
1051 	length = -1;
1052 	if (data.length() < 2)
1053 		return ASNLib::InvalidLengthOrTag;
1054 	if (data[0] == tag_InformRequest_PDU) {
1055 		data.cut(-1);
1056 		length = m_InformRequest_PDU->decode(data);
1057 	}
1058 	return length;
1059 }
1060 
encode(DataBlock & data)1061 int InformRequest_PDU::encode(DataBlock& data)
1062 {
1063 	int length = -1;
1064 	DataBlock contents;
1065 	u_int8_t tag = tag_InformRequest_PDU;
1066 	length = m_InformRequest_PDU->encode(contents);
1067 	DataBlock len = ASNLib::buildLength(contents);
1068 	data.append(&tag,1);
1069 	data.append(len);
1070 	data.append(contents);
1071 	return length;
1072 }
1073 
getParams(NamedList * params)1074 void InformRequest_PDU::getParams(NamedList* params)
1075 {}
1076 
setParams(NamedList * params)1077 void InformRequest_PDU::setParams(NamedList* params)
1078 {}
1079 
1080 /**
1081   * SNMPv2_Trap_PDU
1082   */
SNMPv2_Trap_PDU()1083 SNMPv2_Trap_PDU::SNMPv2_Trap_PDU()
1084 {
1085 	m_SNMPv2_Trap_PDU = new PDU();
1086 }
1087 
SNMPv2_Trap_PDU(void * data,int len)1088 SNMPv2_Trap_PDU::SNMPv2_Trap_PDU(void* data, int len)
1089 {
1090 	m_SNMPv2_Trap_PDU = new PDU();
1091 	DataBlock db(data,len);
1092 	decode(db);
1093 }
1094 
~SNMPv2_Trap_PDU()1095 SNMPv2_Trap_PDU::~SNMPv2_Trap_PDU()
1096 {
1097 	TelEngine::destruct(m_SNMPv2_Trap_PDU);
1098 }
1099 
decode(DataBlock & data)1100 int SNMPv2_Trap_PDU::decode(DataBlock& data)
1101 {
1102 	int length = 0;
1103 	length = -1;
1104 	if (data.length() < 2)
1105 		return ASNLib::InvalidLengthOrTag;
1106 	if (data[0] == tag_SNMPv2_Trap_PDU) {
1107 		data.cut(-1);
1108 		length = m_SNMPv2_Trap_PDU->decode(data);
1109 	}
1110 	return length;
1111 }
1112 
encode(DataBlock & data)1113 int SNMPv2_Trap_PDU::encode(DataBlock& data)
1114 {
1115 	int length = -1;
1116 	DataBlock contents;
1117 	u_int8_t tag = tag_SNMPv2_Trap_PDU;
1118 	length = m_SNMPv2_Trap_PDU->encode(contents);
1119 	DataBlock len = ASNLib::buildLength(contents);
1120 	data.append(&tag,1);
1121 	data.append(len);
1122 	data.append(contents);
1123 	return length;
1124 }
1125 
getParams(NamedList * params)1126 void SNMPv2_Trap_PDU::getParams(NamedList* params)
1127 {}
1128 
setParams(NamedList * params)1129 void SNMPv2_Trap_PDU::setParams(NamedList* params)
1130 {}
1131 
1132 /**
1133   * Report_PDU
1134   */
Report_PDU()1135 Report_PDU::Report_PDU()
1136 {
1137 	m_Report_PDU = new PDU();
1138 }
1139 
Report_PDU(void * data,int len)1140 Report_PDU::Report_PDU(void* data, int len)
1141 {
1142 	m_Report_PDU = new PDU();
1143 	DataBlock db(data,len);
1144 	decode(db);
1145 }
1146 
~Report_PDU()1147 Report_PDU::~Report_PDU()
1148 {
1149 	TelEngine::destruct(m_Report_PDU);
1150 }
1151 
decode(DataBlock & data)1152 int Report_PDU::decode(DataBlock& data)
1153 {
1154 	int length = 0;
1155 	length = -1;
1156 	if (data.length() < 2)
1157 		return ASNLib::InvalidLengthOrTag;
1158 	if (data[0] == tag_Report_PDU) {
1159 		data.cut(-1);
1160 		length = m_Report_PDU->decode(data);
1161 	}
1162 	return length;
1163 }
1164 
encode(DataBlock & data)1165 int Report_PDU::encode(DataBlock& data)
1166 {
1167 	int length = -1;
1168 	DataBlock contents;
1169 	u_int8_t tag = tag_Report_PDU;
1170 	length = m_Report_PDU->encode(contents);
1171 	DataBlock len = ASNLib::buildLength(contents);
1172 	data.append(&tag,1);
1173 	data.append(len);
1174 	data.append(contents);
1175 	return length;
1176 }
1177 
getParams(NamedList * params)1178 void Report_PDU::getParams(NamedList* params)
1179 {}
1180 
setParams(NamedList * params)1181 void Report_PDU::setParams(NamedList* params)
1182 {}
1183 
1184 /**
1185   * PDU
1186   */
PDU()1187 PDU::PDU()
1188 {
1189 	m_variable_bindings = new VarBindList();
1190 }
1191 
PDU(void * data,int len)1192 PDU::PDU(void* data, int len)
1193 {
1194 	m_variable_bindings = new VarBindList();
1195 	DataBlock db(data,len);
1196 	decode(db);
1197 }
1198 
~PDU()1199 PDU::~PDU()
1200 {
1201 	TelEngine::destruct(m_variable_bindings);
1202 }
1203 
decode(DataBlock & data)1204 int PDU::decode(DataBlock& data)
1205 {
1206 	int length = 0;
1207 	length = ASNLib::decodeSequence(data,false);
1208 	if (length < 0)
1209 		return length;
1210 	length = ASNLib::decodeINT32(data,&m_request_id,true);
1211 	if (m_request_id < s_request_idMinSize)
1212 		DDebug(DebugAll,"Constraint break error");
1213 	if (s_request_idMaxSize < m_request_id)
1214 		DDebug(DebugAll,"Constraint break error");
1215 	length = ASNLib::decodeINT32(data,&m_error_status,true);
1216 	if ( m_error_status < s_noError_error_status || m_error_status > s_inconsistentName_error_status)
1217 		return ASNLib::InvalidContentsError;
1218 	length = ASNLib::decodeINT32(data,&m_error_index,true);
1219 	if (m_error_index < s_error_indexMinSize)
1220 		DDebug(DebugAll,"Constraint break error");
1221 	if (s_error_indexMaxSize < m_error_index)
1222 		DDebug(DebugAll,"Constraint break error");
1223 	length = m_variable_bindings->decode(data);
1224 	return length;
1225 }
1226 
encode(DataBlock & data)1227 int PDU::encode(DataBlock& data)
1228 {
1229 	int length = -1;
1230 	DataBlock seqDb;
1231 	DataBlock db;
1232 	length = 0;
1233 	db =  ASNLib::encodeInteger(m_request_id,true);
1234 	seqDb.append(db);
1235 	db =  ASNLib::encodeInteger(m_error_status,true);
1236 	seqDb.append(db);
1237 	db =  ASNLib::encodeInteger(m_error_index,true);
1238 	seqDb.append(db);
1239 	m_variable_bindings->encode(seqDb);
1240 	length = ASNLib::encodeSequence(seqDb,false);
1241 	data.append(seqDb);
1242 	return length;
1243 }
1244 
getParams(NamedList * params)1245 void PDU::getParams(NamedList* params)
1246 {}
1247 
setParams(NamedList * params)1248 void PDU::setParams(NamedList* params)
1249 {}
1250 
1251 /**
1252   * BulkPDU
1253   */
BulkPDU()1254 BulkPDU::BulkPDU()
1255 {
1256 	m_variable_bindings = new VarBindList();
1257 }
1258 
BulkPDU(void * data,int len)1259 BulkPDU::BulkPDU(void* data, int len)
1260 {
1261 	m_variable_bindings = new VarBindList();
1262 	DataBlock db(data,len);
1263 	decode(db);
1264 }
1265 
~BulkPDU()1266 BulkPDU::~BulkPDU()
1267 {
1268 	TelEngine::destruct(m_variable_bindings);
1269 }
1270 
decode(DataBlock & data)1271 int BulkPDU::decode(DataBlock& data)
1272 {
1273 	int length = 0;
1274 	length = ASNLib::decodeSequence(data,false);
1275 	if (length < 0)
1276 		return length;
1277 	length = ASNLib::decodeINT32(data,&m_request_id,true);
1278 	if (m_request_id < s_request_idMinSize)
1279 		DDebug(DebugAll,"Constraint break error");
1280 	if (s_request_idMaxSize < m_request_id)
1281 		DDebug(DebugAll,"Constraint break error");
1282 	length = ASNLib::decodeINT32(data,&m_non_repeaters,true);
1283 	if (m_non_repeaters < s_non_repeatersMinSize)
1284 		DDebug(DebugAll,"Constraint break error");
1285 	if (s_non_repeatersMaxSize < m_non_repeaters)
1286 		DDebug(DebugAll,"Constraint break error");
1287 	length = ASNLib::decodeINT32(data,&m_max_repetitions,true);
1288 	if (m_max_repetitions < s_max_repetitionsMinSize)
1289 		DDebug(DebugAll,"Constraint break error");
1290 	if (s_max_repetitionsMaxSize < m_max_repetitions)
1291 		DDebug(DebugAll,"Constraint break error");
1292 	length = m_variable_bindings->decode(data);
1293 	return length;
1294 }
1295 
encode(DataBlock & data)1296 int BulkPDU::encode(DataBlock& data)
1297 {
1298 	int length = -1;
1299 	DataBlock seqDb;
1300 	DataBlock db;
1301 	length = 0;
1302 	db =  ASNLib::encodeInteger(m_request_id,true);
1303 	seqDb.append(db);
1304 	db =  ASNLib::encodeInteger(m_non_repeaters,true);
1305 	seqDb.append(db);
1306 	db =  ASNLib::encodeInteger(m_max_repetitions,true);
1307 	seqDb.append(db);
1308 	m_variable_bindings->encode(seqDb);
1309 	length = ASNLib::encodeSequence(seqDb,false);
1310 	data.append(seqDb);
1311 	return length;
1312 }
1313 
getParams(NamedList * params)1314 void BulkPDU::getParams(NamedList* params)
1315 {}
1316 
setParams(NamedList * params)1317 void BulkPDU::setParams(NamedList* params)
1318 {}
1319 
1320 /**
1321   * VarBind
1322   */
VarBind()1323 VarBind::VarBind()
1324 {
1325 	m_name = new ObjectName();
1326 	m_value = new ObjectSyntax();
1327 }
1328 
VarBind(void * data,int len)1329 VarBind::VarBind(void* data, int len)
1330 {
1331 	m_name = new ObjectName();
1332 	m_value = new ObjectSyntax();
1333 	DataBlock db(data,len);
1334 	decode(db);
1335 }
1336 
~VarBind()1337 VarBind::~VarBind()
1338 {
1339 	TelEngine::destruct(m_name);
1340 	TelEngine::destruct(m_value);
1341 }
1342 
decode(DataBlock & data)1343 int VarBind::decode(DataBlock& data)
1344 {
1345 	int length = 0;
1346 	length = ASNLib::decodeSequence(data,true);
1347 	if (length < 0)
1348 		return length;
1349 	length = m_name->decode(data);
1350 	length = m_value->decode(data);
1351 	if (length >= 0) {
1352 		m_choiceType = VALUE;
1353 		return length;
1354 	}
1355 	length = ASNLib::decodeNull(data,true);
1356 	if (length >= 0) {
1357 		m_choiceType = UNSPECIFIED;
1358 		return length;
1359 	}
1360 	length = -1;
1361 	if (data.length() < 2)
1362 		return ASNLib::InvalidLengthOrTag;
1363 	if (data[0] == tag_noSuchObject) {
1364 		data.cut(-1);
1365 		length = ASNLib::decodeNull(data,false);
1366 	}
1367 	if (length >= 0) {
1368 		m_choiceType = NOSUCHOBJECT;
1369 		return length;
1370 	}
1371 	length = -1;
1372 	if (data.length() < 2)
1373 		return ASNLib::InvalidLengthOrTag;
1374 	if (data[0] == tag_noSuchInstance) {
1375 		data.cut(-1);
1376 		length = ASNLib::decodeNull(data,false);
1377 	}
1378 	if (length >= 0) {
1379 		m_choiceType = NOSUCHINSTANCE;
1380 		return length;
1381 	}
1382 	length = -1;
1383 	if (data.length() < 2)
1384 		return ASNLib::InvalidLengthOrTag;
1385 	if (data[0] == tag_endOfMibView) {
1386 		data.cut(-1);
1387 		length = ASNLib::decodeNull(data,false);
1388 	}
1389 	if (length >= 0) {
1390 		m_choiceType = ENDOFMIBVIEW;
1391 		return length;
1392 	}
1393 	return length;
1394 }
1395 
encode(DataBlock & data)1396 int VarBind::encode(DataBlock& data)
1397 {
1398 	int length = -1;
1399 	DataBlock seqDb;
1400 	DataBlock db;
1401 	length = 0;
1402 	m_name->encode(seqDb);
1403 		if (m_choiceType == VALUE) {
1404 		length = m_value->encode(seqDb);
1405 	}
1406 	if (m_choiceType == UNSPECIFIED) {
1407 		DataBlock db = ASNLib::encodeNull(true);
1408 		seqDb.append(db);
1409 		length += seqDb.length();
1410 	}
1411 	if (m_choiceType == NOSUCHOBJECT) {
1412 		DataBlock contents;
1413 		u_int8_t tag = tag_noSuchObject;
1414 		DataBlock db = ASNLib::encodeNull(false);
1415 		contents.append(db);
1416 		length += contents.length();
1417 		DataBlock len = ASNLib::buildLength(contents);
1418 		seqDb.append(&tag,1);
1419 		seqDb.append(len);
1420 		seqDb.append(contents);
1421 	}
1422 	if (m_choiceType == NOSUCHINSTANCE) {
1423 		DataBlock contents;
1424 		u_int8_t tag = tag_noSuchInstance;
1425 		DataBlock db = ASNLib::encodeNull(false);
1426 		contents.append(db);
1427 		length += contents.length();
1428 		DataBlock len = ASNLib::buildLength(contents);
1429 		seqDb.append(&tag,1);
1430 		seqDb.append(len);
1431 		seqDb.append(contents);
1432 	}
1433 	if (m_choiceType == ENDOFMIBVIEW) {
1434 		DataBlock contents;
1435 		u_int8_t tag = tag_endOfMibView;
1436 		DataBlock db = ASNLib::encodeNull(false);
1437 		contents.append(db);
1438 		length += contents.length();
1439 		DataBlock len = ASNLib::buildLength(contents);
1440 		seqDb.append(&tag,1);
1441 		seqDb.append(len);
1442 		seqDb.append(contents);
1443 	}
1444 
1445 	seqDb.append(db);
1446 	length = ASNLib::encodeSequence(seqDb,true);
1447 	data.append(seqDb);
1448 	return length;
1449 }
1450 
getParams(NamedList * params)1451 void VarBind::getParams(NamedList* params)
1452 {}
1453 
setParams(NamedList * params)1454 void VarBind::setParams(NamedList* params)
1455 {}
1456 
1457 /**
1458   * VarBindList
1459   */
VarBindList()1460 VarBindList::VarBindList()
1461 {
1462 }
1463 
VarBindList(void * data,int len)1464 VarBindList::VarBindList(void* data, int len)
1465 {
1466 	DataBlock db(data,len);
1467 	decode(db);
1468 }
1469 
~VarBindList()1470 VarBindList::~VarBindList()
1471 {
1472 }
1473 
decode(DataBlock & data)1474 int VarBindList::decode(DataBlock& data)
1475 {
1476 	int length = 0;
1477 	length = 0;
1478 	length = ASNLib::decodeSequence(data,true);
1479 	if (length < 0)
1480 		return length;
1481 	int l = 0;
1482 	while (l > -1) {
1483 		VarBind* obj = new VarBind();
1484 		l = obj->decode(data);
1485 		if (l > -1) {
1486 			length += l;
1487 			m_list.append(obj);
1488 		}
1489 		else
1490 			TelEngine::destruct(obj);
1491 	}
1492 	return length;
1493 }
1494 
encode(DataBlock & data)1495 int VarBindList::encode(DataBlock& data)
1496 {
1497 	int length = -1;
1498 	DataBlock db;
1499 	length = 0;
1500 	for (unsigned int i = 0; i < m_list.count(); i++) {
1501 		VarBind* obj = static_cast<VarBind*>(m_list[i]);
1502 		int l = obj->encode(db);
1503 		if (l <= -1)
1504 		return -1;
1505 		length += l;
1506 	}
1507 	length = ASNLib::encodeSequence(db,true);
1508 	if (length < 0)
1509 		return length;
1510 	data.append(db);
1511 	return length;
1512 }
1513 
getParams(NamedList * params)1514 void VarBindList::getParams(NamedList* params)
1515 {}
1516 
setParams(NamedList * params)1517 void VarBindList::setParams(NamedList* params)
1518 {}
1519 
1520 /**
1521   * DisplayString
1522   */
DisplayString()1523 DisplayString::DisplayString()
1524 {
1525 }
1526 
DisplayString(void * data,int len)1527 DisplayString::DisplayString(void* data, int len)
1528 {
1529 	DataBlock db(data,len);
1530 	decode(db);
1531 }
1532 
~DisplayString()1533 DisplayString::~DisplayString()
1534 {
1535 }
1536 
decode(DataBlock & data)1537 int DisplayString::decode(DataBlock& data)
1538 {
1539 	int length = 0;
1540 	length = ASNLib::decodeOctetString(data,&m_DisplayString,true);
1541 	if (length < s_DisplayStringSizeMinSize)
1542 		DDebug(DebugAll,"Constraint break error");
1543 	if (s_DisplayStringSizeMaxSize < length)
1544 		DDebug(DebugAll,"Constraint break error");
1545 	return length;
1546 }
1547 
encode(DataBlock & data)1548 int DisplayString::encode(DataBlock& data)
1549 {
1550 	int length = -1;
1551 	const DataBlock db = ASNLib::encodeOctetString(m_DisplayString,true);
1552 	data.append(db);
1553 	length = db.length();
1554 	return length;
1555 }
1556 
getParams(NamedList * params)1557 void DisplayString::getParams(NamedList* params)
1558 {}
1559 
setParams(NamedList * params)1560 void DisplayString::setParams(NamedList* params)
1561 {}
1562 
1563 /**
1564   * PhysAddress
1565   */
PhysAddress()1566 PhysAddress::PhysAddress()
1567 {
1568 }
1569 
PhysAddress(void * data,int len)1570 PhysAddress::PhysAddress(void* data, int len)
1571 {
1572 	DataBlock db(data,len);
1573 	decode(db);
1574 }
1575 
~PhysAddress()1576 PhysAddress::~PhysAddress()
1577 {
1578 }
1579 
decode(DataBlock & data)1580 int PhysAddress::decode(DataBlock& data)
1581 {
1582 	int length = 0;
1583 	length = ASNLib::decodeOctetString(data,&m_PhysAddress,true);
1584 	return length;
1585 }
1586 
encode(DataBlock & data)1587 int PhysAddress::encode(DataBlock& data)
1588 {
1589 	int length = -1;
1590 	const DataBlock db = ASNLib::encodeOctetString(m_PhysAddress,true);
1591 	data.append(db);
1592 	length = db.length();
1593 	return length;
1594 }
1595 
getParams(NamedList * params)1596 void PhysAddress::getParams(NamedList* params)
1597 {}
1598 
setParams(NamedList * params)1599 void PhysAddress::setParams(NamedList* params)
1600 {}
1601 
1602 /**
1603   * MacAddress
1604   */
MacAddress()1605 MacAddress::MacAddress()
1606 {
1607 }
1608 
MacAddress(void * data,int len)1609 MacAddress::MacAddress(void* data, int len)
1610 {
1611 	DataBlock db(data,len);
1612 	decode(db);
1613 }
1614 
~MacAddress()1615 MacAddress::~MacAddress()
1616 {
1617 }
1618 
decode(DataBlock & data)1619 int MacAddress::decode(DataBlock& data)
1620 {
1621 	int length = 0;
1622 	length = ASNLib::decodeOctetString(data,&m_MacAddress,true);
1623 	if (length != s_MacAddressSize)
1624 		DDebug(DebugAll,"Constraint break error");
1625 	return length;
1626 }
1627 
encode(DataBlock & data)1628 int MacAddress::encode(DataBlock& data)
1629 {
1630 	int length = -1;
1631 	const DataBlock db = ASNLib::encodeOctetString(m_MacAddress,true);
1632 	data.append(db);
1633 	length = db.length();
1634 	return length;
1635 }
1636 
getParams(NamedList * params)1637 void MacAddress::getParams(NamedList* params)
1638 {}
1639 
setParams(NamedList * params)1640 void MacAddress::setParams(NamedList* params)
1641 {}
1642 
1643 /**
1644   * TruthValue
1645   */
TruthValue()1646 TruthValue::TruthValue()
1647 {
1648 }
1649 
TruthValue(void * data,int len)1650 TruthValue::TruthValue(void* data, int len)
1651 {
1652 	DataBlock db(data,len);
1653 	decode(db);
1654 }
1655 
~TruthValue()1656 TruthValue::~TruthValue()
1657 {
1658 }
1659 
decode(DataBlock & data)1660 int TruthValue::decode(DataBlock& data)
1661 {
1662 	int length = 0;
1663 	length = ASNLib::decodeINT32(data,&m_TruthValue,true);
1664 	if ( m_TruthValue < s_true_TruthValue || m_TruthValue > s_false_TruthValue)
1665 		return ASNLib::InvalidContentsError;
1666 	return length;
1667 }
1668 
encode(DataBlock & data)1669 int TruthValue::encode(DataBlock& data)
1670 {
1671 	int length = -1;
1672 	const DataBlock db = ASNLib::encodeInteger(m_TruthValue,true);
1673 	data.append(db);
1674 	length = db.length();
1675 	return length;
1676 }
1677 
getParams(NamedList * params)1678 void TruthValue::getParams(NamedList* params)
1679 {}
1680 
setParams(NamedList * params)1681 void TruthValue::setParams(NamedList* params)
1682 {}
1683 
1684 /**
1685   * TestAndIncr
1686   */
TestAndIncr()1687 TestAndIncr::TestAndIncr()
1688 {
1689 }
1690 
TestAndIncr(void * data,int len)1691 TestAndIncr::TestAndIncr(void* data, int len)
1692 {
1693 	DataBlock db(data,len);
1694 	decode(db);
1695 }
1696 
~TestAndIncr()1697 TestAndIncr::~TestAndIncr()
1698 {
1699 }
1700 
decode(DataBlock & data)1701 int TestAndIncr::decode(DataBlock& data)
1702 {
1703 	int length = 0;
1704 	length = ASNLib::decodeUINT32(data,&m_TestAndIncr,true);
1705 	if (m_TestAndIncr < s_TestAndIncrMinSize)
1706 		DDebug(DebugAll,"Constraint break error");
1707 	if (s_TestAndIncrMaxSize < m_TestAndIncr)
1708 		DDebug(DebugAll,"Constraint break error");
1709 	return length;
1710 }
1711 
encode(DataBlock & data)1712 int TestAndIncr::encode(DataBlock& data)
1713 {
1714 	int length = -1;
1715 	const DataBlock db = ASNLib::encodeInteger(m_TestAndIncr,true);
1716 	data.append(db);
1717 	length = db.length();
1718 	return length;
1719 }
1720 
getParams(NamedList * params)1721 void TestAndIncr::getParams(NamedList* params)
1722 {}
1723 
setParams(NamedList * params)1724 void TestAndIncr::setParams(NamedList* params)
1725 {}
1726 
1727 /**
1728   * AutonomousType
1729   */
AutonomousType()1730 AutonomousType::AutonomousType()
1731 {
1732 }
1733 
AutonomousType(void * data,int len)1734 AutonomousType::AutonomousType(void* data, int len)
1735 {
1736 	DataBlock db(data,len);
1737 	decode(db);
1738 }
1739 
~AutonomousType()1740 AutonomousType::~AutonomousType()
1741 {
1742 }
1743 
decode(DataBlock & data)1744 int AutonomousType::decode(DataBlock& data)
1745 {
1746 	int length = 0;
1747 	length = ASNLib::decodeOID(data,&m_AutonomousType,true);
1748 	return length;
1749 }
1750 
encode(DataBlock & data)1751 int AutonomousType::encode(DataBlock& data)
1752 {
1753 	int length = -1;
1754 	const DataBlock db = ASNLib::encodeOID(m_AutonomousType,true);
1755 	data.append(db);
1756 	length = db.length();
1757 	return length;
1758 }
1759 
getParams(NamedList * params)1760 void AutonomousType::getParams(NamedList* params)
1761 {}
1762 
setParams(NamedList * params)1763 void AutonomousType::setParams(NamedList* params)
1764 {}
1765 
1766 /**
1767   * InstancePointer
1768   */
InstancePointer()1769 InstancePointer::InstancePointer()
1770 {
1771 }
1772 
InstancePointer(void * data,int len)1773 InstancePointer::InstancePointer(void* data, int len)
1774 {
1775 	DataBlock db(data,len);
1776 	decode(db);
1777 }
1778 
~InstancePointer()1779 InstancePointer::~InstancePointer()
1780 {
1781 }
1782 
decode(DataBlock & data)1783 int InstancePointer::decode(DataBlock& data)
1784 {
1785 	int length = 0;
1786 	length = ASNLib::decodeOID(data,&m_InstancePointer,true);
1787 	return length;
1788 }
1789 
encode(DataBlock & data)1790 int InstancePointer::encode(DataBlock& data)
1791 {
1792 	int length = -1;
1793 	const DataBlock db = ASNLib::encodeOID(m_InstancePointer,true);
1794 	data.append(db);
1795 	length = db.length();
1796 	return length;
1797 }
1798 
getParams(NamedList * params)1799 void InstancePointer::getParams(NamedList* params)
1800 {}
1801 
setParams(NamedList * params)1802 void InstancePointer::setParams(NamedList* params)
1803 {}
1804 
1805 /**
1806   * VariablePointer
1807   */
VariablePointer()1808 VariablePointer::VariablePointer()
1809 {
1810 }
1811 
VariablePointer(void * data,int len)1812 VariablePointer::VariablePointer(void* data, int len)
1813 {
1814 	DataBlock db(data,len);
1815 	decode(db);
1816 }
1817 
~VariablePointer()1818 VariablePointer::~VariablePointer()
1819 {
1820 }
1821 
decode(DataBlock & data)1822 int VariablePointer::decode(DataBlock& data)
1823 {
1824 	int length = 0;
1825 	length = ASNLib::decodeOID(data,&m_VariablePointer,true);
1826 	return length;
1827 }
1828 
encode(DataBlock & data)1829 int VariablePointer::encode(DataBlock& data)
1830 {
1831 	int length = -1;
1832 	const DataBlock db = ASNLib::encodeOID(m_VariablePointer,true);
1833 	data.append(db);
1834 	length = db.length();
1835 	return length;
1836 }
1837 
getParams(NamedList * params)1838 void VariablePointer::getParams(NamedList* params)
1839 {}
1840 
setParams(NamedList * params)1841 void VariablePointer::setParams(NamedList* params)
1842 {}
1843 
1844 /**
1845   * RowPointer
1846   */
RowPointer()1847 RowPointer::RowPointer()
1848 {
1849 }
1850 
RowPointer(void * data,int len)1851 RowPointer::RowPointer(void* data, int len)
1852 {
1853 	DataBlock db(data,len);
1854 	decode(db);
1855 }
1856 
~RowPointer()1857 RowPointer::~RowPointer()
1858 {
1859 }
1860 
decode(DataBlock & data)1861 int RowPointer::decode(DataBlock& data)
1862 {
1863 	int length = 0;
1864 	length = ASNLib::decodeOID(data,&m_RowPointer,true);
1865 	return length;
1866 }
1867 
encode(DataBlock & data)1868 int RowPointer::encode(DataBlock& data)
1869 {
1870 	int length = -1;
1871 	const DataBlock db = ASNLib::encodeOID(m_RowPointer,true);
1872 	data.append(db);
1873 	length = db.length();
1874 	return length;
1875 }
1876 
getParams(NamedList * params)1877 void RowPointer::getParams(NamedList* params)
1878 {}
1879 
setParams(NamedList * params)1880 void RowPointer::setParams(NamedList* params)
1881 {}
1882 
1883 /**
1884   * RowStatus
1885   */
RowStatus()1886 RowStatus::RowStatus()
1887 {
1888 }
1889 
RowStatus(void * data,int len)1890 RowStatus::RowStatus(void* data, int len)
1891 {
1892 	DataBlock db(data,len);
1893 	decode(db);
1894 }
1895 
~RowStatus()1896 RowStatus::~RowStatus()
1897 {
1898 }
1899 
decode(DataBlock & data)1900 int RowStatus::decode(DataBlock& data)
1901 {
1902 	int length = 0;
1903 	length = ASNLib::decodeINT32(data,&m_RowStatus,true);
1904 	if ( m_RowStatus < s_active_RowStatus || m_RowStatus > s_destroy_RowStatus)
1905 		return ASNLib::InvalidContentsError;
1906 	return length;
1907 }
1908 
encode(DataBlock & data)1909 int RowStatus::encode(DataBlock& data)
1910 {
1911 	int length = -1;
1912 	const DataBlock db = ASNLib::encodeInteger(m_RowStatus,true);
1913 	data.append(db);
1914 	length = db.length();
1915 	return length;
1916 }
1917 
getParams(NamedList * params)1918 void RowStatus::getParams(NamedList* params)
1919 {}
1920 
setParams(NamedList * params)1921 void RowStatus::setParams(NamedList* params)
1922 {}
1923 
1924 /**
1925   * TimeStamp
1926   */
TimeStamp()1927 TimeStamp::TimeStamp()
1928 {
1929 }
1930 
TimeStamp(void * data,int len)1931 TimeStamp::TimeStamp(void* data, int len)
1932 {
1933 	DataBlock db(data,len);
1934 	decode(db);
1935 }
1936 
~TimeStamp()1937 TimeStamp::~TimeStamp()
1938 {
1939 }
1940 
decode(DataBlock & data)1941 int TimeStamp::decode(DataBlock& data)
1942 {
1943 	int length = 0;
1944 	length = m_TimeStamp->decode(data);
1945 	return length;
1946 }
1947 
encode(DataBlock & data)1948 int TimeStamp::encode(DataBlock& data)
1949 {
1950 	int length = -1;
1951 	length = m_TimeStamp->encode(data);
1952 	return length;
1953 }
1954 
getParams(NamedList * params)1955 void TimeStamp::getParams(NamedList* params)
1956 {}
1957 
setParams(NamedList * params)1958 void TimeStamp::setParams(NamedList* params)
1959 {}
1960 
1961 /**
1962   * TimeInterval
1963   */
TimeInterval()1964 TimeInterval::TimeInterval()
1965 {
1966 }
1967 
TimeInterval(void * data,int len)1968 TimeInterval::TimeInterval(void* data, int len)
1969 {
1970 	DataBlock db(data,len);
1971 	decode(db);
1972 }
1973 
~TimeInterval()1974 TimeInterval::~TimeInterval()
1975 {
1976 }
1977 
decode(DataBlock & data)1978 int TimeInterval::decode(DataBlock& data)
1979 {
1980 	int length = 0;
1981 	length = ASNLib::decodeUINT32(data,&m_TimeInterval,true);
1982 	if (m_TimeInterval < s_TimeIntervalMinSize)
1983 		DDebug(DebugAll,"Constraint break error");
1984 	if (s_TimeIntervalMaxSize < m_TimeInterval)
1985 		DDebug(DebugAll,"Constraint break error");
1986 	return length;
1987 }
1988 
encode(DataBlock & data)1989 int TimeInterval::encode(DataBlock& data)
1990 {
1991 	int length = -1;
1992 	const DataBlock db = ASNLib::encodeInteger(m_TimeInterval,true);
1993 	data.append(db);
1994 	length = db.length();
1995 	return length;
1996 }
1997 
getParams(NamedList * params)1998 void TimeInterval::getParams(NamedList* params)
1999 {}
2000 
setParams(NamedList * params)2001 void TimeInterval::setParams(NamedList* params)
2002 {}
2003 
2004 /**
2005   * DateAndTime
2006   */
DateAndTime()2007 DateAndTime::DateAndTime()
2008 {
2009 }
2010 
DateAndTime(void * data,int len)2011 DateAndTime::DateAndTime(void* data, int len)
2012 {
2013 	DataBlock db(data,len);
2014 	decode(db);
2015 }
2016 
~DateAndTime()2017 DateAndTime::~DateAndTime()
2018 {
2019 }
2020 
decode(DataBlock & data)2021 int DateAndTime::decode(DataBlock& data)
2022 {
2023 	int length = 0;
2024 	length = ASNLib::decodeOctetString(data,&m_DateAndTime,true);
2025 	if (length != s_DateAndTimeSize_0)
2026 		DDebug(DebugAll,"Constraint break error");
2027 	if (length != s_DateAndTimeSize_1)
2028 		DDebug(DebugAll,"Constraint break error");
2029 	DDebug(DebugAll,"Constraint break error");
2030 	return length;
2031 }
2032 
encode(DataBlock & data)2033 int DateAndTime::encode(DataBlock& data)
2034 {
2035 	int length = -1;
2036 	const DataBlock db = ASNLib::encodeOctetString(m_DateAndTime,true);
2037 	data.append(db);
2038 	length = db.length();
2039 	return length;
2040 }
2041 
getParams(NamedList * params)2042 void DateAndTime::getParams(NamedList* params)
2043 {}
2044 
setParams(NamedList * params)2045 void DateAndTime::setParams(NamedList* params)
2046 {}
2047 
2048 /**
2049   * StorageType
2050   */
StorageType()2051 StorageType::StorageType()
2052 {
2053 }
2054 
StorageType(void * data,int len)2055 StorageType::StorageType(void* data, int len)
2056 {
2057 	DataBlock db(data,len);
2058 	decode(db);
2059 }
2060 
~StorageType()2061 StorageType::~StorageType()
2062 {
2063 }
2064 
decode(DataBlock & data)2065 int StorageType::decode(DataBlock& data)
2066 {
2067 	int length = 0;
2068 	length = ASNLib::decodeINT32(data,&m_StorageType,true);
2069 	if ( m_StorageType < s_other_StorageType || m_StorageType > s_readOnly_StorageType)
2070 		return ASNLib::InvalidContentsError;
2071 	return length;
2072 }
2073 
encode(DataBlock & data)2074 int StorageType::encode(DataBlock& data)
2075 {
2076 	int length = -1;
2077 	const DataBlock db = ASNLib::encodeInteger(m_StorageType,true);
2078 	data.append(db);
2079 	length = db.length();
2080 	return length;
2081 }
2082 
getParams(NamedList * params)2083 void StorageType::getParams(NamedList* params)
2084 {}
2085 
setParams(NamedList * params)2086 void StorageType::setParams(NamedList* params)
2087 {}
2088 
2089 /**
2090   * TDomain
2091   */
TDomain()2092 TDomain::TDomain()
2093 {
2094 }
2095 
TDomain(void * data,int len)2096 TDomain::TDomain(void* data, int len)
2097 {
2098 	DataBlock db(data,len);
2099 	decode(db);
2100 }
2101 
~TDomain()2102 TDomain::~TDomain()
2103 {
2104 }
2105 
decode(DataBlock & data)2106 int TDomain::decode(DataBlock& data)
2107 {
2108 	int length = 0;
2109 	length = ASNLib::decodeOID(data,&m_TDomain,true);
2110 	return length;
2111 }
2112 
encode(DataBlock & data)2113 int TDomain::encode(DataBlock& data)
2114 {
2115 	int length = -1;
2116 	const DataBlock db = ASNLib::encodeOID(m_TDomain,true);
2117 	data.append(db);
2118 	length = db.length();
2119 	return length;
2120 }
2121 
getParams(NamedList * params)2122 void TDomain::getParams(NamedList* params)
2123 {}
2124 
setParams(NamedList * params)2125 void TDomain::setParams(NamedList* params)
2126 {}
2127 
2128 /**
2129   * TAddress
2130   */
TAddress()2131 TAddress::TAddress()
2132 {
2133 }
2134 
TAddress(void * data,int len)2135 TAddress::TAddress(void* data, int len)
2136 {
2137 	DataBlock db(data,len);
2138 	decode(db);
2139 }
2140 
~TAddress()2141 TAddress::~TAddress()
2142 {
2143 }
2144 
decode(DataBlock & data)2145 int TAddress::decode(DataBlock& data)
2146 {
2147 	int length = 0;
2148 	length = ASNLib::decodeOctetString(data,&m_TAddress,true);
2149 	if (length < s_TAddressSizeMinSize)
2150 		DDebug(DebugAll,"Constraint break error");
2151 	if (s_TAddressSizeMaxSize < length)
2152 		DDebug(DebugAll,"Constraint break error");
2153 	return length;
2154 }
2155 
encode(DataBlock & data)2156 int TAddress::encode(DataBlock& data)
2157 {
2158 	int length = -1;
2159 	const DataBlock db = ASNLib::encodeOctetString(m_TAddress,true);
2160 	data.append(db);
2161 	length = db.length();
2162 	return length;
2163 }
2164 
getParams(NamedList * params)2165 void TAddress::getParams(NamedList* params)
2166 {}
2167 
setParams(NamedList * params)2168 void TAddress::setParams(NamedList* params)
2169 {}
2170 
2171 /**
2172   * SNMPv3Message
2173   */
SNMPv3Message()2174 SNMPv3Message::SNMPv3Message()
2175 {
2176 	m_msgGlobalData = new HeaderData();
2177 	m_msgData = new ScopedPduData();
2178 }
2179 
SNMPv3Message(void * data,int len)2180 SNMPv3Message::SNMPv3Message(void* data, int len)
2181 {
2182 	m_msgGlobalData = new HeaderData();
2183 	m_msgData = new ScopedPduData();
2184 	DataBlock db(data,len);
2185 	decode(db);
2186 }
2187 
~SNMPv3Message()2188 SNMPv3Message::~SNMPv3Message()
2189 {
2190 	TelEngine::destruct(m_msgGlobalData);
2191 	TelEngine::destruct(m_msgData);
2192 }
2193 
decode(DataBlock & data)2194 int SNMPv3Message::decode(DataBlock& data)
2195 {
2196 	int length = 0;
2197 	length = ASNLib::decodeSequence(data,true);
2198 	if (length < 0)
2199 		return length;
2200 	length = ASNLib::decodeUINT32(data,&m_msgVersion,true);
2201 	if (m_msgVersion < s_msgVersionMinSize)
2202 		DDebug(DebugAll,"Constraint break error");
2203 	if (s_msgVersionMaxSize < m_msgVersion)
2204 		DDebug(DebugAll,"Constraint break error");
2205 	length = m_msgGlobalData->decode(data);
2206 	length = ASNLib::decodeOctetString(data,&m_msgSecurityParameters,true);
2207 	length = m_msgData->decode(data);
2208 	return length;
2209 }
2210 
encode(DataBlock & data)2211 int SNMPv3Message::encode(DataBlock& data)
2212 {
2213 	int length = -1;
2214 	DataBlock seqDb;
2215 	DataBlock db;
2216 	length = 0;
2217 	db =  ASNLib::encodeInteger(m_msgVersion,true);
2218 	seqDb.append(db);
2219 	m_msgGlobalData->encode(seqDb);
2220 	db = ASNLib::encodeOctetString(m_msgSecurityParameters,true);
2221 	seqDb.append(db);
2222 	m_msgData->encode(seqDb);
2223 	length = ASNLib::encodeSequence(seqDb,true);
2224 	data.append(seqDb);
2225 	return length;
2226 }
2227 
getParams(NamedList * params)2228 void SNMPv3Message::getParams(NamedList* params)
2229 {}
2230 
setParams(NamedList * params)2231 void SNMPv3Message::setParams(NamedList* params)
2232 {}
2233 
2234 /**
2235   * HeaderData
2236   */
HeaderData()2237 HeaderData::HeaderData()
2238 {
2239 }
2240 
HeaderData(void * data,int len)2241 HeaderData::HeaderData(void* data, int len)
2242 {
2243 	DataBlock db(data,len);
2244 	decode(db);
2245 }
2246 
~HeaderData()2247 HeaderData::~HeaderData()
2248 {
2249 }
2250 
decode(DataBlock & data)2251 int HeaderData::decode(DataBlock& data)
2252 {
2253 	int length = 0;
2254 	length = ASNLib::decodeSequence(data,true);
2255 	if (length < 0)
2256 		return length;
2257 	length = ASNLib::decodeUINT32(data,&m_msgID,true);
2258 	if (m_msgID < s_msgIDMinSize)
2259 		DDebug(DebugAll,"Constraint break error");
2260 	if (s_msgIDMaxSize < m_msgID)
2261 		DDebug(DebugAll,"Constraint break error");
2262 	length = ASNLib::decodeUINT32(data,&m_msgMaxSize,true);
2263 	if (m_msgMaxSize < s_msgMaxSizeMinSize)
2264 		DDebug(DebugAll,"Constraint break error");
2265 	if (s_msgMaxSizeMaxSize < m_msgMaxSize)
2266 		DDebug(DebugAll,"Constraint break error");
2267 	length = ASNLib::decodeOctetString(data,&m_msgFlags,true);
2268 	if (length != s_msgFlagsSize)
2269 		DDebug(DebugAll,"Constraint break error");
2270 	length = ASNLib::decodeUINT32(data,&m_msgSecurityModel,true);
2271 	if (m_msgSecurityModel < s_msgSecurityModelMinSize)
2272 		DDebug(DebugAll,"Constraint break error");
2273 	if (s_msgSecurityModelMaxSize < m_msgSecurityModel)
2274 		DDebug(DebugAll,"Constraint break error");
2275 	return length;
2276 }
2277 
encode(DataBlock & data)2278 int HeaderData::encode(DataBlock& data)
2279 {
2280 	int length = -1;
2281 	DataBlock seqDb;
2282 	DataBlock db;
2283 	length = 0;
2284 	db =  ASNLib::encodeInteger(m_msgID,true);
2285 	seqDb.append(db);
2286 	db =  ASNLib::encodeInteger(m_msgMaxSize,true);
2287 	seqDb.append(db);
2288 	db = ASNLib::encodeOctetString(m_msgFlags,true);
2289 	seqDb.append(db);
2290 	db =  ASNLib::encodeInteger(m_msgSecurityModel,true);
2291 	seqDb.append(db);
2292 	length = ASNLib::encodeSequence(seqDb,true);
2293 	data.append(seqDb);
2294 	return length;
2295 }
2296 
getParams(NamedList * params)2297 void HeaderData::getParams(NamedList* params)
2298 {}
2299 
setParams(NamedList * params)2300 void HeaderData::setParams(NamedList* params)
2301 {}
2302 
2303 /**
2304   * ScopedPduData
2305   */
ScopedPduData()2306 ScopedPduData::ScopedPduData()
2307 {
2308 	m_plaintext = new ScopedPDU();
2309 }
2310 
ScopedPduData(void * data,int len)2311 ScopedPduData::ScopedPduData(void* data, int len)
2312 {
2313 	m_plaintext = new ScopedPDU();
2314 	DataBlock db(data,len);
2315 	decode(db);
2316 }
2317 
~ScopedPduData()2318 ScopedPduData::~ScopedPduData()
2319 {
2320 	TelEngine::destruct(m_plaintext);
2321 }
2322 
decode(DataBlock & data)2323 int ScopedPduData::decode(DataBlock& data)
2324 {
2325 	int length = 0;
2326 	length = m_plaintext->decode(data);
2327 	if (length >= 0) {
2328 		m_choiceType = PLAINTEXT;
2329 		return length;
2330 	}
2331 	length = ASNLib::decodeOctetString(data,&m_encryptedPDU,true);
2332 	if (length >= 0) {
2333 		m_choiceType = ENCRYPTEDPDU;
2334 		return length;
2335 	}
2336 	return length;
2337 }
2338 
encode(DataBlock & data)2339 int ScopedPduData::encode(DataBlock& data)
2340 {
2341 	int length = -1;
2342 	if (m_choiceType == PLAINTEXT) {
2343 		length = m_plaintext->encode(data);
2344 	}
2345 	if (m_choiceType == ENCRYPTEDPDU) {
2346 		const DataBlock db = ASNLib::encodeOctetString(m_encryptedPDU,true);
2347 		data.append(db);
2348 		length = db.length();
2349 	}
2350 	return length;
2351 }
2352 
getParams(NamedList * params)2353 void ScopedPduData::getParams(NamedList* params)
2354 {}
2355 
setParams(NamedList * params)2356 void ScopedPduData::setParams(NamedList* params)
2357 {}
2358 
2359 /**
2360   * ScopedPDU
2361   */
ScopedPDU()2362 ScopedPDU::ScopedPDU()
2363 {
2364 }
2365 
ScopedPDU(void * data,int len)2366 ScopedPDU::ScopedPDU(void* data, int len)
2367 {
2368 	DataBlock db(data,len);
2369 	decode(db);
2370 }
2371 
~ScopedPDU()2372 ScopedPDU::~ScopedPDU()
2373 {
2374 }
2375 
decode(DataBlock & data)2376 int ScopedPDU::decode(DataBlock& data)
2377 {
2378 	int length = 0;
2379 	length = ASNLib::decodeSequence(data,true);
2380 	if (length < 0)
2381 		return length;
2382 	length = ASNLib::decodeOctetString(data,&m_contextEngineID,true);
2383 	length = ASNLib::decodeOctetString(data,&m_contextName,true);
2384 	length = ASNLib::decodeAny(data,&m_data,true);
2385 	if (length < 0)
2386 		return length;
2387 	return length;
2388 }
2389 
encode(DataBlock & data)2390 int ScopedPDU::encode(DataBlock& data)
2391 {
2392 	int length = -1;
2393 	DataBlock seqDb;
2394 	DataBlock db;
2395 	length = 0;
2396 	db = ASNLib::encodeOctetString(m_contextEngineID,true);
2397 	seqDb.append(db);
2398 	db = ASNLib::encodeOctetString(m_contextName,true);
2399 	seqDb.append(db);
2400 	db = ASNLib::encodeAny(m_data,true);
2401 	seqDb.append(db);
2402 	length = ASNLib::encodeSequence(seqDb,true);
2403 	data.append(seqDb);
2404 	return length;
2405 }
2406 
getParams(NamedList * params)2407 void ScopedPDU::getParams(NamedList* params)
2408 {}
2409 
setParams(NamedList * params)2410 void ScopedPDU::setParams(NamedList* params)
2411 {}
2412 
2413 /**
2414   * Message
2415   */
Message()2416 Message::Message()
2417 {
2418 }
2419 
Message(void * data,int len)2420 Message::Message(void* data, int len)
2421 {
2422 	DataBlock db(data,len);
2423 	decode(db);
2424 }
2425 
~Message()2426 Message::~Message()
2427 {
2428 }
2429 
decode(DataBlock & data)2430 int Message::decode(DataBlock& data)
2431 {
2432 	int length = 0;
2433 	length = ASNLib::decodeSequence(data,true);
2434 	if (length < 0)
2435 		return length;
2436 	length = ASNLib::decodeINT32(data,&m_version,true);
2437 	if ( m_version < s_version_1_version || m_version > s_version_2_version)
2438 		return ASNLib::InvalidContentsError;
2439 	length = ASNLib::decodeOctetString(data,&m_community,true);
2440 	length = ASNLib::decodeAny(data,&m_data,true);
2441 	if (length < 0)
2442 		return length;
2443 	return length;
2444 }
2445 
encode(DataBlock & data)2446 int Message::encode(DataBlock& data)
2447 {
2448 	int length = -1;
2449 	DataBlock seqDb;
2450 	DataBlock db;
2451 	length = 0;
2452 	db =  ASNLib::encodeInteger(m_version,true);
2453 	seqDb.append(db);
2454 	db = ASNLib::encodeOctetString(m_community,true);
2455 	seqDb.append(db);
2456 	db = ASNLib::encodeAny(m_data,true);
2457 	seqDb.append(db);
2458 	length = ASNLib::encodeSequence(seqDb,true);
2459 	data.append(seqDb);
2460 	return length;
2461 }
2462 
getParams(NamedList * params)2463 void Message::getParams(NamedList* params)
2464 {}
2465 
setParams(NamedList * params)2466 void Message::setParams(NamedList* params)
2467 {}
2468 
2469 /**
2470   * KeyChange
2471   */
KeyChange()2472 KeyChange::KeyChange()
2473 {
2474 }
2475 
KeyChange(void * data,int len)2476 KeyChange::KeyChange(void* data, int len)
2477 {
2478 	DataBlock db(data,len);
2479 	decode(db);
2480 }
2481 
~KeyChange()2482 KeyChange::~KeyChange()
2483 {
2484 }
2485 
decode(DataBlock & data)2486 int KeyChange::decode(DataBlock& data)
2487 {
2488 	int length = 0;
2489 	length = ASNLib::decodeOctetString(data,&m_KeyChange,true);
2490 	return length;
2491 }
2492 
encode(DataBlock & data)2493 int KeyChange::encode(DataBlock& data)
2494 {
2495 	int length = -1;
2496 	const DataBlock db = ASNLib::encodeOctetString(m_KeyChange,true);
2497 	data.append(db);
2498 	length = db.length();
2499 	return length;
2500 }
2501 
getParams(NamedList * params)2502 void KeyChange::getParams(NamedList* params)
2503 {}
2504 
setParams(NamedList * params)2505 void KeyChange::setParams(NamedList* params)
2506 {}
2507 
2508 /**
2509   * UsmUserEntry
2510   */
UsmUserEntry()2511 UsmUserEntry::UsmUserEntry()
2512 {
2513 	m_usmUserEngineID = new SnmpEngineID();
2514 	m_usmUserName = new SnmpAdminString();
2515 	m_usmUserSecurityName = new SnmpAdminString();
2516 	m_usmUserCloneFrom = new RowPointer();
2517 	m_usmUserAuthProtocol = new AutonomousType();
2518 	m_usmUserAuthKeyChange = new KeyChange();
2519 	m_usmUserOwnAuthKeyChange = new KeyChange();
2520 	m_usmUserPrivProtocol = new AutonomousType();
2521 	m_usmUserPrivKeyChange = new KeyChange();
2522 	m_usmUserOwnPrivKeyChange = new KeyChange();
2523 	m_usmUserStorageType = new StorageType();
2524 	m_usmUserStatus = new RowStatus();
2525 }
2526 
UsmUserEntry(void * data,int len)2527 UsmUserEntry::UsmUserEntry(void* data, int len)
2528 {
2529 	m_usmUserEngineID = new SnmpEngineID();
2530 	m_usmUserName = new SnmpAdminString();
2531 	m_usmUserSecurityName = new SnmpAdminString();
2532 	m_usmUserCloneFrom = new RowPointer();
2533 	m_usmUserAuthProtocol = new AutonomousType();
2534 	m_usmUserAuthKeyChange = new KeyChange();
2535 	m_usmUserOwnAuthKeyChange = new KeyChange();
2536 	m_usmUserPrivProtocol = new AutonomousType();
2537 	m_usmUserPrivKeyChange = new KeyChange();
2538 	m_usmUserOwnPrivKeyChange = new KeyChange();
2539 	m_usmUserStorageType = new StorageType();
2540 	m_usmUserStatus = new RowStatus();
2541 
2542 	DataBlock db(data,len);
2543 	decode(db);
2544 }
2545 
~UsmUserEntry()2546 UsmUserEntry::~UsmUserEntry()
2547 {
2548 	TelEngine::destruct(m_usmUserEngineID);
2549 	TelEngine::destruct(m_usmUserName);
2550 	TelEngine::destruct(m_usmUserSecurityName);
2551 	TelEngine::destruct(m_usmUserCloneFrom);
2552 	TelEngine::destruct(m_usmUserAuthProtocol);
2553 	TelEngine::destruct(m_usmUserAuthKeyChange);
2554 	TelEngine::destruct(m_usmUserOwnAuthKeyChange);
2555 	TelEngine::destruct(m_usmUserPrivProtocol);
2556 	TelEngine::destruct(m_usmUserPrivKeyChange);
2557 	TelEngine::destruct(m_usmUserOwnPrivKeyChange);
2558 	TelEngine::destruct(m_usmUserStorageType);
2559 	TelEngine::destruct(m_usmUserStatus);
2560 }
2561 
decode(DataBlock & data)2562 int UsmUserEntry::decode(DataBlock& data)
2563 {
2564 	int length = 0;
2565 	length = ASNLib::decodeSequence(data,true);
2566 	if (length < 0)
2567 		return length;
2568 	length = m_usmUserEngineID->decode(data);
2569 	length = m_usmUserName->decode(data);
2570 	length = m_usmUserSecurityName->decode(data);
2571 	length = m_usmUserCloneFrom->decode(data);
2572 	length = m_usmUserAuthProtocol->decode(data);
2573 	length = m_usmUserAuthKeyChange->decode(data);
2574 	length = m_usmUserOwnAuthKeyChange->decode(data);
2575 	length = m_usmUserPrivProtocol->decode(data);
2576 	length = m_usmUserPrivKeyChange->decode(data);
2577 	length = m_usmUserOwnPrivKeyChange->decode(data);
2578 	length = ASNLib::decodeOctetString(data,&m_usmUserPublic,true);
2579 	length = m_usmUserStorageType->decode(data);
2580 	length = m_usmUserStatus->decode(data);
2581 	return length;
2582 }
2583 
encode(DataBlock & data)2584 int UsmUserEntry::encode(DataBlock& data)
2585 {
2586 	int length = -1;
2587 	DataBlock seqDb;
2588 	DataBlock db;
2589 	length = 0;
2590 	m_usmUserEngineID->encode(seqDb);
2591 	m_usmUserName->encode(seqDb);
2592 	m_usmUserSecurityName->encode(seqDb);
2593 	m_usmUserCloneFrom->encode(seqDb);
2594 	m_usmUserAuthProtocol->encode(seqDb);
2595 	m_usmUserAuthKeyChange->encode(seqDb);
2596 	m_usmUserOwnAuthKeyChange->encode(seqDb);
2597 	m_usmUserPrivProtocol->encode(seqDb);
2598 	m_usmUserPrivKeyChange->encode(seqDb);
2599 	m_usmUserOwnPrivKeyChange->encode(seqDb);
2600 	db = ASNLib::encodeOctetString(m_usmUserPublic,true);
2601 	seqDb.append(db);
2602 	m_usmUserStorageType->encode(seqDb);
2603 	m_usmUserStatus->encode(seqDb);
2604 	length = ASNLib::encodeSequence(seqDb,true);
2605 	data.append(seqDb);
2606 	return length;
2607 }
2608 
getParams(NamedList * params)2609 void UsmUserEntry::getParams(NamedList* params)
2610 {}
2611 
setParams(NamedList * params)2612 void UsmUserEntry::setParams(NamedList* params)
2613 {}
2614 
2615 /**
2616   * SnmpEngineID
2617   */
SnmpEngineID()2618 SnmpEngineID::SnmpEngineID()
2619 {
2620 }
2621 
SnmpEngineID(void * data,int len)2622 SnmpEngineID::SnmpEngineID(void* data, int len)
2623 {
2624 	DataBlock db(data,len);
2625 	decode(db);
2626 }
2627 
~SnmpEngineID()2628 SnmpEngineID::~SnmpEngineID()
2629 {
2630 }
2631 
decode(DataBlock & data)2632 int SnmpEngineID::decode(DataBlock& data)
2633 {
2634 	int length = 0;
2635 	length = ASNLib::decodeOctetString(data,&m_SnmpEngineID,true);
2636 	if (length < s_SnmpEngineIDSizeMinSize)
2637 		DDebug(DebugAll,"Constraint break error");
2638 	if (s_SnmpEngineIDSizeMaxSize < length)
2639 		DDebug(DebugAll,"Constraint break error");
2640 	return length;
2641 }
2642 
encode(DataBlock & data)2643 int SnmpEngineID::encode(DataBlock& data)
2644 {
2645 	int length = -1;
2646 	const DataBlock db = ASNLib::encodeOctetString(m_SnmpEngineID,true);
2647 	data.append(db);
2648 	length = db.length();
2649 	return length;
2650 }
2651 
getParams(NamedList * params)2652 void SnmpEngineID::getParams(NamedList* params)
2653 {}
2654 
setParams(NamedList * params)2655 void SnmpEngineID::setParams(NamedList* params)
2656 {}
2657 
2658 /**
2659   * SnmpSecurityModel
2660   */
SnmpSecurityModel()2661 SnmpSecurityModel::SnmpSecurityModel()
2662 {
2663 }
2664 
SnmpSecurityModel(void * data,int len)2665 SnmpSecurityModel::SnmpSecurityModel(void* data, int len)
2666 {
2667 	DataBlock db(data,len);
2668 	decode(db);
2669 }
2670 
~SnmpSecurityModel()2671 SnmpSecurityModel::~SnmpSecurityModel()
2672 {
2673 }
2674 
decode(DataBlock & data)2675 int SnmpSecurityModel::decode(DataBlock& data)
2676 {
2677 	int length = 0;
2678 	length = ASNLib::decodeUINT32(data,&m_SnmpSecurityModel,true);
2679 	if (m_SnmpSecurityModel < s_SnmpSecurityModelMinSize)
2680 		DDebug(DebugAll,"Constraint break error");
2681 	if (s_SnmpSecurityModelMaxSize < m_SnmpSecurityModel)
2682 		DDebug(DebugAll,"Constraint break error");
2683 	return length;
2684 }
2685 
encode(DataBlock & data)2686 int SnmpSecurityModel::encode(DataBlock& data)
2687 {
2688 	int length = -1;
2689 	const DataBlock db = ASNLib::encodeInteger(m_SnmpSecurityModel,true);
2690 	data.append(db);
2691 	length = db.length();
2692 	return length;
2693 }
2694 
getParams(NamedList * params)2695 void SnmpSecurityModel::getParams(NamedList* params)
2696 {}
2697 
setParams(NamedList * params)2698 void SnmpSecurityModel::setParams(NamedList* params)
2699 {}
2700 
2701 /**
2702   * SnmpMessageProcessingModel
2703   */
SnmpMessageProcessingModel()2704 SnmpMessageProcessingModel::SnmpMessageProcessingModel()
2705 {
2706 }
2707 
SnmpMessageProcessingModel(void * data,int len)2708 SnmpMessageProcessingModel::SnmpMessageProcessingModel(void* data, int len)
2709 {
2710 	DataBlock db(data,len);
2711 	decode(db);
2712 }
2713 
~SnmpMessageProcessingModel()2714 SnmpMessageProcessingModel::~SnmpMessageProcessingModel()
2715 {
2716 }
2717 
decode(DataBlock & data)2718 int SnmpMessageProcessingModel::decode(DataBlock& data)
2719 {
2720 	int length = 0;
2721 	length = ASNLib::decodeUINT32(data,&m_SnmpMessageProcessingModel,true);
2722 	if (m_SnmpMessageProcessingModel < s_SnmpMessageProcessingModelMinSize)
2723 		DDebug(DebugAll,"Constraint break error");
2724 	if (s_SnmpMessageProcessingModelMaxSize < m_SnmpMessageProcessingModel)
2725 		DDebug(DebugAll,"Constraint break error");
2726 	return length;
2727 }
2728 
encode(DataBlock & data)2729 int SnmpMessageProcessingModel::encode(DataBlock& data)
2730 {
2731 	int length = -1;
2732 	const DataBlock db = ASNLib::encodeInteger(m_SnmpMessageProcessingModel,true);
2733 	data.append(db);
2734 	length = db.length();
2735 	return length;
2736 }
2737 
getParams(NamedList * params)2738 void SnmpMessageProcessingModel::getParams(NamedList* params)
2739 {}
2740 
setParams(NamedList * params)2741 void SnmpMessageProcessingModel::setParams(NamedList* params)
2742 {}
2743 
2744 /**
2745   * SnmpSecurityLevel
2746   */
SnmpSecurityLevel()2747 SnmpSecurityLevel::SnmpSecurityLevel()
2748 {
2749 }
2750 
SnmpSecurityLevel(void * data,int len)2751 SnmpSecurityLevel::SnmpSecurityLevel(void* data, int len)
2752 {
2753 	DataBlock db(data,len);
2754 	decode(db);
2755 }
2756 
~SnmpSecurityLevel()2757 SnmpSecurityLevel::~SnmpSecurityLevel()
2758 {
2759 }
2760 
decode(DataBlock & data)2761 int SnmpSecurityLevel::decode(DataBlock& data)
2762 {
2763 	int length = 0;
2764 	length = ASNLib::decodeINT32(data,&m_SnmpSecurityLevel,true);
2765 	if ( m_SnmpSecurityLevel < s_noAuthNoPriv_SnmpSecurityLevel || m_SnmpSecurityLevel > s_authPriv_SnmpSecurityLevel)
2766 		return ASNLib::InvalidContentsError;
2767 	return length;
2768 }
2769 
encode(DataBlock & data)2770 int SnmpSecurityLevel::encode(DataBlock& data)
2771 {
2772 	int length = -1;
2773 	const DataBlock db = ASNLib::encodeInteger(m_SnmpSecurityLevel,true);
2774 	data.append(db);
2775 	length = db.length();
2776 	return length;
2777 }
2778 
getParams(NamedList * params)2779 void SnmpSecurityLevel::getParams(NamedList* params)
2780 {}
2781 
setParams(NamedList * params)2782 void SnmpSecurityLevel::setParams(NamedList* params)
2783 {}
2784 
2785 /**
2786   * SnmpAdminString
2787   */
SnmpAdminString()2788 SnmpAdminString::SnmpAdminString()
2789 {
2790 }
2791 
SnmpAdminString(void * data,int len)2792 SnmpAdminString::SnmpAdminString(void* data, int len)
2793 {
2794 	DataBlock db(data,len);
2795 	decode(db);
2796 }
2797 
~SnmpAdminString()2798 SnmpAdminString::~SnmpAdminString()
2799 {
2800 }
2801 
decode(DataBlock & data)2802 int SnmpAdminString::decode(DataBlock& data)
2803 {
2804 	int length = 0;
2805 	length = ASNLib::decodeOctetString(data,&m_SnmpAdminString,true);
2806 	if (length < s_SnmpAdminStringSizeMinSize)
2807 		DDebug(DebugAll,"Constraint break error");
2808 	if (s_SnmpAdminStringSizeMaxSize < length)
2809 		DDebug(DebugAll,"Constraint break error");
2810 	return length;
2811 }
2812 
encode(DataBlock & data)2813 int SnmpAdminString::encode(DataBlock& data)
2814 {
2815 	int length = -1;
2816 	const DataBlock db = ASNLib::encodeOctetString(m_SnmpAdminString,true);
2817 	data.append(db);
2818 	length = db.length();
2819 	return length;
2820 }
2821 
getParams(NamedList * params)2822 void SnmpAdminString::getParams(NamedList* params)
2823 {}
2824 
setParams(NamedList * params)2825 void SnmpAdminString::setParams(NamedList* params)
2826 {}
2827 
2828 /**
2829   * UsmSecurityParameters
2830   */
UsmSecurityParameters()2831 UsmSecurityParameters::UsmSecurityParameters()
2832 {
2833 }
2834 
UsmSecurityParameters(void * data,int len)2835 UsmSecurityParameters::UsmSecurityParameters(void* data, int len)
2836 {
2837 	DataBlock db(data,len);
2838 	decode(db);
2839 }
2840 
~UsmSecurityParameters()2841 UsmSecurityParameters::~UsmSecurityParameters()
2842 {
2843 }
2844 
decode(DataBlock & data)2845 int UsmSecurityParameters::decode(DataBlock& data)
2846 {
2847 	int length = 0;
2848 	length = ASNLib::decodeSequence(data,true);
2849 	if (length < 0)
2850 		return length;
2851 	length = ASNLib::decodeOctetString(data,&m_msgAuthoritativeEngineID,true);
2852 	length = ASNLib::decodeUINT32(data,&m_msgAuthoritativeEngineBoots,true);
2853 	if (m_msgAuthoritativeEngineBoots < s_msgAuthoritativeEngineBootsMinSize)
2854 		DDebug(DebugAll,"Constraint break error");
2855 	if (s_msgAuthoritativeEngineBootsMaxSize < m_msgAuthoritativeEngineBoots)
2856 		DDebug(DebugAll,"Constraint break error");
2857 	length = ASNLib::decodeUINT32(data,&m_msgAuthoritativeEngineTime,true);
2858 	if (m_msgAuthoritativeEngineTime < s_msgAuthoritativeEngineTimeMinSize)
2859 		DDebug(DebugAll,"Constraint break error");
2860 	if (s_msgAuthoritativeEngineTimeMaxSize < m_msgAuthoritativeEngineTime)
2861 		DDebug(DebugAll,"Constraint break error");
2862 	length = ASNLib::decodeOctetString(data,&m_msgUserName,true);
2863 	if (length < s_msgUserNameSizeMinSize)
2864 		DDebug(DebugAll,"Constraint break error");
2865 	if (s_msgUserNameSizeMaxSize < length)
2866 		DDebug(DebugAll,"Constraint break error");
2867 	length = ASNLib::decodeOctetString(data,&m_msgAuthenticationParameters,true);
2868 	length = ASNLib::decodeOctetString(data,&m_msgPrivacyParameters,true);
2869 	return length;
2870 }
2871 
encode(DataBlock & data)2872 int UsmSecurityParameters::encode(DataBlock& data)
2873 {
2874 	int length = -1;
2875 	DataBlock seqDb;
2876 	DataBlock db;
2877 	length = 0;
2878 	db = ASNLib::encodeOctetString(m_msgAuthoritativeEngineID,true);
2879 	seqDb.append(db);
2880 	db =  ASNLib::encodeInteger(m_msgAuthoritativeEngineBoots,true);
2881 	seqDb.append(db);
2882 	db =  ASNLib::encodeInteger(m_msgAuthoritativeEngineTime,true);
2883 	seqDb.append(db);
2884 	db = ASNLib::encodeOctetString(m_msgUserName,true);
2885 	seqDb.append(db);
2886 	db = ASNLib::encodeOctetString(m_msgAuthenticationParameters,true);
2887 	seqDb.append(db);
2888 	db = ASNLib::encodeOctetString(m_msgPrivacyParameters,true);
2889 	seqDb.append(db);
2890 	length = ASNLib::encodeSequence(seqDb,true);
2891 	data.append(seqDb);
2892 	return length;
2893 }
2894 
getParams(NamedList * params)2895 void UsmSecurityParameters::getParams(NamedList* params)
2896 {}
2897 
setParams(NamedList * params)2898 void UsmSecurityParameters::setParams(NamedList* params)
2899 {}
2900 
2901 /**
2902   * SysOREntry
2903   */
SysOREntry()2904 SysOREntry::SysOREntry()
2905 {
2906 	m_sysORDescr = new DisplayString();
2907 	m_sysORUpTime = new TimeStamp();
2908 }
2909 
SysOREntry(void * data,int len)2910 SysOREntry::SysOREntry(void* data, int len)
2911 {
2912 	m_sysORDescr = new DisplayString();
2913 	m_sysORUpTime = new TimeStamp();
2914 
2915 	DataBlock db(data,len);
2916 	decode(db);
2917 }
2918 
~SysOREntry()2919 SysOREntry::~SysOREntry()
2920 {
2921 	TelEngine::destruct(m_sysORDescr);
2922 	TelEngine::destruct(m_sysORUpTime);
2923 }
2924 
decode(DataBlock & data)2925 int SysOREntry::decode(DataBlock& data)
2926 {
2927 	int length = 0;
2928 	length = ASNLib::decodeSequence(data,true);
2929 	if (length < 0)
2930 		return length;
2931 	length = ASNLib::decodeINT32(data,&m_sysORIndex,true);
2932 	length = ASNLib::decodeOID(data,&m_sysORID,true);
2933 	length = m_sysORDescr->decode(data);
2934 	length = m_sysORUpTime->decode(data);
2935 	return length;
2936 }
2937 
encode(DataBlock & data)2938 int SysOREntry::encode(DataBlock& data)
2939 {
2940 	int length = -1;
2941 	DataBlock seqDb;
2942 	DataBlock db;
2943 	length = 0;
2944 	db =  ASNLib::encodeInteger(m_sysORIndex,true);
2945 	seqDb.append(db);
2946 	db = ASNLib::encodeOID(m_sysORID,true);
2947 	seqDb.append(db);
2948 	m_sysORDescr->encode(seqDb);
2949 	m_sysORUpTime->encode(seqDb);
2950 	length = ASNLib::encodeSequence(seqDb,true);
2951 	data.append(seqDb);
2952 	return length;
2953 }
2954 
getParams(NamedList * params)2955 void SysOREntry::getParams(NamedList* params)
2956 {}
2957 
setParams(NamedList * params)2958 void SysOREntry::setParams(NamedList* params)
2959 {}
2960 
2961 }
2962