summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2008-11-30 17:22:48 +0000
committerSteven Barth <steven@midlink.org>2008-11-30 17:22:48 +0000
commit5734545388e6661c3e9040c53262bc3ba54fa81e (patch)
treef1142411f707c2e93dabb7e430eafefe280975c0
parentc63a170cde44e891adedc9c589d05da46eecd674 (diff)
Optimized conntrack (thanks to Joe Burpee)
-rw-r--r--libs/sys/luasrc/sys.lua10
-rw-r--r--modules/admin-full/luasrc/model/cbi/admin_network/conntrack.lua2
2 files changed, 7 insertions, 5 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
diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/conntrack.lua b/modules/admin-full/luasrc/model/cbi/admin_network/conntrack.lua
index aa7f7c21c..f1c90d695 100644
--- a/modules/admin-full/luasrc/model/cbi/admin_network/conntrack.lua
+++ b/modules/admin-full/luasrc/model/cbi/admin_network/conntrack.lua
@@ -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()