File xen-hvm-default-bridge.diff of Package xen

Index: xen-4.0.1-testing/tools/ioemu-qemu-xen/net.h
===================================================================
--- xen-4.0.1-testing.orig/tools/ioemu-qemu-xen/net.h
+++ xen-4.0.1-testing/tools/ioemu-qemu-xen/net.h
@@ -107,8 +107,8 @@ void net_host_device_add(const char *dev
 void net_host_device_remove(int vlan_id, const char *device);
 
 #ifndef DEFAULT_NETWORK_SCRIPT
-#define DEFAULT_NETWORK_SCRIPT "/etc/qemu-ifup"
-#define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/qemu-ifdown"
+#define DEFAULT_NETWORK_SCRIPT "/etc/xen/qemu-ifup"
+#define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/xen/qemu-ifdown"
 #endif
 #ifdef __sun__
 #define SMBD_COMMAND "/usr/sfw/sbin/smbd"
Index: xen-4.0.1-testing/tools/ioemu-qemu-xen/net.c
===================================================================
--- xen-4.0.1-testing.orig/tools/ioemu-qemu-xen/net.c
+++ xen-4.0.1-testing/tools/ioemu-qemu-xen/net.c
@@ -1759,9 +1759,10 @@ int net_client_init(const char *device,
             }
             if (get_param_value(script_arg, sizeof(script_arg), "scriptarg", p) == 0 &&
                 get_param_value(script_arg, sizeof(script_arg), "bridge", p) == 0) { /* deprecated; for xend compatibility */
-                pstrcpy(script_arg, sizeof(script_arg), "");
+                ret = net_tap_init(vlan, device, name, ifname, setup_script, NULL, NULL);
+            } else {
+                ret = net_tap_init(vlan, device, name, ifname, setup_script, down_script, script_arg);
             }
-            ret = net_tap_init(vlan, device, name, ifname, setup_script, down_script, script_arg);
         }
     } else
 #endif
Index: xen-4.0.1-testing/tools/python/xen/xend/image.py
===================================================================
--- xen-4.0.1-testing.orig/tools/python/xen/xend/image.py
+++ xen-4.0.1-testing/tools/python/xen/xend/image.py
@@ -912,11 +912,13 @@ class HVMImageHandler(ImageHandler):
             mac = devinfo.get('mac')
             if mac is None:
                 raise VmError("MAC address not specified or generated.")
-            bridge = devinfo.get('bridge', 'xenbr0')
+            bridge = devinfo.get('bridge', None)
             model = devinfo.get('model', 'rtl8139')
             ret.append("-net")
-            ret.append("nic,vlan=%d,macaddr=%s,model=%s" %
-                       (nics, mac, model))
+            net = "nic,vlan=%d,macaddr=%s,model=%s" % (nics, mac, model)
+            if bridge:
+                net += ",bridge=%s" % bridge
+            ret.append(net)
             vifname = devinfo.get('vifname')
             if vifname:
                 vifname = "tap-" + vifname
Index: xen-4.0.1-testing/tools/ioemu-qemu-xen/i386-dm/qemu-ifup-Linux
===================================================================
--- xen-4.0.1-testing.orig/tools/ioemu-qemu-xen/i386-dm/qemu-ifup-Linux
+++ xen-4.0.1-testing/tools/ioemu-qemu-xen/i386-dm/qemu-ifup-Linux
@@ -1,36 +1,22 @@
 #!/bin/sh
 
-#. /etc/rc.d/init.d/functions
-#ulimit -c unlimited
-
 echo 'config qemu network with xen bridge for ' $*
 
+# If bridge is not specified, try device with default route.
 bridge=$2
+if [ -z "$bridge" ]; then
+    bridge=$(ip route list | awk '/^default / { print $NF }')
+fi
 
-#
-# 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*}" ]
+# Exit if $bridge is not a bridge.  Exit with 0 status
+# so qemu-dm process is not terminated.  No networking in
+# vm is bad but not catastrophic.  The vm could still run
+# cpu and disk IO workloads.
+# Include an useful error message in qemu-dm log file.
+if [ ! -e "/sys/class/net/${bridge}/bridge" ]
 then
-   if [ -e "/sys/class/net/eth${bridge#xenbr}/bridge" ]
-   then
-      bridge="eth${bridge#xenbr}"
-   fi
+   echo "WARNING! ${bridge} is not a bridge.  qemu-ifup exiting.  VM may not have a functioning networking stack."
+   exit 0
 fi
 
 ifconfig $1 0.0.0.0 up
openSUSE Build Service is sponsored by