Help me: Why I can't snmpwalk my MIB?
"李铭岳" <[email protected]>
| Newsgroups | gmane.network.net-snmp.user |
|---|---|
| Message-ID | <[email protected]> |
Hello,
I defined my simple MIB file DVB-IP-SIM-MIB.txt which only has a table , and then I generated dvbSubboardInfoTable.c and dvbSubboardInfoTable.h file using mib2c dvbSubboardInfoTable .
Copy DVB-IP-SIM-MIB.txt to mibs/ and Copy .h and .c to agent/mibgroup/ ,then ./configure --with-mib-modules=
"dvbSubboardInfoTable" ;make ;make install .
evething is OK.But when I was snmpwalking MIB using "snmpwalk -v 2c -c public localhost dvbSubboardInfoTable ", agent has no reponse. when snmpwalk other default MIB, it's OK ,e,g, " snmpwalk -v 2c -c public localhost tcp ".
I attached my MIB and .h and .c file in the letter ,please help me modify some error.
Thank you !
samuel
2006-08-11
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
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
DVB-IP-SIM-MIB.txt
(application/octet-stream, 2.8 KB)
DVB-IP-SIM-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, mib-2,
Integer32, IpAddress, Unsigned32 ,experimental
FROM SNMPv2-SMI;
DVBIPMib MODULE-IDENTITY
LAST-UPDATED "200311281730Z"
ORGANIZATION "SJTU Digital Technology Research Center"
CONTACT-INFO
" Samuel Li
Postal: Institute of Image Processing and Image Communication
Shanghai Jiaotong University
1954 Huashan Road
Shanghai, 200030
China
Phone: +86-021-34204503
Email: [email protected]"
DESCRIPTION
"The MIB module for DVB over IP gateway system management. "
REVISION "0312180000Z"
DESCRIPTION
"The initial version of this MIB module was part of expermental."
::= { experimental sjtudtrc(210) 1 }
DVBIPMibObjects OBJECT IDENTIFIER ::= { DVBIPMib 1 }
dvbSubboardInfoTable OBJECT-TYPE
SYNTAX SEQUENCE OF DvbSubboardInfoEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Subboard Information Table."
::= { DVBIPMibObjects 1 }
dvbSubboardInfoEntry OBJECT-TYPE
SYNTAX DvbSubboardInfoEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The Entry of Subboard Information Table."
INDEX { dvbSubboardNum }
::= { dvbSubboardInfoTable 1 }
DvbSubboardInfoEntry ::= SEQUENCE {
dvbSubboardNum Unsigned32,
dvbSubboardType INTEGER,
dvbSubboardStatus INTEGER,
dvbSubboardWorkSetting INTEGER,
dvbSubboardProgramNumber Unsigned32
}
dvbSubboardNum OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Number of this Subboard."
::= { dvbSubboardInfoEntry 1}
dvbSubboardType OBJECT-TYPE
SYNTAX INTEGER{
DM642(1),
VWEB(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Type of Subboard, either DM642 or VWEB."
::= { dvbSubboardInfoEntry 2}
dvbSubboardStatus OBJECT-TYPE
SYNTAX INTEGER{
DEAD(1),
ALIVE(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Status of This Subboard,either DEAD or ALIVE. "
::= { dvbSubboardInfoEntry 3}
dvbSubboardWorkSetting OBJECT-TYPE
SYNTAX INTEGER{
WORK(1),
RESET(2),
WAIT(3),
IDLE(4)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Operation on Work Setting."
::= { dvbSubboardInfoEntry 4}
dvbSubboardProgramNumber OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Tha Total Program Number on This Subboard."
::= { dvbSubboardInfoEntry 5}
END
dvbSubboardInfoTable.c
(application/octet-stream, 11.1 KB)
/*
* Note: this file originally auto-generated by mib2c using
* : mib2c.iterate.conf,v 5.17 2005/05/09 08:13:45 dts12 Exp $
*/
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include "dvbSubboardInfoTable.h"
/*
* Typical data structure for a row entry
*/
struct dvbSubboardInfoTable_entry {
/*
* Index values
*/
u_long dvbSubboardNum;
/*
* Column values
*/
/* u_long dvbSubboardNum; */ //samuel:avoid same define
long dvbSubboardType;
long dvbSubboardStatus;
long dvbSubboardWorkSetting;
long old_dvbSubboardWorkSetting;
u_long dvbSubboardProgramNumber;
/*
* Illustrate using a simple linked list
*/
/* int valid; */
struct dvbSubboardInfoTable_entry *next;
};
struct dvbSubboardInfoTable_entry *dvbSubboardInfoTable_head;
/** Initializes the dvbSubboardInfoTable module */
void
init_dvbSubboardInfoTable(void)
{
/*
* here we initialize all the tables we're planning on supporting
*/
initialize_table_dvbSubboardInfoTable();
}
/** Initialize the dvbSubboardInfoTable table by defining its contents and how it's structured */
void
initialize_table_dvbSubboardInfoTable(void)
{
static oid dvbSubboardInfoTable_oid[] =
{ 1, 3, 6, 1, 3, 210, 1, 1, 1 };
size_t dvbSubboardInfoTable_oid_len =
OID_LENGTH(dvbSubboardInfoTable_oid);
netsnmp_handler_registration *reg;
netsnmp_iterator_info *iinfo;
netsnmp_table_registration_info *table_info;
struct dvbSubboardInfoTable_entry *temp;
int i;
reg =
netsnmp_create_handler_registration("dvbSubboardInfoTable",
dvbSubboardInfoTable_handler,
dvbSubboardInfoTable_oid,
dvbSubboardInfoTable_oid_len,
HANDLER_CAN_RWRITE);
table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
netsnmp_table_helper_add_indexes(table_info, ASN_UNSIGNED, /* index: dvbSubboardNum */
0);
table_info->min_column = COLUMN_DVBSUBBOARDNUM; //samuel: need to modify
table_info->max_column = COLUMN_DVBSUBBOARDPROGRAMNUMBER;
iinfo = SNMP_MALLOC_TYPEDEF(netsnmp_iterator_info);
iinfo->get_first_data_point =
dvbSubboardInfoTable_get_first_data_point;
iinfo->get_next_data_point = dvbSubboardInfoTable_get_next_data_point;
iinfo->table_reginfo = table_info;
netsnmp_register_table_iterator(reg, iinfo);
/*
* Initialise the contents of the table here
*/
for( i = 1; i < 5; i++) //samuel: maybe another way to Initialise
{
temp = SNMP_MALLOC_TYPEDEF(struct dvbSubboardInfoTable_entry);
if (!temp)
return ;
temp->dvbSubboardNum = i;
temp->dvbSubboardType = 1;
temp->dvbSubboardStatus = 2;
temp->dvbSubboardWorkSetting = 3;
temp->old_dvbSubboardWorkSetting = 3;
temp->next = dvbSubboardInfoTable_head;
dvbSubboardInfoTable_head = temp;
}
}
/*
* create a new row in the (unsorted) table
*/
struct dvbSubboardInfoTable_entry *
dvbSubboardInfoTable_createEntry(u_long dvbSubboardNum )
{
struct dvbSubboardInfoTable_entry *entry;
entry = SNMP_MALLOC_TYPEDEF(struct dvbSubboardInfoTable_entry);
if (!entry)
return NULL;
entry->dvbSubboardNum = dvbSubboardNum;
entry->next = dvbSubboardInfoTable_head;
dvbSubboardInfoTable_head = entry;
return entry;
}
/*
* remove a row from the table
*/
void
dvbSubboardInfoTable_removeEntry(struct dvbSubboardInfoTable_entry *entry)
{
struct dvbSubboardInfoTable_entry *ptr, *prev;
if (!entry)
return; /* Nothing to remove */
for (ptr = dvbSubboardInfoTable_head, prev = NULL;
ptr != NULL; prev = ptr, ptr = ptr->next) {
if (ptr == entry)
break;
}
if (!ptr)
return; /* Can't find it */
if (prev == NULL)
dvbSubboardInfoTable_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 *
dvbSubboardInfoTable_get_first_data_point(void **my_loop_context,
void **my_data_context,
netsnmp_variable_list *
put_index_data,
netsnmp_iterator_info *mydata)
{
if(dvbSubboardInfoTable_head == NULL)
return NULL;
*my_loop_context = (void *)dvbSubboardInfoTable_head; //samuel:modify
return dvbSubboardInfoTable_get_next_data_point(my_loop_context,
my_data_context,
put_index_data,
mydata);
}
netsnmp_variable_list *
dvbSubboardInfoTable_get_next_data_point(void **my_loop_context,
void **my_data_context,
netsnmp_variable_list *
put_index_data,
netsnmp_iterator_info *mydata)
{
struct dvbSubboardInfoTable_entry *entry =
(struct dvbSubboardInfoTable_entry *) *my_loop_context;
netsnmp_variable_list *idx = put_index_data;
if (entry) {
snmp_set_var_value(idx, (u_char *)&entry->dvbSubboardNum,
sizeof(entry->dvbSubboardNum));
idx = idx->next_variable;
*my_data_context = (void *) entry;
*my_loop_context = (void *) entry->next;
} else {
return NULL;
}
return put_index_data; //samuel: added
}
/** handles requests for the dvbSubboardInfoTable table */
int
dvbSubboardInfoTable_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 dvbSubboardInfoTable_entry *table_entry;
u_long state; //samuel: increase
long status;
switch (reqinfo->mode) {
/*
* Read-support (also covers GetNext requests)
*/
case MODE_GET:
for (request = requests; request; request = request->next) {
table_entry = (struct dvbSubboardInfoTable_entry *)
netsnmp_extract_iterator_context(request);
table_info = netsnmp_extract_table_info(request);
switch (table_info->colnum) {
case COLUMN_DVBSUBBOARDNUM:
state = table_entry->dvbSubboardNum;
snmp_set_var_typed_value(request->requestvb, ASN_UNSIGNED,
(u_char *)&state,
sizeof(state));
break;
case COLUMN_DVBSUBBOARDTYPE:
status = table_entry->dvbSubboardType;
snmp_set_var_typed_value(request->requestvb, ASN_INTEGER,
(u_char *)&status,
sizeof(status));
break;
case COLUMN_DVBSUBBOARDSTATUS:
status = table_entry->dvbSubboardStatus;
snmp_set_var_typed_value(request->requestvb, ASN_INTEGER,
(u_char *)&status,
sizeof(status));
break;
case COLUMN_DVBSUBBOARDWORKSETTING:
status = table_entry->dvbSubboardWorkSetting;
snmp_set_var_typed_value(request->requestvb, ASN_INTEGER,
(u_char *)&status,
sizeof(status));
break;
case COLUMN_DVBSUBBOARDPROGRAMNUMBER:
state = table_entry->dvbSubboardProgramNumber;
snmp_set_var_typed_value(request->requestvb, ASN_UNSIGNED,
(u_char *)&state,
sizeof(state));
break;
}
}
break;
/*
* Write-support
*/
case MODE_SET_RESERVE1:
for (request = requests; request; request = request->next) {
table_entry = (struct dvbSubboardInfoTable_entry *)
netsnmp_extract_iterator_context(request);
table_info = netsnmp_extract_table_info(request);
switch (table_info->colnum) {
case COLUMN_DVBSUBBOARDWORKSETTING:
if (request->requestvb->type != ASN_INTEGER) {
netsnmp_set_request_error(reqinfo, request,
SNMP_ERR_WRONGTYPE);
return SNMP_ERR_NOERROR;
}
/*
* Also may need to check size/value
*/
break;
default:
netsnmp_set_request_error(reqinfo, request,
SNMP_ERR_NOTWRITABLE);
return SNMP_ERR_NOERROR;
}
}
break;
case MODE_SET_RESERVE2:
break;
case MODE_SET_FREE:
break;
case MODE_SET_ACTION:
for (request = requests; request; request = request->next) {
table_entry = (struct dvbSubboardInfoTable_entry *)
netsnmp_extract_iterator_context(request);
table_info = netsnmp_extract_table_info(request);
switch (table_info->colnum) {
case COLUMN_DVBSUBBOARDWORKSETTING:
/*
* Need to save old 'table_entry->dvbSubboardWorkSetting' value.
* May need to use 'memcpy'
*/
table_entry->old_dvbSubboardWorkSetting =
table_entry->dvbSubboardWorkSetting;
table_entry->dvbSubboardWorkSetting =
*( request->requestvb->val.integer );
break;
}
}
break;
case MODE_SET_UNDO:
for (request = requests; request; request = request->next) {
table_entry = (struct dvbSubboardInfoTable_entry *)
netsnmp_extract_iterator_context(request);
table_info = netsnmp_extract_table_info(request);
switch (table_info->colnum) {
case COLUMN_DVBSUBBOARDWORKSETTING:
/*
* Need to restore old 'table_entry->dvbSubboardWorkSetting' value.
* May need to use 'memcpy'
*/
table_entry->dvbSubboardWorkSetting =
table_entry->old_dvbSubboardWorkSetting;
break;
}
}
break;
case MODE_SET_COMMIT:
break;
}
return SNMP_ERR_NOERROR;
}
dvbSubboardInfoTable.h
(application/octet-stream, 839 B)
/* * Note: this file originally auto-generated by mib2c using * : mib2c.iterate.conf,v 5.17 2005/05/09 08:13:45 dts12 Exp $ */ #ifndef DVBSUBBOARDINFOTABLE_H #define DVBSUBBOARDINFOTABLE_H /* * function declarations */ void init_dvbSubboardInfoTable(void); void initialize_table_dvbSubboardInfoTable(void); Netsnmp_Node_Handler dvbSubboardInfoTable_handler; Netsnmp_First_Data_Point dvbSubboardInfoTable_get_first_data_point; Netsnmp_Next_Data_Point dvbSubboardInfoTable_get_next_data_point; /* * column number definitions for table dvbSubboardInfoTable */ #define COLUMN_DVBSUBBOARDNUM 1 #define COLUMN_DVBSUBBOARDTYPE 2 #define COLUMN_DVBSUBBOARDSTATUS 3 #define COLUMN_DVBSUBBOARDWORKSETTING 4 #define COLUMN_DVBSUBBOARDPROGRAMNUMBER 5 #endif /* DVBSUBBOARDINFOTABLE_H */