diff --git a/scripts/ipv6-node-info.nse b/scripts/ipv6-node-info.nse index 13603d4..7174c62 100644 --- a/scripts/ipv6-node-info.nse +++ b/scripts/ipv6-node-info.nse @@ -150,24 +150,24 @@ end -- RFC 4620, section 6.3. local function stringify_nodename(flags, data) local status, names - local text status, names = try_decode_nodenames(data) if empty(names) then return end - text = stdnse.strjoin(", ", names) + setmetatable(names, { + __tostring=function(t) return stdnse.strjoin(", ", t) end + }) if not status then - text = text .. " (parsing error)" + names[#names + 1] = "(parsing error)" end - return text + return names end -- RFC 4620, section 6.3. local function stringify_nodeaddresses(flags, data) local ttl, binaddr - local text local addrs = {} local pos = nil @@ -182,12 +182,14 @@ local function stringify_nodeaddresses(flags, data) return end - text = stdnse.strjoin(", ", addrs) if bit.band(flags, 0x01) ~= 0 then - text = text .. " (more omitted for space reasons)" + addrs[#addrs + 1] = "(more omitted for space reasons)" end + setmetatable(addrs, { + __tostring=function(t) return stdnse.strjoin(", ", t) end + }) - return text + return addrs end -- RFC 4620, section 6.4. @@ -209,7 +211,11 @@ local function stringify_nodeipv4addresses(flags, data) -- Check for DNS names. status, names = try_decode_nodenames(data .. "\0\0") if status then - return "(actually hostnames) " .. stdnse.strjoin(", ", names) + setmetatable(names, { + __tostring=function(t) return stdnse.strjoin(", ", t) end + }) + names[#names + 1] = "(actually hostnames)" + return names end -- Okay, looks like it's really IP addresses. @@ -224,12 +230,14 @@ local function stringify_nodeipv4addresses(flags, data) return end - text = stdnse.strjoin(", ", addrs) if bit.band(flags, 0x01) ~= 0 then - text = text .. " (more omitted for space reasons)" + addrs[#addrs + 1] = "(more omitted for space reasons)" end + setmetatable(addrs, { + __tostring=function(t) return stdnse.strjoin(", ", t) end + }) - return text + return addrs end local STRINGIFY = { @@ -279,14 +287,14 @@ local function format_results(results) } local output - output = {} + output = stdnse.output_table() for _, qtype in ipairs(QTYPE_ORDER) do if results[qtype] then - output[#output + 1] = QTYPE_STRINGS[qtype] .. ": " .. results[qtype] + output[QTYPE_STRINGS[qtype]] = results[qtype] end end - return stdnse.format_output(true, output) + return output end function action(host)