Skip to content
This repository was archived by the owner on Jan 15, 2025. It is now read-only.

Commit 0e16a8a

Browse files
author
Sander van Harmelen
committed
Extended the rule test with a test for jumps to chains that are not actually created on the system, but are already processed in the current recipe.
1 parent 9b6eaad commit 0e16a8a

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

providers/rule.rb

+14-8
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,26 @@
2929
end
3030

3131
def test_rules(new_resource, rules)
32-
#always flush and remove first in case the previous run left it lying around. Ignore any return values.
33-
shell_out("iptables --table #{new_resource.table} --flush _chef_lwrp_test")
34-
shell_out("iptables --table #{new_resource.table} --delete-chain _chef_lwrp_test")
35-
#create the test chain
36-
shell_out!("iptables --table #{new_resource.table} --new-chain _chef_lwrp_test")
32+
test_chains = ["_chef_lwrp_test1"]
33+
shell_out!("iptables --table #{new_resource.table} --new-chain #{test_chains.first}")
3734
begin
3835
rules.each do |rule|
3936
new_rule = rule_string(new_resource, rule, true)
40-
new_rule.gsub!("-A #{new_resource.chain}", "-A _chef_lwrp_test")
37+
new_rule.gsub!("-A #{new_resource.chain}", "-A #{test_chains.first}")
38+
39+
# Test for jumps to chains that are not actually created on the system, but are already processed in the current recipe
40+
if node["simple_iptables"]["chains"][new_resource.table].include?(new_resource.jump)
41+
test_chains.push("_chef_lwrp_test2")
42+
shell_out!("iptables --table #{new_resource.table} --new-chain #{test_chains.last}")
43+
new_rule.gsub!("--jump #{new_resource.jump}", "--jump #{test_chains.last}")
44+
end
4145
shell_out!("iptables #{new_rule}")
4246
end
4347
ensure
44-
shell_out("iptables --table #{new_resource.table} --flush _chef_lwrp_test")
45-
shell_out("iptables --table #{new_resource.table} --delete-chain _chef_lwrp_test")
48+
test_chains.each do |test_chain|
49+
shell_out("iptables --table #{new_resource.table} --flush #{test_chain}")
50+
shell_out("iptables --table #{new_resource.table} --delete-chain #{test_chain}")
51+
end
4652
end
4753
end
4854

0 commit comments

Comments
 (0)