-
Notifications
You must be signed in to change notification settings - Fork 15
SNMP Driver
Stephen von Takach edited this page Aug 24, 2020
·
4 revisions
def on_load
@session = SNMP::V3::Session.new("usr-md5-aes", "authkey1", "privkey1", priv_protocol: SNMP::V3::Security::PrivacyProtocol::AES)
end
def my_request
validate_session
do_send @session.get("1.3.6.1.2.1.1.4.0"), name: :my_request
end
def received(data, task)
buffer = IO::Memory.new(data)
if task.try &.name == "validation"
session.validate buffer.read_bytes(ASN1::BER)
return task.try &.success
end
response = @session.parse(buffer.read_bytes(ASN1::BER))
case task.try &.name
when "my_request"
# process my_request response
response_data = response.value.get_string
task.try &.success(response_data)
else
# nothing to process
task.try &.success
end
end
protected def do_send(message, **options)
queue(**options) do |task|
if @session.must_revalidate?
send(@session.engine_validation_probe.to_ber, name: :validation, priority: 999)
task.retry("engine validation required")
else
transport.send(@session.prepare(message))
end
end
end