mirror of
https://github.com/nmap/nmap.git
synced 2025-12-17 05:09:00 +00:00
Configurable retries for snmp.lua
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
--
|
--
|
||||||
-- @args snmp.version The SNMP protocol version. Use <code>"v1"</code> or <code>0</code> for SNMPv1 (default) and <code>"v2c"</code> or <code>1</code> for SNMPv2c.
|
-- @args snmp.version The SNMP protocol version. Use <code>"v1"</code> or <code>0</code> for SNMPv1 (default) and <code>"v2c"</code> or <code>1</code> for SNMPv2c.
|
||||||
-- @args snmp.timeout The timeout for SNMP queries. Default: varies by target responsiveness, up to 5s.
|
-- @args snmp.timeout The timeout for SNMP queries. Default: varies by target responsiveness, up to 5s.
|
||||||
|
-- @args snmp.retries The number of times a query should be reattempted. Default: 1
|
||||||
--
|
--
|
||||||
-- @author Patrik Karlsson <patrik@cqure.net>
|
-- @author Patrik Karlsson <patrik@cqure.net>
|
||||||
-- @author Gioacchino Mazzurco <gmazzurco89@gmail.com>
|
-- @author Gioacchino Mazzurco <gmazzurco89@gmail.com>
|
||||||
@@ -25,6 +26,7 @@ if arg_timeout then
|
|||||||
arg_timeout = arg_timeout * 1000
|
arg_timeout = arg_timeout * 1000
|
||||||
end
|
end
|
||||||
local default_max_timeout = 5000 --ms
|
local default_max_timeout = 5000 --ms
|
||||||
|
local retries = stdnse.get_script_args("snmp.retries") or 1
|
||||||
|
|
||||||
-- SNMP ASN.1 Encoders
|
-- SNMP ASN.1 Encoders
|
||||||
local tagEncoder = {}
|
local tagEncoder = {}
|
||||||
@@ -523,13 +525,19 @@ Helper = {
|
|||||||
self.community
|
self.community
|
||||||
) )
|
) )
|
||||||
|
|
||||||
local status, err = self.socket:send(payload)
|
local received, data
|
||||||
if not status then
|
for i=0, retries do
|
||||||
stdnse.debug2("snmp.Helper.request: Send to %s failed: %s", self.host.ip, err)
|
local status, err = self.socket:send(payload)
|
||||||
return false, err
|
if not status then
|
||||||
|
stdnse.debug2("snmp.Helper.request: Send to %s failed: %s", self.host.ip, err)
|
||||||
|
return false, err
|
||||||
|
end
|
||||||
|
|
||||||
|
received, data = self.socket:receive_bytes(1)
|
||||||
|
if received then break end
|
||||||
end
|
end
|
||||||
|
|
||||||
return self.socket:receive_bytes(1)
|
return received, data
|
||||||
end,
|
end,
|
||||||
|
|
||||||
--- Sends an SNMP Get Next request
|
--- Sends an SNMP Get Next request
|
||||||
|
|||||||
Reference in New Issue
Block a user