mirror of
https://github.com/nmap/nmap.git
synced 2025-12-06 04:31:29 +00:00
Refactor to avoid using packet.lua local functions. See #2464
This commit is contained in:
@@ -244,16 +244,14 @@ local STRINGIFY = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
local function handle_received_packet(buf)
|
local function handle_received_packet(buf)
|
||||||
local p, qtype, flags, data
|
|
||||||
local text
|
local text
|
||||||
|
|
||||||
p = packet.Packet:new(buf)
|
local p = packet.Packet:new(buf)
|
||||||
if p.icmpv6_type ~= ICMPv6_NODEINFORESP then
|
if p.icmpv6_type ~= ICMPv6_NODEINFORESP then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
qtype = packet.u16(p.buf, p.icmpv6_offset + 4)
|
local qtype, flags, pos = string.unpack(">I2I2", p.buf, p.icmpv6_offset + 4)
|
||||||
flags = packet.u16(p.buf, p.icmpv6_offset + 6)
|
local data = string.sub(p.buf, pos + 8)
|
||||||
data = string.sub(p.buf, p.icmpv6_offset + 16 + 1)
|
|
||||||
|
|
||||||
if not STRINGIFY[qtype] then
|
if not STRINGIFY[qtype] then
|
||||||
-- This is a not a qtype we sent or know about.
|
-- This is a not a qtype we sent or know about.
|
||||||
|
|||||||
@@ -106,14 +106,18 @@ local function build_router_advert(mac_src,prefix,prefix_len,valid_time,preferre
|
|||||||
0x00,0x00,0x00,0x00, --reachable time
|
0x00,0x00,0x00,0x00, --reachable time
|
||||||
0x00,0x00,0x00,0x00) --retrans timer
|
0x00,0x00,0x00,0x00) --retrans timer
|
||||||
|
|
||||||
local mtu_option_msg = "\0\0" .. -- reserved
|
local mtu_option_msg = string.pack(">I2 I4",
|
||||||
packet.numtostr32(mtu) -- MTU
|
0, -- reserved
|
||||||
|
mtu -- MTU
|
||||||
|
)
|
||||||
|
|
||||||
local prefix_option_msg = string.char(prefix_len, 0xc0) .. --flags: Onlink, Auto
|
local prefix_option_msg = string.pack(">BB I4 I4 I4",
|
||||||
packet.set_u32("....", 0, valid_time) .. -- valid lifetime
|
prefix_len,
|
||||||
packet.set_u32("....", 0, preferred_time) .. -- preferred lifetime
|
0xc0, --flags: Onlink, Auto
|
||||||
"\0\0\0\0" .. --unknown
|
valid_time, -- valid lifetime
|
||||||
prefix
|
preferred_time, -- preferred lifetime
|
||||||
|
0 -- unknown
|
||||||
|
) .. prefix
|
||||||
|
|
||||||
local icmpv6_mtu_option = packet.Packet:set_icmpv6_option(packet.ND_OPT_MTU, mtu_option_msg)
|
local icmpv6_mtu_option = packet.Packet:set_icmpv6_option(packet.ND_OPT_MTU, mtu_option_msg)
|
||||||
local icmpv6_prefix_option = packet.Packet:set_icmpv6_option(packet.ND_OPT_PREFIX_INFORMATION, prefix_option_msg)
|
local icmpv6_prefix_option = packet.Packet:set_icmpv6_option(packet.ND_OPT_PREFIX_INFORMATION, prefix_option_msg)
|
||||||
|
|||||||
@@ -82,11 +82,13 @@ local function build_router_advert(mac_src,prefix,prefix_len,valid_time,preferre
|
|||||||
0x00,0x00, --router lifetime
|
0x00,0x00, --router lifetime
|
||||||
0x00,0x00,0x00,0x00, --reachable time
|
0x00,0x00,0x00,0x00, --reachable time
|
||||||
0x00,0x00,0x00,0x00) --retrans timer
|
0x00,0x00,0x00,0x00) --retrans timer
|
||||||
local prefix_option_msg = string.char(prefix_len, 0xc0) .. --flags: Onlink, Auto
|
local prefix_option_msg = string.pack(">BB I4 I4 I4",
|
||||||
packet.set_u32("....",0,valid_time) ..
|
prefix_len,
|
||||||
packet.set_u32("....",0,preferred_time) ..
|
0xc0, --flags: Onlink, Auto
|
||||||
"\0\0\0\0" .. --unknown
|
valid_time, -- valid lifetime
|
||||||
prefix
|
preferred_time, -- preferred lifetime
|
||||||
|
0 -- unknown
|
||||||
|
) .. prefix
|
||||||
local icmpv6_prefix_option = packet.Packet:set_icmpv6_option(packet.ND_OPT_PREFIX_INFORMATION,prefix_option_msg)
|
local icmpv6_prefix_option = packet.Packet:set_icmpv6_option(packet.ND_OPT_PREFIX_INFORMATION,prefix_option_msg)
|
||||||
local icmpv6_src_link_option = packet.Packet:set_icmpv6_option(packet.ND_OPT_SOURCE_LINKADDR,mac_src)
|
local icmpv6_src_link_option = packet.Packet:set_icmpv6_option(packet.ND_OPT_SOURCE_LINKADDR,mac_src)
|
||||||
local icmpv6_payload = ra_msg .. icmpv6_prefix_option .. icmpv6_src_link_option
|
local icmpv6_payload = ra_msg .. icmpv6_prefix_option .. icmpv6_src_link_option
|
||||||
|
|||||||
Reference in New Issue
Block a user