void getapp::result(Snmp *, int rc) { Vb vb; if (rc < 0) { const char *ptr = snmp_.error_string(); cout << "ASNMP:ERROR: get command failed reason: " << ptr << endl; } else { // check to see if there are any errors if (pdu_.get_error_status()) { cout << "ERROR: agent replied as follows\n"; cout << pdu_.agent_error_reason() << endl; } else { VbIter iter(pdu_); while (iter.next(vb)) { cout << "\tOid = " << vb.to_string_oid() << "\n"; cout << "\tValue = " << vb.to_string_value() << "\n"; } } } cout << "\nASNMP:INFO: command completed normally.\n"<< endl; ACE_Reactor::instance()->end_reactor_event_loop(); }
int getapp::run() { //----------[ create a ASNMP session ]----------------------------------- if ( snmp_.valid() != SNMP_CLASS_SUCCESS) { cout << "\nASNMP:ERROR:Create session failed: "<< snmp_.error_string()<< "\n"; return 1; } //--------[ build up ASNMP object needed ]------------------------------- if (address_.get_port() == 0) address_.set_port(DEF_AGENT_PORT); target_.set_address( address_); // make a target using the address //-------[ issue the request, blocked mode ]----------------------------- cout << "\nASNMP:INFO:SNMP Version " << (target_.get_version()+ 1) << \ " GET SAMPLE PROGRAM \nOID: " << oid_.to_string() << "\n"; target_.get_address(address_); // target updates port used int rc; const char *name = address_.resolve_hostname(rc); cout << "Device: " << address_ << " "; //FUZZ: disable check_for_lack_ACE_OS cout << (rc ? "<< did not resolve via gethostbyname() >>" : name) << "\n"; //FUZZ: enable check_for_lack_ACE_OS cout << "[ Retries=" << target_.get_retry() << " \ Timeout=" << target_.get_timeout() <<" ms " << "Community=" << \ community_.to_string() << " ]"<< endl; if (snmp_.get( pdu_, target_) == SNMP_CLASS_SUCCESS) { Vb vb; // check to see if there are any errors if (pdu_.get_error_status()) { cout << "ERROR: agent replied as follows\n"; cout << pdu_.agent_error_reason() << endl; } else { VbIter iter(pdu_); while (iter.next(vb)) { cout << "\tOid = " << vb.to_string_oid() << "\n"; cout << "\tValue = " << vb.to_string_value() << "\n"; } } } else { const char *ptr = snmp_.error_string(); cout << "ASNMP:ERROR: get command failed reason: " << ptr << endl; } cout << "\nASNMP:INFO: command completed normally.\n"<< endl; return 0; }
int walkapp::run() { //----------[ create a ASNMP session ]----------------------------------- if ( snmp_.valid() != SNMP_CLASS_SUCCESS) { cout << "\nASNMP:ERROR:Create session failed: "<< snmp_.error_string()<< "\n"; return 1; } //--------[ build up ASNMP object needed ]------------------------------- if (address_.get_port() == 0) address_.set_port(DEF_AGENT_PORT); target_.set_address( address_); // make a target using the address //-------[ issue the request, blocked mode ]----------------------------- cout << "\nASNMP:INFO:SNMP Version " << (target_.get_version()+ 1) << \ " WALK SAMPLE PROGRAM \nOID: " << oid_.to_string() << "\n"; target_.get_address(address_); // target updates port used int rc; const char *name = address_.resolve_hostname(rc); cout << "Device: " << address_ << " "; //FUZZ: disable check_for_lack_ACE_OS cout << (rc ? "<< did not resolve via gethostbyname() >>" : name) << "\n"; //FUZZ: enable check_for_lack_ACE_OS cout << "[ Retries=" << target_.get_retry() << " \ Timeout=" << target_.get_timeout() <<" ms " << "Community=" << \ community_.to_string() << " ]"<< endl; MibIter iter(&snmp_, pdu_, &target_); char *err_str = 0; Vb vb; unsigned ctr = 0; while (iter.next(vb, err_str)) { cout << "\tOid = " << vb.to_string_oid() << "\n"; cout << "\tValue = " << vb.to_string_value() << "\n"; ctr++; } if (!err_str) { cout << "ERROR: walk: " << err_str << endl; return 0; } cout << "ASNMP:INFO:command completed normally. ACE Rocks...\n"<< endl; return 0; }
const char *Pdu::agent_error_reason() { int pdu_err = get_error_status(); if (pdu_err == 0) // any real error? return "not in error state"; int n_vbs = get_vb_count(); Vb bad; get_vb(bad, get_error_index() -1); // not zero based?? const char *pmsg = Snmp::error_string(get_error_status()); const char *id = bad.to_string_oid(); const char *val = bad.to_string_value(); const int HDR_SZ = 100; if (!output_) { int size = ACE_OS::strlen(pmsg) + ACE_OS::strlen(id) + ACE_OS::strlen(val); ACE_NEW_RETURN(output_, char[size + HDR_SZ], ""); }