1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-31 12:49:46 +00:00

runqemu-ifupdown/get-tapdevs: Add support for ip tuntap

The *ip* command supports the creation and destruction of TAP devices since
2009 and might be more likely installed on systems then *tunctl*. Therefore
it should be tried to setup or teardown the TAP interface with *ip* before
falling back to *tunctl*.

https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/commit/?id=580fbd88f75cc9eea0d28a48c025b090eb9419a7

(From OE-Core rev: 424ede206baae1c228583aab1df6c18513ac104f)

Signed-off-by: Jörg Sommer <joerg.sommer@navimatix.de>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Jörg Sommer
2023-06-09 10:51:06 +02:00
committed by Richard Purdie
parent 177886950e
commit d43c41fcaf
3 changed files with 44 additions and 27 deletions
+19 -12
View File
@@ -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