Optimized conntrack (thanks to Joe Burpee)
This commit is contained in:
parent
c63a170cde
commit
5734545388
2 changed files with 7 additions and 5 deletions
|
@ -266,19 +266,21 @@ end
|
|||
-- @return Table with the currently tracked IP connections
|
||||
function net.conntrack()
|
||||
local connt = {}
|
||||
if luci.fs.access("/proc/net/nf_conntrack") then
|
||||
if luci.fs.access("/proc/net/nf_conntrack", "r") then
|
||||
for line in io.lines("/proc/net/nf_conntrack") do
|
||||
line = line:match "^(.-( [^ =]+=).-)%2"
|
||||
local entry, flags = _parse_mixed_record(line, " +")
|
||||
entry.layer3 = flags[1]
|
||||
entry.layer4 = flags[2]
|
||||
entry.layer4 = flags[3]
|
||||
for i=1, #entry do
|
||||
entry[i] = nil
|
||||
end
|
||||
|
||||
connt[#connt+1] = entry
|
||||
end
|
||||
elseif luci.fs.access("/proc/net/ip_conntrack") then
|
||||
elseif luci.fs.access("/proc/net/ip_conntrack", "r") then
|
||||
for line in io.lines("/proc/net/ip_conntrack") do
|
||||
line = line:match "^(.-( [^ =]+=).-)%2"
|
||||
local entry, flags = _parse_mixed_record(line, " +")
|
||||
entry.layer3 = "ipv4"
|
||||
entry.layer4 = flags[1]
|
||||
|
@ -757,7 +759,7 @@ function _parse_mixed_record(cnt, delimiter)
|
|||
|
||||
for i, l in pairs(luci.util.split(luci.util.trim(cnt), "\n")) do
|
||||
for j, f in pairs(luci.util.split(luci.util.trim(l), delimiter, nil, true)) do
|
||||
local k, x, v = f:match('([^%s][^:=]+) *([:=]*) *"*([^\n"]*)"*')
|
||||
local k, x, v = f:match('([^%s][^:=]*) *([:=]*) *"*([^\n"]*)"*')
|
||||
|
||||
if k then
|
||||
if x == "" then
|
||||
|
|
|
@ -22,7 +22,7 @@ t:option(DummyValue, "IP address", translate("ipaddress"))
|
|||
t:option(DummyValue, "HW address", translate("macaddress"))
|
||||
t:option(DummyValue, "Device", translate("interface"))
|
||||
|
||||
t = f:section(Table, luci.sys.net.conntrack(), translate("a_n_conntrack"))
|
||||
t = f:section(Table, luci.sys.net.conntrack() or {}, translate("a_n_conntrack"))
|
||||
l3 = t:option(DummyValue, "layer3", translate("network"))
|
||||
function l3.cfgvalue(self, ...)
|
||||
return DummyValue.cfgvalue(self, ...):upper()
|
||||
|
|
Loading…
Reference in a new issue