netsnmp_register_table_iterator() failing
bps tech <[email protected]> Sat, 9 Nov 2024 00:19:34 +0530
| Newsgroups | gmane.network.net-snmp.user |
|---|---|
| Message-ID | <CADsii7cc3VEhmW4Ka6KKhy41RrepEwMgjhKsUiqe2c6JwdPsLg@mail.gmail.com> |
--000000000000f37c5006266b36c3
Content-Type: multipart/alternative; boundary="000000000000f37c4e06266b36c1"
--000000000000f37c4e06266b36c1
Content-Type: text/plain; charset="UTF-8"
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
--000000000000f37c4e06266b36c1
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Hi,<div><br></div><div>I am writing my first code for SNMP=
. I am trying to extend the MIB-2 standard interface table. During this pro=
cess table iterator registration function=C2=A0 =C2=A0 netsnmp_register_tab=
le_iterator(reg, iinfo)=C2=A0=C2=A0=C2=A0is failing.=C2=A0</div><div><br></=
div><div>Here is my code:</div><div><br></div><div>void init_myCustomIfTabl=
e(void) {<br><br>=C2=A0 =C2=A0 static oid ifTable_oid[] =3D {1, 3, 6, 1, 2,=
1, 2, 99}; =C2=A0// Base OID for custom table extension<br><br>=C2=A0 =C2=
=A0 size_t ifTable_oid_len =3D OID_LENGTH(ifTable_oid);<br><br><br><br>=C2=
=A0 =C2=A0 netsnmp_handler_registration *reg;<br><br>=C2=A0 =C2=A0 netsnmp_=
table_registration_info *table_info;<br><br>=C2=A0 =C2=A0 netsnmp_iterator_=
info *iinfo;<br><br><br><br>=C2=A0 =C2=A0 AIM_LOG_INFO("init_myCustomI=
fTable \n");<br><br>=C2=A0 =C2=A0 // Register the table with the SNMP =
agent<br><br>=C2=A0 =C2=A0 reg =3D netsnmp_create_handler_registration(&quo=
t;myCustomIfTable",<br><br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 get_custom_metric_data, ifTab=
le_oid,<br><br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 ifTable_oid_len,<br><br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 HANDLER_=
CAN_RONLY);<br><br><br><br>=C2=A0 =C2=A0 // Error checking for handler regi=
stration<br><br>=C2=A0 =C2=A0 if (!reg) {<br><br><br><br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 AIM_LOG_INFO("Failed to create handler registration for myC=
ustomIfTable \n");<br><br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 return;<br><br>=
=C2=A0 =C2=A0 }<br><br><br><br>=C2=A0 =C2=A0 // Define table structure and =
columns (e.g., index for ifIndex and custom metrics)<br><br>=C2=A0 =C2=A0 t=
able_info =3D SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);<br><br>=
=C2=A0 =C2=A0 if (!table_info) {<br><br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 AIM_LOG=
_INFO("Failed to allocate memory for table registration info \n")=
;<br><br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 return;<br><br>=C2=A0 =C2=A0 }<br><br>=
<br><br>=C2=A0 =C2=A0 netsnmp_table_helper_add_index(table_info, ASN_INTEGE=
R, 0); =C2=A0// Index for ifIndex<br><br>=C2=A0 =C2=A0 table_info->min_c=
olumn =3D COLUMN_CUSTOM_METRIC1; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 // Star=
ting column for custom data<br><br>=C2=A0 =C2=A0 table_info->max_column =
=3D COLUMN_CUSTOM_METRIC2; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 // Ending col=
umn for custom data<br><br><br><br>=C2=A0 =C2=A0 // Define iterator informa=
tion for table walking<br><br>=C2=A0 =C2=A0 iinfo =3D SNMP_MALLOC_TYPEDEF(n=
etsnmp_iterator_info);<br><br>=C2=A0 =C2=A0 if (!iinfo) {<br><br>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 AIM_LOG_INFO("Failed to allocate memory for iterator=
info \n");<br><br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 free(table_info); =C2=
=A0// Free memory before returning<br><br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 retur=
n;<br><br>=C2=A0 =C2=A0 }<br><br>iinfo->get_first_data_point =3D get_fir=
st_data_point;<br><br>=C2=A0 =C2=A0 iinfo->get_next_data_point =3D get_n=
ext_data_point;<br><br>=C2=A0 =C2=A0 iinfo->table_reginfo =3D table_info=
;<br><br><br><br>=C2=A0 =C2=A0 // Register the table iterator handler<br><b=
r>=C2=A0 =C2=A0 if (!netsnmp_register_table_iterator(reg, iinfo)) {<br><br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 AIM_LOG_INFO("Failed to register table ite=
rator handler for myCustomIfTable \n");<br><br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 free(iinfo); =C2=A0// Clean up allocated memory<br><br>=C2=A0 =C2=A0=
=C2=A0 =C2=A0 free(table_info); =C2=A0// Clean up allocated memory<br><br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 return;<br><br>=C2=A0 =C2=A0 }<br><br>I am atta=
ching my MIB file also.</div><div><br></div><div>Any help in this regard wo=
uld be highly appreciated.</div><div><br></div><div>Thanks & Regards,</=
div><div>Bhashkar</div></div>
--000000000000f37c4e06266b36c1--
--000000000000f37c5006266b36c3
Content-Type: text/plain; charset="US-ASCII"; name="MY-INTERFACE-MIB.txt"
Content-Disposition: attachment; filename="MY-INTERFACE-MIB.txt"
Content-Transfer-Encoding: base64
Content-ID: <f_m3923o4r0>
X-Attachment-Id: f_m3923o4r0
TVktSU5URVJGQUNFLU1JQiBERUZJTklUSU9OUyA6Oj0gQkVHSU4NCg0KSU1QT1JUUw0KICAgIE1P
RFVMRS1JREVOVElUWSwgT0JKRUNULVRZUEUsIEludGVnZXIzMiwgR2F1Z2UzMg0KICAgICAgICBG
Uk9NIFNOTVB2Mi1TTUkNCiAgICBURVhUVUFMLUNPTlZFTlRJT04NCiAgICAgICAgRlJPTSBTTk1Q
djItVEMNCiAgICBpZkluZGV4LCBpbnRlcmZhY2VzDQogICAgICAgIEZST00gUkZDMTIxMy1NSUI7
DQoNCm15SWZFeHRlbnNpb25zIE1PRFVMRS1JREVOVElUWQ0KICAgIExBU1QtVVBEQVRFRCAiMjAy
NDExMDcwMDAwWiINCiAgICBPUkdBTklaQVRJT04gIllvdXIgT3JnYW5pemF0aW9uIg0KICAgIENP
TlRBQ1QtSU5GTyAiQ29udGFjdCBpbmZvcm1hdGlvbiBoZXJlIg0KICAgIERFU0NSSVBUSU9OICJB
biBleHRlbnNpb24gdG8gdGhlIHN0YW5kYXJkIE1JQi0yIGlmVGFibGUgd2l0aCBhZGRpdGlvbmFs
IGNvbHVtbnMuIg0KICAgIDo6PSB7IGludGVyZmFjZXMgOTkgfQ0KDQotLSBEZWZpbmUgdGhlIHRh
YmxlIHRoYXQgZXh0ZW5kcyBpZlRhYmxlDQpteUN1c3RvbUlmVGFibGUgT0JKRUNULVRZUEUNCiAg
ICBTWU5UQVggICAgICBTRVFVRU5DRSBPRiBNeUN1c3RvbUlmRW50cnkNCiAgICBNQVgtQUNDRVNT
ICBub3QtYWNjZXNzaWJsZQ0KICAgIFNUQVRVUyAgICAgIGN1cnJlbnQNCiAgICBERVNDUklQVElP
TiAiVGFibGUgY29udGFpbmluZyBhZGRpdGlvbmFsIGludGVyZmFjZSBpbmZvcm1hdGlvbi4iDQog
ICAgOjo9IHsgbXlJZkV4dGVuc2lvbnMgMSB9DQoNCm15Q3VzdG9tSWZFbnRyeSBPQkpFQ1QtVFlQ
RQ0KICAgIFNZTlRBWCAgICAgIE15Q3VzdG9tSWZFbnRyeQ0KICAgIE1BWC1BQ0NFU1MgIG5vdC1h
Y2Nlc3NpYmxlDQogICAgU1RBVFVTICAgICAgY3VycmVudA0KICAgIERFU0NSSVBUSU9OICJBbiBl
bnRyeSBjb250YWluaW5nIGFkZGl0aW9uYWwgaW50ZXJmYWNlIGluZm9ybWF0aW9uLiINCiAgICBJ
TkRFWCAgICAgICB7IGlmSW5kZXggfSAgLS0gVXNlIGlmSW5kZXggYXMgdGhlIGluZGV4IGZvciB0
aGlzIHRhYmxlDQogICAgOjo9IHsgbXlDdXN0b21JZlRhYmxlIDEgfQ0KDQpNeUN1c3RvbUlmRW50
cnkgOjo9IFNFUVVFTkNFIHsNCiAgICBjdXN0b21NZXRyaWMxICBJbnRlZ2VyMzIsDQogICAgY3Vz
dG9tTWV0cmljMiAgR2F1Z2UzMg0KfQ0KDQotLSBEZWZpbmUgdGhlIG5ldyBjb2x1bW5zIGluIHRo
ZSB0YWJsZQ0KY3VzdG9tTWV0cmljMSBPQkpFQ1QtVFlQRQ0KICAgIFNZTlRBWCAgICAgIEludGVn
ZXIzMg0KICAgIE1BWC1BQ0NFU1MgIHJlYWQtb25seQ0KICAgIFNUQVRVUyAgICAgIGN1cnJlbnQN
CiAgICBERVNDUklQVElPTiAiQSBjdXN0b20gbWV0cmljIHNwZWNpZmljIHRvIHRoaXMgaW50ZXJm
YWNlLiINCiAgICA6Oj0geyBteUN1c3RvbUlmRW50cnkgMSB9DQoNCmN1c3RvbU1ldHJpYzIgT0JK
RUNULVRZUEUNCiAgICBTWU5UQVggICAgICBHYXVnZTMyDQogICAgTUFYLUFDQ0VTUyAgcmVhZC1v
bmx5DQogICAgU1RBVFVTICAgICAgY3VycmVudA0KICAgIERFU0NSSVBUSU9OICJBbm90aGVyIGN1
c3RvbSBtZXRyaWMgZm9yIHRoZSBpbnRlcmZhY2UuIg0KICAgIDo6PSB7IG15Q3VzdG9tSWZFbnRy
eSAyIH0NCg0KRU5EDQo=
--000000000000f37c5006266b36c3
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
--000000000000f37c5006266b36c3
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
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
--000000000000f37c5006266b36c3--