xref: /netbsd-src/external/bsd/unbound/dist/testdata/acl_interface.tdir/acl_interface.test.scenario (revision 91f7d55fb697b5e0475da4718fa34c3a3ebeac85)
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