[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