NO_SUCH_INSTANCE exception not being caught in v2c - snmp++
Pallavi Mahajan
pallavi.mahajan____baypackets.com
Wed Jul 30 14:02:46 CEST 2003
Hi Frank,
How do we check for this exception syntax? I had a look at all the sample pgms, and could not find any such exception handling example.
Regards,
Pallavi
Frank Fock wrote:
> Hi Pallavi,
>
> As you mentioned in your subject, with SNMPv2c or SNMPv3
> there will be no error status set if you request an
> object that does not exist. Instead, an exception syntax
> is returned. Thus, you will have to check the syntax of
> the object for noSuchInstance, noSuchObject, and endOfMibView
> exceptions.
>
> Best regards,
> Frank Fock
>
> Pallavi Mahajan wrote:
> > Hi,
> >
> > Attached is a simple snmpGet program using snmp++, which tries to fetch the value of an OID.
> > In case I enter a wrong OID, no error is returned, instead the value returned is "".
> >
> > If I do the same by changing the version to v1, a proper error is returned in case of wrong OID.
> >
> > For example: in the program attached which uses v2c:
> > If I enter 1.3.6.1.2.1.1.5 (sysName) as the OID, I should get a proper error; whereas i dont get any error, but get a value of "".
> > If I enter 1.3.6.1.2.1.1.5.0 (sysName.0) as the OID, I get the proper sysName value.
> >
> > Please let me know if this is a known bug, or is there something wrong in our handling.
> >
> > Regards,
> > Pallavi
> >
> >
> > ------------------------------------------------------------------------
> >
> > #include <iostream.h>
> > #include <snmp_pp.h>
> >
> > #define SYSNAME_OID "1.3.6.1.2.1.1.5.0"
> >
> > main()
> > {
> > int status;
> > Snmp snmp(status);
> > if (status != SNMP_CLASS_SUCCESS)
> > {
> > cout << "ERROR in initializing:: " << snmp.error_msg(status) << endl;
> > return 0;
> > }
> >
> > char ip[200];
> > cout << "Enter IP of the machine to be managed: ";
> > cin >> ip;
> >
> > int port;
> > cout << "Enter port: ";
> > cin >> port;
> >
> > UdpAddress address(ip);
> > address.set_port(port);
> > CTarget ctarget( address);
> > //CTarget ctarget( (IpAddress)ip);
> > ctarget.set_version(version2c);
> >
> > char sysname_oid[100];
> > cout << "enter oid: (1 for sysname) ";
> > cin >> sysname_oid;
> >
> > if (strcmp(sysname_oid, "1") == 0)
> > strcpy(sysname_oid, SYSNAME_OID);
> >
> > Pdu pdu;
> > Vb vb(sysname_oid);
> > pdu += vb;
> >
> > if ( (status = snmp.get(pdu, ctarget)) != SNMP_CLASS_SUCCESS )
> > {
> > cout << "error #: " << status << endl;
> > cout << "ERROR in get..:: " << snmp.error_msg(status) << endl;
> > return 0;
> > }
> > else
> > {
> > pdu.get_vb(vb, 0);
> > if (strcmp(vb.get_printable_value(), ""))
> > cout << "Value = " << vb.get_printable_value() << endl;
> > else
> > cout << "error.." << endl;
> > }
> >
> > return 1;
> > }
More information about the AGENTPP
mailing list