From 542a6da0d78ecdf3d575e188740de9efc88443ed Mon Sep 17 00:00:00 2001 From: Chiradeep Vittal Date: Thu, 4 Nov 2010 10:37:17 -0700 Subject: [PATCH] bug 6981: restore ipassoc behaviour --- scripts/network/domr/ipassoc.sh | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/scripts/network/domr/ipassoc.sh b/scripts/network/domr/ipassoc.sh index 2d460bf7e5a..e42fb7113d4 100755 --- a/scripts/network/domr/ipassoc.sh +++ b/scripts/network/domr/ipassoc.sh @@ -3,7 +3,7 @@ # ipassoc.sh -- associate/disassociate a public ip with an instance # # -# @VERSION@ +# 2.1.4 usage() { printf "Usage:\n %s -A -i -l -r [-f] \n" $(basename $0) >&2 printf " %s -D -i -l -r [-f] \n" $(basename $0) >&2 @@ -70,10 +70,11 @@ add_one_to_one_nat_entry() { add_nat_entry() { local dRIp=$1 local pubIp=$2 + local ipNoMask=$(echo $2 | awk -F'/' '{print $1}') ssh -p 3922 -o StrictHostKeyChecking=no -i $cert root@$dRIp "\ ip addr add dev $correctVif $pubIp - iptables -t nat -I POSTROUTING -j SNAT -o $correctVif --to-source $pubIp ; - arping -c 3 -I $correctVif -A -U -s $pubIp $pubIp; + iptables -t nat -I POSTROUTING -j SNAT -o $correctVif --to-source $ipNoMask ; + /sbin/arping -c 3 -I $correctVif -A -U -s $ipNoMask $ipNoMask; " if [ $? -gt 0 -a $? -ne 2 ] then @@ -87,9 +88,12 @@ add_nat_entry() { del_nat_entry() { local dRIp=$1 local pubIp=$2 + local ipNoMask=$(echo $2 | awk -F'/' '{print $1}') + local mask=$(echo $2 | awk -F'/' '{print $2}') + [ "$mask" == "" ] && mask="32" ssh -p 3922 -o StrictHostKeyChecking=no -i $cert root@$dRIp "\ - iptables -t nat -D POSTROUTING -j SNAT -o $correctVif --to-source $pubIp; - ip addr del dev $correctVif $pubIp/32 + iptables -t nat -D POSTROUTING -j SNAT -o $correctVif --to-source $ipNoMask; + ip addr del dev $correctVif "$ipNoMask/$mask" " if [ $? -gt 0 -a $? -ne 2 ] @@ -104,10 +108,11 @@ del_nat_entry() { add_an_ip () { local dRIp=$1 local pubIp=$2 + local ipNoMask=$(echo $2 | awk -F'/' '{print $1}') ssh -p 3922 -o StrictHostKeyChecking=no -i $cert root@$dRIp "\ ifconfig $correctVif up; ip addr add dev $correctVif $pubIp ; - arping -c 3 -I $correctVif -A -U -s $pubIp $pubIp; + /sbin/arping -c 3 -I $correctVif -A -U -s $ipNoMask $ipNoMask; " return $? } @@ -115,8 +120,11 @@ add_an_ip () { remove_an_ip () { local dRIp=$1 local pubIp=$2 + local ipNoMask=$(echo $2 | awk -F'/' '{print $1}') + local mask=$(echo $2 | awk -F'/' '{print $2}') + [ "$mask" == "" ] && mask="32" ssh -p 3922 -o StrictHostKeyChecking=no -i $cert root@$dRIp "\ - ip addr del dev $correctVif $pubIp/32 + ip addr del dev $correctVif "$ipNoMask/$mask" " if [ $? -gt 0 -a $? -ne 2 ] then