AW: Net-SNMP 5.5 on Windows Server 2008 with own subagent, can"t set scalar

Julian Cebulla <[email protected]>
Newsgroups gmane.network.net-snmp.user
Message-ID <6FB3B6199FD7754699E03FD87E9653480506D275@exchange2010.hq.ferrari-electronic.de>
>> This is in excerpt of my code at the beginning (in C):
>
>   [snip]
>
>OK - that looks like the code for the main body of the subagent.
>But you've got four routines that (presumably) initialise and register the MIB information that the subagent should report:
>
>>      init_mib_physicalInterfacesTable();
>>      init_mib_bChannelTable();
>>      init_mib_sessionTable();
>
>>  init_mib_scalar();
>
>What do these init routines look like?

Here the code of init_mib_physicalInterfacesTable():

------------------------------------------------
void initialize_table_physicalInterfacesTable(void)
{
        int retval=999;

    static oid physicalInterfacesTable_oid[] =
        { 1, 3, 6, 1, 4, 1, 17524, 2, 1, 2 };
    size_t physicalInterfacesTable_oid_len =
        OID_LENGTH(physicalInterfacesTable_oid);
    //netsnmp_table_data_set *table_set;

    /*
     * create the table structure itself
     */
    physicalInterfacesTable_table_set =
        netsnmp_create_table_data_set("physicalInterfacesTable");

    /*
     * comment this out or delete if you don't support creation of new rows
     */
    physicalInterfacesTable_table_set->allow_creation = 1;

    /***************************************************
     * Adding indexes
     */
    DEBUGMSGTL(("initialize_table_physicalInterfacesTable",
                "adding indexes to table physicalInterfacesTable\n"));
    netsnmp_table_set_add_indexes(physicalInterfacesTable_table_set, ASN_INTEGER,       /* index: physicalInterfaceIndex */
                                  0);

    DEBUGMSGTL(("initialize_table_physicalInterfacesTable",
                "adding column types to table physicalInterfacesTable\n"));
    netsnmp_table_set_multi_add_default_row
        (physicalInterfacesTable_table_set, COLUMN_PHYSICALINTERFACEINDEX,
         ASN_INTEGER, 0, NULL, 0, COLUMN_PHYSICALINTERFACENAME,
         ASN_OCTET_STR, 0, NULL, 0, COLUMN_PHYSICALINTERFACETYPE,
         ASN_OCTET_STR, 0, NULL, 0, COLUMN_PHYSICALINTERFACESTATE,
         ASN_OCTET_STR, 0, NULL, 0, 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 physicalInterfacesTable_handler to "NULL"
     */
    retval=netsnmp_register_table_data_set(netsnmp_create_handler_registration
                                    ("physicalInterfacesTable",
                                     physicalInterfacesTable_handler,
                                     physicalInterfacesTable_oid,
                                     physicalInterfacesTable_oid_len,
                                     HANDLER_CAN_RWRITE),
                                    physicalInterfacesTable_table_set,
                                    NULL);
        printf("Return of netsnmp_register_table_data_set(physicalInterfacesTable): %d\n",retval);
}

/** Initializes the mib_physicalInterfacesTable module */
void init_mib_physicalInterfacesTable(void)
{
        printf("init_mib_physicalInterfacesTable()\n");

    /*
     * here we initialize all the tables we're planning on supporting
     */
    initialize_table_physicalInterfacesTable();
}

/** handles requests for the physicalInterfacesTable table, if anything else needs to be done */
int
physicalInterfacesTable_handler(netsnmp_mib_handler * handler,
                                netsnmp_handler_registration * reginfo,
                                netsnmp_agent_request_info * reqinfo,
                                netsnmp_request_info * requests)
{
        printf("physicalInterfacesTable_handler()\n");
    /*
     * 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;
}
------------------------------------------------------

The functions "init_mib_bChannelTable()" and "init_mib_sessionTable()" looking similar to "init_mib_physicalInterfacesTable()".
They are made by mib2c.

>In particular, they'll presumably call some form of 'netsnmp_register_xxx'
>routine.   As part of that registration, there should be some
>mention of an 'xxx_handler' routine.

The subagent never print out the debug text in the physicalInterfacesTable_handler function! Same for sessionTable and bChannelTable.
Return of 'netsnmp_register_xxx' is in every function zero.

In  'init_mib_scalar' the function 'netsnmp_register_scalar()' is called for every scalar. Return of 'netsnmp_register_scalar()' is always zero.

Thanks
Julian


________________________________

Ferrari electronic AG
Ruhlsdorfer Str. 138
14513 Teltow (bei Berlin)

Handelregister Potsdam: HRB 12091
Vorstand: Johann Deutinger, Ulrich Dziergwa, Dr. Hartmut Fetzer
Aufsichtsrat: Peter Mark Droste (Vorsitzender)

------------------------------------------------------------------------------
The Palm PDK Hot Apps Program offers developers who use the
Plug-In Development Kit to bring their C/C++ apps to Palm for a share
of $1 Million in cash or HP Products. Visit us here for more details:
http://p.sf.net/sfu/dev2dev-palm
_______________________________________________
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.