table dataset iteration not working
"Watsh Rajneesh" <[email protected]>
| Newsgroups | gmane.network.net-snmp.user |
|---|---|
| Message-ID | <9BC384FCC8432F43A02C252EA3C290C104501A01@HQ-EXCH-5.corp.brocade.com> |
Hi All,
I generated my table code using the mib2c.create_dataset.conf
configuration. The get on a column works but the get-next/snmpwalk does
not work. I compared my code with the agent/mibgroup/data_set.c source
and it seems to be no different. Can someone please shed some light on
what's missing in my code below for the table iteration to work?
void
initialize_table_dot3StatsTable(void)
{
static oid dot3StatsTable_oid[] = {1,3,6,1,2,1,10,7,2};
size_t dot3StatsTable_oid_len = OID_LENGTH(dot3StatsTable_oid);
netsnmp_table_data_set *table_set;
netsnmp_table_row *row;
// variables declared - wrajnees
static int _max_cols = 21; // there are 18 columns in this table.
int column = 0;
int index = 1;
int val = 20;
static oid objid_etherchipset[] = { 0 }; /* snmpTrapIOD.0
*/
// end variables declared.
/* create the table structure itself */
table_set = netsnmp_create_table_data_set("dot3StatsTable");
/* comment this out or delete if you don't support creation of new
rows */
table_set->allow_creation = 1;
/***************************************************
* Adding indexes
*/
DEBUGMSGTL(("initialize_table_dot3StatsTable",
"adding indexes to table dot3StatsTable\n"));
netsnmp_table_set_add_indexes(table_set,
ASN_INTEGER, /* index: dot3StatsIndex */
0);
DEBUGMSGTL(("initialize_table_dot3StatsTable",
"adding column types to table dot3StatsTable\n"));
netsnmp_table_set_multi_add_default_row(table_set,
COLUMN_DOT3STATSINDEX,
ASN_INTEGER, 0,
NULL, 0,
COLUMN_DOT3STATSALIGNMENTERRORS, ASN_COUNTER, 0,
NULL, 0,
COLUMN_DOT3STATSFCSERRORS,
ASN_COUNTER, 0,
NULL, 0,
COLUMN_DOT3STATSSINGLECOLLISIONFRAMES, ASN_COUNTER, 0,
NULL, 0,
COLUMN_DOT3STATSMULTIPLECOLLISIONFRAMES, ASN_COUNTER, 0,
NULL, 0,
COLUMN_DOT3STATSSQETESTERRORS, ASN_COUNTER, 0,
NULL, 0,
COLUMN_DOT3STATSDEFERREDTRANSMISSIONS, ASN_COUNTER, 0,
NULL, 0,
COLUMN_DOT3STATSLATECOLLISIONS, ASN_COUNTER, 0,
NULL, 0,
COLUMN_DOT3STATSEXCESSIVECOLLISIONS, ASN_COUNTER, 0,
NULL, 0,
COLUMN_DOT3STATSINTERNALMACTRANSMITERRORS, ASN_COUNTER, 0,
NULL, 0,
COLUMN_DOT3STATSCARRIERSENSEERRORS, ASN_COUNTER, 0,
NULL, 0,
COLUMN_DOT3STATSFRAMETOOLONGS, ASN_COUNTER, 0,
NULL, 0,
COLUMN_DOT3STATSINTERNALMACRECEIVEERRORS, ASN_COUNTER, 0,
NULL, 0,
COLUMN_DOT3STATSETHERCHIPSET, ASN_OBJECT_ID, 0,
NULL, 0,
COLUMN_DOT3STATSSYMBOLERRORS, ASN_COUNTER, 0,
NULL, 0,
COLUMN_DOT3STATSDUPLEXSTATUS, ASN_INTEGER, 0,
NULL, 0,
COLUMN_DOT3STATSRATECONTROLABILITY, ASN_INTEGER, 0,
NULL, 0,
COLUMN_DOT3STATSRATECONTROLSTATUS, ASN_INTEGER, 0,
NULL, 0,
0);
/* registering the table with the master agent */
/* note: if you don't need a subhandler to deal with any aspects
of the request, change dot3StatsTable_handler to "NULL" */
netsnmp_register_table_data_set(netsnmp_create_handler_registration("dot
3StatsTable", NULL,
dot3StatsTable_oid,
dot3StatsTable_oid_len,
HANDLER_CAN_RONLY),
table_set, NULL);
// Add code - wrajnees
/*
* create the a row for the table, and add the data
*/
row = netsnmp_create_table_data_row();
/*
* set the index to the IETF WG name "snmpv3"
*/
netsnmp_table_row_add_index(row, ASN_INTEGER, (u_char*)&index,
sizeof(index));
/*
* set the column 2 and above
*/
for (column = 2; column <= _max_cols; column++) {
// Following columns are not valid.
switch(column) {
case 12: // INVALIDs
case 14:
case 15:
break;
case 17: // OID
netsnmp_set_row_column(row, column,
ASN_OBJECT_ID,
(u_char*)objid_etherchipset, 1*sizeof(oid));
break;
case 19: // INTEGER
case 21:
netsnmp_set_row_column(row, column, ASN_INTEGER,
(u_char*)&val,
sizeof(val));
break;
case 20: // TRUTH_VALUE
netsnmp_set_row_column(row, column, ASN_INTEGER,
(u_char*)&val,
sizeof(val));
break;
default: // COUNTER
netsnmp_set_row_column(row, column, ASN_COUNTER,
(u_char*)&val,
sizeof(val));
break;
}
}
/*
* add the row to the table
*/
netsnmp_table_dataset_add_row(table_set, row);
/*
* Finally, this actually allows the "add_row" token it the
* * snmpd.conf file to add rows to this table.
* * Example snmpd.conf line:
* * add_row netSnmpIETFWGTable eos "Glenn Waters" "Dale
Francisco"
*/
netsnmp_register_auto_data_table(table_set, NULL);
// End add code - wrajnees
}
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Net-snmp-users mailing list
[email protected]
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users