| ## -*- c -*- |
| ###################################################################### |
| ## Do the .h file |
| ###################################################################### |
| @open ${name}.h@ |
| /* |
| * Note: this file originally auto-generated by mib2c using |
| * $Id$ |
| */ |
| #ifndef $name.uc_H |
| #define $name.uc_H |
| |
| /* function declarations */ |
| void init_$name(void); |
| @foreach $i table@ |
| void initialize_table_$i(void); |
| Netsnmp_Node_Handler ${i}_handler; |
| @end@ |
| @foreach $i table@ |
| |
| /* column number definitions for table $i */ |
| @foreach $c column@ |
| #define COLUMN_$c.uc $c.subid |
| @end@ |
| @end@ |
| #endif /* $name.uc_H */ |
| ###################################################################### |
| ## Do the .c file |
| ###################################################################### |
| @open ${name}.c@ |
| /* |
| * Note: this file originally auto-generated by mib2c using |
| * $Id$ |
| */ |
| |
| #include <net-snmp/net-snmp-config.h> |
| #include <net-snmp/net-snmp-includes.h> |
| #include <net-snmp/agent/net-snmp-agent-includes.h> |
| #include "${name}.h" |
| |
| @foreach $i table@ |
| /** Initialize the $i table by defining its contents and how it's structured */ |
| void |
| initialize_table_$i(void) |
| { |
| const oid ${i}_oid[] = {$i.commaoid}; |
| netsnmp_table_data_set *table_set; |
| |
| /* create the table structure itself */ |
| table_set = netsnmp_create_table_data_set("$i"); |
| |
| /* comment this out or delete if you don't support creation of new rows */ |
| table_set->allow_creation = 1; |
| |
| /*************************************************** |
| * Adding indexes |
| */ |
| DEBUGMSGTL(("initialize_table_$i", |
| "adding indexes to table $i\n")); |
| netsnmp_table_set_add_indexes(table_set, |
| @foreach $idx index@ |
| $idx.type, /* index: $idx */ |
| @end@ |
| 0); |
| |
| DEBUGMSGTL(("initialize_table_$i", |
| "adding column types to table $i\n")); |
| netsnmp_table_set_multi_add_default_row(table_set, |
| @foreach $c column@ |
| COLUMN_$c.uc, $c.type, $c.settable, |
| NULL, 0, |
| @end@ |
| 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 ${i}_handler to "NULL" */ |
| netsnmp_register_table_data_set(netsnmp_create_handler_registration("$i", ${i}_handler, |
| ${i}_oid, |
| OID_LENGTH(${i}_oid), |
| HANDLER_CAN_RWRITE), |
| table_set, NULL); |
| } |
| @end@ |
| |
| /** Initializes the $name module */ |
| void |
| init_$name(void) |
| { |
| |
| /* here we initialize all the tables we're planning on supporting */ |
| @foreach $i table@ |
| initialize_table_$i(); |
| @end@ |
| } |
| @foreach $i table@ |
| |
| /** handles requests for the $i table, if anything else needs to be done */ |
| int |
| ${i}_handler( |
| netsnmp_mib_handler *handler, |
| netsnmp_handler_registration *reginfo, |
| netsnmp_agent_request_info *reqinfo, |
| netsnmp_request_info *requests) { |
| /* perform anything here that you need to do. The requests have |
| already been processed by the master table_dataset handler, but |
| this gives you chance to act on the request in some other way |
| if need be. */ |
| return SNMP_ERR_NOERROR; |
| } |
| @end@ |