Hi,
I am writing my first code for SNMP. I am trying to extend the MIB-2
standard interface table. During this process table iterator registration
function netsnmp_register_table_iterator(reg, iinfo) is failing.
Here is my code:
void init_myCustomIfTable(void) {
static oid ifTable_oid[] = {1, 3, 6, 1, 2, 1, 2, 99}; // Base OID for
custom table extension
size_t ifTable_oid_len = OID_LENGTH(ifTable_oid);
netsnmp_handler_registration *reg;
netsnmp_table_registration_info *table_info;
netsnmp_iterator_info *iinfo;
AIM_LOG_INFO("init_myCustomIfTable \n");
// Register the table with the SNMP agent
reg = netsnmp_create_handler_registration("myCustomIfTable",
get_custom_metric_data,
ifTable_oid,
ifTable_oid_len,
HANDLER_CAN_RONLY);
// Error checking for handler registration
if (!reg) {
AIM_LOG_INFO("Failed to create handler registration for
myCustomIfTable \n");
return;
}
// Define table structure and columns (e.g., index for ifIndex and
custom metrics)
table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
if (!table_info) {
AIM_LOG_INFO("Failed to allocate memory for table registration info
\n");
return;
}
netsnmp_table_helper_add_index(table_info, ASN_INTEGER, 0); // Index
for ifIndex
table_info->min_column = COLUMN_CUSTOM_METRIC1; // Starting
column for custom data
table_info->max_column = COLUMN_CUSTOM_METRIC2; // Ending
column for custom data
// Define iterator information for table walking
iinfo = SNMP_MALLOC_TYPEDEF(netsnmp_iterator_info);
if (!iinfo) {
AIM_LOG_INFO("Failed to allocate memory for iterator info \n");
free(table_info); // Free memory before returning
return;
}
iinfo->get_first_data_point = get_first_data_point;
iinfo->get_next_data_point = get_next_data_point;
iinfo->table_reginfo = table_info;
// Register the table iterator handler
if (!netsnmp_register_table_iterator(reg, iinfo)) {
AIM_LOG_INFO("Failed to register table iterator handler for
myCustomIfTable \n");
free(iinfo); // Clean up allocated memory
free(table_info); // Clean up allocated memory
return;
}
I am attaching my MIB file also.
Any help in this regard would be highly appreciated.
Thanks & Regards,
Bhashkar
MY-INTERFACE-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, Integer32, Gauge32
FROM SNMPv2-SMI
TEXTUAL-CONVENTION
FROM SNMPv2-TC
ifIndex, interfaces
FROM RFC1213-MIB;
myIfExtensions MODULE-IDENTITY
LAST-UPDATED "202411070000Z"
ORGANIZATION "Your Organization"
CONTACT-INFO "Contact information here"
DESCRIPTION "An extension to the standard MIB-2 ifTable with additional
columns."
::= { interfaces 99 }
-- Define the table that extends ifTable
myCustomIfTable OBJECT-TYPE
SYNTAX SEQUENCE OF MyCustomIfEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "Table containing additional interface information."
::= { myIfExtensions 1 }
myCustomIfEntry OBJECT-TYPE
SYNTAX MyCustomIfEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "An entry containing additional interface information."
INDEX { ifIndex } -- Use ifIndex as the index for this table
::= { myCustomIfTable 1 }
MyCustomIfEntry ::= SEQUENCE {
customMetric1 Integer32,
customMetric2 Gauge32
}
-- Define the new columns in the table
customMetric1 OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION "A custom metric specific to this interface."
::= { myCustomIfEntry 1 }
customMetric2 OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION "Another custom metric for the interface."
::= { myCustomIfEntry 2 }
END
_______________________________________________
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