File bridge-bonding.diff of Package xen

Index: xen-4.0.2-testing/tools/hotplug/Linux/network-bridge
===================================================================
--- xen-4.0.2-testing.orig/tools/hotplug/Linux/network-bridge
+++ xen-4.0.2-testing/tools/hotplug/Linux/network-bridge
@@ -245,6 +245,9 @@ op_start () {
 
     claim_lock "network-bridge"
 
+    local bonded=""
+    [ -e /sys/class/net/${netdev}/bonding ] && bonded="yes"
+
     vlans=$(find_active_vlans "${netdev}")
     for vlan in $vlans ; do ifdown $vlan ; done
 
@@ -262,18 +265,32 @@ op_start () {
 	ip link set ${netdev} down
 	ip addr flush ${netdev}
     fi
-    ip link set ${netdev} name ${pdev}
-    ip link set ${tdev} name ${bridge}
-
-    setup_bridge_port ${pdev}
 
-    # Restore slaves
-    if [ -n "${slaves}" ]; then
-	ip link set ${pdev} up
-	ifenslave ${pdev} ${slaves}
+    if [ "x${bonded}" = "xyes" ]
+    then
+	ip link set ${tdev} name ${bridge}
+	ln -sf /etc/sysconfig/network/ifcfg-${netdev} /etc/sysconfig/network/ifcfg-${pdev}
+	ifup ${pdev}
+	local gw=`ip route show dev ${pdev} | fgrep default | sed 's/default via //'`
+	ip addr flush ${pdev}
+	rm -f /etc/sysconfig/network/ifcfg-${pdev}
+	brctl addif ${bridge} ${pdev}
+	ip link set ${bridge} up
+	[ -n "$gw" ] && ip route add default via ${gw}
+    else
+	ip link set ${netdev} name ${pdev}
+	ip link set ${tdev} name ${bridge}
+
+        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}
     fi
-    add_to_bridge2 ${bridge} ${pdev}
-    do_ifup ${bridge}
 
     for vlan in $vlans ; do ifup $vlan ; done
 
openSUSE Build Service is sponsored by