]>
Commit | Line | Data |
---|---|---|
6ea1ed5f JD |
1 | #!/bin/bash |
2 | # | |
c8a181e8 SG |
3 | # QEMU network configuration script to bring down tap devices. This |
4 | # utility needs to be run as root, and will use the tunctl binary | |
fe73ea8c | 5 | # from the native sysroot. |
c8a181e8 SG |
6 | # |
7 | # If you find yourself calling this script a lot, you can add the | |
8 | # the following to your /etc/sudoers file to be able to run this | |
9 | # command without entering your password each time: | |
10 | # | |
7687d91f RP |
11 | # <my-username> ALL=NOPASSWD: /path/to/runqemu-ifup |
12 | # <my-username> ALL=NOPASSWD: /path/to/runqemu-ifdown | |
d0dae3b6 | 13 | # |
fe73ea8c | 14 | # Copyright (c) 2006-2011 Linux Foundation |
d0dae3b6 | 15 | # |
f8c9c511 | 16 | # SPDX-License-Identifier: GPL-2.0-only |
d0dae3b6 | 17 | # |
d0dae3b6 | 18 | |
6ea1ed5f | 19 | usage() { |
ba5e0b95 | 20 | echo "sudo $(basename $0) <tap-dev> <native-sysroot-basedir>" |
6ea1ed5f JD |
21 | } |
22 | ||
c8a181e8 | 23 | if [ $EUID -ne 0 ]; then |
7687d91f | 24 | echo "Error: This script (runqemu-ifdown) must be run with root privileges" |
c8a181e8 SG |
25 | exit 1 |
26 | fi | |
27 | ||
6ea1ed5f JD |
28 | if [ $# -ne 2 ]; then |
29 | usage | |
30 | exit 1 | |
31 | fi | |
32 | ||
c791544b | 33 | TAP=$1 |
cc5513bf | 34 | STAGING_BINDIR_NATIVE=$2 |
6ea1ed5f | 35 | |
cc5513bf | 36 | TUNCTL=$STAGING_BINDIR_NATIVE/tunctl |
6ea1ed5f | 37 | if [ ! -e "$TUNCTL" ]; then |
cc5513bf | 38 | echo "Error: Unable to find tunctl binary in '$STAGING_BINDIR_NATIVE', please bitbake qemu-helper-native" |
6ea1ed5f JD |
39 | exit 1 |
40 | fi | |
d0dae3b6 | 41 | |
c791544b | 42 | $TUNCTL -d $TAP |
ef38a0ae | 43 | |
322e41de CQ |
44 | IFCONFIG=`which ip 2> /dev/null` |
45 | if [ "x$IFCONFIG" = "x" ]; then | |
46 | # better than nothing... | |
47 | IFCONFIG=/sbin/ip | |
48 | fi | |
49 | if [ -x "$IFCONFIG" ]; then | |
50 | if `$IFCONFIG link show $TAP > /dev/null 2>&1`; then | |
51 | $IFCONFIG link del $TAP | |
52 | fi | |
53 | fi | |
ef38a0ae CQ |
54 | # cleanup the remaining iptables rules |
55 | IPTABLES=`which iptables 2> /dev/null` | |
56 | if [ "x$IPTABLES" = "x" ]; then | |
57 | IPTABLES=/sbin/iptables | |
58 | fi | |
59 | if [ ! -x "$IPTABLES" ]; then | |
60 | echo "$IPTABLES cannot be executed" | |
61 | exit 1 | |
62 | fi | |
63 | n=$[ (`echo $TAP | sed 's/tap//'` * 2) + 1 ] | |
64 | dest=$[ (`echo $TAP | sed 's/tap//'` * 2) + 2 ] | |
65 | $IPTABLES -D POSTROUTING -t nat -j MASQUERADE -s 192.168.7.$n/32 | |
66 | $IPTABLES -D POSTROUTING -t nat -j MASQUERADE -s 192.168.7.$dest/32 | |
0ebcfb03 | 67 | true |