diff options
Diffstat (limited to 'local/mib2c.create-dataset.conf')
-rw-r--r-- | local/mib2c.create-dataset.conf | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/local/mib2c.create-dataset.conf b/local/mib2c.create-dataset.conf new file mode 100644 index 0000000..9cf75fd --- /dev/null +++ b/local/mib2c.create-dataset.conf @@ -0,0 +1,111 @@ +## -*- 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@ |