[AGENT++] Unable to set snmpTargetAddress MIB value
Salman Qamar
salman at glimmerglass.com
Fri Jul 25 23:27:23 CEST 2008
I am getting "Inconsistent Value" error whenever I attempt to set the
snmpTargetAddrTAddress to UDP address value like "192.168.1.16/162"
after setting snmpTargetAddrTDomain to "1.3.6.1.6.1.1".
The following code, in agentpp implementation for
agent++/src/snmp_target_mib.cpp, suggests however that whenever the
domain OID length = 7 then state = 1 and the value length must be = 6 or
its an inconsistent-value.
Is this corrent? Please reply with example what value to use for setting
TAddress MIB object.
Thanks
int snmpTargetAddrTAddress::prepare_set_request(Request* req, int& ind)
{
Vbx domain(my_row->get_nth(0)->get_value());
for (int i=0; i<req->subrequests(); i++) {
if ((i != ind) &&
(req->get_oid(i) == my_row->get_nth(0)->get_oid()))
{
domain = req->get_value(i);
break;
}
}
unsigned long state = 0;
Vbx vb(req->get_value(ind));
OctetStr val;
if (vb.get_value(val) != SNMP_CLASS_SUCCESS)
return SNMP_ERROR_WRONG_TYPE;
int length = val.len();
Oidx o;
if (domain.get_value(o) != SNMP_CLASS_SUCCESS)
return SNMP_ERROR_WRONG_TYPE;
if ((o.len()!=7) && (o.len()!=9)) return
SNMP_ERROR_INCONSIST_VAL;
if (o.len() == 7)
state = o[6];
else
state = o[8]+100;
LOG_BEGIN(DEBUG_LOG | 3);
LOG("snmpTargetAddrTAddress: checking address (len)(type)");
LOG(length);
LOG(state);
LOG_END;
switch (state) {
case 1: // UDP Address
case 101:
if (length == 6) return SNMP_ERROR_SUCCESS;
break;
case 102:
if (length == 18) return SNMP_ERROR_SUCCESS;
break;
case 105:
if (length == 6) return SNMP_ERROR_SUCCESS;
break;
case 2:
case 3: // OSI Address
if ((length == 1) || ((length >= 4) && (length <= 85)))
return SNMP_ERROR_SUCCESS;
break;
case 4:
if ((length >= 3) && (length <= 99))
return SNMP_ERROR_SUCCESS;
break;
case 5:
if (length == 12)
return SNMP_ERROR_SUCCESS;
break;
}
return SNMP_ERROR_INCONSIST_VAL;
}
More information about the AGENTPP
mailing list