summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Dike <jdike@x86_64.user-mode-linux.org>2010-08-05 15:13:45 -0400
committerRichard Purdie <rpurdie@linux.intel.com>2010-08-20 16:20:10 +0100
commit81ff1ee2375161772a4e2471740e4d30f5577aae (patch)
tree291f1f0a99cd87cbd30e74b0d46bc08dec707d59
parent4df9f11171530ca60043504ce011f34c42e93b46 (diff)
downloadopenembedded-core-81ff1ee2375161772a4e2471740e4d30f5577aae.tar.gz
openembedded-core-81ff1ee2375161772a4e2471740e4d30f5577aae.tar.bz2
openembedded-core-81ff1ee2375161772a4e2471740e4d30f5577aae.tar.xz
openembedded-core-81ff1ee2375161772a4e2471740e4d30f5577aae.zip
poky-qemu-internal: Support use of a preconfigured tap device
This patch makes poky-qemu-internal check for the existence of an available preconfigured tap device before running poky-qemu-ifup to make a new one. Locking is handled with a lockfile in /tmp/qemu-tap-locks/. This uses the lockfile utility, so that needs to be present on the host. On exit, this script removes the lock file so that the tap device may be reused. Signed-off-by: Jeff Dike <jdike@linux.intel.com>
-rwxr-xr-xscripts/poky-qemu-internal32
1 files changed, 28 insertions, 4 deletions
diff --git a/scripts/poky-qemu-internal b/scripts/poky-qemu-internal
index acb6ff50f..3d718391f 100755
--- a/scripts/poky-qemu-internal
+++ b/scripts/poky-qemu-internal
@@ -54,9 +54,28 @@ fi
QEMUIFUP=`which poky-qemu-ifup`
QEMUIFDOWN=`which poky-qemu-ifdown`
-USER=`id -u`
-echo 'Setting up tap interface under sudo'
-TAP=`sudo $QEMUIFUP $USER`
+LOCKDIR="/tmp/qemu-tap-locks"
+[ ! -d "$LOCKDIR" ] && mkdir $LOCKDIR
+
+POSSIBLE=`ifconfig -a | grep '^tap' | awk '{print $1}'`
+TAP=""
+LOCKFILE=""
+for tap in $POSSIBLE; do
+ LOCKFILE="$LOCKDIR/$tap"
+ if lockfile $LOCKFILE; then
+ TAP=$tap
+ break;
+ fi
+done
+
+if [ "$TAP" = "" ]; then
+ USER=`id -u`
+ echo 'Setting up tap interface under sudo'
+ TAP=`sudo $QEMUIFUP $USER`
+ LOCKFILE=""
+else
+ echo "Using preconfigured tap device '$TAP'"
+fi
KERNEL_NETWORK_CMD="ip=192.168.7.2::192.168.7.1:255.255.255.0"
QEMU_TAP_CMD="-net tap,vlan=0,ifname=$TAP,script=no,downscript=no"
@@ -313,7 +332,12 @@ echo "Running $QEMU..."
echo $QEMUBIN -kernel $ZIMAGE $QEMUOPTIONS $SERIALOPTS $* --append "$KERNCMDLINE"
$QEMUBIN -kernel $ZIMAGE $QEMUOPTIONS $SERIALOPTS $* --append "$KERNCMDLINE" || /bin/true
-$QEMUIFDOWN $TAP
+if [ "$LOCKFILE" = "" ]; then
+ $QEMUIFDOWN $TAP
+else
+ echo "Releasing preconfigured tap device '$TAP'"
+ rm -f $LOCKFILE
+fi
trap - INT TERM QUIT
return