Hi Dave,
     As u said to generate the code with  " mib2c -S cache=1 -c
mib2c.table_data.conf ocStbHostAVInterfaceTable "
I generated , u can check the code below.
     1) while compiling it i faced few errors ,which i modified :: now i
able to compile .
     2) But now while runing.. i able to get the values if i fill the table
in "initialize_table_ocStbHostAVInterfaceTable"( which is similar to as
normal table_data.conf model (with out catch) )
3) But if I keep same code in the "ocStbHostAVInterfaceTable_load() " module
( to fill the table ) it is not getting the values and more over I kept some
prints in the "ocStbHostAVInterfaceTable_load() module" ,  What i noticed is
that module itself  not called by the rest of the code .

So "ocStbHostAVInterfaceTable_load()" is not called rest of the modules, may
be because of that i am unable to get values. " Please can u tell when the
Table_load is called ".

** more over if u have any examples please sent it or if any site have
examples please fwd to me***

/*
 * Note: this file originally auto-generated by mib2c using
 *  : mib2c.table_data.conf 15999 2007-03-25 22:32:02Z dts12 $
 */

#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include "ocStbHostAVInterfaceTable.h"

#include "vl_ocStbHost_GetData.h"
#include "vlochd_OC_STB_HOST_MIB_Data.h"

#define CHRMAX2 256
#define MAX_IOD_LENGTH2 128
/** Initializes the ocStbHostAVInterfaceTable module */
void
init_ocStbHostAVInterfaceTable(void)
{
    /*
     * here we initialize all the tables we're planning on supporting
     */
     printf("init_ocStbHostAVInterfaceTable \n.");
    initialize_table_ocStbHostAVInterfaceTable();
}

//# Determine the first/last column names

/** Initialize the ocStbHostAVInterfaceTable table by defining its contents
and how it's structured */
  netsnmp_tdata  *table_data;
void
initialize_table_ocStbHostAVInterfaceTable(void)
{


    static oid      ocStbHostAVInterfaceTable_oid[] =
        { 1, 3, 6, 1, 4, 1, 4491, 2, 3, 1, 1, 1, 2, 2 };
    size_t          ocStbHostAVInterfaceTable_oid_len =
        OID_LENGTH(ocStbHostAVInterfaceTable_oid);
    netsnmp_handler_registration *reg;
//     netsnmp_tdata  *table_data;
    netsnmp_table_registration_info *table_info;
    netsnmp_cache  *cache;
    printf("initialize_table_ocStbHostAVInterfaceTable table_data
...1......\n");
    reg =
        netsnmp_create_handler_registration("ocStbHostAVInterfaceTable",

ocStbHostAVInterfaceTable_handler,
                                            ocStbHostAVInterfaceTable_oid,

ocStbHostAVInterfaceTable_oid_len,
                                            HANDLER_CAN_RONLY);

   printf("initialize_table_ocStbHostAVInterfaceTable table_data
...2.....\n");
    table_data =
        netsnmp_tdata_create_table("ocStbHostAVInterfaceTable", 0);
    table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
    netsnmp_table_helper_add_indexes(table_info, ASN_UNSIGNED,  /* index:
ocStbHostAVInterfaceIndex */
                                     0);

    table_info->min_column = COLUMN_OCSTBHOSTAVINTERFACETYPE;
    table_info->max_column = COLUMN_OCSTBHOSTAVINTERFACESTATUS;


    printf("initialize_table_ocStbHostAVInterfaceTable Catch ...3......\n");
    netsnmp_tdata_register(reg, table_data, table_info);
    printf("Before Catch .....2....");
    cache = netsnmp_cache_create(OCSTBHOSTAVINTERFACETABLE_TIMEOUT,
                                 ocStbHostAVInterfaceTable_load,
                                 ocStbHostAVInterfaceTable_free,
                                 ocStbHostAVInterfaceTable_oid,
                                 ocStbHostAVInterfaceTable_oid_len);
   printf("Before Catch ....4.....\n");
        cache->magic = (void *) table_data;
    netsnmp_inject_handler_before(reg, netsnmp_cache_handler_get(cache),
                                  TABLE_DATA_NAME);


        /*
         * Initialise the contents of the table here
         */

 #if  0
//Check 1:: (Normal with out cathc) method i will fill here
****************** if i uncommet this code i am able to get the values which
are filled bye the this vl_ocStbHostAVInterfaceTable_getdata(table_data))
**********************

    if(0 == vl_ocStbHostAVInterfaceTable_getdata(table_data))
    {
            //vl_ocStbHostAVInterfaceTable_getdata"
      printf(" ERROR:: Not yet table initialise here \n");
    }
 #endif//if 0
}

    /*
     * Typical data structure for a row entry
     */
struct ocStbHostAVInterfaceTable_entry {
    /*
     * Index values
     */
    u_long          ocStbHostAVInterfaceIndex;

    /*
     * Column values
     */
    oid             ocStbHostAVInterfaceType[MAX_IOD_LENGTH2];
    size_t          ocStbHostAVInterfaceType_len;
    char            ocStbHostAVInterfaceDesc[CHRMAX2];
    size_t          ocStbHostAVInterfaceDesc_len;
    long            ocStbHostAVInterfaceStatus;

    int             valid;
};

/*
 * create a new row in the table
 */
netsnmp_tdata_row *ocStbHostAVInterfaceTable_createEntry(netsnmp_tdata *
                                                         table_data,
                                                         u_long

ocStbHostAVInterfaceIndex)
{
    struct ocStbHostAVInterfaceTable_entry *entry;
    netsnmp_tdata_row *row;

    entry = SNMP_MALLOC_TYPEDEF(struct ocStbHostAVInterfaceTable_entry);
    if (!entry)
        return NULL;

    row = netsnmp_tdata_create_row();
    if (!row) {
        SNMP_FREE(entry);
        return NULL;
    }
    row->data = entry;
    entry->ocStbHostAVInterfaceIndex = ocStbHostAVInterfaceIndex;
    netsnmp_tdata_row_add_index(row, ASN_UNSIGNED,
                                &(entry->ocStbHostAVInterfaceIndex),
                                sizeof(entry->ocStbHostAVInterfaceIndex));
    netsnmp_tdata_add_row(table_data, row);
    return row;
}

/*
 * remove a row from the table
 */
void
ocStbHostAVInterfaceTable_removeEntry(netsnmp_tdata * table_data,
                                          netsnmp_tdata_row * row) {
    struct ocStbHostAVInterfaceTable_entry *entry;

    if (!row)
        return;                 /* Nothing to remove */
    entry = (struct ocStbHostAVInterfaceTable_entry *)
        netsnmp_tdata_remove_and_delete_row(table_data, row);
    if (entry)
        SNMP_FREE(entry);       /* XXX - release any other internal
resources */
}

/*
 * Example cache handling - set up table_data list from a suitable file
 */
int
ocStbHostAVInterfaceTable_load(netsnmp_cache * cache, void *vmagic) {
    netsnmp_tdata *table = (netsnmp_tdata *) vmagic;
    netsnmp_tdata_row *row;
    //struct ocStbHostAVInterfaceTable_entry *this
     //cache->magic
    /**
     *vl_ocStbHostAVInterfaceTable_getdata module will  Initialise the
contents of the table here
     */
       printf(".................table initialise here ............\n");
      if(0 == vl_ocStbHostAVInterfaceTable_getdata(table))
    {
            //vl_ocStbHostAVInterfaceTable_getdata"
      printf(" ERROR:: Not yet table initialise here \n");
    }
#if 0


    FILE *          fp;
    char            buf[STRMAX];
                   ;

                    fp = fopen("/data/for/ocStbHostAVInterfaceTable", "r");
    while           (fgets(buf, STRMAX, fp)) {
        /*
         * Unpick 'buf' to extract the index values...
         */

        this =
            ocStbHostAVInterfaceTable_createEntry(table,

ocStbHostAVInterfaceIndex);
        /*
         * ... and then populate 'this' with the column values
         */
    } fclose        (fp);
#endif
}

void
ocStbHostAVInterfaceTable_free(netsnmp_cache * cache, void *vmagic) {
    netsnmp_tdata * table = (netsnmp_tdata *) vmagic;
    netsnmp_tdata_row *this;

    netsnmp_tdata_delete_table(table);

//     while           ((this = netsnmp_tdata_get_first_row(table))) {
//         netsnmp_tdata_remove_and_delete_row(table, this);
//               }

}

/** handles requests for the ocStbHostAVInterfaceTable table */
int
ocStbHostAVInterfaceTable_handler(netsnmp_mib_handler *handler,
                                      netsnmp_handler_registration
                                      *reginfo,
                                      netsnmp_agent_request_info *reqinfo,
                                      netsnmp_request_info *requests) {

    netsnmp_request_info *request;
    netsnmp_table_request_info *table_info;
    netsnmp_tdata * table_data;
    netsnmp_tdata_row *table_row;
    struct ocStbHostAVInterfaceTable_entry *table_entry;
    int             ret;



    switch (reqinfo->mode) {
        /*
         * Read-support (also covers GetNext requests)
         */
    case MODE_GET:
        for (request = requests; request; request = request->next) {
            table_entry = (struct ocStbHostAVInterfaceTable_entry *)
                netsnmp_tdata_extract_entry(request);
            table_info = netsnmp_extract_table_info(request);
            printf("....ocStbHostAVInterfaceTable_handler:: ..MODE_GET:
............\n");
            switch (table_info->colnum) {
            case COLUMN_OCSTBHOSTAVINTERFACETYPE:
                if (!table_entry) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                snmp_set_var_typed_value(request->requestvb, ASN_OBJECT_ID,
                                         (u_char *) table_entry->
                                         ocStbHostAVInterfaceType,
                                         table_entry->
                                         ocStbHostAVInterfaceType_len);
                 printf("....COLUMN_OCSTBHOSTAVINTERFACETYPE:: ..MODE_GET:
............\n");
                break;
            case COLUMN_OCSTBHOSTAVINTERFACEDESC:
                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->
                                         ocStbHostAVInterfaceDesc,
                                         table_entry->
                                         ocStbHostAVInterfaceDesc_len);
        printf("....COLUMN_OCSTBHOSTAVINTERFACEDESC:: ..MODE_GET:
............\n");
                break;
            case COLUMN_OCSTBHOSTAVINTERFACESTATUS:
                if (!table_entry) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
                                           table_entry->
                                           ocStbHostAVInterfaceStatus);
                break;
            default:
                netsnmp_set_request_error(reqinfo, request,
                                          SNMP_NOSUCHOBJECT);
                break;
            }
        }
        break;

    }
    return SNMP_ERR_NOERROR;
}
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
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

Reply via email to