diff options
author | Steven Barth <steven@midlink.org> | 2008-11-30 17:22:48 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-11-30 17:22:48 +0000 |
commit | 5734545388e6661c3e9040c53262bc3ba54fa81e (patch) | |
tree | f1142411f707c2e93dabb7e430eafefe280975c0 /libs/sys | |
parent | c63a170cde44e891adedc9c589d05da46eecd674 (diff) |
Optimized conntrack (thanks to Joe Burpee)
Diffstat (limited to 'libs/sys')
-rw-r--r-- | libs/sys/luasrc/sys.lua | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/libs/sys/luasrc/sys.lua b/libs/sys/luasrc/sys.lua index 2b9d9a3c5..948da5b1e 100644 --- a/libs/sys/luasrc/sys.lua +++ b/libs/sys/luasrc/sys.lua @@ -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 |