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