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(&quot;init_myCustomI=
fTable \n&quot;);<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&quot;,<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(&quot;Failed to create handler registration for myC=
ustomIfTable \n&quot;);<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(&quot;Failed to allocate memory for table registration info \n&quot;)=
;<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-&gt;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-&gt;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(&quot;Failed to allocate memory for iterator=
 info \n&quot;);<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-&gt;get_first_data_point =3D get_fir=
st_data_point;<br><br>=C2=A0 =C2=A0 iinfo-&gt;get_next_data_point =3D get_n=
ext_data_point;<br><br>=C2=A0 =C2=A0 iinfo-&gt;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(&quot;Failed to register table ite=
rator handler for myCustomIfTable \n&quot;);<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 &amp; 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--