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 */
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.