1*91f7d55fSchristos# #-- acl_interface.test.scenario --# 2*91f7d55fSchristos# source the master var file when it's there 3*91f7d55fSchristos[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master 4*91f7d55fSchristos# use .tpkg.var.test for in test variable passing 5*91f7d55fSchristos[ -f .tpkg.var.test ] && source .tpkg.var.test 6*91f7d55fSchristosPRE="../.." 7*91f7d55fSchristos. ../common.sh 8*91f7d55fSchristos 9*91f7d55fSchristosip addr add $IPV4_ADDR dev lo 10*91f7d55fSchristosip addr add $IPV6_ADDR dev lo 11*91f7d55fSchristosip link set lo up 12*91f7d55fSchristos 13*91f7d55fSchristosip link add $INTERFACE type dummy 14*91f7d55fSchristosip addr add $INTERFACE_ADDR_1 dev $INTERFACE 15*91f7d55fSchristosip addr add $INTERFACE_ADDR_2 dev $INTERFACE 16*91f7d55fSchristosip addr add $INTERFACE_ADDR_3 dev $INTERFACE 17*91f7d55fSchristosip addr add $INTERFACE_ADDR_4 dev $INTERFACE 18*91f7d55fSchristosip link set $INTERFACE up 19*91f7d55fSchristos 20*91f7d55fSchristos# start the forwarder in the background 21*91f7d55fSchristosget_ldns_testns 22*91f7d55fSchristos$LDNS_TESTNS -p $FORWARD_PORT acl_interface.testns >fwd.log 2>&1 & 23*91f7d55fSchristosFWD_PID=$! 24*91f7d55fSchristosecho "FWD_PID=$FWD_PID" >> .tpkg.var.test 25*91f7d55fSchristos 26*91f7d55fSchristos# start the stub in the background 27*91f7d55fSchristos$LDNS_TESTNS -p $STUB_PORT acl_interface.testns2 >fwd2.log 2>&1 & 28*91f7d55fSchristosSTUB_PID=$! 29*91f7d55fSchristosecho "STUB_PID=$STUB_PID" >> .tpkg.var.test 30*91f7d55fSchristos 31*91f7d55fSchristos# start unbound in the background 32*91f7d55fSchristos$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & 33*91f7d55fSchristosUNBOUND_PID=$! 34*91f7d55fSchristosecho "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test 35*91f7d55fSchristos 36*91f7d55fSchristoscat .tpkg.var.test 37*91f7d55fSchristoswait_ldns_testns_up fwd.log 38*91f7d55fSchristoswait_ldns_testns_up fwd2.log 39*91f7d55fSchristoswait_unbound_up unbound.log 40*91f7d55fSchristos 41*91f7d55fSchristosend () { 42*91f7d55fSchristos echo "> cat logfiles" 43*91f7d55fSchristos cat fwd.log 44*91f7d55fSchristos cat fwd2.log 45*91f7d55fSchristos cat unbound.log 46*91f7d55fSchristos exit $1 47*91f7d55fSchristos} 48*91f7d55fSchristos 49*91f7d55fSchristos# Query for the given domain to the given port 50*91f7d55fSchristos# $1: address family [4, 6] 51*91f7d55fSchristos# $2: port 52*91f7d55fSchristos# $3: dname 53*91f7d55fSchristosquery () { 54*91f7d55fSchristos addr=$IPV4_ADDR 55*91f7d55fSchristos if test "$1" -eq 6; then 56*91f7d55fSchristos addr=$IPV6_ADDR 57*91f7d55fSchristos fi 58*91f7d55fSchristos echo "> dig -p $2 $3" 59*91f7d55fSchristos dig @"$addr" -p $2 $3 | tee outfile 60*91f7d55fSchristos} 61*91f7d55fSchristos 62*91f7d55fSchristos# Query for the given domain to the given port 63*91f7d55fSchristos# $1: address 64*91f7d55fSchristos# $2: port 65*91f7d55fSchristos# $3: dname 66*91f7d55fSchristosquery_addr () { 67*91f7d55fSchristos echo "> dig @$1 -p $2 $3" 68*91f7d55fSchristos dig @"$1" -p $2 $3 | tee outfile 69*91f7d55fSchristos} 70*91f7d55fSchristos 71*91f7d55fSchristosexpect_refused () { 72*91f7d55fSchristos echo "> check answer for REFUSED" 73*91f7d55fSchristos if grep "REFUSED" outfile; then 74*91f7d55fSchristos echo "OK" 75*91f7d55fSchristos else 76*91f7d55fSchristos echo "Not OK" 77*91f7d55fSchristos end 1 78*91f7d55fSchristos fi 79*91f7d55fSchristos} 80*91f7d55fSchristos 81*91f7d55fSchristosexpect_external_answer () { 82*91f7d55fSchristos echo "> check external answer" 83*91f7d55fSchristos if grep "1.2.3.4" outfile; then 84*91f7d55fSchristos echo "OK" 85*91f7d55fSchristos else 86*91f7d55fSchristos echo "Not OK" 87*91f7d55fSchristos end 1 88*91f7d55fSchristos fi 89*91f7d55fSchristos} 90*91f7d55fSchristos 91*91f7d55fSchristosexpect_internal_answer () { 92*91f7d55fSchristos echo "> check internal answer" 93*91f7d55fSchristos if grep "10.20.30.40" outfile; then 94*91f7d55fSchristos echo "OK" 95*91f7d55fSchristos else 96*91f7d55fSchristos echo "Not OK" 97*91f7d55fSchristos end 1 98*91f7d55fSchristos fi 99*91f7d55fSchristos} 100*91f7d55fSchristos 101*91f7d55fSchristosexpect_tag_one_answer () { 102*91f7d55fSchristos echo "> check tag 'one' answer" 103*91f7d55fSchristos if grep "1.1.1.1" outfile; then 104*91f7d55fSchristos echo "OK" 105*91f7d55fSchristos else 106*91f7d55fSchristos echo "Not OK" 107*91f7d55fSchristos end 1 108*91f7d55fSchristos fi 109*91f7d55fSchristos} 110*91f7d55fSchristos 111*91f7d55fSchristosexpect_tag_two_answer () { 112*91f7d55fSchristos echo "> check tag 'two' answer" 113*91f7d55fSchristos if grep "2.2.2.2" outfile; then 114*91f7d55fSchristos echo "OK" 115*91f7d55fSchristos else 116*91f7d55fSchristos echo "Not OK" 117*91f7d55fSchristos end 1 118*91f7d55fSchristos fi 119*91f7d55fSchristos} 120*91f7d55fSchristos 121*91f7d55fSchristos# do the test 122*91f7d55fSchristos 123*91f7d55fSchristosfor i in 4 6; do 124*91f7d55fSchristos query $i $PORT_REFUSE "www.external" 125*91f7d55fSchristos expect_refused 126*91f7d55fSchristos 127*91f7d55fSchristos query $i $PORT_REFUSE "www.internal" 128*91f7d55fSchristos expect_refused 129*91f7d55fSchristos 130*91f7d55fSchristos query $i $PORT_ALLOW "www.external" 131*91f7d55fSchristos expect_external_answer 132*91f7d55fSchristos 133*91f7d55fSchristos query $i $PORT_ALLOW "www.internal" 134*91f7d55fSchristos expect_internal_answer 135*91f7d55fSchristos 136*91f7d55fSchristos query $i $PORT_TAG_1 "local" 137*91f7d55fSchristos expect_tag_one_answer 138*91f7d55fSchristos 139*91f7d55fSchristos query $i $PORT_TAG_2 "local" 140*91f7d55fSchristos expect_tag_two_answer 141*91f7d55fSchristos 142*91f7d55fSchristos query $i $PORT_TAG_3 "local" 143*91f7d55fSchristos expect_refused 144*91f7d55fSchristos 145*91f7d55fSchristos query $i $PORT_VIEW_INT "www.internal" 146*91f7d55fSchristos expect_internal_answer 147*91f7d55fSchristos 148*91f7d55fSchristos query $i $PORT_VIEW_INT "www.external" 149*91f7d55fSchristos expect_refused 150*91f7d55fSchristos 151*91f7d55fSchristos query $i $PORT_VIEW_EXT "www.internal" 152*91f7d55fSchristos expect_refused 153*91f7d55fSchristos 154*91f7d55fSchristos query $i $PORT_VIEW_EXT "www.external" 155*91f7d55fSchristos expect_external_answer 156*91f7d55fSchristos 157*91f7d55fSchristos query $i $PORT_VIEW_INTEXT "www.internal" 158*91f7d55fSchristos expect_internal_answer 159*91f7d55fSchristos 160*91f7d55fSchristos query $i $PORT_VIEW_INTEXT "www.external" 161*91f7d55fSchristos expect_external_answer 162*91f7d55fSchristosdone 163*91f7d55fSchristos 164*91f7d55fSchristosfor addr in $INTERFACE_ADDR_1 $INTERFACE_ADDR_2 $INTERFACE_ADDR_3 $INTERFACE_ADDR_4; do 165*91f7d55fSchristos query_addr $addr $PORT_REFUSE "www.external" 166*91f7d55fSchristos expect_refused 167*91f7d55fSchristos 168*91f7d55fSchristos query_addr $addr $PORT_REFUSE "www.internal" 169*91f7d55fSchristos expect_refused 170*91f7d55fSchristos 171*91f7d55fSchristos query_addr $addr $PORT_ALLOW "www.external" 172*91f7d55fSchristos expect_external_answer 173*91f7d55fSchristos 174*91f7d55fSchristos query_addr $addr $PORT_ALLOW "www.internal" 175*91f7d55fSchristos expect_internal_answer 176*91f7d55fSchristos 177*91f7d55fSchristos query_addr $addr $PORT_TAG_1 "local" 178*91f7d55fSchristos expect_tag_one_answer 179*91f7d55fSchristos 180*91f7d55fSchristos query_addr $addr $PORT_TAG_2 "local" 181*91f7d55fSchristos expect_tag_two_answer 182*91f7d55fSchristos 183*91f7d55fSchristos query_addr $addr $PORT_TAG_3 "local" 184*91f7d55fSchristos expect_refused 185*91f7d55fSchristos 186*91f7d55fSchristos query_addr $addr $PORT_VIEW_INT "www.internal" 187*91f7d55fSchristos expect_internal_answer 188*91f7d55fSchristos 189*91f7d55fSchristos query_addr $addr $PORT_VIEW_INT "www.external" 190*91f7d55fSchristos expect_refused 191*91f7d55fSchristos 192*91f7d55fSchristos query_addr $addr $PORT_VIEW_EXT "www.internal" 193*91f7d55fSchristos expect_refused 194*91f7d55fSchristos 195*91f7d55fSchristos query_addr $addr $PORT_VIEW_EXT "www.external" 196*91f7d55fSchristos expect_external_answer 197*91f7d55fSchristos 198*91f7d55fSchristos query_addr $addr $PORT_VIEW_INTEXT "www.internal" 199*91f7d55fSchristos expect_internal_answer 200*91f7d55fSchristos 201*91f7d55fSchristos query_addr $addr $PORT_VIEW_INTEXT "www.external" 202*91f7d55fSchristos expect_external_answer 203*91f7d55fSchristosdone 204*91f7d55fSchristos 205*91f7d55fSchristosend 0 206