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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.