On Fri, Oct 05, 2007 at 10:54:17AM +0200, Michael wrote: > Hi, > > I've tried setting up multiple qemu hosts on OpenBSD 4.1 but having > problems setting up the networking. The first qemu instance works just > fine with -net nic -net tap but I never were able to get the network > working with a second or third qemu instance. > > The server got a main IP and a small subnet and I would love to either > set it up in routing mode or bridge the qemu hosts directly to the main > interface. > > I've tried (almost) everything I can imagine and searched the web found > couldn't find some helpfull information. Maybe someone got a working > setup and could give me some hints? >
I use this silly script plus a small C program to open up the the tun devices and pass them to qemu (makes it possible for me to run qemu without root privs). The main trick is getmac() which generates "hopefully" unique mac addresses per port. -- :wq Claudio #!/bin/sh # # stupid script to start multiple qemus on a single box SUDO=/usr/bin/sudo USER=cjeker # qemu args IMAGE=virt.hd MEMORY=64 FLAGS="-snapshot -nographic" NICFLAGS="-net nic,vlan=\$id,macaddr=\$mac -net tap,vlan=\$id,fd=\$fd" usage() { echo "usage: $0 [-n] [-i image] [-f floppy.fs] instance" 1>&2 exit 2 } getmac() { mac="00:bd:`printf %02x $(($RANDOM % 256))`:" mac="$mac`printf %02x $(($RANDOM % 256))`:" mac="$mac`printf %02x $(($1 % 256))`:`printf %02x $(($2 % 255 + 1))`" } start() { for id in 0 1 2 3; do fd=$(($id + 3)) tun=tun$(($1 * 10 + $id)) getmac $1 id eval "nics=\"$nics $NICFLAGS\"" fds="$fds fdpass -n $fd -f /dev/$tun" # make sure a tun interface is available ifconfig $tun > /dev/null 2>&1 if [ $? -ne 0 ]; then ${SUDO} ifconfig $tun link0 fi done ${SUDO} $fds -u cjeker qemu -m ${MEMORY} ${FLAGS} $nics ${IMAGE} } args=`getopt f:i:n $*` if [ $? -ne 0 ]; then usage fi set -- $args while [ $# -gt 0 ]; do case "$1" in -f) shift FLAGS="-fda $1 -boot a -monitor stdio" ;; -i) shift IMAGE="$1" ;; -n) FLAGS="-nographic" echo "DISABLING SNAPSHOT MODE" ;; --) shift; break ;; esac shift done if [ $# -ne 1 ]; then usage fi start $1