Browse code

Use arping when moving an IP address

This helps fix an issue where an IPv4 address is moved from an interface
and you lose your SSH session.

Change-Id: Idf37ccbaa6f615fcc714d49c3f0c00c893f56021

Sean M. Collins authored on 2016/04/29 03:33:38
Showing 1 changed files
... ...
@@ -859,6 +859,13 @@ function _move_neutron_addresses_route {
859 859
 
860 860
         IP_BRD=$(ip -f $af a s dev $from_intf scope global primary | grep inet | awk '{ print $2, $3, $4; exit }')
861 861
 
862
+        if [[ "$af" == "inet" ]]; then
863
+            IP=$(echo $IP_BRD | awk '{ print $1; exit }' | grep -o -E '(.*)/' | cut -d "/" -f1)
864
+            ARP_CMD="arping -A -c 3 -w 4.5 -I $to_intf $IP "
865
+        else
866
+            ARP_CMD=""
867
+        fi
868
+
862 869
         if [ "$DEFAULT_ROUTE_GW" != "" ]; then
863 870
             ADD_DEFAULT_ROUTE="sudo ip -f $af r replace default via $DEFAULT_ROUTE_GW dev $to_intf"
864 871
         fi
... ...
@@ -879,7 +886,7 @@ function _move_neutron_addresses_route {
879 879
 
880 880
         # The add/del OVS port calls have to happen either before or
881 881
         # after the address is moved in order to not leave it orphaned.
882
-        $DEL_OVS_PORT; $IP_DEL; $IP_ADD; $IP_UP; $ADD_OVS_PORT; $ADD_DEFAULT_ROUTE
882
+        $DEL_OVS_PORT; $IP_DEL; $IP_ADD; $IP_UP; $ADD_OVS_PORT; $ADD_DEFAULT_ROUTE; $ARP_CMD
883 883
     fi
884 884
 }
885 885