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