Attached is the code..

Thanks for your help.

~Anup

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf 
Of Dave Shield
Sent: Wednesday, August 25, 2010 12:50 PM
To: Shankar, Anup
Cc: [email protected]
Subject: Re: Fails:: SNMPGetNext and GetBulk has the IP Address Index reversed 
in the request.

On 25 August 2010 07:21,  <[email protected]> wrote:
> I changed the code as below, but now Get fails and Get next works....
> The code snipprt is as below::

Hmmm...

I'm not quite sure what is happening here.
Could you please post (as attachments) the *complete* code
of the MIB module that you are working with.

Dave

/*
 * Note: this file originally auto-generated by mib2c using
 *  : mib2c.iterate.conf 17695 2009-07-21 12:22:18Z 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 "vplexStats.h"
#include "VPLEXStatsManager.h"
#include "VPLEXConfigurator.h"
#include "OID.h"
#include <stdlib.h>
#include<iostream.h>
#include<stdio.h>

struct vplexDirectorTable_entry;
struct vplexDirectorTable_entry * vplexDirectorTable_createEntry( in_addr_t  
vplexDirectorPrimaryIpAddr);
struct vplexDirectorCacheTable_entry * vplexDirectorCacheTable_createEntry( 
in_addr_t  vplexDirectorPrimaryIpAddr); 

/**Helper Functions **/

struct counter64 getCounter64(String val)
{
        struct counter64 c64;
        u_long tmp = strtoul(val.c_str(),NULL,0);
        c64.high = (tmp & 0xffffffff00000000ULL) >> 32;
        c64.low = (tmp & 0xffffffffULL);

        return c64;
}


String getPrimaryIP(netsnmp_table_request_info *table_info)
{
        String ipAddress;
        struct in_addr tableIdx;        
        long* var = table_info->indexes->val.integer;
        
        tableIdx.s_addr = *var;
        
        cout << "tableIdx" << var << endl;
        String dirIP = inet_ntoa(tableIdx);
        cout << "director IP" << dirIP << endl;

        return dirIP;

}

OID getAttribute(netsnmp_handler_registration      
*reginfo,netsnmp_table_request_info *table_info)
{
        //concat.
        oid* rowOid;
        long entry=1;
        int len= 2;
        int tableOidLen = reginfo->rootoid_len;

        len = len + reginfo->rootoid_len;
        cout << "len" << len << endl;
        
        rowOid = (oid*)malloc(sizeof(oid)*len);
        memcpy(rowOid,reginfo->rootoid,reginfo->rootoid_len * sizeof(oid));

        rowOid[tableOidLen] = entry;
        rowOid[tableOidLen+1] = table_info->colnum;


        OID Attribute(rowOid,len);

        free(rowOid);

        return Attribute;

}

/** Initializes the vplexStats module */
void
init_vplexStats(void)
{
  /* here we initialize all the tables we're planning on supporting */
    initialize_table_vplexDirectorTable();
    initialize_table_vplexDirectorFETable();
}

//  # Determine the first/last column names

    /* Typical data structure for a row entry */
struct vplexDirectorTable_entry {
    /* Index values */
    in_addr_t vplexDirectorPrimaryIpAddr;

    /* Column values */
    /*in_addr_t vplexDirectorPrimaryIpAddr;*/
    in_addr_t vplexDirectorFailoverIpAddr;
        char    vplexDirectorName[80];

    /* Illustrate using a simple linked list */
    int   valid;
    struct vplexDirectorTable_entry *next;
};


/** Initialize the vplexDirectorTable table by defining its contents and how 
it's structured */
void
initialize_table_vplexDirectorTable(void)
{
    const oid vplexDirectorTable_oid[] = {1,3,6,1,4,1,1139,21,2,2,1};
    const size_t vplexDirectorTable_oid_len   = 
OID_LENGTH(vplexDirectorTable_oid);
    netsnmp_handler_registration    *reg;
    netsnmp_iterator_info           *iinfo;
    netsnmp_table_registration_info *table_info;
        
    DEBUGMSGTL(("vplexStats:init", "initializing table vplexDirectorTable\n"));
        
    reg = netsnmp_create_handler_registration(
                "vplexDirectorTable",     vplexDirectorTable_handler,
                vplexDirectorTable_oid, vplexDirectorTable_oid_len,
                HANDLER_CAN_RONLY
                );
        
    table_info = SNMP_MALLOC_TYPEDEF( netsnmp_table_registration_info );
    netsnmp_table_helper_add_indexes(table_info,
                ASN_IPADDRESS,  /* index: vplexDirectorPrimaryIpAddr */
                0);
    table_info->min_column = COLUMN_VPLEXDIRECTORPRIMARYIPADDR;
    table_info->max_column = COLUMN_VPLEXDIRECTORNAME;
    
    iinfo = SNMP_MALLOC_TYPEDEF( netsnmp_iterator_info );
    iinfo->get_first_data_point = vplexDirectorTable_get_first_data_point;
    iinfo->get_next_data_point  = vplexDirectorTable_get_next_data_point;
    iinfo->table_reginfo        = table_info;
    
    netsnmp_register_table_iterator( reg, iinfo );
        
    /* Initialise the contents of the table here */
        
        cout << "initialize_table_vplexDirectorTable" << endl;
        std::vector<DirectorInfo> dirList = 
VPLEXConfigurator::getInstance()->getDirectorsInfo();
        DirectorInfo dir;
        String ipAddress;
        struct vplexDirectorTable_entry*        dirTableEntry;

        for(std::vector<DirectorInfo>::iterator idx = dirList.begin(); idx != 
dirList.end(); idx++)
        {
                dir = *idx;
                
                ipAddress = dir.primaryIpAddress;
                cout << "ipAddress" << ipAddress << endl;
                //in_addr_t vplexDirectorPrimaryIpAddr = 
inet_addr("128.221.252.35");
                
                in_addr_t vplexDirectorPrimaryIpAddr = 
inet_addr(ipAddress.c_str());
                cout << "Entry IP" << vplexDirectorPrimaryIpAddr << endl;       

                dirTableEntry = 
vplexDirectorTable_createEntry(vplexDirectorPrimaryIpAddr);

                
strcpy(dirTableEntry->vplexDirectorName,dir.directorName.c_str());
                dirTableEntry->valid = 1;
                
        }
#if 0
        //vplexDirectorPrimaryIpAddr = inet_addr("128.221.252.36");
        vplexDirectorPrimaryIpAddr = inet_addr("36.252.221.128");
        
        cout << "Entry 2 IP" << vplexDirectorPrimaryIpAddr << endl;     
        dirTableEntry = 
vplexDirectorTable_createEntry(vplexDirectorPrimaryIpAddr);
        dirTableEntry->vplexDirectorPrimaryIpAddr = vplexDirectorPrimaryIpAddr;
        dirTableEntry->valid = 1;
#endif
        
}


struct vplexDirectorTable_entry  *vplexDirectorTable_head;

/* create a new row in the (unsorted) table */
struct vplexDirectorTable_entry *
vplexDirectorTable_createEntry(
                 in_addr_t  vplexDirectorPrimaryIpAddr
                ) {
    struct vplexDirectorTable_entry *entry;

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

    entry->vplexDirectorPrimaryIpAddr = vplexDirectorPrimaryIpAddr;
    entry->next = vplexDirectorTable_head;
    vplexDirectorTable_head = entry;
    return entry;
}

/* remove a row from the table */
void
vplexDirectorTable_removeEntry( struct vplexDirectorTable_entry *entry ) {
    struct vplexDirectorTable_entry *ptr, *prev;

    if (!entry)
        return;    /* Nothing to remove */

    for ( ptr  = vplexDirectorTable_head, prev = NULL;
          ptr != NULL;
          prev = ptr, ptr = ptr->next ) {
        if ( ptr == entry )
            break;
    }
    if ( !ptr )
        return;    /* Can't find it */

    if ( prev == NULL )
        vplexDirectorTable_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 *
vplexDirectorTable_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 = vplexDirectorTable_head;
    return vplexDirectorTable_get_next_data_point(my_loop_context, 
my_data_context,
                                    put_index_data,  mydata );
}

netsnmp_variable_list *
vplexDirectorTable_get_next_data_point(void **my_loop_context,
                          void **my_data_context,
                          netsnmp_variable_list *put_index_data,
                          netsnmp_iterator_info *mydata)
{
    struct vplexDirectorTable_entry *entry = (struct vplexDirectorTable_entry 
*)*my_loop_context;
    netsnmp_variable_list *idx = put_index_data;

    if ( entry ) {
        snmp_set_var_typed_value( idx,ASN_IPADDRESS,(u_char *) 
&entry->vplexDirectorPrimaryIpAddr,\
                sizeof(entry->vplexDirectorPrimaryIpAddr));

//        snmp_set_var_typed_integer( idx, ASN_IPADDRESS, 
entry->vplexDirectorPrimaryIpAddr );
        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 vplexDirectorTable table */
int
vplexDirectorTable_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;
    struct vplexDirectorTable_entry          *table_entry;

    DEBUGMSGTL(("vplexStats:handler", "Processing request (%d)\n", 
reqinfo->mode));

    switch (reqinfo->mode) {
        /*
         * Read-support (also covers GetNext requests)
         */
    case MODE_GET:
        cout << "vplexDirectorTable_handler" << endl;
        for (request=requests; request; request=request->next) {
            table_entry = (struct vplexDirectorTable_entry *)
                              netsnmp_extract_iterator_context(request);
            table_info  =     netsnmp_extract_table_info(      request);
    
            switch (table_info->colnum) {
            case COLUMN_VPLEXDIRECTORPRIMARYIPADDR:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                snmp_set_var_typed_integer( request->requestvb, ASN_IPADDRESS,
                                            
table_entry->vplexDirectorPrimaryIpAddr);
                break;
            case COLUMN_VPLEXDIRECTORFAILOVERIPADDR:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                snmp_set_var_typed_integer( request->requestvb, ASN_IPADDRESS,
                                            
table_entry->vplexDirectorFailoverIpAddr);
                break;
            case COLUMN_VPLEXDIRECTORNAME:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                //snmp_set_var_typed_integer( request->requestvb, ,
                 //                           table_entry->vplexDirectorName);
                                snmp_set_var_typed_value( 
request->requestvb,ASN_OCTET_STR, \
                                        (u_char 
*)table_entry->vplexDirectorName, strlen(table_entry->vplexDirectorName));
                break;
            default:
                netsnmp_set_request_error(reqinfo, request,
                                          SNMP_NOSUCHOBJECT);
                break;
            }
        }
        break;

    }
    return SNMP_ERR_NOERROR;
}
  
    /* Typical data structure for a row entry */
struct vplexDirectorFETable_entry {
    /* Index values */
    in_addr_t vplexDirectorPrimaryIpAddr;

    /* Column values */
    U64 vplexDirectorFEOpsRead;
    U64 vplexDirectorFEOpsWrite;
    U64 vplexDirectorFEOpsQueued;
    U64 vplexDirectorFEOpsActive;
    U64 vplexDirectorFEOpsAvgReadLatency;
    U64 vplexDirectorFEOpsAvgWriteLatency;
    U64 vplexDirectorFEBytesRead;
    U64 vplexDirectorFEBytesWrite;

    /* Illustrate using a simple linked list */
    int   valid;
    struct vplexDirectorFETable_entry *next;
};

struct vplexDirectorFETable_entry  *vplexDirectorFETable_head;

struct vplexDirectorFETable_entry *
vplexDirectorFETable_createEntry(in_addr_t  vplexDirectorPrimaryIpAddr);

/** Initialize the vplexDirectorFETable table by defining its contents and how 
it's structured */
void
initialize_table_vplexDirectorFETable(void)
{
    const oid vplexDirectorFETable_oid[] = {1,3,6,1,4,1,1139,21,2,2,5};
    const size_t vplexDirectorFETable_oid_len   = 
OID_LENGTH(vplexDirectorFETable_oid);
    netsnmp_handler_registration    *reg;
    netsnmp_iterator_info           *iinfo;
    netsnmp_table_registration_info *table_info;

    DEBUGMSGTL(("vplexStats:init", "initializing table 
vplexDirectorFETable\n"));

    reg = netsnmp_create_handler_registration(
              "vplexDirectorFETable",     vplexDirectorFETable_handler,
              vplexDirectorFETable_oid, vplexDirectorFETable_oid_len,
              HANDLER_CAN_RONLY
              );

    table_info = SNMP_MALLOC_TYPEDEF( netsnmp_table_registration_info );
    netsnmp_table_helper_add_indexes(table_info,
                           ASN_IPADDRESS,  /* index: vplexDirectorPrimaryIpAddr 
*/
                           0);
    table_info->min_column = COLUMN_VPLEXDIRECTORFEOPSREAD;
    table_info->max_column = COLUMN_VPLEXDIRECTORFEBYTESWRITE;
    
    iinfo = SNMP_MALLOC_TYPEDEF( netsnmp_iterator_info );
    iinfo->get_first_data_point = vplexDirectorFETable_get_first_data_point;
    iinfo->get_next_data_point  = vplexDirectorFETable_get_next_data_point;
    iinfo->table_reginfo        = table_info;
    
    netsnmp_register_table_iterator( reg, iinfo );

    /* Initialise the contents of the table here */
    struct vplexDirectorFETable_entry *entry;
        in_addr_t  vplexDirectorPrimaryIpAddr;
        
        cout << "initialize_table_vplexDirectorFETable" << endl;
        Stringvector idxList;
        std::vector<DirectorInfo> dirList = 
VPLEXConfigurator::getInstance()->getDirectorsInfo();
        VPLEXStatsManager* statsMgr = VPLEXStatsManager::getInstance();
        DirectorInfo dir;
        String ipAddress;

        for(std::vector<DirectorInfo>::iterator i = dirList.begin(); i != 
dirList.end(); i++)
        {
                dir = *i;
                ipAddress = dir.primaryIpAddress;
                cout << "ipAddress" << ipAddress << endl;
                
                //vplexDirectorPrimaryIpAddr = 
htonl(inet_addr(ipAddress.c_str()));
                
                vplexDirectorPrimaryIpAddr = inet_addr(ipAddress.c_str());
                cout << "Entry  IP" << vplexDirectorPrimaryIpAddr << endl;      
                
                entry = 
vplexDirectorFETable_createEntry(vplexDirectorPrimaryIpAddr);
                entry->valid = 1;

                idxList.push_back(ipAddress);
                statsMgr->initDirectorFEStats(idxList);
                idxList.erase(idxList.begin(),idxList.end());
        
        }

}


/* create a new row in the (unsorted) table */
struct vplexDirectorFETable_entry *
vplexDirectorFETable_createEntry(
                 in_addr_t  vplexDirectorPrimaryIpAddr
                ) {
    struct vplexDirectorFETable_entry *entry;

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

    entry->vplexDirectorPrimaryIpAddr = vplexDirectorPrimaryIpAddr;
    cout << "in vplexDirectorFETable_createEntry" << endl;
    cout << "ipAddress--IDX" << entry->vplexDirectorPrimaryIpAddr << endl;
    entry->next = vplexDirectorFETable_head;
    vplexDirectorFETable_head = entry;
    return entry;
}

/* remove a row from the table */
void
vplexDirectorFETable_removeEntry( struct vplexDirectorFETable_entry *entry ) {
    struct vplexDirectorFETable_entry *ptr, *prev;

    if (!entry)
        return;    /* Nothing to remove */

    for ( ptr  = vplexDirectorFETable_head, prev = NULL;
          ptr != NULL;
          prev = ptr, ptr = ptr->next ) {
        if ( ptr == entry )
            break;
    }
    if ( !ptr )
        return;    /* Can't find it */

    if ( prev == NULL )
        vplexDirectorFETable_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 *
vplexDirectorFETable_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 = vplexDirectorFETable_head;
    struct vplexDirectorFETable_entry *entry = (struct 
vplexDirectorFETable_entry *)*my_loop_context;
    cout << "in vplexDirectorFETable_get_first_data_point" << endl;

    cout <<  "ipAddress" << entry->vplexDirectorPrimaryIpAddr << endl;
    netsnmp_variable_list *list = 
vplexDirectorFETable_get_next_data_point(my_loop_context, my_data_context,
                                    put_index_data,  mydata );
    
    cout << "put_index_data" << *list->val.integer << endl;
    return list;
}

netsnmp_variable_list *
vplexDirectorFETable_get_next_data_point(void **my_loop_context,
                          void **my_data_context,
                          netsnmp_variable_list *put_index_data,
                          netsnmp_iterator_info *mydata)
{
    struct vplexDirectorFETable_entry *entry = (struct 
vplexDirectorFETable_entry *)*my_loop_context;
    netsnmp_variable_list *idx = put_index_data;

    if ( entry ) {
        cout << "iam in vplexDirectorFETable_get_next_data_point" << endl;
        cout << "idx" << idx << "ipAddress" << 
entry->vplexDirectorPrimaryIpAddr << endl;
        //snmp_set_var_typed_integer( idx, ASN_IPADDRESS, 
entry->vplexDirectorPrimaryIpAddr) ;
                snmp_set_var_typed_value( idx,ASN_IPADDRESS,(u_char *) 
&entry->vplexDirectorPrimaryIpAddr,\
                        sizeof(entry->vplexDirectorPrimaryIpAddr));
        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 vplexDirectorFETable table */
int
vplexDirectorFETable_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;
    struct vplexDirectorFETable_entry          *table_entry;

    DEBUGMSGTL(("vplexStats:handler", "Processing request (%d)\n", 
reqinfo->mode));

    switch (reqinfo->mode) {
        /*
         * Read-support (also covers GetNext requests)
         */
    case MODE_GET:
        for (request=requests; request; request=request->next) {
            table_entry = (struct vplexDirectorFETable_entry *)
                              netsnmp_extract_iterator_context(request);
            table_info  =     netsnmp_extract_table_info(      request);

                        if (table_entry)
                        cout << "table IP" << 
table_entry->vplexDirectorPrimaryIpAddr << endl;
                        
        
                        OID Attribute = getAttribute(reginfo,table_info);
                        

                        Stringvector idxList;
                        
                        String dirIP = getPrimaryIP(table_info);

                        idxList.push_back(dirIP);

        
                        VPLEXStatsManager* statsMgr = 
VPLEXStatsManager::getInstance();
                        
                        String retVal;
                        
                        int ret = statsMgr->Fetch(idxList,Attribute,retVal);
                        
                        cout << "retVal" << retVal << endl;
                        cout << "table_info->colnum" << table_info->colnum << 
endl;

            switch (table_info->colnum) {
            case COLUMN_VPLEXDIRECTORFEOPSREAD:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }

                                table_entry->vplexDirectorFEOpsRead = 
getCounter64(retVal);                             
                                
                                cout << "iam in COLUMN_VPLEXDIRECTORFEOPSREAD" 
<< table_entry->vplexDirectorFEOpsRead.high \
                                        << 
table_entry->vplexDirectorFEOpsRead.low << endl;
                                
                                snmp_set_var_typed_value( 
request->requestvb,ASN_COUNTER64,(u_char *) 
&table_entry->vplexDirectorFEOpsRead,\
                                        
sizeof(table_entry->vplexDirectorFEOpsRead));

                //snmp_set_var_typed_integer( request->requestvb, 
ASN_COUNTER64,table_entry->vplexDirectorFEOpsRead);
                break;
            case COLUMN_VPLEXDIRECTORFEOPSWRITE:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }

                                table_entry->vplexDirectorFEOpsWrite = 
getCounter64(retVal);                            
                                
                                cout << "iam in COLUMN_VPLEXDIRECTORFEOPSWRITE" 
<< table_entry->vplexDirectorFEOpsWrite.high \
                                        << 
table_entry->vplexDirectorFEOpsWrite.low << endl;
                                
                                snmp_set_var_typed_value( 
request->requestvb,ASN_COUNTER64,(u_char *) 
&table_entry->vplexDirectorFEOpsWrite,\
                                        
sizeof(table_entry->vplexDirectorFEOpsWrite));

 //               snmp_set_var_typed_integer( request->requestvb, ASN_COUNTER64,
 //                                           
table_entry->vplexDirectorFEOpsWrite);
                break;
            case COLUMN_VPLEXDIRECTORFEOPSQUEUED:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                                table_entry->vplexDirectorFEOpsQueued = 
getCounter64(retVal);                           
                                
                                cout << "iam in 
COLUMN_vplexDirectorFEOpsQueued" << table_entry->vplexDirectorFEOpsQueued.high \
                                        << 
table_entry->vplexDirectorFEOpsQueued.low << endl;
                                
                                snmp_set_var_typed_value( 
request->requestvb,ASN_COUNTER64,(u_char *) 
&table_entry->vplexDirectorFEOpsQueued,\
                                        
sizeof(table_entry->vplexDirectorFEOpsQueued));

                //snmp_set_var_typed_integer( request->requestvb, ASN_COUNTER64,
                  //                          
table_entry->vplexDirectorFEOpsQueued);
                break;
            case COLUMN_VPLEXDIRECTORFEOPSACTIVE:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                                table_entry->vplexDirectorFEOpsActive = 
getCounter64(retVal);                           
                                
                                cout << "iam in 
COLUMN_vplexDirectorFEOpsActive" << table_entry->vplexDirectorFEOpsActive.high \
                                        << 
table_entry->vplexDirectorFEOpsActive.low << endl;
                                
                                snmp_set_var_typed_value( 
request->requestvb,ASN_COUNTER64,(u_char *) 
&table_entry->vplexDirectorFEOpsActive,\
                                        
sizeof(table_entry->vplexDirectorFEOpsActive));

              //  snmp_set_var_typed_integer( request->requestvb, ASN_COUNTER64,
              //                              
table_entry->vplexDirectorFEOpsActive);
                break;
            case COLUMN_VPLEXDIRECTORFEOPSAVGREADLATENCY:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                                table_entry->vplexDirectorFEOpsAvgReadLatency = 
getCounter64(retVal);                           
                                
                                cout << "iam in 
COLUMN_vplexDirectorFEOpsAvgReadLatency" << 
table_entry->vplexDirectorFEOpsAvgReadLatency.high \
                                        << 
table_entry->vplexDirectorFEOpsAvgReadLatency.low << endl;
                                
                                snmp_set_var_typed_value( 
request->requestvb,ASN_COUNTER64,(u_char *) 
&table_entry->vplexDirectorFEOpsAvgReadLatency,\
                                        
sizeof(table_entry->vplexDirectorFEOpsAvgReadLatency));

             //   snmp_set_var_typed_integer( request->requestvb, ASN_COUNTER64,
               //                             
table_entry->vplexDirectorFEOpsAvgReadLatency);
                break;
            case COLUMN_VPLEXDIRECTORFEOPSAVGWRITELATENCY:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                                table_entry->vplexDirectorFEOpsAvgWriteLatency 
= getCounter64(retVal);                          
                                
                                cout << "iam in 
COLUMN_vplexDirectorFEOpsAvgWriteLatency" << 
table_entry->vplexDirectorFEOpsAvgWriteLatency.high \
                                        << 
table_entry->vplexDirectorFEOpsAvgWriteLatency.low << endl;
                                
                                snmp_set_var_typed_value( 
request->requestvb,ASN_COUNTER64,(u_char *) 
&table_entry->vplexDirectorFEOpsAvgWriteLatency,\
                                        
sizeof(table_entry->vplexDirectorFEOpsAvgWriteLatency));

//                snmp_set_var_typed_integer( request->requestvb, ASN_COUNTER64,
  //                                          
table_entry->vplexDirectorFEOpsAvgWriteLatency);
                break;
            case COLUMN_VPLEXDIRECTORFEBYTESREAD:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                                table_entry->vplexDirectorFEBytesRead = 
getCounter64(retVal);                           
                                
                                cout << "iam in 
COLUMN_vplexDirectorFEBytesRead" << table_entry->vplexDirectorFEBytesRead.high \
                                        << 
table_entry->vplexDirectorFEBytesRead.low << endl;
                                
                                snmp_set_var_typed_value( 
request->requestvb,ASN_COUNTER64,(u_char *) 
&table_entry->vplexDirectorFEBytesRead,\
                                        
sizeof(table_entry->vplexDirectorFEBytesRead));

//                snmp_set_var_typed_integer( request->requestvb, ASN_COUNTER64,
//                                            
table_entry->vplexDirectorFEBytesRead);
                break;
            case COLUMN_VPLEXDIRECTORFEBYTESWRITE:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;

                }
                                table_entry->vplexDirectorFEBytesWrite = 
getCounter64(retVal);                          
                                
                                cout << "iam in 
COLUMN_vplexDirectorFEBytesWrite" << 
table_entry->vplexDirectorFEBytesWrite.high \
                                        << 
table_entry->vplexDirectorFEBytesWrite.low << endl;
                                
                                snmp_set_var_typed_value( 
request->requestvb,ASN_COUNTER64,(u_char *) 
&table_entry->vplexDirectorFEBytesWrite,\
                                        
sizeof(table_entry->vplexDirectorFEBytesWrite));


//                snmp_set_var_typed_integer( request->requestvb, ASN_COUNTER64,
//                                            
table_entry->vplexDirectorFEBytesWrite);
                break;
            default:
                netsnmp_set_request_error(reqinfo, request,
                                          SNMP_NOSUCHOBJECT);
                break;
            }
        }
        break;

    }
    return SNMP_ERR_NOERROR;
}
------------------------------------------------------------------------------
Sell apps to millions through the Intel(R) Atom(Tm) Developer Program
Be part of this innovative community and reach millions of netbook users 
worldwide. Take advantage of special opportunities to increase revenue and 
speed time-to-market. Join now, and jumpstart your future.
http://p.sf.net/sfu/intel-atom-d2d
_______________________________________________
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