Fix adding range of aliases

git-svn-id: https://shorewall.svn.sourceforge.net/svnroot/shorewall/trunk@730 fbd18981-670d-0410-9b5c-8dc0c1a9a2bb
This commit is contained in:
teastep 2003-08-27 14:53:44 +00:00
parent 47b75c3c87
commit 8466316f97
2 changed files with 38 additions and 9 deletions

View File

@ -3002,9 +3002,10 @@ setup_masq()
esac esac
if [ -n "$address" -a -n "$ADD_SNAT_ALIASES" ]; then if [ -n "$address" -a -n "$ADD_SNAT_ALIASES" ]; then
for addr in `ip_range $address` ; do for addr in `separate_list $address`; do
if ! list_search $addr $aliases_to_add; then for addr1 in `ip_range_explicit $addr` ; do
aliases_to_add="$aliases_to_add $addr $fullinterface" if ! list_search $addr1 $aliases_to_add; then
aliases_to_add="$aliases_to_add $addr1 $fullinterface"
case $fullinterface in case $fullinterface in
*:*) *:*)
fullinterface=${fullinterface%:*}:$((${fullinterface#*:} + 1 )) fullinterface=${fullinterface%:*}:$((${fullinterface#*:} + 1 ))
@ -3012,6 +3013,7 @@ setup_masq()
esac esac
fi fi
done done
done
fi fi
destination=$destnet destination=$destnet

View File

@ -308,6 +308,33 @@ ip_range() {
done done
} }
ip_range_explicit() {
local first last
case $1 in
[0-9]*.*.*.*-*.*.*.*)
;;
*)
echo $1
return
;;
esac
first=`decodeaddr ${1%-*}`
last=`decodeaddr ${1#*-}`
if [ $first -gt $last ]; then
fatal_error "Invalid IP address range: $1"
fi
l=$(( $last + 1 ))
while [ $first -le $last ]; do
echo `encodeaddr $first`
first=$(($first + 1))
done
}
# #
# Netmask from CIDR # Netmask from CIDR
# #