diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-04-22 11:26:37 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-04-22 11:26:37 +0100 |
commit | 744ba6479a9c932cd7bcc44c464663058fef54ce (patch) | |
tree | a82a671c097c46ef58fb7c90a029f65ec7f5dba4 | |
parent | 946a02890ce9adf18da2abc45f93f055732f9318 (diff) | |
download | xen-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-bridge | 9 |
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} |