[AGENT++] segmentation fault when using snmptable and "Wrong Type" when using snmpwalk
Marc Van Daele
marc.van.daele at zappware.com
Fri Jun 17 11:19:20 CEST 2011
Hello,
I'm trying to convert my code from net-snmp to agentpp.
I try to create a simple table wherein every row consists of an index, a
string and a RowStatus.
I want to create the following table
1 "aaa" active
2 "bbb" active
3 "ccc" active
and I would like to use snmptable on this table.
However, when I run snmpwalk, I get
[Marc at zapptop035 ~]$ snmpwalk -v2c -c public 127.0.0.1
FLUX-MIB::recordingsTable
FLUX-MIB::recordingIdx = INTEGER: 1
FLUX-MIB::recording = Wrong Type (should be OCTET STRING): INTEGER: 2
FLUX-MIB::recordingRowStatus = INTEGER: notReady(3)
FLUX-MIB::recordingsTable.2.1 = STRING: "aaa"
FLUX-MIB::recordingsTable.2.2 = STRING: "bbb"
FLUX-MIB::recordingsTable.2.3 = STRING: "ccc"
FLUX-MIB::recordingsTable.3.1 = INTEGER: 1
FLUX-MIB::recordingsTable.3.2 = INTEGER: 1
FLUX-MIB::recordingsTable.3.3 = INTEGER: 1
and when I run snmptable, I get
[Marc at zapptop035 ~]$ snmptable -v2c -c public 127.0.0.1
FLUX-MIB::recordingsTable
Segmentation fault (core dumped)
so I guess I made a stupid error somewhere but I fail to locate it.
Could someone have a look at the code fragment and MIB below?
Thanks in advance,
Marc
My code is
const index_info indDynamicTable[] = {
{ sNMP_SYNTAX_INT, FALSE, 1, 1 }
};
ExampleTable::ExampleTable(): MibTable(
//"1.3.6.1.4.1.4976.6.2.1",
"1.3.6.1.4.1.36064.1.1.1.1",
indDynamicTable, 1)
{
currentRequest = 0;
add_listener(this);
add_col(new MibLeaf("1", READCREATE, new SnmpInt32(0),
VMODE_NONE));
add_col(new MibLeaf("2", READCREATE, new OctetStr(""),
VMODE_NONE));
add_col(new snmpRowStatus("3"));
Oidx oid = get_next_avail_index();
MibTableRow* row = add_row(oid);
row->get_nth(0)->replace_value(new SnmpInt32(1));
row->get_nth(1)->replace_value(new OctetStr("aaa"));
row->get_nth(2)->replace_value(new SnmpInt32(rowActive));
oid = get_next_avail_index();
row = add_row(oid);
row->get_nth(0)->replace_value(new SnmpInt32(2));
row->get_nth(1)->replace_value(new OctetStr("bbb"));
row->get_nth(2)->replace_value(new SnmpInt32(rowActive));
oid = get_next_avail_index();
row = add_row(oid);
row->get_nth(0)->replace_value(new SnmpInt32(3));
row->get_nth(1)->replace_value(new OctetStr("ccc"));
row->get_nth(2)->replace_value(new SnmpInt32(rowActive));
}
and my MIB is (this mib worked with net-snmp so I guess it is correct)
recordingsTable OBJECT-TYPE
SYNTAX SEQUENCE OF RecordingEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "The table with recordings"
::= { rrec 1 }
recordingEntry OBJECT-TYPE
SYNTAX RecordingEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "A single recording row"
INDEX { recordingIdx }
::= { recordingsTable 1 }
RecordingEntry ::= SEQUENCE {
recordingIdx Integer32,
recording OCTET STRING,
recordingRowStatus RowStatus
}
recordingIdx OBJECT-TYPE
SYNTAX Integer32 (0..65000)
MAX-ACCESS read-write
STATUS current
DESCRIPTION "the ID of the recording"
::= { recordingEntry 1 }
recording OBJECT-TYPE
SYNTAX OCTET STRING (SIZE(0..2048))
MAX-ACCESS read-write
STATUS current
DESCRIPTION "the XML fragment describing the recording"
::= { recordingEntry 2 }
recordingRowStatus OBJECT-TYPE
SYNTAX RowStatus
MAX-ACCESS read-write
STATUS current
DESCRIPTION "The status of this recording"
::= { recordingEntry 3 }
More information about the AGENTPP
mailing list