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