summaryrefslogtreecommitdiff
path: root/poky/scripts/runqemu-ifup
diff options
context:
space:
mode:
Diffstat (limited to 'poky/scripts/runqemu-ifup')
-rwxr-xr-xpoky/scripts/runqemu-ifup31
1 files changed, 19 insertions, 12 deletions
diff --git a/poky/scripts/runqemu-ifup b/poky/scripts/runqemu-ifup
index bb661740c5..5fdcddeeda 100755
--- a/poky/scripts/runqemu-ifup
+++ b/poky/scripts/runqemu-ifup
@@ -41,22 +41,29 @@ USERID="-u $1"
GROUP="-g $2"
STAGING_BINDIR_NATIVE=$3
-TUNCTL=$STAGING_BINDIR_NATIVE/tunctl
-if [ ! -x "$TUNCTL" ]; then
- echo "Error: Unable to find tunctl binary in '$STAGING_BINDIR_NATIVE', please bitbake qemu-helper-native"
- exit 1
+if taps=$(ip tuntap list 2>/dev/null); then
+ tap_no=$(( $(echo "$taps" |sort -r |sed 's/^tap//; s/:.*//; q') + 1 ))
+ ip tuntap add tap$tap_no mode tap group $2 && TAP=tap$tap_no
fi
-TAP=`$TUNCTL -b $GROUP 2>&1`
-STATUS=$?
-if [ $STATUS -ne 0 ]; then
-# If tunctl -g fails, try using tunctl -u, for older host kernels
-# which do not support the TUNSETGROUP ioctl
- TAP=`$TUNCTL -b $USERID 2>&1`
+if [ -z $TAP ]; then
+ TUNCTL=$STAGING_BINDIR_NATIVE/tunctl
+ if [ ! -x "$TUNCTL" ]; then
+ echo "Error: Unable to find tunctl binary in '$STAGING_BINDIR_NATIVE', please bitbake qemu-helper-native"
+ exit 1
+ fi
+
+ TAP=`$TUNCTL -b $GROUP 2>&1`
STATUS=$?
if [ $STATUS -ne 0 ]; then
- echo "tunctl failed:"
- exit 1
+ # If tunctl -g fails, try using tunctl -u, for older host kernels
+ # which do not support the TUNSETGROUP ioctl
+ TAP=`$TUNCTL -b $USERID 2>&1`
+ STATUS=$?
+ if [ $STATUS -ne 0 ]; then
+ echo "tunctl failed:"
+ exit 1
+ fi
fi
fi