aboutsummaryrefslogtreecommitdiffstats
path: root/awall/iptables.lua
diff options
context:
space:
mode:
Diffstat (limited to 'awall/iptables.lua')
-rw-r--r--awall/iptables.lua27
1 files changed, 16 insertions, 11 deletions
diff --git a/awall/iptables.lua b/awall/iptables.lua
index b8b6b13..67ed7a1 100644
--- a/awall/iptables.lua
+++ b/awall/iptables.lua
@@ -18,20 +18,25 @@ local families = {inet={cmd='iptables-restore', file='rules-save'},
local builtin = {'INPUT', 'FORWARD', 'OUTPUT',
'PREROUTING', 'POSTROUTING'}
-function reset()
- config = {}
+local IPTables = {}
+
+function new()
+ local config = {}
setmetatable(config,
{__index=function(t, k)
t[k] = {}
setmetatable(t[k], getmetatable(t))
return t[k]
end})
+
+ local res = {config=config}
+ setmetatable(res, {__index=IPTables})
+ return res
end
-reset()
-local function dumpfile(family, iptfile)
+function IPTables:dumpfile(family, iptfile)
iptfile:write('# '..families[family].file..' generated by awall\n')
- for tbl, chains in pairs(config[family]) do
+ for tbl, chains in pairs(self.config[family]) do
iptfile:write('*'..tbl..'\n')
for chain, rules in pairs(chains) do
iptfile:write(':'..chain..' '..(contains(builtin, chain) and
@@ -46,17 +51,17 @@ local function dumpfile(family, iptfile)
end
end
-function test()
- for family, tbls in pairs(config) do
+function IPTables:test()
+ for family, tbls in pairs(self.config) do
local pid, stdin = lpc.run(families[family].cmd, '-t')
- dumpfile(family, stdin)
+ self:dumpfile(family, stdin)
stdin:close()
assert(lpc.wait(pid) == 0)
end
end
-function dump(dir)
- for family, tbls in pairs(config) do
- dumpfile(family, io.output(dir..'/'..families[family].file))
+function IPTables:dump(dir)
+ for family, tbls in pairs(self.config) do
+ self:dumpfile(family, io.output(dir..'/'..families[family].file))
end
end