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