From 5ed65582eee8175ce4ed2a2faa8e409024cab1e9 Mon Sep 17 00:00:00 2001 From: teastep Date: Thu, 22 Mar 2007 02:13:30 +0000 Subject: [PATCH] Second (untested) attempt to implement ip address addition git-svn-id: https://shorewall.svn.sourceforge.net/svnroot/shorewall/trunk@5621 fbd18981-670d-0410-9b5c-8dc0c1a9a2bb --- New/Shorewall/Nat.pm | 18 ++++++++++++++++-- New/compiler.pl | 4 ++++ 2 files changed, 20 insertions(+), 2 deletions(-) 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";