Fwd: query in mib2c

Janki Chhatbar <[email protected]>
Newsgroups gmane.network.net-snmp.user
Message-ID <CAHeQesepcTj9x8DFGenO2qO3gAurFmcvwjXdHjBYLNEa8+hP1A@mail.gmail.com>
Hi

I am working on net-snmp since past few days. I want lldpLocChassisId from
Q-BRIDGE-MIB.

I have added the mib and able to translate the OIDs.

Now I want to do get.

I did mib2c -c mib2c.scalar.conf lldpdLocalSystemData. lldpLocSystemData.c
and lldpLocSystemData.h files are generated in the folder /agent/mibgroup

I ran ./configure --with-mib-modules"lldpLocSystemData", make and sudo make
install

lldpLocSystemData.o and lldpLocSystemData.lo files are generated.

When I do snmpget -v 2c -c public localhost Q-BRIDGE-MIB::
lldpLocChassisId, I get unidentified object error.

When I run gcc lldpLocSsytemData.c -c lldpLocSystemData.o, it gives
undefined reference to functions snmp_get_do_debugging, debugmsgtoken,
debugmsg, netsnmp_create_handle_registration, netsnmp_register_scalar,
snmp_set_var_typed_value, snmp_log.

Can anyone please help me? I am attaching .c and .h files




Janki Chhatbar
M.Tech (Embedded Systems)
Nirma University
(+91) 9409239106

------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk

_______________________________________________
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
lldpLocalSystemData.h (text/x-chdr, 859 B)
/*
 * Note: this file originally auto-generated by mib2c using
 *        $
 */
#ifndef LLDPLOCALSYSTEMDATA_H
#define LLDPLOCALSYSTEMDATA_H

#ifdef __cplus
extern "C" {
#endif

config_require(Q-BRIDGE-MIB/lldpLocalSystemData)
config_add_mib(Q-BRIDGE-MIB)

#include <net-snmp/varbind_api.h>

/* function declarations */
void init_lldpLocalSystemData(void);
Netsnmp_Node_Handler handle_lldpLocChassisIdSubtype;
Netsnmp_Node_Handler handle_lldpLocChassisId;
Netsnmp_Node_Handler handle_lldpLocSysName;
Netsnmp_Node_Handler handle_lldpLocSysDesc;
Netsnmp_Node_Handler handle_lldpLocSysCapSupported;
Netsnmp_Node_Handler handle_lldpLocSysCapEnabled;
NETSNMP_IMPORT void debugmsg(const char *token, const char *format,...);
NETSNMP_IMPORT void debugmsgtoken(const char *token, const char *format,...);
#ifdef __cplusplus
}
#endif

#endif /* LLDPLOCALSYSTEMDATA_H */
lldpLocalSystemData.c (text/x-csrc, 9.1 KB)
/*
 * Note: this file originally auto-generated by mib2c using
 *        $
 */

#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include "lldpLocalSystemData.h"
#include <net-snmp/varbind_api.h>
#include <net-snmp/library/snmp_debug.h>

static u_long chassis_id_subtype = 4;

/** Initializes the lldpLocalSystemData module */
void
init_lldpLocalSystemData(void)
{
    const oid lldpLocChassisIdSubtype_oid[] = { 1,0,8802,1,1,2,1,3,1 };
    const oid lldpLocChassisId_oid[] = { 1,0,8802,1,1,2,1,3,2 };
    const oid lldpLocSysName_oid[] = { 1,0,8802,1,1,2,1,3,3 };
    const oid lldpLocSysDesc_oid[] = { 1,0,8802,1,1,2,1,3,4 };
    const oid lldpLocSysCapSupported_oid[] = { 1,0,8802,1,1,2,1,3,5 };
    const oid lldpLocSysCapEnabled_oid[] = { 1,0,8802,1,1,2,1,3,6 };

 // DEBUGMSGTL(("lldpLocalSystemData", "Initializing\n"));

    netsnmp_register_scalar(
        netsnmp_create_handler_registration("lldpLocChassisIdSubtype", handle_lldpLocChassisIdSubtype,
                               lldpLocChassisIdSubtype_oid, OID_LENGTH(lldpLocChassisIdSubtype_oid),
                               HANDLER_CAN_RONLY
        ));
    netsnmp_register_scalar(
        netsnmp_create_handler_registration("lldpLocChassisId", handle_lldpLocChassisId,
                               lldpLocChassisId_oid, OID_LENGTH(lldpLocChassisId_oid),
                               HANDLER_CAN_RONLY
        ));
    netsnmp_register_scalar(
        netsnmp_create_handler_registration("lldpLocSysName", handle_lldpLocSysName,
                               lldpLocSysName_oid, OID_LENGTH(lldpLocSysName_oid),
                               HANDLER_CAN_RONLY
        ));
    netsnmp_register_scalar(
        netsnmp_create_handler_registration("lldpLocSysDesc", handle_lldpLocSysDesc,
                               lldpLocSysDesc_oid, OID_LENGTH(lldpLocSysDesc_oid),
                               HANDLER_CAN_RONLY
        ));
    netsnmp_register_scalar(
        netsnmp_create_handler_registration("lldpLocSysCapSupported", handle_lldpLocSysCapSupported,
                               lldpLocSysCapSupported_oid, OID_LENGTH(lldpLocSysCapSupported_oid),
                               HANDLER_CAN_RONLY
        ));
    netsnmp_register_scalar(
        netsnmp_create_handler_registration("lldpLocSysCapEnabled", handle_lldpLocSysCapEnabled,
                               lldpLocSysCapEnabled_oid, OID_LENGTH(lldpLocSysCapEnabled_oid),
                               HANDLER_CAN_RONLY
        ));
}

int
handle_lldpLocChassisIdSubtype(netsnmp_mib_handler *handler,
                          netsnmp_handler_registration *reginfo,
                          netsnmp_agent_request_info   *reqinfo,
                          netsnmp_request_info         *requests)
{
    /* We are never called for a GETNEXT if it's registered as a
       "instance", as it's "magically" handled for us.  */

    /* a instance handler also only hands us one request at a time, so
       we don't need to loop over a list of requests; we'll only get one. */
    
    switch(reqinfo->mode) {

        case MODE_GET:
            snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,(u_char *) &chassis_id_subtype
                                     /* XXX: a pointer to the scalar's data */,sizeof(chassis_id_subtype)
                                     /* XXX: the length of the data in bytes */);
            break;


        default:
            /* we should never get here, so this is a really bad error */
            snmp_log(LOG_ERR, "unknown mode (%d) in handle_lldpLocChassisIdSubtype\n", reqinfo->mode );
            return SNMP_ERR_GENERR;
    }

    return SNMP_ERR_NOERROR;
}
int
handle_lldpLocChassisId(netsnmp_mib_handler *handler,
                          netsnmp_handler_registration *reginfo,
                          netsnmp_agent_request_info   *reqinfo,
                          netsnmp_request_info         *requests)
{
    /* We are never called for a GETNEXT if it's registered as a
       "instance", as it's "magically" handled for us.  */

    /* a instance handler also only hands us one request at a time, so
       we don't need to loop over a list of requests; we'll only get one. */
    
    switch(reqinfo->mode) {

        case MODE_GET:
            snmp_set_var_typed_value(requests->requestvb, ASN_OCTET_STR,"12345"
                                     /* XXX: a pointer to the scalar's data */,strlen("12345")
                                     /* XXX: the length of the data in bytes */);
            break;


        default:
            /* we should never get here, so this is a really bad error */
            snmp_log(LOG_ERR, "unknown mode (%d) in handle_lldpLocChassisId\n", reqinfo->mode );
            return SNMP_ERR_GENERR;
    }

    return SNMP_ERR_NOERROR;
}
int
handle_lldpLocSysName(netsnmp_mib_handler *handler,
                          netsnmp_handler_registration *reginfo,
                          netsnmp_agent_request_info   *reqinfo,
                          netsnmp_request_info         *requests)
{
    /* We are never called for a GETNEXT if it's registered as a
       "instance", as it's "magically" handled for us.  */

    /* a instance handler also only hands us one request at a time, so
       we don't need to loop over a list of requests; we'll only get one. */
    
    switch(reqinfo->mode) {

        case MODE_GET:
            snmp_set_var_typed_value(requests->requestvb, ASN_OCTET_STR,"linuxpc"
                                     /* XXX: a pointer to the scalar's data */,strlen("linuxpc")
                                     /* XXX: the length of the data in bytes */);
            break;


        default:
            /* we should never get here, so this is a really bad error */
            snmp_log(LOG_ERR, "unknown mode (%d) in handle_lldpLocSysName\n", reqinfo->mode );
            return SNMP_ERR_GENERR;
    }

    return SNMP_ERR_NOERROR;
}
int
handle_lldpLocSysDesc(netsnmp_mib_handler *handler,
                          netsnmp_handler_registration *reginfo,
                          netsnmp_agent_request_info   *reqinfo,
                          netsnmp_request_info         *requests)
{
    /* We are never called for a GETNEXT if it's registered as a
       "instance", as it's "magically" handled for us.  */

    /* a instance handler also only hands us one request at a time, so
       we don't need to loop over a list of requests; we'll only get one. */
    
    switch(reqinfo->mode) {

        case MODE_GET:
            snmp_set_var_typed_value(requests->requestvb, ASN_OCTET_STR,"2gb"
                                     /* XXX: a pointer to the scalar's data */,strlen("2gb")
                                     /* XXX: the length of the data in bytes */);
            break;


        default:
            /* we should never get here, so this is a really bad error */
            snmp_log(LOG_ERR, "unknown mode (%d) in handle_lldpLocSysDesc\n", reqinfo->mode );
            return SNMP_ERR_GENERR;
    }

    return SNMP_ERR_NOERROR;
}
int
handle_lldpLocSysCapSupported(netsnmp_mib_handler *handler,
                          netsnmp_handler_registration *reginfo,
                          netsnmp_agent_request_info   *reqinfo,
                          netsnmp_request_info         *requests)
{
    /* We are never called for a GETNEXT if it's registered as a
       "instance", as it's "magically" handled for us.  */

    /* a instance handler also only hands us one request at a time, so
       we don't need to loop over a list of requests; we'll only get one. */
    
    switch(reqinfo->mode) {

        case MODE_GET:
            snmp_set_var_typed_value(requests->requestvb, ASN_OCTET_STR,"3"
                                     /* XXX: a pointer to the scalar's data */,strlen("3")
                                     /* XXX: the length of the data in bytes */);
            break;


        default:
            /* we should never get here, so this is a really bad error */
            snmp_log(LOG_ERR, "unknown mode (%d) in handle_lldpLocSysCapSupported\n", reqinfo->mode );
            return SNMP_ERR_GENERR;
    }

    return SNMP_ERR_NOERROR;
}
int
handle_lldpLocSysCapEnabled(netsnmp_mib_handler *handler,
                          netsnmp_handler_registration *reginfo,
                          netsnmp_agent_request_info   *reqinfo,
                          netsnmp_request_info         *requests)
{
    /* We are never called for a GETNEXT if it's registered as a
       "instance", as it's "magically" handled for us.  */

    /* a instance handler also only hands us one request at a time, so
       we don't need to loop over a list of requests; we'll only get one. */
    
    switch(reqinfo->mode) {

        case MODE_GET:
            snmp_set_var_typed_value(requests->requestvb, ASN_OCTET_STR,"3"
                                     /* XXX: a pointer to the scalar's data */,strlen("3")
                                     /* XXX: the length of the data in bytes */);
            break;


        default:
            /* we should never get here, so this is a really bad error */
            snmp_log(LOG_ERR, "unknown mode (%d) in handle_lldpLocSysCapEnabled\n", reqinfo->mode );
            return SNMP_ERR_GENERR;
    }

    return SNMP_ERR_NOERROR;
}
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.