luci-base: sys.lua: fix parsing conntrack entries without timeout
authorJo-Philipp Wich <jo@mein.io>
Fri, 29 Apr 2022 10:16:19 +0000 (12:16 +0200)
committerJo-Philipp Wich <jo@mein.io>
Fri, 29 Apr 2022 10:18:17 +0000 (12:18 +0200)
Flow offloaded conntrack entries carry no timeout value and trip up the
record parsing routine. Adjust the code to properly deal with such entries.

Ref: https://forum.openwrt.org/t/offloading-breaks-connections-list/126423
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-base/luasrc/sys.lua

index af345a16d57291a0daffca53a58707180f3dfb9a..71db04acf84255b13b97bbe431d23d0302729734 100644 (file)
@@ -286,8 +286,14 @@ function net.conntrack(callback)
 
        local line, connt = nil, (not callback) and { }
        for line in nfct do
-               local fam, l3, l4, timeout, tuples =
-                       line:match("^(ipv[46]) +(%d+) +%S+ +(%d+) +(%d+) +(.+)$")
+               local fam, l3, l4, rest =
+                       line:match("^(ipv[46]) +(%d+) +%S+ +(%d+) +(.+)$")
+
+               local timeout, tuples = rest:match("^(%d+) +(.+)$")
+
+               if not tuples then
+                       tuples = rest
+               end
 
                if fam and l3 and l4 and timeout and not tuples:match("^TIME_WAIT ") then
                        l4 = nixio.getprotobynumber(l4)