diff --git a/New/Shorewall/Nat.pm b/New/Shorewall/Nat.pm index efc85fc3f..2ceacf37a 100644 --- a/New/Shorewall/Nat.pm +++ b/New/Shorewall/Nat.pm @@ -32,7 +32,7 @@ use Shorewall::IPAddrs; use strict; our @ISA = qw(Exporter); -our @EXPORT = qw( setup_masq setup_nat ); +our @EXPORT = qw( setup_masq setup_nat add_addresses ); our @EXPORT_OK = (); our @VERSION = 1.00; @@ -227,7 +227,7 @@ sub setup_one_masq($$$$$$) unless ( $addresses_to_add{$addr} ) { emit "del_ip_addr $addr $interface" unless $config{RETAIN_ALIASES}; $addresses_to_add{$addr} = 1; - push @addresses_to_add, "$interface:$alias"; + push @addresses_to_add, $addr, "$interface:$alias"; $alias++; } } @@ -382,4 +382,18 @@ sub setup_nat() { $comment = ''; } +sub add_addresses () { + if ( @addresses_to_add ) { + my $arg = ''; + + while ( @addresses_to_add ) { + my $addr = shift @addresses_to_add; + my $interface = shift @addresses_to_add; + $arg = "$arg $addr $interface"; + } + + emit "add_ip_aliases $arg"; + } +} + 1; diff --git a/New/compiler.pl b/New/compiler.pl index 371f2e40f..d8e2f8b88 100755 --- a/New/compiler.pl +++ b/New/compiler.pl @@ -520,6 +520,10 @@ sub generate_script_3() { dump_zone_contents; emit_unindented '__EOF__'; + emit '> ${VARDIR}/nat'; + + add_addresses; + pop_indent; emit "}\n";