From: Steven Barth Date: Sun, 30 Nov 2008 17:22:48 +0000 (+0000) Subject: Optimized conntrack (thanks to Joe Burpee) X-Git-Tag: 0.9.0~929 X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=commitdiff_plain;h=5734545388e6661c3e9040c53262bc3ba54fa81e Optimized conntrack (thanks to Joe Burpee) --- 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()