/** Initialize the netSnmpHostsTable table by defining its contents and how it's structured */ void initialize_table_netSnmpHostsTable(void) { static oid netSnmpHostsTable_oid[] = { 1, 3, 6, 1, 4, 1, 8072, 2, 2, 2 }; netsnmp_table_registration_info *table_info; netsnmp_handler_registration *my_handler; netsnmp_iterator_info *iinfo; /** create the table registration information structures */ table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info); iinfo = SNMP_MALLOC_TYPEDEF(netsnmp_iterator_info); /** if your table is read only, it's easiest to change the HANDLER_CAN_RWRITE definition below to HANDLER_CAN_RONLY */ my_handler = netsnmp_create_handler_registration("netSnmpHostsTable", netSnmpHostsTable_handler, netSnmpHostsTable_oid, OID_LENGTH (netSnmpHostsTable_oid), HANDLER_CAN_RWRITE); if (!my_handler || !table_info || !iinfo) { snmp_log(LOG_ERR, "malloc failed in initialize_table_netSnmpHostsTable"); return; /** Serious error. */ } /*************************************************** * Setting up the table's definition */ netsnmp_table_helper_add_indexes(table_info, ASN_OCTET_STR, /** index: netSnmpHostName */ 0); /** Define the minimum and maximum accessible columns. This optimizes retrieval. */ table_info->min_column = 2; table_info->max_column = 5; /** iterator access routines */ iinfo->get_first_data_point = netSnmpHostsTable_get_first_data_point; iinfo->get_next_data_point = netSnmpHostsTable_get_next_data_point; /** you may wish to set these as well */ iinfo->make_data_context = netSnmpHostsTable_context_convert_function; iinfo->free_data_context = netSnmpHostsTable_data_free; iinfo->free_loop_context_at_end = netSnmpHostsTable_loop_free; /** tie the two structures together */ iinfo->table_reginfo = table_info; /*************************************************** * registering the table with the master agent */ DEBUGMSGTL(("initialize_table_netSnmpHostsTable", "Registering table netSnmpHostsTable as a table iterator\n")); netsnmp_register_table_iterator2(my_handler, iinfo); }
/** Initialize the nsTransactionTable table by defining it's contents and how it's structured */ void initialize_table_nsTransactionTable(void) { const oid nsTransactionTable_oid[] = { 1, 3, 6, 1, 4, 1, 8072, 1, 8, 1 }; netsnmp_table_registration_info *table_info; netsnmp_handler_registration *my_handler; netsnmp_iterator_info *iinfo; /* * create the table structure itself */ table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info); iinfo = SNMP_MALLOC_TYPEDEF(netsnmp_iterator_info); /* * if your table is read only, it's easiest to change the * HANDLER_CAN_RWRITE definition below to HANDLER_CAN_RONLY */ my_handler = netsnmp_create_handler_registration( "nsTransactionTable", nsTransactionTable_handler, nsTransactionTable_oid, OID_LENGTH(nsTransactionTable_oid), HANDLER_CAN_RONLY); if (!my_handler || !table_info || !iinfo) { if (my_handler) netsnmp_handler_registration_free(my_handler); SNMP_FREE(table_info); SNMP_FREE(iinfo); return; /* mallocs failed */ } /*************************************************** * Setting up the table's definition */ netsnmp_table_helper_add_index(table_info, ASN_INTEGER); /* index: * * nsTransactionID */ table_info->min_column = 2; table_info->max_column = 2; iinfo->get_first_data_point = nsTransactionTable_get_first_data_point; iinfo->get_next_data_point = nsTransactionTable_get_next_data_point; iinfo->table_reginfo = table_info; /*************************************************** * registering the table with the master agent */ DEBUGMSGTL(("initialize_table_nsTransactionTable", "Registering table nsTransactionTable as a table iterator\n")); netsnmp_register_table_iterator2(my_handler, iinfo); }
/** Initializes the nsVacmAccessTable module */ void init_register_nsVacm_context(const char *context) { /* * Initialize the nsVacmAccessTable table by defining its * contents and how it's structured */ const oid nsVacmAccessTable_oid[] = { 1,3,6,1,4,1,8072,1,9,1 }; netsnmp_handler_registration *reg; netsnmp_iterator_info *iinfo; netsnmp_table_registration_info *table_info; #ifndef NETSNMP_NO_WRITE_SUPPORT reg = netsnmp_create_handler_registration( "nsVacmAccessTable", nsVacmAccessTable_handler, nsVacmAccessTable_oid, OID_LENGTH(nsVacmAccessTable_oid), HANDLER_CAN_RWRITE); #else /* !NETSNMP_NO_WRITE_SUPPORT */ reg = netsnmp_create_handler_registration( "nsVacmAccessTable", nsVacmAccessTable_handler, nsVacmAccessTable_oid, OID_LENGTH(nsVacmAccessTable_oid), HANDLER_CAN_RONLY); #endif /* !NETSNMP_NO_WRITE_SUPPORT */ table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info); netsnmp_table_helper_add_indexes(table_info, ASN_OCTET_STR, /* index: vacmGroupName */ ASN_OCTET_STR, /* index: vacmAccessContextPrefix */ ASN_INTEGER, /* index: vacmAccessSecurityModel */ ASN_INTEGER, /* index: vacmAccessSecurityLevel */ ASN_OCTET_STR, /* index: nsVacmAuthType */ 0); table_info->min_column = COLUMN_NSVACMCONTEXTMATCH; table_info->max_column = COLUMN_NSVACMACCESSSTATUS; iinfo = SNMP_MALLOC_TYPEDEF(netsnmp_iterator_info); iinfo->get_first_data_point = nsVacmAccessTable_get_first_data_point; iinfo->get_next_data_point = nsVacmAccessTable_get_next_data_point; iinfo->table_reginfo = table_info; if ( context && context[0] ) reg->contextName = strdup(context); netsnmp_register_table_iterator2(reg, iinfo); }
void init_nsLogging(void) { netsnmp_table_registration_info *table_info; netsnmp_iterator_info *iinfo; const oid nsLoggingTable_oid[] = { 1, 3, 6, 1, 4, 1, 8072, 1, 7, 2, 1}; /* * Register the table. * We need to define the column structure and indexing.... */ table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info); if (!table_info) { return; } netsnmp_table_helper_add_indexes(table_info, ASN_INTEGER, ASN_PRIV_IMPLIED_OCTET_STR, 0); table_info->min_column = NSLOGGING_TYPE; table_info->max_column = NSLOGGING_STATUS; /* * .... and the iteration information .... */ iinfo = SNMP_MALLOC_TYPEDEF(netsnmp_iterator_info); if (!iinfo) { return; } iinfo->get_first_data_point = get_first_logging_entry; iinfo->get_next_data_point = get_next_logging_entry; iinfo->table_reginfo = table_info; /* * .... and register the table with the agent. */ netsnmp_register_table_iterator2( netsnmp_create_handler_registration( "tzLoggingTable", handle_nsLoggingTable, nsLoggingTable_oid, OID_LENGTH(nsLoggingTable_oid), HANDLER_CAN_RWRITE), iinfo); }
void init_tcpTable(void) { const oid tcpTable_oid[] = { SNMP_OID_MIB2, 6, 13 }; netsnmp_table_registration_info *table_info; netsnmp_iterator_info *iinfo; netsnmp_handler_registration *reginfo; int rc; DEBUGMSGTL(("mibII/tcpTable", "Initialising TCP Table\n")); /* * Create the table data structure, and define the indexing.... */ table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info); if (!table_info) { return; } netsnmp_table_helper_add_indexes(table_info, ASN_IPADDRESS, ASN_INTEGER, ASN_IPADDRESS, ASN_INTEGER, 0); table_info->min_column = TCPCONNSTATE; table_info->max_column = TCPCONNREMOTEPORT; /* * .... and iteration information .... */ iinfo = SNMP_MALLOC_TYPEDEF(netsnmp_iterator_info); if (!iinfo) { return; } iinfo->get_first_data_point = tcpTable_first_entry; iinfo->get_next_data_point = tcpTable_next_entry; iinfo->table_reginfo = table_info; #if defined (WIN32) || defined (cygwin) iinfo->flags |= NETSNMP_ITERATOR_FLAG_SORTED; #endif /* WIN32 || cygwin */ /* * .... and register the table with the agent. */ reginfo = netsnmp_create_handler_registration("tcpTable", tcpTable_handler, tcpTable_oid, OID_LENGTH(tcpTable_oid), HANDLER_CAN_RONLY), rc = netsnmp_register_table_iterator2(reginfo, iinfo); if (rc != SNMPERR_SUCCESS) return; /* * .... with a local cache * (except for Solaris, which uses a different approach) */ netsnmp_inject_handler( reginfo, netsnmp_get_cache_handler(TCP_STATS_CACHE_TIMEOUT, tcpTable_load, tcpTable_free, tcpTable_oid, OID_LENGTH(tcpTable_oid))); }
void init_nsDebug(void) { /* * OIDs for the debugging control scalar objects * * Note that these we're registering the full object rather * than the (sole) valid instance in each case, in order * to handle requests for invalid instances properly. */ const oid nsDebugEnabled_oid[] = { nsConfigDebug, 1}; const oid nsDebugOutputAll_oid[] = { nsConfigDebug, 2}; const oid nsDebugDumpPdu_oid[] = { nsConfigDebug, 3}; /* * ... and for the token table. */ #define DBGTOKEN_PREFIX 2 #define DBGTOKEN_ENABLED 3 #define DBGTOKEN_STATUS 4 const oid nsDebugTokenTable_oid[] = { nsConfigDebug, 4}; netsnmp_table_registration_info *table_info; netsnmp_iterator_info *iinfo; /* * Register the scalar objects... */ DEBUGMSGTL(("nsDebugScalars", "Initializing\n")); netsnmp_register_scalar( netsnmp_create_handler_registration( "nsDebugEnabled", handle_nsDebugEnabled, nsDebugEnabled_oid, OID_LENGTH(nsDebugEnabled_oid), HANDLER_CAN_RWRITE) ); netsnmp_register_scalar( netsnmp_create_handler_registration( "nsDebugOutputAll", handle_nsDebugOutputAll, nsDebugOutputAll_oid, OID_LENGTH(nsDebugOutputAll_oid), HANDLER_CAN_RWRITE) ); netsnmp_register_scalar( netsnmp_create_handler_registration( "nsDebugDumpPdu", handle_nsDebugDumpPdu, nsDebugDumpPdu_oid, OID_LENGTH(nsDebugDumpPdu_oid), HANDLER_CAN_RWRITE) ); /* * ... and the table. * We need to define the column structure and indexing.... */ table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info); if (!table_info) { return; } netsnmp_table_helper_add_indexes(table_info, ASN_PRIV_IMPLIED_OCTET_STR, 0); table_info->min_column = DBGTOKEN_STATUS; table_info->max_column = DBGTOKEN_STATUS; /* * .... and the iteration information .... */ iinfo = SNMP_MALLOC_TYPEDEF(netsnmp_iterator_info); if (!iinfo) { return; } iinfo->get_first_data_point = get_first_debug_entry; iinfo->get_next_data_point = get_next_debug_entry; iinfo->table_reginfo = table_info; /* * .... and register the table with the agent. */ netsnmp_register_table_iterator2( netsnmp_create_handler_registration( "tzDebugTable", handle_nsDebugTable, nsDebugTokenTable_oid, OID_LENGTH(nsDebugTokenTable_oid), HANDLER_CAN_RWRITE), iinfo); }
void init_nsCache(void) { const oid nsCacheTimeout_oid[] = { nsCache, 1 }; const oid nsCacheEnabled_oid[] = { nsCache, 2 }; const oid nsCacheTable_oid[] = { nsCache, 3 }; netsnmp_table_registration_info *table_info; netsnmp_iterator_info *iinfo; /* * Register the scalar objects... */ DEBUGMSGTL(("nsCacheScalars", "Initializing\n")); netsnmp_register_scalar( netsnmp_create_handler_registration( "nsCacheTimeout", handle_nsCacheTimeout, nsCacheTimeout_oid, OID_LENGTH(nsCacheTimeout_oid), HANDLER_CAN_RWRITE) ); netsnmp_register_scalar( netsnmp_create_handler_registration( "nsCacheEnabled", handle_nsCacheEnabled, nsCacheEnabled_oid, OID_LENGTH(nsCacheEnabled_oid), HANDLER_CAN_RWRITE) ); /* * ... and the table. * We need to define the column structure and indexing.... */ table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info); if (!table_info) { return; } netsnmp_table_helper_add_indexes(table_info, ASN_PRIV_IMPLIED_OBJECT_ID, 0); table_info->min_column = NSCACHE_TIMEOUT; table_info->max_column = NSCACHE_STATUS; /* * .... and the iteration information .... */ iinfo = SNMP_MALLOC_TYPEDEF(netsnmp_iterator_info); if (!iinfo) { return; } iinfo->get_first_data_point = get_first_cache_entry; iinfo->get_next_data_point = get_next_cache_entry; iinfo->table_reginfo = table_info; /* * .... and register the table with the agent. */ netsnmp_register_table_iterator2( netsnmp_create_handler_registration( "tzCacheTable", handle_nsCacheTable, nsCacheTable_oid, OID_LENGTH(nsCacheTable_oid), HANDLER_CAN_RWRITE), iinfo); }