mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 18:21:39 +01:00
With changeset 22885 support was added for setting the MTU in the vif-bridge script for when a vif interface was set to 'online'. The was not done for the 'add' operation. The 'add' operation was added to the script for when tap devices were specified (c/s 21944). With the setting of the MTU for the 'online' case was there a reason for omitting the 'add'? This patch sets the MTU for both 'online' and 'add' in the vif-bridge script. Signed-off-by: Charles Arnold <carnold@suse.com> Acked-by: Ian Campbell <ian.campbell@citrix.com>
111 lines
2.8 KiB
Bash
111 lines
2.8 KiB
Bash
#!/bin/bash
|
|
#============================================================================
|
|
# ${XEN_SCRIPT_DIR}/vif-bridge
|
|
#
|
|
# Script for configuring a vif in bridged mode.
|
|
# The hotplugging system will call this script if it is specified either in
|
|
# the device configuration given to Xend, or the default Xend configuration
|
|
# in ${XEN_CONFIG_DIR}/xend-config.sxp. If the script is specified in
|
|
# neither of those places, then this script is the default.
|
|
#
|
|
# Usage:
|
|
# vif-bridge (add|remove|online|offline)
|
|
#
|
|
# Environment vars:
|
|
# vif vif interface name (required).
|
|
# XENBUS_PATH path to this device's details in the XenStore (required).
|
|
#
|
|
# Read from the store:
|
|
# bridge bridge to add the vif to (optional). Defaults to searching for the
|
|
# bridge itself.
|
|
# ip list of IP networks for the vif, space-separated (optional).
|
|
#
|
|
# up:
|
|
# Enslaves the vif interface to the bridge and adds iptables rules
|
|
# for its ip addresses (if any).
|
|
#
|
|
# down:
|
|
# Removes the vif interface from the bridge and removes the iptables
|
|
# rules for its ip addresses (if any).
|
|
#============================================================================
|
|
|
|
dir=$(dirname "$0")
|
|
. "$dir/vif-common.sh"
|
|
|
|
bridge=${bridge:-}
|
|
bridge=$(xenstore_read_default "$XENBUS_PATH/bridge" "$bridge")
|
|
|
|
if [ -z "$bridge" ]
|
|
then
|
|
bridge=$(brctl show | awk 'NR==2{print$1}')
|
|
|
|
if [ -z "$bridge" ]
|
|
then
|
|
fatal "Could not find bridge, and none was specified"
|
|
fi
|
|
else
|
|
#
|
|
# Old style bridge setup with netloop, used to have a bridge name
|
|
# of xenbrX, enslaving pethX and vif0.X, and then configuring
|
|
# eth0.
|
|
#
|
|
# New style bridge setup does not use netloop, so the bridge name
|
|
# is ethX and the physical device is enslaved pethX
|
|
#
|
|
# So if...
|
|
#
|
|
# - User asks for xenbrX
|
|
# - AND xenbrX doesn't exist
|
|
# - AND there is a ethX device which is a bridge
|
|
#
|
|
# ..then we translate xenbrX to ethX
|
|
#
|
|
# This lets old config files work without modification
|
|
#
|
|
if [ ! -e "/sys/class/net/$bridge" ] && [ -z "${bridge##xenbr*}" ]
|
|
then
|
|
if [ -e "/sys/class/net/eth${bridge#xenbr}/bridge" ]
|
|
then
|
|
bridge="eth${bridge#xenbr}"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
RET=0
|
|
ip link show $bridge 1>/dev/null 2>&1 || RET=1
|
|
if [ "$RET" -eq 1 ]
|
|
then
|
|
fatal "Could not find bridge device $bridge"
|
|
fi
|
|
|
|
case "$command" in
|
|
online)
|
|
setup_virtual_bridge_port "$dev"
|
|
set_mtu $bridge $dev
|
|
add_to_bridge "$bridge" "$dev"
|
|
;;
|
|
|
|
offline)
|
|
do_without_error brctl delif "$bridge" "$dev"
|
|
do_without_error ifconfig "$dev" down
|
|
;;
|
|
|
|
add)
|
|
setup_virtual_bridge_port "$dev"
|
|
set_mtu $bridge $dev
|
|
add_to_bridge "$bridge" "$dev"
|
|
;;
|
|
esac
|
|
|
|
if [ "$type_if" = vif ]; then
|
|
handle_iptable
|
|
fi
|
|
|
|
call_hooks vif post
|
|
|
|
log debug "Successful vif-bridge $command for $dev, bridge $bridge."
|
|
if [ "$type_if" = vif -a "$command" = "online" ]
|
|
then
|
|
success
|
|
fi
|