t_ra.sh revision 1.1
1#! /usr/bin/env atf-sh 2RUMPFLAGS="-lrumpnet -lrumpnet_net -lrumpnet_netinet -lrumpnet_netinet6" 3RUMPFLAGS="${RUMPFLAGS} -lrumpnet_shmif" 4RUMPFLAGS="${RUMPFLAGS} -lrumpvfs -lrumpfs_ffs" 5 6RUMPSRV=unix://r1 7RUMPCLI=unix://r2 8IP6SRV=fc00:1::1 9IP6CLI=fc00:2::2 10PIDFILE=/var/run/rump.rtadvd.pid 11CONFIG=./rtadvd.conf 12DEBUG=true 13 14setup_shmif0() 15{ 16 local IP6ADDR=${1} 17 shift 18 19 atf_check -s exit:0 rump.ifconfig shmif0 create 20 atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus1 21 atf_check -s exit:0 rump.ifconfig shmif0 inet6 ${IP6ADDR} 22 atf_check -s exit:0 rump.ifconfig shmif0 up 23 24 $DEBUG && rump.ifconfig 25} 26 27wait_term() 28{ 29 local PIDFILE=${1} 30 shift 31 32 while [ -f ${PIDFILE} ] 33 do 34 sleep 0.2 35 done 36 37 return 0 38} 39 40create_rtadvdconfig() 41{ 42 43 cat << _EOF > ${CONFIG} 44shmif0:\ 45 :mtu#1300:maxinterval#4:mininterval#3: 46_EOF 47} 48 49atf_test_case basic cleanup 50basic_head() 51{ 52 53 atf_set "descr" "Tests for basic functions of router advaertisement(RA)" 54 atf_set "require.progs" "rump_server rump.rtadvd rump.ndp rump.ifconfig" 55} 56 57basic_body() 58{ 59 60 atf_check -s exit:0 rump_server ${RUMPFLAGS} ${RUMPSRV} 61 atf_check -s exit:0 rump_server ${RUMPFLAGS} ${RUMPCLI} 62 63 export RUMP_SERVER=${RUMPSRV} 64 setup_shmif0 ${IP6SRV} 65 atf_check -s exit:0 -o match:'0.->.1' rump.sysctl -w net.inet6.ip6.forwarding=1 66 export LD_PRELOAD=/usr/lib/librumphijack.so 67 atf_check -s exit:0 mkdir -p /rump/var/chroot/rtadvd 68 unset LD_PRELOAD 69 unset RUMP_SERVER 70 71 export RUMP_SERVER=${RUMPCLI} 72 setup_shmif0 ${IP6CLI} 73 $DEBUG && rump.ndp -n -a 74 atf_check -s exit:0 -o match:'= 0' rump.sysctl net.inet6.ip6.accept_rtadv 75 unset RUMP_SERVER 76 77 create_rtadvdconfig 78 79 export RUMP_SERVER=${RUMPSRV} 80 atf_check -s exit:0 rump.rtadvd -c ${CONFIG} shmif0 81 atf_check -s exit:0 sleep 3 82 atf_check -s exit:0 -o ignore -e empty cat ${PIDFILE} 83 unset RUMP_SERVER 84 85 export RUMP_SERVER=${RUMPCLI} 86 atf_check -s exit:0 -o empty rump.ndp -r 87 atf_check -s exit:0 -o not-match:'advertised' rump.ndp -p 88 atf_check -s exit:0 -o match:'linkmtu=0' rump.ndp -n -i shmif0 89 atf_check -s exit:0 -o not-match:'S R' rump.ndp -n -a 90 atf_check -s exit:0 -o not-match:'fc00:1:' rump.ndp -n -a 91 atf_check -s exit:0 -o not-match:'fc00:1:' rump.ifconfig shmif0 inet6 92 unset RUMP_SERVER 93 94 atf_check -s exit:0 kill -TERM `cat ${PIDFILE}` 95 wait_term ${PIDFILE} 96 97 export RUMP_SERVER=${RUMPCLI} 98 atf_check -s exit:0 -o match:'0.->.1' rump.sysctl -w net.inet6.ip6.accept_rtadv=1 99 unset RUMP_SERVER 100 101 export RUMP_SERVER=${RUMPSRV} 102 atf_check -s exit:0 rump.rtadvd -c ${CONFIG} shmif0 103 atf_check -s exit:0 sleep 3 104 atf_check -s exit:0 -o ignore -e empty cat ${PIDFILE} 105 unset RUMP_SERVER 106 107 export RUMP_SERVER=${RUMPCLI} 108 $DEBUG && rump.ndp -n -a 109 $DEBUG && rump.ndp -r 110 atf_check -s exit:0 -o match:'if=shmif0' rump.ndp -r 111 atf_check -s exit:0 -o match:'advertised' rump.ndp -p 112 atf_check -s exit:0 -o match:'linkmtu=1300' rump.ndp -n -i shmif0 113 atf_check -s exit:0 -o match:'23h59m..s S R' rump.ndp -n -a 114 atf_check -s exit:0 -o match:'fc00:1:' rump.ndp -n -a 115 atf_check -s exit:0 -o match:'fc00:1:' rump.ifconfig shmif0 inet6 116 unset RUMP_SERVER 117 118 atf_check -s exit:0 kill -TERM `cat ${PIDFILE}` 119 wait_term ${PIDFILE} 120 121 return 0 122} 123 124basic_cleanup() 125{ 126 127 if [ -f ${PIDFILE} ]; then 128 kill -TERM `cat ${PIDFILE}` 129 wait_term ${PIDFILE} 130 fi 131 132 env RUMP_SERVER=${RUMPSRV} rump.halt 133 env RUMP_SERVER=${RUMPCLI} rump.halt 134} 135 136atf_init_test_cases() 137{ 138 139 atf_add_test_case basic 140} 141