
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>
1.7 KiB
Executable File
#!/bin/bash
QEMU network configuration script to bring down tap devices. This
utility needs to be run as root, and will use the tunctl binary
from the native sysroot.
If you find yourself calling this script a lot, you can add the
the following to your /etc/sudoers file to be able to run this
command without entering your password each time:
ALL=NOPASSWD: /path/to/runqemu-ifup
ALL=NOPASSWD: /path/to/runqemu-ifdown
Copyright (c) 2006-2011 Linux Foundation
SPDX-License-Identifier: GPL-2.0-only
usage() { echo "sudo $(basename $0) " }
if [ $EUID -ne 0 ]; then echo "Error: This script (runqemu-ifdown) must be run with root privileges" exit 1 fi
if [ $# -ne 2 ]; then usage exit 1 fi
TAP=$1 STAGING_BINDIR_NATIVE=$2
if !ip tuntap del $TAP mode tap 2>/dev/null; then TUNCTL=$STAGING_BINDIR_NATIVE/tunctl if [ ! -e "$TUNCTL" ]; then echo "Error: Unable to find tunctl binary in '$STAGING_BINDIR_NATIVE', please bitbake qemu-helper-native" exit 1 fi
$TUNCTL -d $TAP
fi
IFCONFIG=which ip 2> /dev/null
if [ "x$IFCONFIG" = "x" ]; then
# better than nothing...
IFCONFIG=/sbin/ip
fi
if [ -x "$IFCONFIG" ]; then
if $IFCONFIG link show $TAP > /dev/null 2>&1
; then
$IFCONFIG link del $TAP
fi
fi
cleanup the remaining iptables rules
IPTABLES=which iptables 2> /dev/null
if [ "x$IPTABLES" = "x" ]; then
IPTABLES=/sbin/iptables
fi
if [ ! -x "$IPTABLES" ]; then
echo "$IPTABLES cannot be executed"
exit 1
fi
n=$[ (echo $TAP | sed 's/tap//'
* 2) + 1 ]
dest=$[ (echo $TAP | sed 's/tap//'
* 2) + 2 ]
$IPTABLES -D POSTROUTING -t nat -j MASQUERADE -s 192.168.7.$n/32
$IPTABLES -D POSTROUTING -t nat -j MASQUERADE -s 192.168.7.$dest/32
true