Mailing List Archive

[xen-unstable] tools/hotplug/Linux: Use correct device name for vifs in setup scripts
# HG changeset patch
# User Ian Jackson <Ian.Jackson@eu.citrix.com>
# Date 1297448495 0
# Node ID d4bc41a8cecbf1fb022630bb3f65fdf9c496ba2d
# Parent 6868f7f3ab3f954d4a8ae68e92da1dec631c9001
tools/hotplug/Linux: Use correct device name for vifs in setup scripts

In vif-common.sh, set the shell variable "dev" to the new interface
name when interfaces are renamed, and consistently use this variable
in all the vif scripts.

This fixes hotplug of renamed interfaces.

From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
From: Patrick Scharrenberg <pittipatti@web.de>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Signed-off-by: Patrick Scharrenberg <pittipatti@web.de>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
tools/hotplug/Linux/vif-common.sh | 10 +++++-----
tools/hotplug/Linux/vif-nat | 26 +++++++++++++-------------
tools/hotplug/Linux/vif-route | 20 ++++++++++----------
3 files changed, 28 insertions(+), 28 deletions(-)

diff -r 6868f7f3ab3f -r d4bc41a8cecb tools/hotplug/Linux/vif-common.sh
--- a/tools/hotplug/Linux/vif-common.sh Fri Feb 11 17:57:32 2011 +0000
+++ b/tools/hotplug/Linux/vif-common.sh Fri Feb 11 18:21:35 2011 +0000
@@ -69,16 +69,16 @@ if [ "$type_if" = vif ]; then
if [ "$type_if" = vif ]; then
# Check presence of compulsory args.
XENBUS_PATH="${XENBUS_PATH:?}"
- vif="${vif:?}"
+ dev="${dev:?}"

vifname=$(xenstore_read_default "$XENBUS_PATH/vifname" "")
if [ "$vifname" ]
then
if [ "$command" == "online" ] && ! ip link show "$vifname" >&/dev/null
then
- do_or_die ip link set "$vif" name "$vifname"
+ do_or_die ip link set "$dev" name "$vifname"
fi
- vif="$vifname"
+ dev="$vifname"
fi
elif [ "$type_if" = tap ]; then
# Check presence of compulsory args.
@@ -105,9 +105,9 @@ frob_iptable()
local c="-D"
fi

- iptables "$c" FORWARD -m physdev --physdev-is-bridged --physdev-in "$vif" \
+ iptables "$c" FORWARD -m physdev --physdev-is-bridged --physdev-in "$dev" \
"$@" -j ACCEPT 2>/dev/null &&
- iptables "$c" FORWARD -m physdev --physdev-is-bridged --physdev-out "$vif" \
+ iptables "$c" FORWARD -m physdev --physdev-is-bridged --physdev-out "$dev" \
-j ACCEPT 2>/dev/null

if [ "$command" == "online" -a $? -ne 0 ]
diff -r 6868f7f3ab3f -r d4bc41a8cecb tools/hotplug/Linux/vif-nat
--- a/tools/hotplug/Linux/vif-nat Fri Feb 11 17:57:32 2011 +0000
+++ b/tools/hotplug/Linux/vif-nat Fri Feb 11 18:21:35 2011 +0000
@@ -12,7 +12,7 @@
# vif-nat (add|remove|online|offline)
#
# Environment vars:
-# vif vif interface name (required).
+# dev vif interface name (required).
# XENBUS_PATH path to this device's details in the XenStore (required).
#
# Parameters:
@@ -98,7 +98,7 @@ dhcparg_remove_entry()
dhcparg_remove_entry()
{
local tmpfile=$(mktemp)
- sed -e "s/$vif //" "$dhcpd_arg_file" >"$tmpfile"
+ sed -e "s/${dev} //" "$dhcpd_arg_file" >"$tmpfile"
if diff "$tmpfile" "$dhcpd_arg_file" >/dev/null
then
rm "$tmpfile"
@@ -112,11 +112,11 @@ dhcparg_add_entry()
dhcparg_remove_entry
local tmpfile=$(mktemp)
# handle Red Hat, SUSE, and Debian styles, with or without quotes
- sed -e 's/^DHCPDARGS="*\([^"]*\)"*/DHCPDARGS="\1'"$vif "'"/' \
+ sed -e 's/^DHCPDARGS="*\([^"]*\)"*/DHCPDARGS="\1'"${dev} "'"/' \
"$dhcpd_arg_file" >"$tmpfile" && mv "$tmpfile" "$dhcpd_arg_file"
- sed -e 's/^DHCPD_INTERFACE="*\([^"]*\)"*/DHCPD_INTERFACE="\1'"$vif "'"/' \
+ sed -e 's/^DHCPD_INTERFACE="*\([^"]*\)"*/DHCPD_INTERFACE="\1'"${dev} "'"/' \
"$dhcpd_arg_file" >"$tmpfile" && mv "$tmpfile" "$dhcpd_arg_file"
- sed -e 's/^INTERFACES="*\([^"]*\)"*/INTERFACES="\1'"$vif "'"/' \
+ sed -e 's/^INTERFACES="*\([^"]*\)"*/INTERFACES="\1'"${dev} "'"/' \
"$dhcpd_arg_file" >"$tmpfile" && mv "$tmpfile" "$dhcpd_arg_file"
rm -f "$tmpfile"
}
@@ -164,28 +164,28 @@ dhcp_down()

case "$command" in
online)
- if ip route | grep -q "dev $vif"
+ if ip route | grep -q "dev ${dev}"
then
- log debug "$vif already up"
+ log debug "${dev} already up"
exit 0
fi

- do_or_die ip link set "$vif" up arp on
- do_or_die ip addr add "$router_ip" dev "$vif"
- do_or_die ip route add "$vif_ip" dev "$vif" src "$router_ip"
- echo 1 >/proc/sys/net/ipv4/conf/${vif}/proxy_arp
+ do_or_die ip link set "${dev}" up arp on
+ do_or_die ip addr add "$router_ip" dev "${dev}"
+ do_or_die ip route add "$vif_ip" dev "${dev}" src "$router_ip"
+ echo 1 >/proc/sys/net/ipv4/conf/${dev}/proxy_arp
[ "$dhcp" != 'no' ] && dhcp_up
;;
offline)
[ "$dhcp" != 'no' ] && dhcp_down
- do_without_error ifconfig "$vif" down
+ do_without_error ifconfig "${dev}" down
;;
esac


handle_iptable

-log debug "Successful vif-nat $command for $vif."
+log debug "Successful vif-nat $command for ${dev}."
if [ "$command" = "online" ]
then
success
diff -r 6868f7f3ab3f -r d4bc41a8cecb tools/hotplug/Linux/vif-route
--- a/tools/hotplug/Linux/vif-route Fri Feb 11 17:57:32 2011 +0000
+++ b/tools/hotplug/Linux/vif-route Fri Feb 11 18:21:35 2011 +0000
@@ -12,7 +12,7 @@
# vif-route (add|remove|online|offline)
#
# Environment vars:
-# vif vif interface name (required).
+# dev vif interface name (required).
# XENBUS_PATH path to this device's details in the XenStore (required).
#
# Read from the store:
@@ -21,19 +21,19 @@
#============================================================================

dir=$(dirname "$0")
-. "$dir/vif-common.sh"
+. "${dir}/vif-common.sh"

main_ip=$(dom0_ip)

-case "$command" in
+case "${command}" in
online)
- ifconfig ${vif} ${main_ip} netmask 255.255.255.255 up
- echo 1 >/proc/sys/net/ipv4/conf/${vif}/proxy_arp
+ ifconfig ${dev} ${main_ip} netmask 255.255.255.255 up
+ echo 1 >/proc/sys/net/ipv4/conf/${dev}/proxy_arp
ipcmd='add'
cmdprefix=''
;;
offline)
- do_without_error ifdown ${vif}
+ do_without_error ifdown ${dev}
ipcmd='del'
cmdprefix='do_without_error'
;;
@@ -43,14 +43,14 @@ if [ "${ip}" ] ; then
# If we've been given a list of IP addresses, then add routes from dom0 to
# the guest using those addresses.
for addr in ${ip} ; do
- ${cmdprefix} ip route ${ipcmd} ${addr} dev ${vif} src ${main_ip}
- done
+ ${cmdprefix} ip route ${ipcmd} ${addr} dev ${dev} src ${main_ip}
+ done
fi

handle_iptable

-log debug "Successful vif-route $command for $vif."
-if [ "$command" = "online" ]
+log debug "Successful vif-route ${command} for ${dev}."
+if [ "${command}" = "online" ]
then
success
fi

_______________________________________________
Xen-changelog mailing list
Xen-changelog@lists.xensource.com
http://lists.xensource.com/xen-changelog