#include #include // For exit() function prototype #include "oid.h" #include "oid_def.h" #include "address.h" #include "counter.h" #include "ctr64.h" #include "gauge.h" #include "octet.h" #include "pdu.h" #include "snmp_pp.h" #include "target.h" #include "vb.h" // default request oids #define NUM_SYS_VBS 7 #define sysDescr "1.3.6.1.2.1.1.1.0" #define sysObjectID "1.3.6.1.2.1.1.2.0" #define sysUpTime "1.3.6.1.2.1.1.3.0" #define sysContact "1.3.6.1.2.1.1.4.0" #define sysName "1.3.6.1.2.1.1.5.0" #define sysLocation "1.3.6.1.2.1.1.6.0" #define sysServices "1.3.6.1.2.1.1.7.0" // default notification oid #define coldStart "1.3.6.1.6.3.1.1.4.3.0.1" int main(int argc, char **argv){ int status; char *req_str = "get"; char *dflt_req_oid = sysDescr; char *dflt_trp_oid = coldStart; char *genAddrStr = "127.0.0.1" ; // localhost char *oid_str = NULL; Pdu pdu; Vb vb; if ( argc > 1) genAddrStr = argv[1]; if ( argc > 2) req_str = argv[2]; if ( argc > 3) oid_str = argv[3]; Snmp my_session(status); if (status){ cout << "Failed to create SNMP Session: " << status << endl; return(1); } GenAddress genAddr(genAddrStr); if (! genAddr.valid()) { cout << "Invalid destination: " << genAddrStr << endl; return(1); } CTarget target(genAddr,"public","public"); if (! target.valid()) { cout << "Invalid target" << endl; return(1); } if ( strcmp(req_str, "get") == 0 ) { Vb vbl[NUM_SYS_VBS]; vbl[0].set_oid(sysDescr); vbl[1].set_oid(sysObjectID); vbl[2].set_oid(sysUpTime); vbl[3].set_oid(sysContact); vbl[4].set_oid(sysName); vbl[5].set_oid(sysLocation); vbl[6].set_oid(sysServices); cout << "Send a GET-REQUEST to: " << genAddr.get_printable() << endl; if ( ! oid_str ) { if ( strcmp(genAddrStr,"localhost" ) == 0 || strcmp(genAddrStr, "127.0.0.1") == 0 ){ pdu.set_vblist(vbl, NUM_SYS_VBS); } else { for (int i=0; i