Petar Penkov | 50b3ed5 | 2018-09-14 07:46:22 -0700 | [diff] [blame] | 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 "$?" |