HELP!!!--------.c,.h modify Problems

"飞飞" <[email protected]>
Newsgroups gmane.network.net-snmp.user
Message-ID <[email protected]>
Does this question is not worth answering???
   
 Any omments on this design is welcome. Is there anything you would revise? If so, how?
  
 How to modfiy the .c file init_XXX(void) function?
  
  Below is my new problem:
  
 My mib file is ok(MG-soft checked).my mib had added in the mib library rightly(snmp.conf:mibs +ALL),and snmptranslate -IR -Tp got my mib tree rightly.
  
 I use command 'mib2c uit' and chose net-snmp code style,the next 1,and 1,I got the uit.c,uit.h files.
 My uit.c file and some modifies.
 /*
 * 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 <string.h>
#include "uit.h"
#define  NNN 8
/** 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,
                           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 */
}
     /* Typical data structure for a row entry */
struct diskSystemTable_entry {
    /* Index values */
     /* 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(
                ) {
    struct diskSystemTable_entry *entry;
     entry = SNMP_MALLOC_TYPEDEF(struct diskSystemTable_entry);
    if (!entry)
        return NULL;
     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 ) {
        *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;
                }
                table_entry->portID=123;
                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;
                }
                table_entry->encID=124;
                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;
                }
                table_entry->slotID=125;
                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;
                }
               table_entry->speed=126; 
                
                
                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;
                }
                table_entry->status=127;
                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;
                }
                table_entry->revNew=128;
                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;
                }
                table_entry->smtStatus=129;
                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;
                }
                table_entry->bufStatus=130;
                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;
                }
                table_entry->dstype=131;
                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;
                }
                table_entry->uuID=132;
                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;
                }
                table_entry->size=134;
                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;
                }
                memcpy(table_entry->diskID,"luo",3);
                table_entry->diskID_len=3;
                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;
                }
                memcpy(table_entry->vendor,"xi",2);
                table_entry->vendor_len=2;
                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;
                }
                memcpy(table_entry->revision,"qing",4);
                table_entry->revision_len=4;
                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;
                }
                memcpy(table_entry->product,"kai",3);
                table_entry->product_len=3;
                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;
                }
                memcpy(table_entry->sn,"yue",3);
                table_entry->sn_len=3;
                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;
}

 I put the files in net-snmp source code  ./agent/mibgroup/ directory. 
  
 I want to static load my MIB module use the command 
./configure  --with-mib-modules="uit";make;make install
  
 when I had done the installation,I cannot load my uit module,I use command 'snmpwalk -v2c -c public  localhost' and 'snmpget'but get nothing i really need about my mib. 
  
 Who can tell me where I was wrong here about my mib?
  
 TIA
  
 Alex

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july

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