Merge tag 'm68k-for-v4.20-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / tools / testing / selftests / bpf / with_addr.sh
1 #!/bin/bash
2 # SPDX-License-Identifier: GPL-2.0
3 #
4 # add private ipv4 and ipv6 addresses to loopback
5
6 readonly V6_INNER='100::a/128'
7 readonly V4_INNER='192.168.0.1/32'
8
9 if getopts ":s" opt; then
10   readonly SIT_DEV_NAME='sixtofourtest0'
11   readonly V6_SIT='2::/64'
12   readonly V4_SIT='172.17.0.1/32'
13   shift
14 fi
15
16 fail() {
17   echo "error: $*" 1>&2
18   exit 1
19 }
20
21 setup() {
22   ip -6 addr add "${V6_INNER}" dev lo || fail 'failed to setup v6 address'
23   ip -4 addr add "${V4_INNER}" dev lo || fail 'failed to setup v4 address'
24
25   if [[ -n "${V6_SIT}" ]]; then
26     ip link add "${SIT_DEV_NAME}" type sit remote any local any \
27             || fail 'failed to add sit'
28     ip link set dev "${SIT_DEV_NAME}" up \
29             || fail 'failed to bring sit device up'
30     ip -6 addr add "${V6_SIT}" dev "${SIT_DEV_NAME}" \
31             || fail 'failed to setup v6 SIT address'
32     ip -4 addr add "${V4_SIT}" dev "${SIT_DEV_NAME}" \
33             || fail 'failed to setup v4 SIT address'
34   fi
35
36   sleep 2       # avoid race causing bind to fail
37 }
38
39 cleanup() {
40   if [[ -n "${V6_SIT}" ]]; then
41     ip -4 addr del "${V4_SIT}" dev "${SIT_DEV_NAME}"
42     ip -6 addr del "${V6_SIT}" dev "${SIT_DEV_NAME}"
43     ip link del "${SIT_DEV_NAME}"
44   fi
45
46   ip -4 addr del "${V4_INNER}" dev lo
47   ip -6 addr del "${V6_INNER}" dev lo
48 }
49
50 trap cleanup EXIT
51
52 setup
53 "$@"
54 exit "$?"