what wrong with my mib2c.iterate.conf generate .c file???

"飞飞" <[email protected]>
Newsgroups gmane.network.net-snmp.user
Message-ID <[email protected]>
Dear Dave ,Mike and ALL:
  
 I really think I have done my mib2c file job,but the MgG-soft brower's result dispirit me heavily.
  
 I got:
  
 2464: enterprises.30901.2090.7000.1.1.1.1.111 (gauge) 111
2465: enterprises.30901.2090.7000.1.1.1.2.111 (gauge) 111
2466: enterprises.30901.2090.7000.1.1.1.3.111 (gauge) 111
2467: enterprises.30901.2090.7000.1.1.1.4.111 (gauge) 1
2468: enterprises.30901.2090.7000.1.1.1.5.111 (integer) 1
2469: enterprises.30901.2090.7000.1.1.1.6.111 (gauge) 1
2470: enterprises.30901.2090.7000.1.1.1.7.111 (integer) 1
2471: enterprises.30901.2090.7000.1.1.1.8.111 (integer) 1
2472: enterprises.30901.2090.7000.1.1.1.9.111 (integer) 1
2473: enterprises.30901.2090.7000.1.1.1.10.111 (gauge) 1
2474: enterprises.30901.2090.7000.1.1.1.11.111 (gauge) 1
2475: enterprises.30901.2090.7000.1.1.1.12.111 (octet string) uituits
2476: enterprises.30901.2090.7000.1.1.1.13.111 (octet string) uituits
2477: enterprises.30901.2090.7000.1.1.1.14.111 (octet string) uituits
2478: enterprises.30901.2090.7000.1.1.1.15.111 (octet string) uituits
2479: enterprises.30901.2090.7000.1.1.1.16.111 (octet string) uituits
  
 It is so weird,my .c file is:
  
  
 /*
 * 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"

 #define  NNN 8 
int intp[1] = {0};
u_long uintp[4] = {5,5,5};
unsigned char *ucharp = "uituitb";
int i=1,j=1;
 
    /* 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 = NULL;
 /* create a new row in the (unsorted) table */
struct diskSystemTable_entry *
diskSystemTable_createEntry(
                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
                ) {
    struct diskSystemTable_entry *entry;
     entry = SNMP_MALLOC_TYPEDEF(struct diskSystemTable_entry);
    if (!entry)
        return NULL;
     entry->portID = portID;
    entry->encID = encID;
    entry->slotID = slotID;
    entry->speed = speed;
    entry->status = status;
    entry->revNew = revNew;
    entry->smtStatus = smtStatus ;
    entry->bufStatus = bufStatus ;
    entry->dstype = dstype    ;
    entry->uuID = uuID      ;
    entry->size = size      ;
    strcpy(entry->diskID,diskID);
    entry->diskID_len   = diskID_len;
    strcpy(entry->vendor,vendor);
    entry->vendor_len   = vendor_len;
    strcpy(entry->revision,revision);
    entry->revision_len = revision_len;
    strcpy(entry->product,product);
    entry->product_len  = product_len ;
    strcpy(entry->sn,sn);
    entry->sn_len = sn_len;
    entry->next = diskSystemTable_head;
    diskSystemTable_head = entry;
    return entry;
}
  
 /** 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(111,111,111, 1,1,1,1,1,1,1,1,"uituits", 7,"uituits", 7,"uituits", 7,"uituits", 7,"uituits", 7);
     
}
 /* 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;
}

------------------------------------------------------------------------------
Return on Information:
Google Enterprise Search pays you back
Get the facts.
http://p.sf.net/sfu/google-dev2dev

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