]> review.fuel-infra Code Review - puppet-modules/puppetlabs-firewall.git/commitdiff
(MODULES-451) Match extension protocol for multiport
authorHunter Haugen <hunter@puppetlabs.com>
Thu, 6 Feb 2014 00:02:56 +0000 (16:02 -0800)
committerHunter Haugen <hunter@puppetlabs.com>
Thu, 6 Feb 2014 00:11:57 +0000 (16:11 -0800)
The `-m (tcp|udp)` match extension flag before multiport `--sport` and
`--dport` flags is considered optional, but may be present on some
rules. This patches the provides recognition of those rules.

lib/puppet/provider/firewall/iptables.rb
spec/acceptance/resource_cmd_spec.rb

index 3095a1283527926346c8455ca693dec72f383f22..5be4fabdc3e99204fa404abb39ea28b27f388d7f 100644 (file)
@@ -50,7 +50,7 @@ Puppet::Type.type(:firewall).provide :iptables, :parent => Puppet::Provider::Fir
     :destination => "-d",
     :dst_type => "-m addrtype --dst-type",
     :dst_range => "-m iprange --dst-range",
-    :dport => ["-m multiport --dports", "-m (udp|tcp) --dport", "--dport"],
+    :dport => ["-m (udp|tcp) -m multiport --dports", "-m multiport --dports", "-m (udp|tcp) --dport", "--dport"],
     :gid => "-m owner --gid-owner",
     :icmp => "-m icmp --icmp-type",
     :iniface => "-i",
@@ -77,7 +77,7 @@ Puppet::Type.type(:firewall).provide :iptables, :parent => Puppet::Provider::Fir
     :source => "-s",
     :src_type => "-m addrtype --src-type",
     :src_range => "-m iprange --src-range",
-    :sport => ["-m multiport --sports", "-m (udp|tcp) --sport", "--sport"],
+    :sport => ["-m (udp|tcp) -m multiport --sports", "-m multiport --sports", "-m (udp|tcp) --sport", "--sport"],
     :state => "-m state --state",
     :table => "-t",
     :tcp_flags => "-m tcp --tcp-flags",
index 575fa8c8631a3b7d380365f25841fdbadf3aab18..8334b6c010cf8e6c0d268780926dfb771ebaec25 100644 (file)
@@ -75,4 +75,19 @@ describe 'puppet resource firewall command:' do
       end
     end
   end
+
+  context 'accepts rules with match extension tcp flag' do
+    before :all do
+      iptables_flush_all_tables
+      shell('/sbin/iptables -t mangle -A PREROUTING -d 1.2.3.4 -p tcp -m tcp -m multiport --dports 80,443,8140 -j MARK --set-mark 42')
+    end
+
+    it do
+      shell('puppet resource firewall') do |r|
+        r.exit_code.should be_zero
+        # don't check stdout, testing preexisting rules, output is normal
+        r.stderr.should be_empty
+      end
+    end
+  end
 end