diff options
Diffstat (limited to 'classes/qemuboot-testimage-network.bbclass')
-rw-r--r-- | classes/qemuboot-testimage-network.bbclass | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/classes/qemuboot-testimage-network.bbclass b/classes/qemuboot-testimage-network.bbclass index 18af1eea..57e03551 100644 --- a/classes/qemuboot-testimage-network.bbclass +++ b/classes/qemuboot-testimage-network.bbclass @@ -1,17 +1,51 @@ # The recipe for init-ifupdown in core has a special-case for all # the Qemu MACHINES: it removes all external network interfaces # by default. However, eth0 is needed for testimage, so enable it here. + +# If QB_NETWORK_XEN_BRIDGE is set, configure bridging for the network. +QB_NETWORK_XEN_BRIDGE ??= "" + enable_runqemu_network() { : # no-op for non-qemu MACHINES } + enable_runqemu_network:qemuall() { + # Do not override a network configuration for eth0 if one is present if ! grep -q eth0 "${IMAGE_ROOTFS}${sysconfdir}/network/interfaces" ; then - cat <<EOF >>${IMAGE_ROOTFS}${sysconfdir}/network/interfaces + + # Xen host networking: use bridging to support guest networks + if [ -n "${QB_NETWORK_XEN_BRIDGE}" ] ; then + # Configure a Xen host network bridge and put eth0 on it + cat <<EOF >>${IMAGE_ROOTFS}${sysconfdir}/network/interfaces + +# Bridged host network for Xen testimage +iface eth0 inet manual + +auto xenbr0 +iface xenbr0 inet dhcp + bridge_ports eth0 +EOF + +# Add a script to create the bridge and add eth0 if necessary + cat <<EOF >>${IMAGE_ROOTFS}${sysconfdir}/network/if-pre-up.d/xenbr0 +#!/bin/sh + +if [ "\$IFACE" = xenbr0 ]; then + brctl addbr xenbr0 || /bin/true + brctl addif xenbr0 eth0 || /bin/true + ifconfig eth0 up +fi +EOF + chmod 755 ${IMAGE_ROOTFS}${sysconfdir}/network/if-pre-up.d/xenbr0 + else + # Just configure eth0 + cat <<EOF >>${IMAGE_ROOTFS}${sysconfdir}/network/interfaces # Network for testimage auto eth0 iface eth0 inet dhcp EOF + fi fi } ROOTFS_POSTPROCESS_COMMAND += 'enable_runqemu_network;' |