lib/logstash/inputs/snmp/client.rb in logstash-input-snmp-0.1.0.beta2 vs lib/logstash/inputs/snmp/client.rb in logstash-input-snmp-0.1.0.beta3
- old
+ new
@@ -12,26 +12,34 @@
java_import "org.snmp4j.smi.GenericAddress"
java_import "org.snmp4j.smi.OID"
java_import "org.snmp4j.smi.OctetString"
java_import "org.snmp4j.smi.VariableBinding"
java_import "org.snmp4j.transport.DefaultUdpTransportMapping"
+java_import "org.snmp4j.transport.DefaultTcpTransportMapping"
java_import "org.snmp4j.util.TreeUtils"
java_import "org.snmp4j.util.DefaultPDUFactory"
java_import "org.snmp4j.asn1.BER"
module LogStash
class SnmpClientError < StandardError
end
class SnmpClient
- def initialize(address, community, version, retries, timeout, mib)
- @target = build_target(address, community, version, retries, timeout)
+ def initialize(protocol, address, port, community, version, retries, timeout, mib)
+ transport = case protocol.to_s
+ when "udp"
+ DefaultUdpTransportMapping.new
+ when "tcp"
+ DefaultTcpTransportMapping.new
+ else
+ raise(SnmpClientError, "invalid transport protocol specified '#{protocol.to_s}', expecting 'udp' or 'tcp'")
+ end
+
+ @target = build_target("#{protocol}:#{address}/#{port}", community, version, retries, timeout)
@mib = mib
- # for now hardwired udp transport
- transport = DefaultUdpTransportMapping.new
@snmp = Snmp.new(transport)
transport.listen()
end
def get(oids, strip_root = 0)
@@ -126,10 +134,16 @@
target.setVersion(parse_version(version))
target
end
def parse_version(version)
- # TODO implement
- SnmpConstants.version2c
+ case version.to_s
+ when "2c"
+ SnmpConstants.version2c
+ when "1"
+ SnmpConstants.version1
+ else
+ raise(SnmpClientError, "protocol version '#{version}' is not supported, expected versions are '1' and '2c'")
+ end
end
end
end