Home | History | Annotate | Download | only in bpf
      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 "$?"
     55