[ovs-dev] [PATCH v2 2/4] ovs-lib: Ability to move ip address and routes.
Gurucharan Shetty
shettyg at nicira.com
Mon Jun 22 09:19:43 UTC 2015
The ability to move IP address and routes between two interfaces
is useful when we want to make a physical interface (say eth0)
as a port of OVS bridge (say breth0) with all its IP address and route
information transferred to OVS bridge. An upcoming commit
uses the new ability.
Signed-off-by: Gurucharan Shetty <gshetty at nicira.com>
---
v1-v2: No change
---
utilities/ovs-lib.in | 24 +++++++++++++++++-------
utilities/ovs-save | 4 ++--
2 files changed, 19 insertions(+), 9 deletions(-)
diff --git a/utilities/ovs-lib.in b/utilities/ovs-lib.in
index 32d621e..7cde6e4 100644
--- a/utilities/ovs-lib.in
+++ b/utilities/ovs-lib.in
@@ -251,9 +251,14 @@ daemon_is_running () {
test -e "$pidfile" && pid=`cat "$pidfile"` && pid_exists "$pid" && pid_comm_check $1 $pid
} >/dev/null 2>&1
-# Prints commands needed to restore the ip address of an interface.
-save_ip_address () {
+# Prints commands needed to move the ip address from interface $1 to interface
+# $2
+move_ip_address () {
+ if [ -z "$1" ] || [ -z "$2" ]; then
+ return
+ fi
dev="$1"
+ dst="$2"
# IP addresses (including IPv6).
echo "ip addr flush dev $dev 2>/dev/null" # Suppresses "Nothing to flush".
@@ -286,7 +291,8 @@ save_ip_address () {
;;
"$dev"|"$dev:"*)
# Address label string
- addrcmd="$addrcmd label $1"
+ label=`echo $1 | sed "s/$dev/$dst/"`
+ addrcmd="$addrcmd label $label"
shift
continue
;;
@@ -298,13 +304,17 @@ save_ip_address () {
addrcmd="$addrcmd $1"
fi
- echo ip -f $family addr add $addrcmd dev $dev
+ echo ip -f $family addr add $addrcmd dev $dst
done
}
-# Prints commands needed to restore the ip route of an interface.
-save_ip_routes () {
+# Prints commands needed to move the ip route of interface $1 to interface $2
+move_ip_routes () {
+ if [ -z "$1" ] || [ -z "$2" ]; then
+ return
+ fi
dev="$1"
+ dst="$2"
echo "ip route flush dev $dev proto boot 2>/dev/null" # Suppresses "Nothing to flush".
ip route show dev $dev | while read route; do
# "proto kernel" routes are installed by the kernel automatically.
@@ -312,6 +322,6 @@ save_ip_routes () {
*" proto kernel "*) continue ;;
esac
- echo "ip route add $route dev $dev"
+ echo "ip route add $route dev $dst"
done
}
diff --git a/utilities/ovs-save b/utilities/ovs-save
index 33faa9c..bcaf27c 100755
--- a/utilities/ovs-save
+++ b/utilities/ovs-save
@@ -84,9 +84,9 @@ save_interfaces () {
echo ip link set dev $dev $linkcmd
fi
- save_ip_address $dev
+ move_ip_address $dev $dev
- save_ip_routes $dev
+ move_ip_routes $dev $dev
echo
done
--
1.9.1
More information about the dev
mailing list