snmptable returns: No Entries

"William" <[email protected]>
Newsgroups gmane.network.net-snmp.user
Message-ID <000001cbe528$d00d5ba0$702812e0$@com>
Hi:

 

         

         I wrote a MIB,and create a dynamic library using the mib2c.iterate.
conf .

When I using the snmpget/snmpset ,it works well.

 

But when I using the command below:

 

$snmptable -v2c -c private localhost JS50-MIB::js50PMTable

It returned:

JS50-MIB::js50PMTable:No Entries

 

What’s the problem on earth?

I would expect your reply!

 

 

 

 

 

 

 

Code:

 

 

/** Initializes the js50 module */

void

init_js50(void)

{

    /*

     * here we initialize all the tables we're planning on supporting 

     */

    initialize_table_js50PMTable();

}

 

//# Determine the first/last column names

 

/** Initialize the js50PMTable table by defining its contents and how it's
structured */

void

initialize_table_js50PMTable(void)

{

    static oid      js50PMTable_oid[] = { 1, 3, 6, 1, 4, 1, 35062, 1, 1 };

    size_t          js50PMTable_oid_len = OID_LENGTH(js50PMTable_oid);

    netsnmp_handler_registration *reg;

    netsnmp_iterator_info *iinfo;

    netsnmp_table_registration_info *table_info;

 

    reg =

        netsnmp_create_handler_registration("js50PMTable",

                                            js50PMTable_handler,

                                            js50PMTable_oid,

                                            js50PMTable_oid_len,

                                            HANDLER_CAN_RWRITE);

 

    table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);

    netsnmp_table_helper_add_indexes(table_info, ASN_INTEGER,   /* index:
js50PM01 */

                                     ASN_OCTET_STR,     /* index: js50PM02
*/

                                     0);

    table_info->min_column = COLUMN_JS50PM01;

    table_info->max_column = COLUMN_JS50PM02;

 

    iinfo = SNMP_MALLOC_TYPEDEF(netsnmp_iterator_info);

    iinfo->get_first_data_point = js50PMTable_get_first_data_point;

    iinfo->get_next_data_point = js50PMTable_get_next_data_point;

    iinfo->table_reginfo = table_info;

 

    netsnmp_register_table_iterator(reg, iinfo);

 

    /*

     * Initialise the contents of the table here 

     */

}

 

    /*

     * Typical data structure for a row entry 

     */

struct js50PMTable_entry {

    /*

     * Index values 

     */

    long            js50PM01;

    char            js50PM02[222];

    size_t          js50PM02_len;

 

    /*

     * Column values 

     */

   // long            js50PM01;

    long            old_js50PM01;

   // char            js50PM02[NNN];

   // size_t          js50PM02_len;

    char            old_js50PM02[222];

    size_t          old_js50PM02_len;

 

    /*

     * Illustrate using a simple linked list 

     */

    int             valid;

    struct js50PMTable_entry *next;

};

 

struct js50PMTable_entry *js50PMTable_head;

 

/*

 * create a new row in the (unsorted) table 

 */

struct js50PMTable_entry *

js50PMTable_createEntry(long js50PM01,

                        char *js50PM02, size_t js50PM02_len)

{

    struct js50PMTable_entry *entry;

 

    entry = SNMP_MALLOC_TYPEDEF(struct js50PMTable_entry);

    if (!entry)

        return NULL;

 

    entry->js50PM01 = js50PM01;

    memcpy(entry->js50PM02, js50PM02, js50PM02_len);

    entry->js50PM02_len = js50PM02_len;

    entry->next = js50PMTable_head;

    js50PMTable_head = entry;

    return entry;

}

 

/*

 * remove a row from the table 

 */

void

js50PMTable_removeEntry(struct js50PMTable_entry *entry)

{

    struct js50PMTable_entry *ptr, *prev;

 

    if (!entry)

        return;                 /* Nothing to remove */

 

    for (ptr = js50PMTable_head, prev = NULL;

         ptr != NULL; prev = ptr, ptr = ptr->next) {

        if (ptr == entry)

            break;

    }

    if (!ptr)

        return;                 /* Can't find it */

 

    if (prev == NULL)

        js50PMTable_head = ptr->next;

    else

        prev->next = ptr->next;

 

    SNMP_FREE(entry);           /* XXX - release any other internal
resources */

}

 

 

/*

 * Example iterator hook routines - using 'get_next' to do most of the work 

 */

netsnmp_variable_list *

js50PMTable_get_first_data_point(void **my_loop_context,

                                 void **my_data_context,

                                 netsnmp_variable_list * put_index_data,

                                 netsnmp_iterator_info *mydata)

{

    *my_loop_context = js50PMTable_head;

    return js50PMTable_get_next_data_point(my_loop_context,

                                           my_data_context, put_index_data,

                                           mydata);

}

 

netsnmp_variable_list *

js50PMTable_get_next_data_point(void **my_loop_context,

                                void **my_data_context,

                                netsnmp_variable_list * put_index_data,

                                netsnmp_iterator_info *mydata)

{

    struct js50PMTable_entry *entry =

        (struct js50PMTable_entry *) *my_loop_context;

    netsnmp_variable_list *idx = put_index_data;

 

    if (entry) {

        snmp_set_var_typed_integer(idx, ASN_INTEGER, entry->js50PM01);

        idx = idx->next_variable;

        snmp_set_var_value(idx, entry->js50PM02, sizeof(entry->js50PM02));

        idx = idx->next_variable;

        *my_data_context = (void *) entry;

        *my_loop_context = (void *) entry->next;

        return put_index_data;

    } else {

        return NULL;

    }

}

 

 

/** handles requests for the js50PMTable table */

int

js50PMTable_handler(netsnmp_mib_handler *handler,

                    netsnmp_handler_registration *reginfo,

                    netsnmp_agent_request_info *reqinfo,

                    netsnmp_request_info *requests)

{

    int ret=0;

    netsnmp_request_info *request;

    netsnmp_table_request_info *table_info;

    struct js50PMTable_entry *table_entry;

 

    switch (reqinfo->mode) {

        /*

         * Read-support (also covers GetNext requests)

         */

    case MODE_GET:

        for (request = requests; request; request = request->next) {

            table_entry = (struct js50PMTable_entry *)

                netsnmp_extract_iterator_context(request);

            table_info = netsnmp_extract_table_info(request);

 

            switch (table_info->colnum) {

            case COLUMN_JS50PM01:

                if (!table_entry) {

                    netsnmp_set_request_error(reqinfo, request,

                                              SNMP_NOSUCHINSTANCE);

                    continue;

                }

                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,

                                           table_entry->js50PM01);

                break;

            case COLUMN_JS50PM02:

                if (!table_entry) {

                    netsnmp_set_request_error(reqinfo, request,

                                              SNMP_NOSUCHINSTANCE);

                    continue;

                }

                snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR,

                                         (u_char *) table_entry->js50PM02,

                                         table_entry->js50PM02_len);

                break;

            default:

                netsnmp_set_request_error(reqinfo, request,

                                          SNMP_NOSUCHOBJECT);

                break;

            }

        }

        break;

 

        /*

         * Write-support

         */

    case MODE_SET_RESERVE1:

        for (request = requests; request; request = request->next) {

            table_entry = (struct js50PMTable_entry *)

                netsnmp_extract_iterator_context(request);

            table_info = netsnmp_extract_table_info(request);

 

            switch (table_info->colnum) {

            case COLUMN_JS50PM01:

                /*

                 * or possibly 'netsnmp_check_vb_int_range' 

                 */

                ret = netsnmp_check_vb_int(request->requestvb);

                if (ret != SNMP_ERR_NOERROR) {

                    netsnmp_set_request_error(reqinfo, request, ret);

                    return SNMP_ERR_NOERROR;

                }

                break;

            case COLUMN_JS50PM02:

                /*

                 * or possiblc 'netsnmp_check_vb_type_and_size' 

                 */

                ret =

                    netsnmp_check_vb_type_and_max_size(request->requestvb,

                                                       ASN_OCTET_STR,

                                                       sizeof(table_entry->

                                                              js50PM02));

                if (ret != SNMP_ERR_NOERROR) {

                    netsnmp_set_request_error(reqinfo, request, ret);

                    return SNMP_ERR_NOERROR;

                }

                break;

            default:

                netsnmp_set_request_error(reqinfo, request,

                                          SNMP_ERR_NOTWRITABLE);

                return SNMP_ERR_NOERROR;

            }

        }

        break;

 

    case MODE_SET_RESERVE2:

        break;

 

    case MODE_SET_FREE:

        break;

 

    case MODE_SET_ACTION:

        for (request = requests; request; request = request->next) {

            table_entry = (struct js50PMTable_entry *)

                netsnmp_extract_iterator_context(request);

            table_info = netsnmp_extract_table_info(request);

 

            switch (table_info->colnum) {

            case COLUMN_JS50PM01:

                table_entry->old_js50PM01 = table_entry->js50PM01;

                table_entry->js50PM01 = *request->requestvb->val.integer;

                break;

            case COLUMN_JS50PM02:

                memcpy(table_entry->old_js50PM02,

                       table_entry->js50PM02,

                       sizeof(table_entry->js50PM02));

                table_entry->old_js50PM02_len = table_entry->js50PM02_len;

                memset(table_entry->js50PM02, 0,

                       sizeof(table_entry->js50PM02));

                memcpy(table_entry->js50PM02,

                       request->requestvb->val.string,

                       request->requestvb->val_len);

                table_entry->js50PM02_len = request->requestvb->val_len;

                break;

            }

        }

        break;

 

    case MODE_SET_UNDO:

        for (request = requests; request; request = request->next) {

            table_entry = (struct js50PMTable_entry *)

                netsnmp_extract_iterator_context(request);

            table_info = netsnmp_extract_table_info(request);

 

            switch (table_info->colnum) {

            case COLUMN_JS50PM01:

                table_entry->js50PM01 = table_entry->old_js50PM01;

                table_entry->old_js50PM01 = 0;

                break;

            case COLUMN_JS50PM02:

                memcpy(table_entry->js50PM02,

                       table_entry->old_js50PM02,

                       sizeof(table_entry->js50PM02));

                memset(table_entry->old_js50PM02, 0,

                       sizeof(table_entry->js50PM02));

                table_entry->js50PM02_len = table_entry->old_js50PM02_len;

                break;

            }

        }

        break;

 

    case MODE_SET_COMMIT:

        break;

    }

    return SNMP_ERR_NOERROR;

}

------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d

_______________________________________________
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.