summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-01-30 12:45:05 +0000
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-01-30 12:45:05 +0000
commitb562959332856a4e0b013676b75151a7b475d3dd (patch)
treecbd7ad5746da89cc46c7c9b5952327a49694733b
parentcb0c7dce8ab8b9dea5567b82c3dbb242d1786ac3 (diff)
downloadawall-b562959332856a4e0b013676b75151a7b475d3dd.tar.bz2
awall-b562959332856a4e0b013676b75151a7b475d3dd.tar.xz
deterministic (alphabetical) ordering for tables and chains in ip[6]tables files
-rw-r--r--awall/iptables.lua16
1 files changed, 10 insertions, 6 deletions
diff --git a/awall/iptables.lua b/awall/iptables.lua
index 32b59b2..0be2dc4 100644
--- a/awall/iptables.lua
+++ b/awall/iptables.lua
@@ -11,7 +11,9 @@ require 'lpc'
require 'awall.object'
require 'awall.uerror'
-require 'awall.util'
+
+local util = require('awall.util')
+local sortedkeys = util.sortedkeys
local class = awall.object.class
@@ -96,17 +98,19 @@ end
function IPTables:dumpfile(family, iptfile)
iptfile:write('# '..families[family].file..' generated by awall\n')
- for tbl, chains in pairs(self.config[family]) do
+ local tables = self.config[family]
+ for i, tbl in sortedkeys(tables) do
iptfile:write('*'..tbl..'\n')
- for chain, rules in pairs(chains) do
+ local chains = tables[tbl]
+ for i, chain in sortedkeys(chains) do
local policy = '-'
- if awall.util.contains(builtin[tbl], chain) then
+ if util.contains(builtin[tbl], chain) then
policy = tbl == 'filter' and 'DROP' or 'ACCEPT'
end
iptfile:write(':'..chain..' '..policy..' [0:0]\n')
end
- for chain, rules in pairs(chains) do
- for i, rule in ipairs(rules) do
+ for i, chain in sortedkeys(chains) do
+ for i, rule in ipairs(chains[chain]) do
iptfile:write('-A '..chain..' '..rule..'\n')
end
end