libs/sys: ignore TIME_WAIT connections in luci.sys.net.conntrack()

This commit is contained in:
Jo-Philipp Wich 2011-03-13 22:08:32 +00:00
parent 8cab9e2b8f
commit 380726158d

View file

@ -240,32 +240,36 @@ function net.conntrack(callback)
for line in io.lines("/proc/net/nf_conntrack") do for line in io.lines("/proc/net/nf_conntrack") do
line = line:match "^(.-( [^ =]+=).-)%2" line = line:match "^(.-( [^ =]+=).-)%2"
local entry, flags = _parse_mixed_record(line, " +") local entry, flags = _parse_mixed_record(line, " +")
entry.layer3 = flags[1] if flags[6] ~= "TIME_WAIT" then
entry.layer4 = flags[3] entry.layer3 = flags[1]
for i=1, #entry do entry.layer4 = flags[3]
entry[i] = nil for i=1, #entry do
end entry[i] = nil
end
if callback then if callback then
callback(entry) callback(entry)
else else
connt[#connt+1] = entry connt[#connt+1] = entry
end
end end
end end
elseif fs.access("/proc/net/ip_conntrack", "r") then elseif fs.access("/proc/net/ip_conntrack", "r") then
for line in io.lines("/proc/net/ip_conntrack") do for line in io.lines("/proc/net/ip_conntrack") do
line = line:match "^(.-( [^ =]+=).-)%2" line = line:match "^(.-( [^ =]+=).-)%2"
local entry, flags = _parse_mixed_record(line, " +") local entry, flags = _parse_mixed_record(line, " +")
entry.layer3 = "ipv4" if flags[4] ~= "TIME_WAIT" then
entry.layer4 = flags[1] entry.layer3 = "ipv4"
for i=1, #entry do entry.layer4 = flags[1]
entry[i] = nil for i=1, #entry do
end entry[i] = nil
end
if callback then if callback then
callback(entry) callback(entry)
else else
connt[#connt+1] = entry connt[#connt+1] = entry
end
end end
end end
else else