Registering tables without TabelEntry: Possible?
Dirk Süsserott <[email protected]>
| Newsgroups | gmane.network.net-snmp.user |
|---|---|
| Message-ID | <[email protected]> |
Hi,
I'v a question concerning table registration and their OIDs.
I register a table using the following snippet:
------------------------------------------------------------
reg = netsnmp_create_handler_registration( "my_table",
my_table_handler,
oid_, oidlen_,
HANDLER_CAN_RONLY);
table_info_ = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
table_info_->min_column = 1;
table_info_->max_column = 3;
netsnmp_table_helper_add_indexes( table_info_, ASN_INTEGER, 0 );
netsnmp_register_table(reg, table_info_);
------------------------------------------------------------
The root OID is "1.3.6.1.3.79.5", my table has 3 columns and uses an
integer as index.
The correct OIDs thus would be (x being the index):
1.3.6.1.3.79.5 Table
1.3.6.1.3.79.5.1 TableEntry
1.3.6.1.3.79.5.1.1.x Column 1, Row x
1.3.6.1.3.79.5.1.2.x Column 2, Row x
1.3.6.1.3.79.5.1.3.x Column 3, Row x
This works fine for me; when my_table_handler gets called, I fetch row
"x" from an STL map and then fetch the "request_info->colnum"'th column
from my row. Finally I call snmp_set_var_objid() and
snmp_set_var_typed_value() to set the value and the next OID.
Now my question: Is it possible to register a table *without* the table
entry? I.e.:
1.3.6.1.3.79.5 Table
1.3.6.1.3.79.5.1.x Column 1, Row x
1.3.6.1.3.79.5.2.x Column 2, Row x
1.3.6.1.3.79.5.3.x Column 3, Row x
When I try, the first column gets displayed correctly when asking with
snmpwalk. In the answer I set snmp_set_var_objid("1.3.6.1.3.79.5.2.x").
I would expect that my_table_handler then gets called with that OID and
I can answer with 1.3.6.1.3.79.5.3.x and so on.
But actually it never gets called again. Obviuosly netsnmp "thinks" my
table has finished. If I register a second table with OID
1.3.6.1.3.79.6, then the handler for that table gets called.
My guess is: When I call snmp_set_var_objid("1.3.6.1.3.79.5.2.x"), then
netsnmp somehow knows that this cannot be any longer in the ...79.5
table because ...79.5 tables have their first "real" counter at OID
...79.5.1.x (according to the RFCs). As a result, my_table_handler gets
called for the next table, which is ...79.6. Is that true?
The background for my question is: For some reason someone in our
project has defined a table without that TableEntry. He thought that
wouldn't be neccessary as it carries no real information. And now I'm
stuck with implementing that. As I tried, debugged and read, I finnaly
came to the conclusion that it's not possible. Am I right?
-- Dirk
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
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