Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/sh
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         # Create testing interfaces not to interfere with current environment.
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