how to Initialise the contents of the table?Just give me a example

"飞飞" <[email protected]>
Newsgroups gmane.network.net-snmp.user
Message-ID <[email protected]>
I think I am going to die......
  
 Just give me a example,so I can imitate  it done my job...pls
  
  
  
  
  
  
  
  
 /*
 * Note: this file originally auto-generated by mib2c using
 *  : mib2c.iterate.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 "uit.h"
#include <string.h>
#include <stdio.h>
 #define  NNN 8 
 int intp[1] = {0};
u_long uintp[4] = {5,5,5};
unsigned char *ucharp = "uituitb";
int i=1,j=1;
 /** Initializes the uit module */
void
init_uit(void)
{
  /* here we initialize all the tables we're planning on supporting */
    initialize_table_diskSystemTable();
}
 //  # Determine the first/last column names
 /** Initialize the diskSystemTable table by defining its contents and how it's structured */
void
initialize_table_diskSystemTable(void)
{
    static oid diskSystemTable_oid[] = {1,3,6,1,4,1,30901,2090,7000,1,1};
    size_t diskSystemTable_oid_len   = OID_LENGTH(diskSystemTable_oid);
    netsnmp_handler_registration    *reg;
    netsnmp_iterator_info           *iinfo;
    netsnmp_table_registration_info *table_info;
     reg = netsnmp_create_handler_registration(
              "diskSystemTable",     diskSystemTable_handler,
              diskSystemTable_oid, diskSystemTable_oid_len,
              HANDLER_CAN_RONLY
              );
     table_info = SNMP_MALLOC_TYPEDEF( netsnmp_table_registration_info );
    netsnmp_table_helper_add_indexes(table_info,
                           ASN_UNSIGNED,  /* index: portID */
                           0);
    table_info->min_column = COLUMN_PORTID;
    table_info->max_column = COLUMN_SN;
    
    iinfo = SNMP_MALLOC_TYPEDEF( netsnmp_iterator_info );
    iinfo->get_first_data_point = diskSystemTable_get_first_data_point;
    iinfo->get_next_data_point  = diskSystemTable_get_next_data_point;
    iinfo->table_reginfo        = table_info;
    
    netsnmp_register_table_iterator( reg, iinfo );
     /* Initialise the contents of the table here */
    
    diskSystemTable_createEntry();
    diskSystemTable_createEntry();
    diskSystemTable_createEntry();
    diskSystemTable_createEntry();
    diskSystemTable_createEntry();
    diskSystemTable_createEntry();
    diskSystemTable_createEntry();
    diskSystemTable_createEntry();
    diskSystemTable_createEntry();
    diskSystemTable_createEntry();
    diskSystemTable_createEntry();
    diskSystemTable_createEntry();
    diskSystemTable_createEntry();
}
     /* Typical data structure for a row entry */
struct diskSystemTable_entry {
    /* Index values */
    u_long portID;
     /* Column values */
/*    u_long portID;*/
    u_long encID;
    u_long slotID;
    u_long speed;
    long status;
    u_long revNew;
    long smtStatus;
    long bufStatus;
    long dstype;
    u_long uuID;
    u_long size;
    char diskID[NNN];
    size_t diskID_len;
    char vendor[NNN];
    size_t vendor_len;
    char revision[NNN];
    size_t revision_len;
    char product[NNN];
    size_t product_len;
    char sn[NNN];
    size_t sn_len;
     /* Illustrate using a simple linked list */
    int   valid;
    struct diskSystemTable_entry *next;
};
 struct diskSystemTable_entry  *diskSystemTable_head;
 /* create a new row in the (unsorted) table */
struct diskSystemTable_entry *
diskSystemTable_createEntry(
                 u_long  portID,
                ) {
    struct diskSystemTable_entry *entry;
     entry = SNMP_MALLOC_TYPEDEF(struct diskSystemTable_entry);
    if (!entry)
        return NULL;
     entry->portID = portID;
    entry->next = diskSystemTable_head;
    diskSystemTable_head = entry;
    return entry;
}
 /* remove a row from the table */
void
diskSystemTable_removeEntry( struct diskSystemTable_entry *entry ) {
    struct diskSystemTable_entry *ptr, *prev;
     if (!entry)
        return;    /* Nothing to remove */
     for ( ptr  = diskSystemTable_head, prev = NULL;
          ptr != NULL;
          prev = ptr, ptr = ptr->next ) {
        if ( ptr == entry )
            break;
    }
    if ( !ptr )
        return;    /* Can't find it */
     if ( prev == NULL )
        diskSystemTable_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 *
diskSystemTable_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 = diskSystemTable_head;
    return diskSystemTable_get_next_data_point(my_loop_context, my_data_context,
                                    put_index_data,  mydata );
}
 netsnmp_variable_list *
diskSystemTable_get_next_data_point(void **my_loop_context,
                          void **my_data_context,
                          netsnmp_variable_list *put_index_data,
                          netsnmp_iterator_info *mydata)
{
    struct diskSystemTable_entry *entry = (struct diskSystemTable_entry *)*my_loop_context;
    netsnmp_variable_list *idx = put_index_data;
     if ( entry ) {
        snmp_set_var_typed_integer( idx, ASN_UNSIGNED, entry->portID );
        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 diskSystemTable table */
int
diskSystemTable_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 diskSystemTable_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 diskSystemTable_entry *)
                              netsnmp_extract_iterator_context(request);
            table_info  =     netsnmp_extract_table_info(      request);
    
            switch (table_info->colnum) {
            case COLUMN_PORTID:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                snmp_set_var_typed_integer( request->requestvb, ASN_UNSIGNED,
                                            table_entry->portID);
                break;
            case COLUMN_ENCID:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                snmp_set_var_typed_integer( request->requestvb, ASN_UNSIGNED,
                                            table_entry->encID);
                break;
            case COLUMN_SLOTID:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                snmp_set_var_typed_integer( request->requestvb, ASN_UNSIGNED,
                                            table_entry->slotID);
                break;
            case COLUMN_SPEED:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                snmp_set_var_typed_integer( request->requestvb, ASN_UNSIGNED,
                                            table_entry->speed);
                break;
            case COLUMN_STATUS:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                snmp_set_var_typed_integer( request->requestvb, ASN_INTEGER,
                                            table_entry->status);
                break;
            case COLUMN_REVNEW:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                snmp_set_var_typed_integer( request->requestvb, ASN_UNSIGNED,
                                            table_entry->revNew);
                break;
            case COLUMN_SMTSTATUS:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                snmp_set_var_typed_integer( request->requestvb, ASN_INTEGER,
                                            table_entry->smtStatus);
                break;
            case COLUMN_BUFSTATUS:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                snmp_set_var_typed_integer( request->requestvb, ASN_INTEGER,
                                            table_entry->bufStatus);
                break;
            case COLUMN_DSTYPE:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                snmp_set_var_typed_integer( request->requestvb, ASN_INTEGER,
                                            table_entry->dstype);
                break;
            case COLUMN_UUID:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                snmp_set_var_typed_integer( request->requestvb, ASN_UNSIGNED,
                                            table_entry->uuID);
                break;
            case COLUMN_SIZE:
                if ( !table_entry ) {
                    netsnmp_set_request_error(reqinfo, request,
                                              SNMP_NOSUCHINSTANCE);
                    continue;
                }
                snmp_set_var_typed_integer( request->requestvb, ASN_UNSIGNED,
                                            table_entry->size);
                break;
            case COLUMN_DISKID:
                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->diskID,
                                          table_entry->diskID_len);
                break;
            case COLUMN_VENDOR:
                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->vendor,
                                          table_entry->vendor_len);
                break;
            case COLUMN_REVISION:
                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->revision,
                                          table_entry->revision_len);
                break;
            case COLUMN_PRODUCT:
                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->product,
                                          table_entry->product_len);
                break;
            case COLUMN_SN:
                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->sn,
                                          table_entry->sn_len);
                break;
            default:
                netsnmp_set_request_error(reqinfo, request,
                                          SNMP_NOSUCHOBJECT);
                break;
            }
        }
        break;
     }
    return SNMP_ERR_NOERROR;
}

------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev

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