[AGENT++] segmentation fault when using snmptable and "Wrong Type" when using snmpwalk

Marc Van Daele marc.van.daele at zappware.com
Sat Jun 18 14:49:38 CEST 2011


Hello Frank,
 
Thanks for your response.
Can you give me a pointer (example, api, ...) as to how I should create indices manually?
 
Thanks in advance,
 
Marc
> -----Origineel Bericht----- 
> Van: "Frank Fock" <fock at agentpp.com> 
> Aan: agentpp at agentpp.org 
> Datum: 17/06/2011 23:22 
> Onderwerp: Re: [AGENT++] segmentation fault when using snmptable and "Wrong Type" when using snmpwalk 
> 
> Hi,
> 
> get_next_avail_index seems not to work for your example.
> Please try to create the indexes manually first.
> 
> Best regards,
> Frank
> 
> On 17.06.2011 11:19, Marc Van Daele wrote:
> > 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 }
> >
> >
> >
> >
> > _______________________________________________
> > AGENTPP mailing list
> > AGENTPP at agentpp.org
> > http://lists.agentpp.org/mailman/listinfo/agentpp
> 
> -- 
> AGENT++
> http://www.agentpp.com
> http://www.snmp4j.com
> http://www.mibexplorer.com
> http://www.mibdesigner.com
> 
> _______________________________________________
> AGENTPP mailing list
> AGENTPP at agentpp.org
> http://lists.agentpp.org/mailman/listinfo/agentpp





More information about the AGENTPP mailing list