Add support for showing ipv6 NAT table in Luci

When kmod-nf-nat6 and kmod-ipt-nat6 are installed, the firewall has also
the 'nat' table for ipv6, and packages like 'adblock' utilize that table.

Currently that table is not shown on the Luci firewall status page,
although it is visible by 'ip6tables -L -v -t nat' from console.

Detect 'nat' table's presence from /proc/net/ip6_tables_names

Show 'nat' table in Status->Firewall->IPv6 if that table is present.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
This commit is contained in:
Hannu Nyman 2016-03-16 15:50:00 +02:00
parent b77602f2e7
commit a77ff30057
2 changed files with 21 additions and 0 deletions

View file

@ -19,6 +19,8 @@ luci.util = require "luci.util"
luci.sys = require "luci.sys"
luci.ip = require "luci.ip"
local pcall = pcall
local io = require "io"
local tonumber, ipairs, table = tonumber, ipairs, table
module("luci.sys.iptparser")
@ -37,6 +39,15 @@ function IptParser.__init__( self, family )
else
self._nulladdr = "::/0"
self._tables = { "filter", "mangle", "raw" }
local ok, lines = pcall(io.lines, "/proc/net/ip6_tables_names")
if ok and lines then
local line
for line in lines do
if line == "nat" then
self._tables = { "filter", "nat", "mangle", "raw" }
end
end
end
self._command = "ip6tables -t %s --line-numbers -nxvL"
end

View file

@ -9,6 +9,7 @@
require "luci.sys.iptparser"
local wba = require "luci.tools.webadmin"
local fs = require "nixio.fs"
local io = require "io"
local has_ip6tables = fs.access("/usr/sbin/ip6tables")
local mode = 4
@ -47,6 +48,15 @@
local tables = { "Filter", "NAT", "Mangle", "Raw" }
if mode == 6 then
tables = { "Filter", "Mangle", "Raw" }
local ok, lines = pcall(io.lines, "/proc/net/ip6_tables_names")
if ok and lines then
local line
for line in lines do
if line == "nat" then
tables = { "Filter", "NAT", "Mangle", "Raw" }
end
end
end
end
-%>