0001
0002
0003 set -eu
0004
0005 ping_once()
0006 {
0007 type ping${1} >/dev/null 2>&1 && PING="ping${1}" || PING="ping -${1}"
0008 $PING -q -c 1 -W 1 ${2%%/*} >/dev/null 2>&1
0009 }
0010
0011 wait_for_ip()
0012 {
0013 local _i
0014 echo -n "Wait for testing IPv4/IPv6 to become available "
0015 for _i in $(seq ${MAX_PING_TRIES}); do
0016 echo -n "."
0017 if ping_once 4 ${TEST_IPv4} && ping_once 6 ${TEST_IPv6}; then
0018 echo " OK"
0019 return
0020 fi
0021 done
0022 echo 1>&2 "ERROR: Timeout waiting for test IP to become available."
0023 exit 1
0024 }
0025
0026 setup()
0027 {
0028
0029 ip link add dev ${TEST_IF} type veth peer name ${TEST_IF_PEER}
0030 ip link set ${TEST_IF} up
0031 ip link set ${TEST_IF_PEER} up
0032
0033 ip -4 addr add ${TEST_IPv4} dev ${TEST_IF}
0034 ip -6 addr add ${TEST_IPv6} dev ${TEST_IF}
0035 wait_for_ip
0036 }
0037
0038 cleanup()
0039 {
0040 ip link del ${TEST_IF} 2>/dev/null || :
0041 ip link del ${TEST_IF_PEER} 2>/dev/null || :
0042 }
0043
0044 main()
0045 {
0046 trap cleanup EXIT 2 3 6 15
0047 setup
0048 ./test_sock_addr setup_done
0049 }
0050
0051 BASENAME=$(basename $0 .sh)
0052 TEST_IF="${BASENAME}1"
0053 TEST_IF_PEER="${BASENAME}2"
0054 TEST_IPv4="127.0.0.4/8"
0055 TEST_IPv6="::6/128"
0056 MAX_PING_TRIES=5
0057
0058 main