summaryrefslogtreecommitdiffstats
path: root/scripts/runqemu-gen-tapdevs
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/runqemu-gen-tapdevs')
-rwxr-xr-xscripts/runqemu-gen-tapdevs26
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
51fi 51fi
52 52
53TUNCTL=$STAGING_BINDIR_NATIVE/tunctl
54if [[ ! -x "$TUNCTL" || -d "$TUNCTL" ]]; then
55 echo "Error: $TUNCTL is not an executable"
56 usage
57fi
58
59if [ $EUID -ne 0 ]; then 53if [ $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
69fi 63fi
70 64
71if ! interfaces=`ip link` 2>/dev/null; then 65TUNCTL=$STAGING_BINDIR_NATIVE/tunctl
66ip_supports_tuntap=false
67if interfaces=`ip tuntap list` 2>/dev/null; then
68 ip_supports_tuntap=true
69 interfaces=`echo "$interfaces |cut -f1 -d:`
70elif [[ ! -x "$TUNCTL" || -d "$TUNCTL" ]]; then
71 echo "Error: $TUNCTL is not an executable"
72 usage
73elif interfaces=`ip link` 2>/dev/null; then
74 interfaces=`echo "$interfaces" | sed '/^[0-9]\+: \(docker[0-9]\+\):.*/!d; s//\1/'`
75else
72 echo "Failed to call 'ip link'" >&2 76 echo "Failed to call 'ip link'" >&2
73 exit 1 77 exit 1
74fi 78fi
75 79
76# Ensure we start with a clean slate 80# Ensure we start with a clean slate
77for tap in `echo "$interfaces" | sed '/^[0-9]\+: \(docker[0-9]\+\):.*/!d; s//\1/'`; do 81for 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
80done 88done
81rm -f /etc/runqemu-nosudo 89rm -f /etc/runqemu-nosudo
82 90