def to_pf_command
args = []
args << "rdr"
if self.rulespec
args << 'on' << self.rulespec[:in_interface].to_s if self.rulespec.has_key? :in_interface
args << "proto" << self.rulespec.fetch(:protocol,'ip').to_s
args << 'from'
args << self.rulespec.fetch(:source_address, 'any').to_s
args << 'port' << self.rulespec[:source_port].to_s if self.rulespec.has_key? :source_port
args << 'to'
args << self.rulespec.fetch(:dest_address, 'any').to_s
args << 'port' << self.rulespec[:dest_port].to_s if self.rulespec.has_key? :dest_port
end
if self.redirectspec
if self.redirectspec.has_key? :to_ports
args << '->'
args << "127.0.0.1"
args << 'port' << self.redirectspec[:to_ports].to_s if self.redirectspec.has_key? :to_ports
else
raise "Rule lacks a valid redirect: #{self.inspect}"
end
end
args
end