VariableBinding getVarBindForSetRequest(String oid, int type, String value) { VariableBinding vb = new VariableBinding(new OID(oid)); if (value != null) { Variable variable; switch (type) { case DSnmpMibRecord.VALUE_TYPE_INTEGER32: variable = new Integer32(Integer.parseInt(value)); break; case DSnmpMibRecord.VALUE_TYPE_UNSIGNED_INTEGER32: variable = new UnsignedInteger32(Long.parseLong(value)); break; case DSnmpMibRecord.VALUE_TYPE_OCTET_STRING: variable = new OctetString(value); break; case DSnmpMibRecord.VALUE_TYPE_NULL: variable = new Null(); break; case DSnmpMibRecord.VALUE_TYPE_OID: variable = new OID(value); break; case DSnmpMibRecord.VALUE_TYPE_TIMETICKS: variable = new TimeTicks(Long.parseLong(value)); break; case DSnmpMibRecord.VALUE_TYPE_IP_ADDRESS: variable = new IpAddress(value); break; default: throw new IllegalArgumentException("Variable type " + type + " not supported"); } vb.setVariable(variable); } return vb; }
private SnmpOidValuePair outputResponse(VariableBinding vb) { SnmpOidValuePair oidval = new SnmpOidValuePair(); oidval.oid = vb.getOid().toString(); oidval.value_str = vb.getVariable().toString(); if (m_snmpResponseHandler != null) { m_snmpResponseHandler.responseReceived(oidval); } return oidval; }
/** * Method which takes a single OID and returns the response from the agent as a String. * * @param oid * @return * @throws IOException */ public String getAsString(OID... oid) throws IOException { // ResponseEvent event = get(new OID[]{oid}); // return event.getResponse().get(0).getVariable().toString(); ResponseEvent event = get(oid); PDU response = event.getResponse(); int size = oid.length; // VariableBinding variableBinding=response.get(0); // Variable variable=variableBinding.getVariable(); // String varStirng=variable.toString(); // return varStirng; StringBuilder builder = new StringBuilder(); for (int i = 0; i < size; i++) { VariableBinding variableBinding = response.get(i); Variable variable = variableBinding.getVariable(); String varStirng = variable.toString(); String oi = variableBinding.getOid().toString(); builder.append("oid: ").append(oi).append(" var: ").append(varStirng).append("\n"); } return builder.toString(); }
public void browse(URI url, SnmpUriCallback callback, Object userObject) throws UnknownHostException { Request request = createSnmpRequest(url); PDU pdu = request.getPdu(); switch (request.getType()) { case GET: pdu.setType(PDU.GET); pdu.addAll(VariableBinding.createFromOIDs(request.getOIDs())); sendSnmpRequest(request, pdu, url, callback, userObject); break; case NEXT: pdu.setType(PDU.GETNEXT); pdu.addAll(VariableBinding.createFromOIDs(request.getOIDs())); sendSnmpRequest(request, pdu, url, callback, userObject); break; case SUBTREE: TreeUtils treeUtils = new TreeUtils(snmp, pduFactory); TreeListener treeListener = new AsyncTreeListener(url, callback); treeUtils.walk(request.getTarget(), request.getOIDs(), userObject, treeListener); break; } }
private boolean processWalk(PDU response, PDU request, OID rootOID) throws SnmpException { if ((response == null) || (response.getErrorStatus() != 0) || (response.getType() == PDU.REPORT)) { return true; } boolean finished = false; OID lastOID = request.get(0).getOid(); for (int i = 0; (!finished) && (i < response.size()); i++) { VariableBinding vb = response.get(i); if ((vb.getOid() == null) || (vb.getOid().size() < rootOID.size()) || (rootOID.leftMostCompare(rootOID.size(), vb.getOid()) != 0)) { finished = true; } else if (Null.isExceptionSyntax(vb.getVariable().getSyntax())) { outputResponse(vb); finished = true; } else if (vb.getOid().compareTo(lastOID) <= 0) { throw new SnmpException( "Variable received is not lexicographic successor of requested one:" + vb.toString() + " <= " + lastOID); } else { outputResponse(vb); lastOID = vb.getOid(); } } if (response.size() == 0) { finished = true; } if (!finished) { VariableBinding next = response.get(response.size() - 1); next.setVariable(new Null()); request.set(0, next); request.setRequestID(new Integer32(0)); } return finished; }
/** * Read a variable saved into @DriverConfiguration object * * @param propertyConfiguration driver configuration object * @throws GenericException if configuration fatal error */ @Override public void readValue(DriverConfiguration propertyConfiguration) throws GenericException { try { ResponseEvent response = snmpGet(String.valueOf(propertyConfiguration.getValue())); if (response != null) { if (log.isDebugEnabled()) { log.debug("Got Snmp Get Response from Agent"); } PDU responsePDU = response.getResponse(); if (responsePDU != null) { int errorStatus = responsePDU.getErrorStatus(); if (errorStatus == PDU.noError) { Vector<? extends VariableBinding> variableBindings = responsePDU.getVariableBindings(); if (log.isDebugEnabled()) { log.debug(String.format("Snmp Get Response = %s", variableBindings)); } VariableBinding variableBinding = variableBindings.get(0); Variable variable = variableBinding.getVariable(); Object value = convert(variable, getValueType(variable)); setValue(propertyConfiguration, value); } else { notifyResponse(response, propertyConfiguration.getName()); } } else { if (log.isDebugEnabled()) { log.debug("Error: Response PDU is null"); } } } else { notifyResponse(response, propertyConfiguration.getName()); } } catch (Exception e) { throw new GenericException(e); } }