Index: xen-3.3.1-testing/tools/ioemu-remote/vl.c =================================================================== --- xen-3.3.1-testing.orig/tools/ioemu-remote/vl.c +++ xen-3.3.1-testing/tools/ioemu-remote/vl.c @@ -134,8 +134,8 @@ int inet_aton(const char *cp, struct in_ #include "exec-all.h" #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" @@ -4997,10 +4997,10 @@ static int net_client_init(const char *s pstrcpy(down_script, sizeof(down_script), DEFAULT_NETWORK_DOWN_SCRIPT); } 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, ifname, setup_script, down_script, script_arg); + get_param_value(script_arg, sizeof(script_arg), "bridge", p) == 0) /* deprecated; for xend compatibility */ + ret = net_tap_init(vlan, ifname, setup_script, NULL, NULL); + else + ret = net_tap_init(vlan, ifname, setup_script, down_script, script_arg); } } else #endif Index: xen-3.3.1-testing/tools/python/xen/xend/image.py =================================================================== --- xen-3.3.1-testing.orig/tools/python/xen/xend/image.py +++ xen-3.3.1-testing/tools/python/xen/xend/image.py @@ -764,14 +764,16 @@ 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)) ret.append("-net") - ret.append("tap,vlan=%d,ifname=tap%d.%d,bridge=%s" % - (nics, self.vm.getDomid(), nics-1, bridge)) + net = "tap,vlan=%d,ifname=tap%d.%d" % (nics, self.vm.getDomid(), nics-1) + if bridge: + net += ",bridge=%s" % bridge + ret.append(net) if nics == 0: ret.append("-net") Index: xen-3.3.1-testing/tools/ioemu-remote/i386-dm/qemu-ifup =================================================================== --- xen-3.3.1-testing.orig/tools/ioemu-remote/i386-dm/qemu-ifup +++ xen-3.3.1-testing/tools/ioemu-remote/i386-dm/qemu-ifup @@ -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