yate/libs/ysnmp/snmp.cpp

2962 lines
58 KiB
C++

// generated on Sep 17, 2010 4:11 PM
#include "yatesnmp.h"
namespace Snmp {
/**
* ObjectName
*/
ObjectName::ObjectName()
{
}
ObjectName::ObjectName(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
ObjectName::~ObjectName()
{
}
int ObjectName::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeOID(data,&m_ObjectName,true);
return length;
}
int ObjectName::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeOID(m_ObjectName,true);
data.append(db);
length = db.length();
return length;
}
void ObjectName::getParams(NamedList* params)
{}
void ObjectName::setParams(NamedList* params)
{}
/**
* ObjectSyntax
*/
ObjectSyntax::ObjectSyntax()
{
m_simple = new SimpleSyntax();
m_application_wide = new ApplicationSyntax();
}
ObjectSyntax::ObjectSyntax(void* data, int len)
{
m_simple = new SimpleSyntax();
m_application_wide = new ApplicationSyntax();
DataBlock db(data,len);
decode(db);
}
ObjectSyntax::~ObjectSyntax()
{
TelEngine::destruct(m_simple);
TelEngine::destruct(m_application_wide);
}
int ObjectSyntax::decode(DataBlock& data)
{
int length = 0;
length = m_simple->decode(data);
if (length >= 0) {
m_choiceType = SIMPLE;
return length;
}
length = m_application_wide->decode(data);
if (length >= 0) {
m_choiceType = APPLICATION_WIDE;
return length;
}
return length;
}
int ObjectSyntax::encode(DataBlock& data)
{
int length = -1;
if (m_choiceType == SIMPLE) {
length = m_simple->encode(data);
}
if (m_choiceType == APPLICATION_WIDE) {
length = m_application_wide->encode(data);
}
return length;
}
void ObjectSyntax::getParams(NamedList* params)
{}
void ObjectSyntax::setParams(NamedList* params)
{}
/**
* SimpleSyntax
*/
SimpleSyntax::SimpleSyntax()
{
}
SimpleSyntax::SimpleSyntax(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
SimpleSyntax::~SimpleSyntax()
{
}
int SimpleSyntax::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeINT32(data,&m_integer_value,true);
if (m_integer_value < s_integer_valueMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_integer_valueMaxSize < m_integer_value)
DDebug(DebugAll,"Constraint break error");
if (length >= 0) {
m_choiceType = INTEGER_VALUE;
return length;
}
length = ASNLib::decodeOctetString(data,&m_string_value,true);
if (length < s_string_valueSizeMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_string_valueSizeMaxSize < length)
DDebug(DebugAll,"Constraint break error");
if (length >= 0) {
m_choiceType = STRING_VALUE;
return length;
}
length = ASNLib::decodeOID(data,&m_objectID_value,true);
if (length >= 0) {
m_choiceType = OBJECTID_VALUE;
return length;
}
return length;
}
int SimpleSyntax::encode(DataBlock& data)
{
int length = -1;
if (m_choiceType == INTEGER_VALUE) {
const DataBlock db = ASNLib::encodeInteger(m_integer_value,true);
data.append(db);
length = db.length();
}
if (m_choiceType == STRING_VALUE) {
const DataBlock db = ASNLib::encodeOctetString(m_string_value,true);
data.append(db);
length = db.length();
}
if (m_choiceType == OBJECTID_VALUE) {
const DataBlock db = ASNLib::encodeOID(m_objectID_value,true);
data.append(db);
length = db.length();
}
return length;
}
void SimpleSyntax::getParams(NamedList* params)
{}
void SimpleSyntax::setParams(NamedList* params)
{}
/**
* ApplicationSyntax
*/
ApplicationSyntax::ApplicationSyntax()
{
m_ipAddress_value = new IpAddress();
m_counter_value = new Counter32();
m_timeticks_value = new TimeTicks();
m_arbitrary_value = new Opaque();
m_big_counter_value = new Counter64();
m_unsigned_integer_value = new Unsigned32();
}
ApplicationSyntax::ApplicationSyntax(void* data, int len)
{
m_ipAddress_value = new IpAddress();
m_counter_value = new Counter32();
m_timeticks_value = new TimeTicks();
m_arbitrary_value = new Opaque();
m_big_counter_value = new Counter64();
m_unsigned_integer_value = new Unsigned32();
DataBlock db(data,len);
decode(db);
}
ApplicationSyntax::~ApplicationSyntax()
{
TelEngine::destruct(m_ipAddress_value);
TelEngine::destruct(m_counter_value);
TelEngine::destruct(m_timeticks_value);
TelEngine::destruct(m_arbitrary_value);
TelEngine::destruct(m_big_counter_value);
TelEngine::destruct(m_unsigned_integer_value);
}
int ApplicationSyntax::decode(DataBlock& data)
{
int length = 0;
length = m_ipAddress_value->decode(data);
if (length >= 0) {
m_choiceType = IPADDRESS_VALUE;
return length;
}
length = m_counter_value->decode(data);
if (length >= 0) {
m_choiceType = COUNTER_VALUE;
return length;
}
length = m_timeticks_value->decode(data);
if (length >= 0) {
m_choiceType = TIMETICKS_VALUE;
return length;
}
length = m_arbitrary_value->decode(data);
if (length >= 0) {
m_choiceType = ARBITRARY_VALUE;
return length;
}
length = m_big_counter_value->decode(data);
if (length >= 0) {
m_choiceType = BIG_COUNTER_VALUE;
return length;
}
length = m_unsigned_integer_value->decode(data);
if (length >= 0) {
m_choiceType = UNSIGNED_INTEGER_VALUE;
return length;
}
return length;
}
int ApplicationSyntax::encode(DataBlock& data)
{
int length = -1;
if (m_choiceType == IPADDRESS_VALUE) {
length = m_ipAddress_value->encode(data);
}
if (m_choiceType == COUNTER_VALUE) {
length = m_counter_value->encode(data);
}
if (m_choiceType == TIMETICKS_VALUE) {
length = m_timeticks_value->encode(data);
}
if (m_choiceType == ARBITRARY_VALUE) {
length = m_arbitrary_value->encode(data);
}
if (m_choiceType == BIG_COUNTER_VALUE) {
length = m_big_counter_value->encode(data);
}
if (m_choiceType == UNSIGNED_INTEGER_VALUE) {
length = m_unsigned_integer_value->encode(data);
}
return length;
}
void ApplicationSyntax::getParams(NamedList* params)
{}
void ApplicationSyntax::setParams(NamedList* params)
{}
/**
* IpAddress
*/
IpAddress::IpAddress()
{
}
IpAddress::IpAddress(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
IpAddress::~IpAddress()
{
}
int IpAddress::decode(DataBlock& data)
{
int length = 0;
length = -1;
if (data.length() < 2)
return ASNLib::InvalidLengthOrTag;
if (data[0] == tag_IpAddress) {
data.cut(-1);
length = ASNLib::decodeOctetString(data,&m_IpAddress,false);
if (length != s_IpAddressSize)
DDebug(DebugAll,"Constraint break error");
}
return length;
}
int IpAddress::encode(DataBlock& data)
{
int length = -1;
DataBlock contents;
u_int8_t tag = tag_IpAddress;
const DataBlock db = ASNLib::encodeOctetString(m_IpAddress,false);
contents.append(db);
length = db.length();
DataBlock len = ASNLib::buildLength(contents);
data.append(&tag,1);
data.append(len);
data.append(contents);
return length;
}
void IpAddress::getParams(NamedList* params)
{}
void IpAddress::setParams(NamedList* params)
{}
/**
* Counter32
*/
Counter32::Counter32()
{
}
Counter32::Counter32(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
Counter32::~Counter32()
{
}
int Counter32::decode(DataBlock& data)
{
int length = 0;
length = -1;
if (data.length() < 2)
return ASNLib::InvalidLengthOrTag;
if (data[0] == tag_Counter32) {
data.cut(-1);
length = ASNLib::decodeUINT32(data,&m_Counter32,false);
if (m_Counter32 < s_Counter32MinSize)
DDebug(DebugAll,"Constraint break error");
if (s_Counter32MaxSize < m_Counter32)
DDebug(DebugAll,"Constraint break error");
}
return length;
}
int Counter32::encode(DataBlock& data)
{
int length = -1;
DataBlock contents;
u_int8_t tag = tag_Counter32;
const DataBlock db = ASNLib::encodeInteger(m_Counter32,false);
contents.append(db);
length = db.length();
DataBlock len = ASNLib::buildLength(contents);
data.append(&tag,1);
data.append(len);
data.append(contents);
return length;
}
void Counter32::getParams(NamedList* params)
{}
void Counter32::setParams(NamedList* params)
{}
/**
* Unsigned32
*/
Unsigned32::Unsigned32()
{
}
Unsigned32::Unsigned32(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
Unsigned32::~Unsigned32()
{
}
int Unsigned32::decode(DataBlock& data)
{
int length = 0;
length = -1;
if (data.length() < 2)
return ASNLib::InvalidLengthOrTag;
if (data[0] == tag_Unsigned32) {
data.cut(-1);
length = ASNLib::decodeUINT32(data,&m_Unsigned32,false);
if (m_Unsigned32 < s_Unsigned32MinSize)
DDebug(DebugAll,"Constraint break error");
if (s_Unsigned32MaxSize < m_Unsigned32)
DDebug(DebugAll,"Constraint break error");
}
return length;
}
int Unsigned32::encode(DataBlock& data)
{
int length = -1;
DataBlock contents;
u_int8_t tag = tag_Unsigned32;
const DataBlock db = ASNLib::encodeInteger(m_Unsigned32,false);
contents.append(db);
length = db.length();
DataBlock len = ASNLib::buildLength(contents);
data.append(&tag,1);
data.append(len);
data.append(contents);
return length;
}
void Unsigned32::getParams(NamedList* params)
{}
void Unsigned32::setParams(NamedList* params)
{}
/**
* Gauge32
*/
Gauge32::Gauge32()
{
m_Gauge32 = new Unsigned32();
}
Gauge32::Gauge32(void* data, int len)
{
m_Gauge32 = new Unsigned32();
DataBlock db(data,len);
decode(db);
}
Gauge32::~Gauge32()
{
TelEngine::destruct(m_Gauge32);
}
int Gauge32::decode(DataBlock& data)
{
int length = 0;
length = m_Gauge32->decode(data);
return length;
}
int Gauge32::encode(DataBlock& data)
{
int length = -1;
length = m_Gauge32->encode(data);
return length;
}
void Gauge32::getParams(NamedList* params)
{}
void Gauge32::setParams(NamedList* params)
{}
/**
* TimeTicks
*/
TimeTicks::TimeTicks()
{
}
TimeTicks::TimeTicks(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
TimeTicks::~TimeTicks()
{
}
int TimeTicks::decode(DataBlock& data)
{
int length = 0;
length = -1;
if (data.length() < 2)
return ASNLib::InvalidLengthOrTag;
if (data[0] == tag_TimeTicks) {
data.cut(-1);
length = ASNLib::decodeUINT32(data,&m_TimeTicks,false);
if (m_TimeTicks < s_TimeTicksMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_TimeTicksMaxSize < m_TimeTicks)
DDebug(DebugAll,"Constraint break error");
}
return length;
}
int TimeTicks::encode(DataBlock& data)
{
int length = -1;
DataBlock contents;
u_int8_t tag = tag_TimeTicks;
const DataBlock db = ASNLib::encodeInteger(m_TimeTicks,false);
contents.append(db);
length = db.length();
DataBlock len = ASNLib::buildLength(contents);
data.append(&tag,1);
data.append(len);
data.append(contents);
return length;
}
void TimeTicks::getParams(NamedList* params)
{}
void TimeTicks::setParams(NamedList* params)
{}
/**
* Opaque
*/
Opaque::Opaque()
{
}
Opaque::Opaque(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
Opaque::~Opaque()
{
}
int Opaque::decode(DataBlock& data)
{
int length = 0;
length = -1;
if (data.length() < 2)
return ASNLib::InvalidLengthOrTag;
if (data[0] == tag_Opaque) {
data.cut(-1);
length = ASNLib::decodeOctetString(data,&m_Opaque,false);
}
return length;
}
int Opaque::encode(DataBlock& data)
{
int length = -1;
DataBlock contents;
u_int8_t tag = tag_Opaque;
const DataBlock db = ASNLib::encodeOctetString(m_Opaque,false);
contents.append(db);
length = db.length();
DataBlock len = ASNLib::buildLength(contents);
data.append(&tag,1);
data.append(len);
data.append(contents);
return length;
}
void Opaque::getParams(NamedList* params)
{}
void Opaque::setParams(NamedList* params)
{}
/**
* Counter64
*/
Counter64::Counter64()
{
}
Counter64::Counter64(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
Counter64::~Counter64()
{
}
int Counter64::decode(DataBlock& data)
{
int length = 0;
length = -1;
if (data.length() < 2)
return ASNLib::InvalidLengthOrTag;
if (data[0] == tag_Counter64) {
data.cut(-1);
length = ASNLib::decodeUINT64(data,&m_Counter64,false);
if (m_Counter64 < s_Counter64MinSize)
DDebug(DebugAll,"Constraint break error");
if (s_Counter64MaxSize < m_Counter64)
DDebug(DebugAll,"Constraint break error");
}
return length;
}
int Counter64::encode(DataBlock& data)
{
int length = -1;
DataBlock contents;
u_int8_t tag = tag_Counter64;
const DataBlock db = ASNLib::encodeInteger(m_Counter64,false);
contents.append(db);
length = db.length();
DataBlock len = ASNLib::buildLength(contents);
data.append(&tag,1);
data.append(len);
data.append(contents);
return length;
}
void Counter64::getParams(NamedList* params)
{}
void Counter64::setParams(NamedList* params)
{}
/**
* PDUs
*/
PDUs::PDUs()
{
m_get_request = new GetRequest_PDU();
m_get_next_request = new GetNextRequest_PDU();
m_get_bulk_request = new GetBulkRequest_PDU();
m_response = new Response_PDU();
m_set_request = new SetRequest_PDU();
m_inform_request = new InformRequest_PDU();
m_snmpV2_trap = new SNMPv2_Trap_PDU();
m_report = new Report_PDU();
}
PDUs::PDUs(void* data, int len)
{
m_get_request = new GetRequest_PDU();
m_get_next_request = new GetNextRequest_PDU();
m_get_bulk_request = new GetBulkRequest_PDU();
m_response = new Response_PDU();
m_set_request = new SetRequest_PDU();
m_inform_request = new InformRequest_PDU();
m_snmpV2_trap = new SNMPv2_Trap_PDU();
m_report = new Report_PDU();
DataBlock db(data,len);
decode(db);
}
PDUs::~PDUs()
{
TelEngine::destruct(m_get_request);
TelEngine::destruct(m_get_next_request);
TelEngine::destruct(m_get_bulk_request);
TelEngine::destruct(m_response);
TelEngine::destruct(m_set_request);
TelEngine::destruct(m_inform_request);
TelEngine::destruct(m_snmpV2_trap);
TelEngine::destruct(m_report);
}
int PDUs::decode(DataBlock& data)
{
int length = 0;
length = m_get_request->decode(data);
if (length >= 0) {
m_choiceType = GET_REQUEST;
return length;
}
length = m_get_next_request->decode(data);
if (length >= 0) {
m_choiceType = GET_NEXT_REQUEST;
return length;
}
length = m_get_bulk_request->decode(data);
if (length >= 0) {
m_choiceType = GET_BULK_REQUEST;
return length;
}
length = m_response->decode(data);
if (length >= 0) {
m_choiceType = RESPONSE;
return length;
}
length = m_set_request->decode(data);
if (length >= 0) {
m_choiceType = SET_REQUEST;
return length;
}
length = m_inform_request->decode(data);
if (length >= 0) {
m_choiceType = INFORM_REQUEST;
return length;
}
length = m_snmpV2_trap->decode(data);
if (length >= 0) {
m_choiceType = SNMPV2_TRAP;
return length;
}
length = m_report->decode(data);
if (length >= 0) {
m_choiceType = REPORT;
return length;
}
return length;
}
int PDUs::encode(DataBlock& data)
{
int length = -1;
if (m_choiceType == GET_REQUEST) {
length = m_get_request->encode(data);
}
if (m_choiceType == GET_NEXT_REQUEST) {
length = m_get_next_request->encode(data);
}
if (m_choiceType == GET_BULK_REQUEST) {
length = m_get_bulk_request->encode(data);
}
if (m_choiceType == RESPONSE) {
length = m_response->encode(data);
}
if (m_choiceType == SET_REQUEST) {
length = m_set_request->encode(data);
}
if (m_choiceType == INFORM_REQUEST) {
length = m_inform_request->encode(data);
}
if (m_choiceType == SNMPV2_TRAP) {
length = m_snmpV2_trap->encode(data);
}
if (m_choiceType == REPORT) {
length = m_report->encode(data);
}
return length;
}
void PDUs::getParams(NamedList* params)
{}
void PDUs::setParams(NamedList* params)
{}
/**
* GetRequest_PDU
*/
GetRequest_PDU::GetRequest_PDU()
{
m_GetRequest_PDU = new PDU();
}
GetRequest_PDU::GetRequest_PDU(void* data, int len)
{
m_GetRequest_PDU = new PDU();
DataBlock db(data,len);
decode(db);
}
GetRequest_PDU::~GetRequest_PDU()
{
TelEngine::destruct(m_GetRequest_PDU);
}
int GetRequest_PDU::decode(DataBlock& data)
{
int length = 0;
length = -1;
if (data.length() < 2)
return ASNLib::InvalidLengthOrTag;
if (data[0] == tag_GetRequest_PDU) {
data.cut(-1);
length = m_GetRequest_PDU->decode(data);
}
return length;
}
int GetRequest_PDU::encode(DataBlock& data)
{
int length = -1;
DataBlock contents;
u_int8_t tag = tag_GetRequest_PDU;
length = m_GetRequest_PDU->encode(contents);
DataBlock len = ASNLib::buildLength(contents);
data.append(&tag,1);
data.append(len);
data.append(contents);
return length;
}
void GetRequest_PDU::getParams(NamedList* params)
{}
void GetRequest_PDU::setParams(NamedList* params)
{}
/**
* GetNextRequest_PDU
*/
GetNextRequest_PDU::GetNextRequest_PDU()
{
m_GetNextRequest_PDU = new PDU();
}
GetNextRequest_PDU::GetNextRequest_PDU(void* data, int len)
{
m_GetNextRequest_PDU = new PDU();
DataBlock db(data,len);
decode(db);
}
GetNextRequest_PDU::~GetNextRequest_PDU()
{
TelEngine::destruct(m_GetNextRequest_PDU);
}
int GetNextRequest_PDU::decode(DataBlock& data)
{
int length = 0;
length = -1;
if (data.length() < 2)
return ASNLib::InvalidLengthOrTag;
if (data[0] == tag_GetNextRequest_PDU) {
data.cut(-1);
length = m_GetNextRequest_PDU->decode(data);
}
return length;
}
int GetNextRequest_PDU::encode(DataBlock& data)
{
int length = -1;
DataBlock contents;
u_int8_t tag = tag_GetNextRequest_PDU;
length = m_GetNextRequest_PDU->encode(contents);
DataBlock len = ASNLib::buildLength(contents);
data.append(&tag,1);
data.append(len);
data.append(contents);
return length;
}
void GetNextRequest_PDU::getParams(NamedList* params)
{}
void GetNextRequest_PDU::setParams(NamedList* params)
{}
/**
* Response_PDU
*/
Response_PDU::Response_PDU()
{
m_Response_PDU = new PDU();
}
Response_PDU::Response_PDU(void* data, int len)
{
m_Response_PDU = new PDU();
DataBlock db(data,len);
decode(db);
}
Response_PDU::~Response_PDU()
{
TelEngine::destruct(m_Response_PDU);
}
int Response_PDU::decode(DataBlock& data)
{
int length = 0;
length = -1;
if (data.length() < 2)
return ASNLib::InvalidLengthOrTag;
if (data[0] == tag_Response_PDU) {
data.cut(-1);
length = m_Response_PDU->decode(data);
}
return length;
}
int Response_PDU::encode(DataBlock& data)
{
int length = -1;
DataBlock contents;
u_int8_t tag = tag_Response_PDU;
length = m_Response_PDU->encode(contents);
DataBlock len = ASNLib::buildLength(contents);
data.append(&tag,1);
data.append(len);
data.append(contents);
return length;
}
void Response_PDU::getParams(NamedList* params)
{}
void Response_PDU::setParams(NamedList* params)
{}
/**
* SetRequest_PDU
*/
SetRequest_PDU::SetRequest_PDU()
{
m_SetRequest_PDU = new PDU();
}
SetRequest_PDU::SetRequest_PDU(void* data, int len)
{
m_SetRequest_PDU = new PDU();
DataBlock db(data,len);
decode(db);
}
SetRequest_PDU::~SetRequest_PDU()
{
TelEngine::destruct(m_SetRequest_PDU);
}
int SetRequest_PDU::decode(DataBlock& data)
{
int length = 0;
length = -1;
if (data.length() < 2)
return ASNLib::InvalidLengthOrTag;
if (data[0] == tag_SetRequest_PDU) {
data.cut(-1);
length = m_SetRequest_PDU->decode(data);
}
return length;
}
int SetRequest_PDU::encode(DataBlock& data)
{
int length = -1;
DataBlock contents;
u_int8_t tag = tag_SetRequest_PDU;
length = m_SetRequest_PDU->encode(contents);
DataBlock len = ASNLib::buildLength(contents);
data.append(&tag,1);
data.append(len);
data.append(contents);
return length;
}
void SetRequest_PDU::getParams(NamedList* params)
{}
void SetRequest_PDU::setParams(NamedList* params)
{}
/**
* GetBulkRequest_PDU
*/
GetBulkRequest_PDU::GetBulkRequest_PDU()
{
m_GetBulkRequest_PDU = new BulkPDU();
}
GetBulkRequest_PDU::GetBulkRequest_PDU(void* data, int len)
{
m_GetBulkRequest_PDU = new BulkPDU();
DataBlock db(data,len);
decode(db);
}
GetBulkRequest_PDU::~GetBulkRequest_PDU()
{
TelEngine::destruct(m_GetBulkRequest_PDU);
}
int GetBulkRequest_PDU::decode(DataBlock& data)
{
int length = 0;
length = -1;
if (data.length() < 2)
return ASNLib::InvalidLengthOrTag;
if (data[0] == tag_GetBulkRequest_PDU) {
data.cut(-1);
length = m_GetBulkRequest_PDU->decode(data);
}
return length;
}
int GetBulkRequest_PDU::encode(DataBlock& data)
{
int length = -1;
DataBlock contents;
u_int8_t tag = tag_GetBulkRequest_PDU;
length = m_GetBulkRequest_PDU->encode(contents);
DataBlock len = ASNLib::buildLength(contents);
data.append(&tag,1);
data.append(len);
data.append(contents);
return length;
}
void GetBulkRequest_PDU::getParams(NamedList* params)
{}
void GetBulkRequest_PDU::setParams(NamedList* params)
{}
/**
* InformRequest_PDU
*/
InformRequest_PDU::InformRequest_PDU()
{
m_InformRequest_PDU = new PDU();
}
InformRequest_PDU::InformRequest_PDU(void* data, int len)
{
m_InformRequest_PDU = new PDU();
DataBlock db(data,len);
decode(db);
}
InformRequest_PDU::~InformRequest_PDU()
{
TelEngine::destruct(m_InformRequest_PDU);
}
int InformRequest_PDU::decode(DataBlock& data)
{
int length = 0;
length = -1;
if (data.length() < 2)
return ASNLib::InvalidLengthOrTag;
if (data[0] == tag_InformRequest_PDU) {
data.cut(-1);
length = m_InformRequest_PDU->decode(data);
}
return length;
}
int InformRequest_PDU::encode(DataBlock& data)
{
int length = -1;
DataBlock contents;
u_int8_t tag = tag_InformRequest_PDU;
length = m_InformRequest_PDU->encode(contents);
DataBlock len = ASNLib::buildLength(contents);
data.append(&tag,1);
data.append(len);
data.append(contents);
return length;
}
void InformRequest_PDU::getParams(NamedList* params)
{}
void InformRequest_PDU::setParams(NamedList* params)
{}
/**
* SNMPv2_Trap_PDU
*/
SNMPv2_Trap_PDU::SNMPv2_Trap_PDU()
{
m_SNMPv2_Trap_PDU = new PDU();
}
SNMPv2_Trap_PDU::SNMPv2_Trap_PDU(void* data, int len)
{
m_SNMPv2_Trap_PDU = new PDU();
DataBlock db(data,len);
decode(db);
}
SNMPv2_Trap_PDU::~SNMPv2_Trap_PDU()
{
TelEngine::destruct(m_SNMPv2_Trap_PDU);
}
int SNMPv2_Trap_PDU::decode(DataBlock& data)
{
int length = 0;
length = -1;
if (data.length() < 2)
return ASNLib::InvalidLengthOrTag;
if (data[0] == tag_SNMPv2_Trap_PDU) {
data.cut(-1);
length = m_SNMPv2_Trap_PDU->decode(data);
}
return length;
}
int SNMPv2_Trap_PDU::encode(DataBlock& data)
{
int length = -1;
DataBlock contents;
u_int8_t tag = tag_SNMPv2_Trap_PDU;
length = m_SNMPv2_Trap_PDU->encode(contents);
DataBlock len = ASNLib::buildLength(contents);
data.append(&tag,1);
data.append(len);
data.append(contents);
return length;
}
void SNMPv2_Trap_PDU::getParams(NamedList* params)
{}
void SNMPv2_Trap_PDU::setParams(NamedList* params)
{}
/**
* Report_PDU
*/
Report_PDU::Report_PDU()
{
m_Report_PDU = new PDU();
}
Report_PDU::Report_PDU(void* data, int len)
{
m_Report_PDU = new PDU();
DataBlock db(data,len);
decode(db);
}
Report_PDU::~Report_PDU()
{
TelEngine::destruct(m_Report_PDU);
}
int Report_PDU::decode(DataBlock& data)
{
int length = 0;
length = -1;
if (data.length() < 2)
return ASNLib::InvalidLengthOrTag;
if (data[0] == tag_Report_PDU) {
data.cut(-1);
length = m_Report_PDU->decode(data);
}
return length;
}
int Report_PDU::encode(DataBlock& data)
{
int length = -1;
DataBlock contents;
u_int8_t tag = tag_Report_PDU;
length = m_Report_PDU->encode(contents);
DataBlock len = ASNLib::buildLength(contents);
data.append(&tag,1);
data.append(len);
data.append(contents);
return length;
}
void Report_PDU::getParams(NamedList* params)
{}
void Report_PDU::setParams(NamedList* params)
{}
/**
* PDU
*/
PDU::PDU()
{
m_variable_bindings = new VarBindList();
}
PDU::PDU(void* data, int len)
{
m_variable_bindings = new VarBindList();
DataBlock db(data,len);
decode(db);
}
PDU::~PDU()
{
TelEngine::destruct(m_variable_bindings);
}
int PDU::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeSequence(data,false);
if (length < 0)
return length;
length = ASNLib::decodeINT32(data,&m_request_id,true);
if (m_request_id < s_request_idMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_request_idMaxSize < m_request_id)
DDebug(DebugAll,"Constraint break error");
length = ASNLib::decodeINT32(data,&m_error_status,true);
if ( m_error_status < s_noError_error_status || m_error_status > s_inconsistentName_error_status)
return ASNLib::InvalidContentsError;
length = ASNLib::decodeINT32(data,&m_error_index,true);
if (m_error_index < s_error_indexMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_error_indexMaxSize < m_error_index)
DDebug(DebugAll,"Constraint break error");
length = m_variable_bindings->decode(data);
return length;
}
int PDU::encode(DataBlock& data)
{
int length = -1;
DataBlock seqDb;
DataBlock db;
length = 0;
db = ASNLib::encodeInteger(m_request_id,true);
seqDb.append(db);
db = ASNLib::encodeInteger(m_error_status,true);
seqDb.append(db);
db = ASNLib::encodeInteger(m_error_index,true);
seqDb.append(db);
m_variable_bindings->encode(seqDb);
length = ASNLib::encodeSequence(seqDb,false);
data.append(seqDb);
return length;
}
void PDU::getParams(NamedList* params)
{}
void PDU::setParams(NamedList* params)
{}
/**
* BulkPDU
*/
BulkPDU::BulkPDU()
{
m_variable_bindings = new VarBindList();
}
BulkPDU::BulkPDU(void* data, int len)
{
m_variable_bindings = new VarBindList();
DataBlock db(data,len);
decode(db);
}
BulkPDU::~BulkPDU()
{
TelEngine::destruct(m_variable_bindings);
}
int BulkPDU::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeSequence(data,false);
if (length < 0)
return length;
length = ASNLib::decodeINT32(data,&m_request_id,true);
if (m_request_id < s_request_idMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_request_idMaxSize < m_request_id)
DDebug(DebugAll,"Constraint break error");
length = ASNLib::decodeINT32(data,&m_non_repeaters,true);
if (m_non_repeaters < s_non_repeatersMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_non_repeatersMaxSize < m_non_repeaters)
DDebug(DebugAll,"Constraint break error");
length = ASNLib::decodeINT32(data,&m_max_repetitions,true);
if (m_max_repetitions < s_max_repetitionsMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_max_repetitionsMaxSize < m_max_repetitions)
DDebug(DebugAll,"Constraint break error");
length = m_variable_bindings->decode(data);
return length;
}
int BulkPDU::encode(DataBlock& data)
{
int length = -1;
DataBlock seqDb;
DataBlock db;
length = 0;
db = ASNLib::encodeInteger(m_request_id,true);
seqDb.append(db);
db = ASNLib::encodeInteger(m_non_repeaters,true);
seqDb.append(db);
db = ASNLib::encodeInteger(m_max_repetitions,true);
seqDb.append(db);
m_variable_bindings->encode(seqDb);
length = ASNLib::encodeSequence(seqDb,false);
data.append(seqDb);
return length;
}
void BulkPDU::getParams(NamedList* params)
{}
void BulkPDU::setParams(NamedList* params)
{}
/**
* VarBind
*/
VarBind::VarBind()
{
m_name = new ObjectName();
m_value = new ObjectSyntax();
}
VarBind::VarBind(void* data, int len)
{
m_name = new ObjectName();
m_value = new ObjectSyntax();
DataBlock db(data,len);
decode(db);
}
VarBind::~VarBind()
{
TelEngine::destruct(m_name);
TelEngine::destruct(m_value);
}
int VarBind::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeSequence(data,true);
if (length < 0)
return length;
length = m_name->decode(data);
length = m_value->decode(data);
if (length >= 0) {
m_choiceType = VALUE;
return length;
}
length = ASNLib::decodeNull(data,true);
if (length >= 0) {
m_choiceType = UNSPECIFIED;
return length;
}
length = -1;
if (data.length() < 2)
return ASNLib::InvalidLengthOrTag;
if (data[0] == tag_noSuchObject) {
data.cut(-1);
length = ASNLib::decodeNull(data,false);
}
if (length >= 0) {
m_choiceType = NOSUCHOBJECT;
return length;
}
length = -1;
if (data.length() < 2)
return ASNLib::InvalidLengthOrTag;
if (data[0] == tag_noSuchInstance) {
data.cut(-1);
length = ASNLib::decodeNull(data,false);
}
if (length >= 0) {
m_choiceType = NOSUCHINSTANCE;
return length;
}
length = -1;
if (data.length() < 2)
return ASNLib::InvalidLengthOrTag;
if (data[0] == tag_endOfMibView) {
data.cut(-1);
length = ASNLib::decodeNull(data,false);
}
if (length >= 0) {
m_choiceType = ENDOFMIBVIEW;
return length;
}
return length;
}
int VarBind::encode(DataBlock& data)
{
int length = -1;
DataBlock seqDb;
DataBlock db;
length = 0;
m_name->encode(seqDb);
if (m_choiceType == VALUE) {
length = m_value->encode(seqDb);
}
if (m_choiceType == UNSPECIFIED) {
DataBlock db = ASNLib::encodeNull(true);
seqDb.append(db);
length += seqDb.length();
}
if (m_choiceType == NOSUCHOBJECT) {
DataBlock contents;
u_int8_t tag = tag_noSuchObject;
DataBlock db = ASNLib::encodeNull(false);
contents.append(db);
length += contents.length();
DataBlock len = ASNLib::buildLength(contents);
seqDb.append(&tag,1);
seqDb.append(len);
seqDb.append(contents);
}
if (m_choiceType == NOSUCHINSTANCE) {
DataBlock contents;
u_int8_t tag = tag_noSuchInstance;
DataBlock db = ASNLib::encodeNull(false);
contents.append(db);
length += contents.length();
DataBlock len = ASNLib::buildLength(contents);
seqDb.append(&tag,1);
seqDb.append(len);
seqDb.append(contents);
}
if (m_choiceType == ENDOFMIBVIEW) {
DataBlock contents;
u_int8_t tag = tag_endOfMibView;
DataBlock db = ASNLib::encodeNull(false);
contents.append(db);
length += contents.length();
DataBlock len = ASNLib::buildLength(contents);
seqDb.append(&tag,1);
seqDb.append(len);
seqDb.append(contents);
}
seqDb.append(db);
length = ASNLib::encodeSequence(seqDb,true);
data.append(seqDb);
return length;
}
void VarBind::getParams(NamedList* params)
{}
void VarBind::setParams(NamedList* params)
{}
/**
* VarBindList
*/
VarBindList::VarBindList()
{
}
VarBindList::VarBindList(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
VarBindList::~VarBindList()
{
}
int VarBindList::decode(DataBlock& data)
{
int length = 0;
length = 0;
length = ASNLib::decodeSequence(data,true);
if (length < 0)
return length;
int l = 0;
while (l > -1) {
VarBind* obj = new VarBind();
l = obj->decode(data);
if (l > -1) {
length += l;
m_list.append(obj);
}
else
TelEngine::destruct(obj);
}
return length;
}
int VarBindList::encode(DataBlock& data)
{
int length = -1;
DataBlock db;
length = 0;
for (unsigned int i = 0; i < m_list.count(); i++) {
VarBind* obj = static_cast<VarBind*>(m_list[i]);
int l = obj->encode(db);
if (l <= -1)
return -1;
length += l;
}
length = ASNLib::encodeSequence(db,true);
if (length < 0)
return length;
data.append(db);
return length;
}
void VarBindList::getParams(NamedList* params)
{}
void VarBindList::setParams(NamedList* params)
{}
/**
* DisplayString
*/
DisplayString::DisplayString()
{
}
DisplayString::DisplayString(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
DisplayString::~DisplayString()
{
}
int DisplayString::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeOctetString(data,&m_DisplayString,true);
if (length < s_DisplayStringSizeMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_DisplayStringSizeMaxSize < length)
DDebug(DebugAll,"Constraint break error");
return length;
}
int DisplayString::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeOctetString(m_DisplayString,true);
data.append(db);
length = db.length();
return length;
}
void DisplayString::getParams(NamedList* params)
{}
void DisplayString::setParams(NamedList* params)
{}
/**
* PhysAddress
*/
PhysAddress::PhysAddress()
{
}
PhysAddress::PhysAddress(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
PhysAddress::~PhysAddress()
{
}
int PhysAddress::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeOctetString(data,&m_PhysAddress,true);
return length;
}
int PhysAddress::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeOctetString(m_PhysAddress,true);
data.append(db);
length = db.length();
return length;
}
void PhysAddress::getParams(NamedList* params)
{}
void PhysAddress::setParams(NamedList* params)
{}
/**
* MacAddress
*/
MacAddress::MacAddress()
{
}
MacAddress::MacAddress(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
MacAddress::~MacAddress()
{
}
int MacAddress::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeOctetString(data,&m_MacAddress,true);
if (length != s_MacAddressSize)
DDebug(DebugAll,"Constraint break error");
return length;
}
int MacAddress::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeOctetString(m_MacAddress,true);
data.append(db);
length = db.length();
return length;
}
void MacAddress::getParams(NamedList* params)
{}
void MacAddress::setParams(NamedList* params)
{}
/**
* TruthValue
*/
TruthValue::TruthValue()
{
}
TruthValue::TruthValue(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
TruthValue::~TruthValue()
{
}
int TruthValue::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeINT32(data,&m_TruthValue,true);
if ( m_TruthValue < s_true_TruthValue || m_TruthValue > s_false_TruthValue)
return ASNLib::InvalidContentsError;
return length;
}
int TruthValue::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeInteger(m_TruthValue,true);
data.append(db);
length = db.length();
return length;
}
void TruthValue::getParams(NamedList* params)
{}
void TruthValue::setParams(NamedList* params)
{}
/**
* TestAndIncr
*/
TestAndIncr::TestAndIncr()
{
}
TestAndIncr::TestAndIncr(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
TestAndIncr::~TestAndIncr()
{
}
int TestAndIncr::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeUINT32(data,&m_TestAndIncr,true);
if (m_TestAndIncr < s_TestAndIncrMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_TestAndIncrMaxSize < m_TestAndIncr)
DDebug(DebugAll,"Constraint break error");
return length;
}
int TestAndIncr::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeInteger(m_TestAndIncr,true);
data.append(db);
length = db.length();
return length;
}
void TestAndIncr::getParams(NamedList* params)
{}
void TestAndIncr::setParams(NamedList* params)
{}
/**
* AutonomousType
*/
AutonomousType::AutonomousType()
{
}
AutonomousType::AutonomousType(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
AutonomousType::~AutonomousType()
{
}
int AutonomousType::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeOID(data,&m_AutonomousType,true);
return length;
}
int AutonomousType::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeOID(m_AutonomousType,true);
data.append(db);
length = db.length();
return length;
}
void AutonomousType::getParams(NamedList* params)
{}
void AutonomousType::setParams(NamedList* params)
{}
/**
* InstancePointer
*/
InstancePointer::InstancePointer()
{
}
InstancePointer::InstancePointer(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
InstancePointer::~InstancePointer()
{
}
int InstancePointer::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeOID(data,&m_InstancePointer,true);
return length;
}
int InstancePointer::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeOID(m_InstancePointer,true);
data.append(db);
length = db.length();
return length;
}
void InstancePointer::getParams(NamedList* params)
{}
void InstancePointer::setParams(NamedList* params)
{}
/**
* VariablePointer
*/
VariablePointer::VariablePointer()
{
}
VariablePointer::VariablePointer(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
VariablePointer::~VariablePointer()
{
}
int VariablePointer::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeOID(data,&m_VariablePointer,true);
return length;
}
int VariablePointer::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeOID(m_VariablePointer,true);
data.append(db);
length = db.length();
return length;
}
void VariablePointer::getParams(NamedList* params)
{}
void VariablePointer::setParams(NamedList* params)
{}
/**
* RowPointer
*/
RowPointer::RowPointer()
{
}
RowPointer::RowPointer(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
RowPointer::~RowPointer()
{
}
int RowPointer::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeOID(data,&m_RowPointer,true);
return length;
}
int RowPointer::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeOID(m_RowPointer,true);
data.append(db);
length = db.length();
return length;
}
void RowPointer::getParams(NamedList* params)
{}
void RowPointer::setParams(NamedList* params)
{}
/**
* RowStatus
*/
RowStatus::RowStatus()
{
}
RowStatus::RowStatus(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
RowStatus::~RowStatus()
{
}
int RowStatus::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeINT32(data,&m_RowStatus,true);
if ( m_RowStatus < s_active_RowStatus || m_RowStatus > s_destroy_RowStatus)
return ASNLib::InvalidContentsError;
return length;
}
int RowStatus::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeInteger(m_RowStatus,true);
data.append(db);
length = db.length();
return length;
}
void RowStatus::getParams(NamedList* params)
{}
void RowStatus::setParams(NamedList* params)
{}
/**
* TimeStamp
*/
TimeStamp::TimeStamp()
{
}
TimeStamp::TimeStamp(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
TimeStamp::~TimeStamp()
{
}
int TimeStamp::decode(DataBlock& data)
{
int length = 0;
length = m_TimeStamp->decode(data);
return length;
}
int TimeStamp::encode(DataBlock& data)
{
int length = -1;
length = m_TimeStamp->encode(data);
return length;
}
void TimeStamp::getParams(NamedList* params)
{}
void TimeStamp::setParams(NamedList* params)
{}
/**
* TimeInterval
*/
TimeInterval::TimeInterval()
{
}
TimeInterval::TimeInterval(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
TimeInterval::~TimeInterval()
{
}
int TimeInterval::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeUINT32(data,&m_TimeInterval,true);
if (m_TimeInterval < s_TimeIntervalMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_TimeIntervalMaxSize < m_TimeInterval)
DDebug(DebugAll,"Constraint break error");
return length;
}
int TimeInterval::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeInteger(m_TimeInterval,true);
data.append(db);
length = db.length();
return length;
}
void TimeInterval::getParams(NamedList* params)
{}
void TimeInterval::setParams(NamedList* params)
{}
/**
* DateAndTime
*/
DateAndTime::DateAndTime()
{
}
DateAndTime::DateAndTime(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
DateAndTime::~DateAndTime()
{
}
int DateAndTime::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeOctetString(data,&m_DateAndTime,true);
if (length != s_DateAndTimeSize_0)
DDebug(DebugAll,"Constraint break error");
if (length != s_DateAndTimeSize_1)
DDebug(DebugAll,"Constraint break error");
DDebug(DebugAll,"Constraint break error");
return length;
}
int DateAndTime::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeOctetString(m_DateAndTime,true);
data.append(db);
length = db.length();
return length;
}
void DateAndTime::getParams(NamedList* params)
{}
void DateAndTime::setParams(NamedList* params)
{}
/**
* StorageType
*/
StorageType::StorageType()
{
}
StorageType::StorageType(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
StorageType::~StorageType()
{
}
int StorageType::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeINT32(data,&m_StorageType,true);
if ( m_StorageType < s_other_StorageType || m_StorageType > s_readOnly_StorageType)
return ASNLib::InvalidContentsError;
return length;
}
int StorageType::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeInteger(m_StorageType,true);
data.append(db);
length = db.length();
return length;
}
void StorageType::getParams(NamedList* params)
{}
void StorageType::setParams(NamedList* params)
{}
/**
* TDomain
*/
TDomain::TDomain()
{
}
TDomain::TDomain(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
TDomain::~TDomain()
{
}
int TDomain::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeOID(data,&m_TDomain,true);
return length;
}
int TDomain::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeOID(m_TDomain,true);
data.append(db);
length = db.length();
return length;
}
void TDomain::getParams(NamedList* params)
{}
void TDomain::setParams(NamedList* params)
{}
/**
* TAddress
*/
TAddress::TAddress()
{
}
TAddress::TAddress(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
TAddress::~TAddress()
{
}
int TAddress::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeOctetString(data,&m_TAddress,true);
if (length < s_TAddressSizeMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_TAddressSizeMaxSize < length)
DDebug(DebugAll,"Constraint break error");
return length;
}
int TAddress::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeOctetString(m_TAddress,true);
data.append(db);
length = db.length();
return length;
}
void TAddress::getParams(NamedList* params)
{}
void TAddress::setParams(NamedList* params)
{}
/**
* SNMPv3Message
*/
SNMPv3Message::SNMPv3Message()
{
m_msgGlobalData = new HeaderData();
m_msgData = new ScopedPduData();
}
SNMPv3Message::SNMPv3Message(void* data, int len)
{
m_msgGlobalData = new HeaderData();
m_msgData = new ScopedPduData();
DataBlock db(data,len);
decode(db);
}
SNMPv3Message::~SNMPv3Message()
{
TelEngine::destruct(m_msgGlobalData);
TelEngine::destruct(m_msgData);
}
int SNMPv3Message::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeSequence(data,true);
if (length < 0)
return length;
length = ASNLib::decodeUINT32(data,&m_msgVersion,true);
if (m_msgVersion < s_msgVersionMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_msgVersionMaxSize < m_msgVersion)
DDebug(DebugAll,"Constraint break error");
length = m_msgGlobalData->decode(data);
length = ASNLib::decodeOctetString(data,&m_msgSecurityParameters,true);
length = m_msgData->decode(data);
return length;
}
int SNMPv3Message::encode(DataBlock& data)
{
int length = -1;
DataBlock seqDb;
DataBlock db;
length = 0;
db = ASNLib::encodeInteger(m_msgVersion,true);
seqDb.append(db);
m_msgGlobalData->encode(seqDb);
db = ASNLib::encodeOctetString(m_msgSecurityParameters,true);
seqDb.append(db);
m_msgData->encode(seqDb);
length = ASNLib::encodeSequence(seqDb,true);
data.append(seqDb);
return length;
}
void SNMPv3Message::getParams(NamedList* params)
{}
void SNMPv3Message::setParams(NamedList* params)
{}
/**
* HeaderData
*/
HeaderData::HeaderData()
{
}
HeaderData::HeaderData(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
HeaderData::~HeaderData()
{
}
int HeaderData::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeSequence(data,true);
if (length < 0)
return length;
length = ASNLib::decodeUINT32(data,&m_msgID,true);
if (m_msgID < s_msgIDMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_msgIDMaxSize < m_msgID)
DDebug(DebugAll,"Constraint break error");
length = ASNLib::decodeUINT32(data,&m_msgMaxSize,true);
if (m_msgMaxSize < s_msgMaxSizeMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_msgMaxSizeMaxSize < m_msgMaxSize)
DDebug(DebugAll,"Constraint break error");
length = ASNLib::decodeOctetString(data,&m_msgFlags,true);
if (length != s_msgFlagsSize)
DDebug(DebugAll,"Constraint break error");
length = ASNLib::decodeUINT32(data,&m_msgSecurityModel,true);
if (m_msgSecurityModel < s_msgSecurityModelMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_msgSecurityModelMaxSize < m_msgSecurityModel)
DDebug(DebugAll,"Constraint break error");
return length;
}
int HeaderData::encode(DataBlock& data)
{
int length = -1;
DataBlock seqDb;
DataBlock db;
length = 0;
db = ASNLib::encodeInteger(m_msgID,true);
seqDb.append(db);
db = ASNLib::encodeInteger(m_msgMaxSize,true);
seqDb.append(db);
db = ASNLib::encodeOctetString(m_msgFlags,true);
seqDb.append(db);
db = ASNLib::encodeInteger(m_msgSecurityModel,true);
seqDb.append(db);
length = ASNLib::encodeSequence(seqDb,true);
data.append(seqDb);
return length;
}
void HeaderData::getParams(NamedList* params)
{}
void HeaderData::setParams(NamedList* params)
{}
/**
* ScopedPduData
*/
ScopedPduData::ScopedPduData()
{
m_plaintext = new ScopedPDU();
}
ScopedPduData::ScopedPduData(void* data, int len)
{
m_plaintext = new ScopedPDU();
DataBlock db(data,len);
decode(db);
}
ScopedPduData::~ScopedPduData()
{
TelEngine::destruct(m_plaintext);
}
int ScopedPduData::decode(DataBlock& data)
{
int length = 0;
length = m_plaintext->decode(data);
if (length >= 0) {
m_choiceType = PLAINTEXT;
return length;
}
length = ASNLib::decodeOctetString(data,&m_encryptedPDU,true);
if (length >= 0) {
m_choiceType = ENCRYPTEDPDU;
return length;
}
return length;
}
int ScopedPduData::encode(DataBlock& data)
{
int length = -1;
if (m_choiceType == PLAINTEXT) {
length = m_plaintext->encode(data);
}
if (m_choiceType == ENCRYPTEDPDU) {
const DataBlock db = ASNLib::encodeOctetString(m_encryptedPDU,true);
data.append(db);
length = db.length();
}
return length;
}
void ScopedPduData::getParams(NamedList* params)
{}
void ScopedPduData::setParams(NamedList* params)
{}
/**
* ScopedPDU
*/
ScopedPDU::ScopedPDU()
{
}
ScopedPDU::ScopedPDU(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
ScopedPDU::~ScopedPDU()
{
}
int ScopedPDU::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeSequence(data,true);
if (length < 0)
return length;
length = ASNLib::decodeOctetString(data,&m_contextEngineID,true);
length = ASNLib::decodeOctetString(data,&m_contextName,true);
length = ASNLib::decodeAny(data,&m_data,true);
if (length < 0)
return length;
return length;
}
int ScopedPDU::encode(DataBlock& data)
{
int length = -1;
DataBlock seqDb;
DataBlock db;
length = 0;
db = ASNLib::encodeOctetString(m_contextEngineID,true);
seqDb.append(db);
db = ASNLib::encodeOctetString(m_contextName,true);
seqDb.append(db);
db = ASNLib::encodeAny(m_data,true);
seqDb.append(db);
length = ASNLib::encodeSequence(seqDb,true);
data.append(seqDb);
return length;
}
void ScopedPDU::getParams(NamedList* params)
{}
void ScopedPDU::setParams(NamedList* params)
{}
/**
* Message
*/
Message::Message()
{
}
Message::Message(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
Message::~Message()
{
}
int Message::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeSequence(data,true);
if (length < 0)
return length;
length = ASNLib::decodeINT32(data,&m_version,true);
if ( m_version < s_version_1_version || m_version > s_version_2_version)
return ASNLib::InvalidContentsError;
length = ASNLib::decodeOctetString(data,&m_community,true);
length = ASNLib::decodeAny(data,&m_data,true);
if (length < 0)
return length;
return length;
}
int Message::encode(DataBlock& data)
{
int length = -1;
DataBlock seqDb;
DataBlock db;
length = 0;
db = ASNLib::encodeInteger(m_version,true);
seqDb.append(db);
db = ASNLib::encodeOctetString(m_community,true);
seqDb.append(db);
db = ASNLib::encodeAny(m_data,true);
seqDb.append(db);
length = ASNLib::encodeSequence(seqDb,true);
data.append(seqDb);
return length;
}
void Message::getParams(NamedList* params)
{}
void Message::setParams(NamedList* params)
{}
/**
* KeyChange
*/
KeyChange::KeyChange()
{
}
KeyChange::KeyChange(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
KeyChange::~KeyChange()
{
}
int KeyChange::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeOctetString(data,&m_KeyChange,true);
return length;
}
int KeyChange::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeOctetString(m_KeyChange,true);
data.append(db);
length = db.length();
return length;
}
void KeyChange::getParams(NamedList* params)
{}
void KeyChange::setParams(NamedList* params)
{}
/**
* UsmUserEntry
*/
UsmUserEntry::UsmUserEntry()
{
m_usmUserEngineID = new SnmpEngineID();
m_usmUserName = new SnmpAdminString();
m_usmUserSecurityName = new SnmpAdminString();
m_usmUserCloneFrom = new RowPointer();
m_usmUserAuthProtocol = new AutonomousType();
m_usmUserAuthKeyChange = new KeyChange();
m_usmUserOwnAuthKeyChange = new KeyChange();
m_usmUserPrivProtocol = new AutonomousType();
m_usmUserPrivKeyChange = new KeyChange();
m_usmUserOwnPrivKeyChange = new KeyChange();
m_usmUserStorageType = new StorageType();
m_usmUserStatus = new RowStatus();
}
UsmUserEntry::UsmUserEntry(void* data, int len)
{
m_usmUserEngineID = new SnmpEngineID();
m_usmUserName = new SnmpAdminString();
m_usmUserSecurityName = new SnmpAdminString();
m_usmUserCloneFrom = new RowPointer();
m_usmUserAuthProtocol = new AutonomousType();
m_usmUserAuthKeyChange = new KeyChange();
m_usmUserOwnAuthKeyChange = new KeyChange();
m_usmUserPrivProtocol = new AutonomousType();
m_usmUserPrivKeyChange = new KeyChange();
m_usmUserOwnPrivKeyChange = new KeyChange();
m_usmUserStorageType = new StorageType();
m_usmUserStatus = new RowStatus();
DataBlock db(data,len);
decode(db);
}
UsmUserEntry::~UsmUserEntry()
{
TelEngine::destruct(m_usmUserEngineID);
TelEngine::destruct(m_usmUserName);
TelEngine::destruct(m_usmUserSecurityName);
TelEngine::destruct(m_usmUserCloneFrom);
TelEngine::destruct(m_usmUserAuthProtocol);
TelEngine::destruct(m_usmUserAuthKeyChange);
TelEngine::destruct(m_usmUserOwnAuthKeyChange);
TelEngine::destruct(m_usmUserPrivProtocol);
TelEngine::destruct(m_usmUserPrivKeyChange);
TelEngine::destruct(m_usmUserOwnPrivKeyChange);
TelEngine::destruct(m_usmUserStorageType);
TelEngine::destruct(m_usmUserStatus);
}
int UsmUserEntry::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeSequence(data,true);
if (length < 0)
return length;
length = m_usmUserEngineID->decode(data);
length = m_usmUserName->decode(data);
length = m_usmUserSecurityName->decode(data);
length = m_usmUserCloneFrom->decode(data);
length = m_usmUserAuthProtocol->decode(data);
length = m_usmUserAuthKeyChange->decode(data);
length = m_usmUserOwnAuthKeyChange->decode(data);
length = m_usmUserPrivProtocol->decode(data);
length = m_usmUserPrivKeyChange->decode(data);
length = m_usmUserOwnPrivKeyChange->decode(data);
length = ASNLib::decodeOctetString(data,&m_usmUserPublic,true);
length = m_usmUserStorageType->decode(data);
length = m_usmUserStatus->decode(data);
return length;
}
int UsmUserEntry::encode(DataBlock& data)
{
int length = -1;
DataBlock seqDb;
DataBlock db;
length = 0;
m_usmUserEngineID->encode(seqDb);
m_usmUserName->encode(seqDb);
m_usmUserSecurityName->encode(seqDb);
m_usmUserCloneFrom->encode(seqDb);
m_usmUserAuthProtocol->encode(seqDb);
m_usmUserAuthKeyChange->encode(seqDb);
m_usmUserOwnAuthKeyChange->encode(seqDb);
m_usmUserPrivProtocol->encode(seqDb);
m_usmUserPrivKeyChange->encode(seqDb);
m_usmUserOwnPrivKeyChange->encode(seqDb);
db = ASNLib::encodeOctetString(m_usmUserPublic,true);
seqDb.append(db);
m_usmUserStorageType->encode(seqDb);
m_usmUserStatus->encode(seqDb);
length = ASNLib::encodeSequence(seqDb,true);
data.append(seqDb);
return length;
}
void UsmUserEntry::getParams(NamedList* params)
{}
void UsmUserEntry::setParams(NamedList* params)
{}
/**
* SnmpEngineID
*/
SnmpEngineID::SnmpEngineID()
{
}
SnmpEngineID::SnmpEngineID(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
SnmpEngineID::~SnmpEngineID()
{
}
int SnmpEngineID::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeOctetString(data,&m_SnmpEngineID,true);
if (length < s_SnmpEngineIDSizeMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_SnmpEngineIDSizeMaxSize < length)
DDebug(DebugAll,"Constraint break error");
return length;
}
int SnmpEngineID::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeOctetString(m_SnmpEngineID,true);
data.append(db);
length = db.length();
return length;
}
void SnmpEngineID::getParams(NamedList* params)
{}
void SnmpEngineID::setParams(NamedList* params)
{}
/**
* SnmpSecurityModel
*/
SnmpSecurityModel::SnmpSecurityModel()
{
}
SnmpSecurityModel::SnmpSecurityModel(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
SnmpSecurityModel::~SnmpSecurityModel()
{
}
int SnmpSecurityModel::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeUINT32(data,&m_SnmpSecurityModel,true);
if (m_SnmpSecurityModel < s_SnmpSecurityModelMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_SnmpSecurityModelMaxSize < m_SnmpSecurityModel)
DDebug(DebugAll,"Constraint break error");
return length;
}
int SnmpSecurityModel::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeInteger(m_SnmpSecurityModel,true);
data.append(db);
length = db.length();
return length;
}
void SnmpSecurityModel::getParams(NamedList* params)
{}
void SnmpSecurityModel::setParams(NamedList* params)
{}
/**
* SnmpMessageProcessingModel
*/
SnmpMessageProcessingModel::SnmpMessageProcessingModel()
{
}
SnmpMessageProcessingModel::SnmpMessageProcessingModel(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
SnmpMessageProcessingModel::~SnmpMessageProcessingModel()
{
}
int SnmpMessageProcessingModel::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeUINT32(data,&m_SnmpMessageProcessingModel,true);
if (m_SnmpMessageProcessingModel < s_SnmpMessageProcessingModelMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_SnmpMessageProcessingModelMaxSize < m_SnmpMessageProcessingModel)
DDebug(DebugAll,"Constraint break error");
return length;
}
int SnmpMessageProcessingModel::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeInteger(m_SnmpMessageProcessingModel,true);
data.append(db);
length = db.length();
return length;
}
void SnmpMessageProcessingModel::getParams(NamedList* params)
{}
void SnmpMessageProcessingModel::setParams(NamedList* params)
{}
/**
* SnmpSecurityLevel
*/
SnmpSecurityLevel::SnmpSecurityLevel()
{
}
SnmpSecurityLevel::SnmpSecurityLevel(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
SnmpSecurityLevel::~SnmpSecurityLevel()
{
}
int SnmpSecurityLevel::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeINT32(data,&m_SnmpSecurityLevel,true);
if ( m_SnmpSecurityLevel < s_noAuthNoPriv_SnmpSecurityLevel || m_SnmpSecurityLevel > s_authPriv_SnmpSecurityLevel)
return ASNLib::InvalidContentsError;
return length;
}
int SnmpSecurityLevel::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeInteger(m_SnmpSecurityLevel,true);
data.append(db);
length = db.length();
return length;
}
void SnmpSecurityLevel::getParams(NamedList* params)
{}
void SnmpSecurityLevel::setParams(NamedList* params)
{}
/**
* SnmpAdminString
*/
SnmpAdminString::SnmpAdminString()
{
}
SnmpAdminString::SnmpAdminString(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
SnmpAdminString::~SnmpAdminString()
{
}
int SnmpAdminString::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeOctetString(data,&m_SnmpAdminString,true);
if (length < s_SnmpAdminStringSizeMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_SnmpAdminStringSizeMaxSize < length)
DDebug(DebugAll,"Constraint break error");
return length;
}
int SnmpAdminString::encode(DataBlock& data)
{
int length = -1;
const DataBlock db = ASNLib::encodeOctetString(m_SnmpAdminString,true);
data.append(db);
length = db.length();
return length;
}
void SnmpAdminString::getParams(NamedList* params)
{}
void SnmpAdminString::setParams(NamedList* params)
{}
/**
* UsmSecurityParameters
*/
UsmSecurityParameters::UsmSecurityParameters()
{
}
UsmSecurityParameters::UsmSecurityParameters(void* data, int len)
{
DataBlock db(data,len);
decode(db);
}
UsmSecurityParameters::~UsmSecurityParameters()
{
}
int UsmSecurityParameters::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeSequence(data,true);
if (length < 0)
return length;
length = ASNLib::decodeOctetString(data,&m_msgAuthoritativeEngineID,true);
length = ASNLib::decodeUINT32(data,&m_msgAuthoritativeEngineBoots,true);
if (m_msgAuthoritativeEngineBoots < s_msgAuthoritativeEngineBootsMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_msgAuthoritativeEngineBootsMaxSize < m_msgAuthoritativeEngineBoots)
DDebug(DebugAll,"Constraint break error");
length = ASNLib::decodeUINT32(data,&m_msgAuthoritativeEngineTime,true);
if (m_msgAuthoritativeEngineTime < s_msgAuthoritativeEngineTimeMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_msgAuthoritativeEngineTimeMaxSize < m_msgAuthoritativeEngineTime)
DDebug(DebugAll,"Constraint break error");
length = ASNLib::decodeOctetString(data,&m_msgUserName,true);
if (length < s_msgUserNameSizeMinSize)
DDebug(DebugAll,"Constraint break error");
if (s_msgUserNameSizeMaxSize < length)
DDebug(DebugAll,"Constraint break error");
length = ASNLib::decodeOctetString(data,&m_msgAuthenticationParameters,true);
length = ASNLib::decodeOctetString(data,&m_msgPrivacyParameters,true);
return length;
}
int UsmSecurityParameters::encode(DataBlock& data)
{
int length = -1;
DataBlock seqDb;
DataBlock db;
length = 0;
db = ASNLib::encodeOctetString(m_msgAuthoritativeEngineID,true);
seqDb.append(db);
db = ASNLib::encodeInteger(m_msgAuthoritativeEngineBoots,true);
seqDb.append(db);
db = ASNLib::encodeInteger(m_msgAuthoritativeEngineTime,true);
seqDb.append(db);
db = ASNLib::encodeOctetString(m_msgUserName,true);
seqDb.append(db);
db = ASNLib::encodeOctetString(m_msgAuthenticationParameters,true);
seqDb.append(db);
db = ASNLib::encodeOctetString(m_msgPrivacyParameters,true);
seqDb.append(db);
length = ASNLib::encodeSequence(seqDb,true);
data.append(seqDb);
return length;
}
void UsmSecurityParameters::getParams(NamedList* params)
{}
void UsmSecurityParameters::setParams(NamedList* params)
{}
/**
* SysOREntry
*/
SysOREntry::SysOREntry()
{
m_sysORDescr = new DisplayString();
m_sysORUpTime = new TimeStamp();
}
SysOREntry::SysOREntry(void* data, int len)
{
m_sysORDescr = new DisplayString();
m_sysORUpTime = new TimeStamp();
DataBlock db(data,len);
decode(db);
}
SysOREntry::~SysOREntry()
{
TelEngine::destruct(m_sysORDescr);
TelEngine::destruct(m_sysORUpTime);
}
int SysOREntry::decode(DataBlock& data)
{
int length = 0;
length = ASNLib::decodeSequence(data,true);
if (length < 0)
return length;
length = ASNLib::decodeINT32(data,&m_sysORIndex,true);
length = ASNLib::decodeOID(data,&m_sysORID,true);
length = m_sysORDescr->decode(data);
length = m_sysORUpTime->decode(data);
return length;
}
int SysOREntry::encode(DataBlock& data)
{
int length = -1;
DataBlock seqDb;
DataBlock db;
length = 0;
db = ASNLib::encodeInteger(m_sysORIndex,true);
seqDb.append(db);
db = ASNLib::encodeOID(m_sysORID,true);
seqDb.append(db);
m_sysORDescr->encode(seqDb);
m_sysORUpTime->encode(seqDb);
length = ASNLib::encodeSequence(seqDb,true);
data.append(seqDb);
return length;
}
void SysOREntry::getParams(NamedList* params)
{}
void SysOREntry::setParams(NamedList* params)
{}
}