aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2009-04-22 11:26:37 +0100
committerKeir Fraser <keir.fraser@citrix.com>2009-04-22 11:26:37 +0100
commit744ba6479a9c932cd7bcc44c464663058fef54ce (patch)
treea82a671c097c46ef58fb7c90a029f65ec7f5dba4
parent946a02890ce9adf18da2abc45f93f055732f9318 (diff)
downloadxen-744ba6479a9c932cd7bcc44c464663058fef54ce.tar.gz
xen-744ba6479a9c932cd7bcc44c464663058fef54ce.tar.bz2
xen-744ba6479a9c932cd7bcc44c464663058fef54ce.zip
network-bridge: Fix for bonding
If ${netdev} is bonding, brctl addif ${bridge} ${pdev} fails: can't add ${pdev} to bridge ${bridge}: Invalid argument Because ${pdev} has no slaves at this point.=20 # Notice that ifdown ${netdev} clears slaves of ${netdev}. This patch restores slaves before add_to_bridge2 ${bridge} ${pdev}. Signed-off-by: KUWAMURA Shin'ya <kuwa@jp.fujitsu.com>
-rw-r--r--tools/hotplug/Linux/network-bridge9
1 files changed, 9 insertions, 0 deletions
diff --git a/tools/hotplug/Linux/network-bridge b/tools/hotplug/Linux/network-bridge
index 091b8beb3e..954c0160b7 100644
--- a/tools/hotplug/Linux/network-bridge
+++ b/tools/hotplug/Linux/network-bridge
@@ -223,6 +223,10 @@ op_start () {
preiftransfer ${netdev}
transfer_addrs ${netdev} ${tdev}
+ # Remember slaves for bonding interface.
+ if [ -e /sys/class/net/${netdev}/bonding/slaves ]; then
+ slaves=`cat /sys/class/net/${netdev}/bonding/slaves`
+ fi
# Remember the IP details for do_ifup.
get_ip_info ${netdev}
if ! ifdown ${netdev}; then
@@ -234,6 +238,11 @@ op_start () {
setup_bridge_port ${pdev}
+ # Restore slaves
+ if [ -n "${slaves}" ]; then
+ ip link set ${pdev} up
+ ifenslave ${pdev} ${slaves}
+ fi
add_to_bridge2 ${bridge} ${pdev}
do_ifup ${bridge}