Refine search
pdu = new ScopedPDU(); } else { pdu = new PDU(); pdu.setType(PDU.SET); try { ResponseEvent response = this.targetResource.set(pdu); if(response.getResponse() == null) { processSession.transfer(processSession.penalize(flowFile), REL_FAILURE); this.getLogger().error("Set request timed out or parameters are incorrect."); context.yield(); } else if(response.getResponse().getErrorStatus() == PDU.noError) { flowFile = SNMPUtils.updateFlowFileAttributesWithPduProperties(pdu, flowFile, processSession); processSession.transfer(flowFile, REL_SUCCESS); processSession.getProvenanceReporter().send(flowFile, this.snmpTarget.getAddress().toString()); } else { final String error = response.getResponse().getErrorStatusText(); flowFile = SNMPUtils.addAttribute(SNMPUtils.SNMP_PROP_PREFIX + "error", error, flowFile, processSession); processSession.transfer(processSession.penalize(flowFile), REL_FAILURE); this.getLogger().error("Failed while executing SNMP Set [{}] via " + this.targetResource + ". Error = {}", new Object[]{response.getRequest().getVariableBindings(), error});
/** * TODO: Merge this logic with {@link Snmp4JWalker.Snmp4JResponseListener} #processResponse(PDU response) */ private static SnmpValue[] processResponse(Snmp4JAgentConfig agentConfig, ResponseEvent responseEvent) throws IOException { SnmpValue[] retvalues = { null }; if (responseEvent.getResponse() == null) { LOG.warn("processResponse: Timeout. Agent: {}, requestID={}", agentConfig, responseEvent.getRequest().getRequestID()); } else if (responseEvent.getError() != null) { LOG.warn("processResponse: Error during get operation. Error: {}, requestID={}", responseEvent.getError().getLocalizedMessage(), responseEvent.getError(), responseEvent.getRequest().getRequestID()); } else if (responseEvent.getResponse().getType() == PDU.REPORT) { LOG.warn("processResponse: Error during get operation. Report returned with varbinds: {}, requestID={}", responseEvent.getResponse().getVariableBindings(), responseEvent.getRequest().getRequestID()); } else if (responseEvent.getResponse().getVariableBindings().size() < 1) { LOG.warn("processResponse: Received PDU with 0 varbinds. Agent: {}, requestID={}", agentConfig, responseEvent.getRequest().getRequestID()); } else if (responseEvent.getResponse().get(0).getSyntax() == SMIConstants.SYNTAX_NULL) { LOG.info("processResponse: Null value returned in varbind: {}. Agent: {}, requestID={}", responseEvent.getResponse().get(0), agentConfig, responseEvent.getRequest().getRequestID()); } else { retvalues = convertResponseToValues(responseEvent); LOG.debug("processResponse: SNMP operation successful, value: {}", (Object)retvalues); } return retvalues; }
pdu1.setSpecificTrap( PDUv1.ENTERPRISE_SPECIFIC ); pdu1.setEnterprise( new OID( Oid ) ); pdu1.add( new VariableBinding( new OID( Oid ), new OctetString( messageString ) ) ); pdu.add( new VariableBinding( new OID( Oid ), new OctetString( messageString ) ) ); pdu.setType( PDU.TRAP ); if ( !Utils.isEmpty( engineID ) ) { logDebug( "Received response from: " + response.getPeerAddress() + response.toString() );
public void onResponse(ResponseEvent event) { // Always cancel async request when response has been received // otherwise a memory leak is created! Not canceling a request // immediately can be useful when sending a request to a broadcast address. ((Snmp)event.getSource()).cancel(event.getRequest(), this); // check for valid response if (event.getRequest() == null || event.getResponse() == null) { // ignore null requests/responses LOG.debug("Received invalid SNMP event. Request: " + event.getRequest() + " / Response: " + event.getResponse()); return; } PDU pdu = event.getResponse(); processPDU(pdu); }
PDU pdu = new PDU(); pdu.setType(PDU.GETNEXT); pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.1"))); Snmp snmp = new Snmp(transport); ResponseEvent responseEvent = snmp.send(pdu, target); System.out.println("response " + responseEvent.toString()); PDU responsePDU = responseEvent.getResponse(); if (responsePDU == null){ System.out.println("Request timed out"); System.out.println("Received response "+responsePDU); System.out.println("Peer Address: "+responseEvent.getPeerAddress()); } catch (UnknownHostException e1) {
public void getBulk(){ log.debug("Executing GETBULK..."); PDU pdu = new PDU(); pdu.setType(PDU.GETBULK); pdu.add(new VariableBinding(new OID("1.2.3.4.1.1"))); pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.1.0"))); pdu.add(new VariableBinding(new OID("1.3.1.1"))); pdu.setMaxRepetitions(7); pdu.setNonRepeaters(1); Snmp snmp = new Snmp(transport); ResponseEvent responseEvent = snmp.send(pdu, target); System.out.println("response " + responseEvent.toString()); PDU responsePDU = responseEvent.getResponse(); if (responsePDU == null){ System.out.println("Request timed out"); System.out.println("Received response "+responsePDU); System.out.println("Peer Address: "+responseEvent.getPeerAddress()); } catch (UnknownHostException e1) {
ResponseEvent response) throws IOException { pdu.clear(); OID effLevelOID = new OID(SNMP4J_LOGGER_OIDS[1]); effLevelOID.append(loggerIndex); pdu.add(new VariableBinding(levelOID)); pdu.add(new VariableBinding(effLevelOID)); response = snmp.get(pdu, target); PDU respPDU = response.getResponse(); if ((respPDU != null) && (respPDU.getErrorStatus() == PDU.noError) && (!respPDU.get(0).isException()) && (!respPDU.get(1).isException())) { PDU resp = response.getResponse(); LogLevel setLevel = new LogLevel(resp.get(0).getVariable().toInt()); LogLevel effectiveLevel = new LogLevel(resp.get(1).getVariable().toInt());
public void onResponse(ResponseEvent event) { session.cancel(event.getRequest(), this); PDU respPDU = event.getResponse(); if (respPDU == null) { listener.finished(new TreeEvent(this, userObject, RetrievalEvent.STATUS_TIMEOUT)); else if (respPDU.getErrorStatus() != 0) { if (target.getVersion() == SnmpConstants.version1 && respPDU.getErrorStatus() == PDU.noSuchName) { listener.finished(new TreeEvent(this, userObject, new VariableBinding[0])); respPDU.getErrorStatus())); else if (respPDU.getType() == PDU.REPORT) { lastOIDs = new ArrayList<OID>(request.size()); for (int i=0; i<request.size(); i++) { lastOIDs.add(request.get(i).getOid()); int r = i % rootOIDs.length; VariableBinding vb = respPDU.get(i); if ((vb.getOid() == null) || (vb.getOid().size() < rootOIDs[r].size()) || (rootOIDs[r].leftMostCompare(rootOIDs[r].size(), vb.getOid()) != 0)) { finished = true;
public synchronized void onResponse(ResponseEvent event) { session.cancel(event.getRequest(), this); if (finished) { return; int startCol = ((Integer) event.getUserObject()).intValue(); PDU request = event.getRequest(); PDU response = event.getResponse(); int cols = request.size(); int rows = response.size() / cols; OID lastMinIndex = null; for (int r = 0; r < rows; r++) { Row row = null; for (int c = 0; c < request.size(); c++) { int pos = startCol + c; VariableBinding vb = response.get(r * cols + c); if (vb.isException()) { continue; OID id = vb.getOid(); OID col = columnOIDs[pos]; if (id.startsWith(col)) { row.add(vb); lastReceived.set(pos, vb.getOid());
/** * <p>snmpGet.</p> * * @param oidString a {@link java.lang.String} object. * @return a {@link java.lang.String} object. * @throws java.io.IOException if any. */ public String snmpGet(String oidString) throws IOException { OID oid = new OID(oidString); PDU pdu = pduFactory.createPDU(getTarget()); pdu.add(new VariableBinding(oid)); pdu.setType(PDU.GET); ResponseEvent response; response = snmp.send(pdu, getTarget()); if (response != null) { PDU responsePDU = response.getResponse(); if (responsePDU != null) { if (responsePDU.getErrorStatus() == PDU.noError) { return responsePDU.get(0).toValueString(); } } logger.info("GET reposne from " + getTarget().getAddress() + " was null!"); return null; } logger.info("GET from " + getTarget().getAddress() + " has timed out!"); return null; }
@SuppressWarnings("unchecked") public void onResponse(ResponseEvent event) { session.cancel(event.getRequest(), this); if (finished) { return; if (checkResponse(event)) { boolean anyMatchInChunk = false; ColumnsOfRequest colsOfRequest = (ColumnsOfRequest) event.getUserObject(); boolean receivedInOrder = removePending(colsOfRequest.getRequestSerial()); PDU request = event.getRequest(); PDU response = event.getResponse(); int cols = request.size(); int rows = response.size() / cols; OID lastMinIndex = null; for (int r = 0; r < rows; r++) { OID id = vb.getOid(); OID col = columnOIDs[pos]; if (id.startsWith(col)) { OID requested = event.getRequest().get(c).getOid(); if (id.compareTo(requested) <= 0) { if (!row.orderError) {
@Override public void commit(SubRequest request) { OID oid = request.getVariableBinding().getOid(); if (translation != null) { oid = translation.forwardTranslate(oid); } VariableBinding vb = new VariableBinding(oid, request.getVariableBinding().getVariable()); Target target = targetMIB.getTarget(targetName, contextEngineID, contextName); PDU pdu = pduFactory.createPDU(target); pdu.setType(PDU.SET); pdu.add(vb); try { ResponseEvent resp = session.send(pdu, target); if (resp.getResponse() != null) { PDU rpdu = resp.getResponse(); if (rpdu.getErrorStatus() != PDU.noError) { request.setErrorStatus(rpdu.getErrorStatus()); } request.getStatus().setPhaseComplete(true); } else { request.setErrorStatus(PDU.genErr); } } catch (IOException e) { request.setErrorStatus(PDU.genErr); logger.error("IOException in commit SET sub-request " + request + " to " + target, e); } }
public void onResponse(ResponseEvent event) { session.cancel(event.getRequest(), this); PDU respPDU = event.getResponse(); if (respPDU == null) { listener.finished(new TreeEvent(this, userObject, RetrievalEvent.STATUS_TIMEOUT)); else if (respPDU.getErrorStatus() != 0) { listener.finished(new TreeEvent(this, userObject, respPDU.getErrorStatus())); else if (respPDU.getType() == PDU.REPORT) { listener.finished(new TreeEvent(this, userObject, respPDU)); List l = new ArrayList(respPDU.size()); OID lastOID = request.get(0).getOid(); boolean finished = false; for (int i = 0; (!finished) && (i < respPDU.size()); i++) { VariableBinding vb = respPDU.get(i); if ((vb.getOid() == null) || (vb.getOid().size() < rootOID.size()) || (rootOID.leftMostCompare(rootOID.size(), vb.getOid()) != 0)) { finished = true;
/** * <p>getNext.</p> * * @param oids an array of {@link org.snmp4j.smi.OID} objects. * @return a {@link org.snmp4j.event.ResponseEvent} object. * @throws java.io.IOException if any. */ public ResponseEvent snmpGetNext(OID oids[]) throws IOException { PDU pdu = pduFactory.createPDU(getTarget()); for (OID oid : oids) { pdu.add(new VariableBinding(oid)); } pdu.setType(PDU.GETNEXT); ResponseEvent response; response = snmp.send(pdu, getTarget()); if (response != null) { PDU responsePDU = response.getResponse(); if (responsePDU != null) { if (responsePDU.getErrorStatus() == PDU.noError) { return response; } } logger.log(Priority.INFO, "GET reposne from " + getTarget().getAddress() + " was null!"); return null; } logger.log(Priority.INFO, "GET from " + getTarget().getAddress() + " has timed out!"); return null; }
return; OID oid = request.getVariableBinding().getOid(); if (translation != null) { oid = translation.forwardTranslate(oid); VariableBinding vb = new VariableBinding(oid); Target target = targetMIB.getTarget(targetName, contextEngineID, contextName); PDU pdu = pduFactory.createPDU(target); pdu.setType(PDU.GET); pdu.add(vb); try { ResponseEvent resp = session.send(pdu, target); if (resp.getResponse() != null) { PDU rpdu = resp.getResponse(); if (rpdu.getErrorStatus() != PDU.noError) { request.setErrorStatus(rpdu.getErrorStatus()); request.getVariableBinding().setVariable(resp.getResponse().getVariable(oid));
public static String extractSingleString(ResponseEvent event) { return event.getResponse().get(0).getVariable().toString(); } }
private static SnmpValue[] convertResponseToValues(ResponseEvent responseEvent) { SnmpValue[] retvalues = new Snmp4JValue[responseEvent.getResponse().getVariableBindings().size()]; for (int i = 0; i < retvalues.length; i++) { retvalues[i] = new Snmp4JValue(responseEvent.getResponse().get(i).getVariable()); } return retvalues; }
if ( responseEvent.getError () != null ) logger.warn ( "Listing failed", responseEvent.getError () ); return null; if ( responseEvent.getResponse () == null ) final PDU response = responseEvent.getResponse (); if ( response.getErrorStatus () != 0 ) logger.warn ( String.format ( "Error in reply: %1$d", response.getErrorStatus () ) ); return null; if ( response.getType () == PDU.REPORT ) for ( final VariableBinding vb : vbs ) if ( vb.isException () ) if ( vb.getVariable ().isException () ) logger.info ( "Variable Exception: {}", vb.getVariable () ); return null;
pdu.setType(PDU.GETNEXT); for (int i =1; i < oids.length; i++){ pdu.add(new VariableBinding(new OID(oids[i]))); System.out.println("SENT: "+t2); System.out.println("ELAPSED: "+(t2-t1)); System.out.println("response " + responseEvent.toString()); PDU responsePDU = responseEvent.getResponse(); if (responsePDU == null){ System.out.println("Request timed out"); System.out.println("Received response "+responsePDU); System.out.println("Peer Address: "+responseEvent.getPeerAddress()); } catch (UnknownHostException e1) {
private VariableBinding getSingleVariable(OID oid) throws IOException { PDU pdu = this.pduFactory.createPDU(getTarget()); pdu.setType(PDU.GETNEXT); pdu.add(new VariableBinding(oid)); ResponseEvent responseEvent = snmp.send(pdu, getTarget()); PDU responsePDU = null; if (responseEvent != null) responsePDU = responseEvent.getResponse(); VariableBinding vb = null; if (responsePDU != null) vb = responsePDU.get(0); return vb; }