From: Rosy Song Date: Tue, 1 Jan 2019 08:08:10 +0000 (+0800) Subject: luci-app-nft-qos: rework _action_rate function X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=8269351cf4362492fa191758d2cec61b688ff683;p=oweals%2Fluci.git luci-app-nft-qos: rework _action_rate function Signed-off-by: Rosy Song --- diff --git a/applications/luci-app-nft-qos/luasrc/controller/nft-qos.lua b/applications/luci-app-nft-qos/luasrc/controller/nft-qos.lua index f7e399352..637eb1173 100644 --- a/applications/luci-app-nft-qos/luasrc/controller/nft-qos.lua +++ b/applications/luci-app-nft-qos/luasrc/controller/nft-qos.lua @@ -17,30 +17,29 @@ function index() end function _action_rate(rv, n) - local has_ipv6 = nixio.fs.access("/proc/net/ipv6_route") - if has_ipv6 then - local c = io.popen("nft list chain inet nft-qos-monitor " .. n .. " 2>/dev/null") - else - local c = io.popen("nft list chain ip nft-qos-monitor " .. n .. " 2>/dev/null") - end + local c = nixio.fs.access("/proc/net/ipv6_route") and + io.popen("nft list chain inet nft-qos-monitor " .. n .. " 2>/dev/null") or + io.popen("nft list chain ip nft-qos-monitor " .. n .. " 2>/dev/null") + if c then for l in c:lines() do - local _, i, p, b = l:match('^%s+ip ([^%s]+) ([^%s]+) counter packets (%d+) bytes (%d+)') + local _, i, p, b = l:match( + '^%s+ip ([^%s]+) ([^%s]+) counter packets (%d+) bytes (%d+)' + ) if i and p and b then -- handle expression - local r = { + rv[#rv + 1] = { rule = { - family = "inet", - table = "nft-qos-monitor", - chain = n, - handle = 0, - expr = { + family = "inet", + table = "nft-qos-monitor", + chain = n, + handle = 0, + expr = { { match = { right = i } }, { counter = { packets = p, bytes = b } } } } } - rv[#rv + 1] = r end end c:close()