diff options
author | Jörg Sommer <joerg.sommer@navimatix.de> | 2023-06-09 10:51:06 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2023-06-13 22:10:32 +0100 |
commit | d43c41fcaf061eaf8bff7bc03de19cdc80226796 (patch) | |
tree | 9ec2ccdcd0232adb6b4b055571f43dbc773822b3 /scripts/runqemu-gen-tapdevs | |
parent | 177886950ea29fcc0496ebcfd7478d694dd72704 (diff) | |
download | poky-d43c41fcaf061eaf8bff7bc03de19cdc80226796.tar.gz |
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>
Diffstat (limited to 'scripts/runqemu-gen-tapdevs')
-rwxr-xr-x | scripts/runqemu-gen-tapdevs | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/scripts/runqemu-gen-tapdevs b/scripts/runqemu-gen-tapdevs index f2d6cc39c2..ffb82adce6 100755 --- a/scripts/runqemu-gen-tapdevs +++ b/scripts/runqemu-gen-tapdevs | |||
@@ -50,12 +50,6 @@ if ! [ $COUNT -ge 0 ]; then | |||
50 | exit 1 | 50 | exit 1 |
51 | fi | 51 | fi |
52 | 52 | ||
53 | TUNCTL=$STAGING_BINDIR_NATIVE/tunctl | ||
54 | if [[ ! -x "$TUNCTL" || -d "$TUNCTL" ]]; then | ||
55 | echo "Error: $TUNCTL is not an executable" | ||
56 | usage | ||
57 | fi | ||
58 | |||
59 | if [ $EUID -ne 0 ]; then | 53 | if [ $EUID -ne 0 ]; then |
60 | echo "Error: This script must be run with root privileges" | 54 | echo "Error: This script must be run with root privileges" |
61 | exit | 55 | exit |
@@ -68,15 +62,29 @@ if [ ! -x "$RUNQEMU_IFUP" ]; then | |||
68 | exit 1 | 62 | exit 1 |
69 | fi | 63 | fi |
70 | 64 | ||
71 | if ! interfaces=`ip link` 2>/dev/null; then | 65 | TUNCTL=$STAGING_BINDIR_NATIVE/tunctl |
66 | ip_supports_tuntap=false | ||
67 | if interfaces=`ip tuntap list` 2>/dev/null; then | ||
68 | ip_supports_tuntap=true | ||
69 | interfaces=`echo "$interfaces |cut -f1 -d:` | ||
70 | elif [[ ! -x "$TUNCTL" || -d "$TUNCTL" ]]; then | ||
71 | echo "Error: $TUNCTL is not an executable" | ||
72 | usage | ||
73 | elif interfaces=`ip link` 2>/dev/null; then | ||
74 | interfaces=`echo "$interfaces" | sed '/^[0-9]\+: \(docker[0-9]\+\):.*/!d; s//\1/'` | ||
75 | else | ||
72 | echo "Failed to call 'ip link'" >&2 | 76 | echo "Failed to call 'ip link'" >&2 |
73 | exit 1 | 77 | exit 1 |
74 | fi | 78 | fi |
75 | 79 | ||
76 | # Ensure we start with a clean slate | 80 | # Ensure we start with a clean slate |
77 | for tap in `echo "$interfaces" | sed '/^[0-9]\+: \(docker[0-9]\+\):.*/!d; s//\1/'`; do | 81 | for tap in $interfaces; do |
78 | echo "Note: Destroying pre-existing tap interface $tap..." | 82 | echo "Note: Destroying pre-existing tap interface $tap..." |
79 | $TUNCTL -d $tap | 83 | if $ip_supports_tuntap; then |
84 | ip tuntap del $tap mode tap | ||
85 | else | ||
86 | $TUNCTL -d $tap | ||
87 | fi | ||
80 | done | 88 | done |
81 | rm -f /etc/runqemu-nosudo | 89 | rm -f /etc/runqemu-nosudo |
82 | 90 | ||