@resource_map = {
:burst => "--limit-burst",
:destination => "-d",
- :dport => "-m multiport --dports",
+ :dport => ["-m multiport --dports", "-m (udp|tcp) --dport"],
:gid => "-m owner --gid-owner",
:icmp => "-m icmp --icmp-type",
:iniface => "-i",
:set_mark => mark_flag,
:socket => "-m socket",
:source => "-s",
- :sport => "-m multiport --sports",
+ :sport => ["-m multiport --sports", "-m (udp|tcp) --sport"],
:state => "-m state --state",
:table => "-t",
:tcp_flags => "-m tcp --tcp-flags",
# Here we iterate across our values to generate an array of keys
@resource_list.reverse.each do |k|
- if values.slice!(/\s#{@resource_map[k]}/)
- keys << k
+ resource_map_key = @resource_map[k]
+ resource_map_key.each do |opt|
+ if values.slice!(/\s#{opt}/)
+ keys << k
+ break
+ end
end
end
next
end
- args << resource_map[res].split(' ')
+ args << resource_map[res].first.split(' ')
# For sport and dport, convert hyphens to colons since the type
# expects hyphens for ranges of ports.
:socket => true,
},
},
+ 'single_tcp_sport' => {
+ :line => '-A OUTPUT -s 10.94.100.46/32 -p tcp -m tcp --sport 20443 -j ACCEPT',
+ :table => 'mangle',
+ :params => {
+ :action => 'accept',
+ :chain => 'OUTPUT',
+ :source => "10.94.100.46/32",
+ :proto => "tcp",
+ :sport => ["20443"],
+ },
+ },
+ 'single_udp_sport' => {
+ :line => '-A OUTPUT -s 10.94.100.46/32 -p udp -m udp --sport 20443 -j ACCEPT',
+ :table => 'mangle',
+ :params => {
+ :action => 'accept',
+ :chain => 'OUTPUT',
+ :source => "10.94.100.46/32",
+ :proto => "udp",
+ :sport => ["20443"],
+ },
+ },
+ 'single_tcp_dport' => {
+ :line => '-A OUTPUT -s 10.94.100.46/32 -p tcp -m tcp --dport 20443 -j ACCEPT',
+ :table => 'mangle',
+ :params => {
+ :action => 'accept',
+ :chain => 'OUTPUT',
+ :source => "10.94.100.46/32",
+ :proto => "tcp",
+ :dport => ["20443"],
+ },
+ },
+ 'single_udp_dport' => {
+ :line => '-A OUTPUT -s 10.94.100.46/32 -p udp -m udp --dport 20443 -j ACCEPT',
+ :table => 'mangle',
+ :params => {
+ :action => 'accept',
+ :chain => 'OUTPUT',
+ :source => "10.94.100.46/32",
+ :proto => "udp",
+ :dport => ["20443"],
+ },
+ },
}
# This hash is for testing converting a hash to an argument line.