t_arp.sh revision 1.11 1 1.11 ozaki # $NetBSD: t_arp.sh,v 1.11 2016/02/25 03:23:15 ozaki-r Exp $
2 1.1 ozaki #
3 1.1 ozaki # Copyright (c) 2015 The NetBSD Foundation, Inc.
4 1.1 ozaki # All rights reserved.
5 1.1 ozaki #
6 1.1 ozaki # Redistribution and use in source and binary forms, with or without
7 1.1 ozaki # modification, are permitted provided that the following conditions
8 1.1 ozaki # are met:
9 1.1 ozaki # 1. Redistributions of source code must retain the above copyright
10 1.1 ozaki # notice, this list of conditions and the following disclaimer.
11 1.1 ozaki # 2. Redistributions in binary form must reproduce the above copyright
12 1.1 ozaki # notice, this list of conditions and the following disclaimer in the
13 1.1 ozaki # documentation and/or other materials provided with the distribution.
14 1.1 ozaki #
15 1.1 ozaki # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
16 1.1 ozaki # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17 1.1 ozaki # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18 1.1 ozaki # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
19 1.1 ozaki # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 1.1 ozaki # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 1.1 ozaki # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 1.1 ozaki # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 1.1 ozaki # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 1.1 ozaki # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 1.1 ozaki # POSSIBILITY OF SUCH DAMAGE.
26 1.1 ozaki #
27 1.1 ozaki
28 1.1 ozaki inetserver="rump_server -lrumpnet -lrumpnet_net -lrumpnet_netinet -lrumpnet_shmif"
29 1.1 ozaki HIJACKING="env LD_PRELOAD=/usr/lib/librumphijack.so RUMPHIJACK=sysctl=yes"
30 1.1 ozaki
31 1.1 ozaki SOCKSRC=unix://commsock1
32 1.1 ozaki SOCKDST=unix://commsock2
33 1.1 ozaki IP4SRC=10.0.1.1
34 1.1 ozaki IP4DST=10.0.1.2
35 1.11 ozaki IP4DST_PUB=10.0.1.3
36 1.11 ozaki MACDST_PUB=b2:a1:00:00:00:01
37 1.11 ozaki IP4DST_PUBPROXY=10.0.1.4
38 1.11 ozaki MACDST_PUBPROXY=b2:a1:00:00:00:02
39 1.1 ozaki
40 1.1 ozaki DEBUG=false
41 1.1 ozaki TIMEOUT=1
42 1.1 ozaki
43 1.1 ozaki atf_test_case cache_expiration_5s cleanup
44 1.1 ozaki atf_test_case cache_expiration_10s cleanup
45 1.1 ozaki atf_test_case command cleanup
46 1.2 ozaki atf_test_case garp cleanup
47 1.5 ozaki atf_test_case cache_overwriting cleanup
48 1.11 ozaki atf_test_case pubproxy_arp cleanup
49 1.1 ozaki
50 1.1 ozaki cache_expiration_5s_head()
51 1.1 ozaki {
52 1.1 ozaki atf_set "descr" "Tests for ARP cache expiration (5s)"
53 1.1 ozaki atf_set "require.progs" "rump_server"
54 1.1 ozaki }
55 1.1 ozaki
56 1.1 ozaki cache_expiration_10s_head()
57 1.1 ozaki {
58 1.1 ozaki atf_set "descr" "Tests for ARP cache expiration (10s)"
59 1.1 ozaki atf_set "require.progs" "rump_server"
60 1.1 ozaki }
61 1.1 ozaki
62 1.1 ozaki command_head()
63 1.1 ozaki {
64 1.1 ozaki atf_set "descr" "Tests for commands of arp(8)"
65 1.1 ozaki atf_set "require.progs" "rump_server"
66 1.1 ozaki }
67 1.1 ozaki
68 1.2 ozaki garp_head()
69 1.2 ozaki {
70 1.2 ozaki atf_set "descr" "Tests for GARP"
71 1.2 ozaki atf_set "require.progs" "rump_server"
72 1.2 ozaki }
73 1.2 ozaki
74 1.5 ozaki cache_overwriting_head()
75 1.5 ozaki {
76 1.5 ozaki atf_set "descr" "Tests for behavior of overwriting ARP caches"
77 1.5 ozaki atf_set "require.progs" "rump_server"
78 1.5 ozaki }
79 1.5 ozaki
80 1.11 ozaki pubproxy_arp_head()
81 1.11 ozaki {
82 1.11 ozaki atf_set "descr" "Tests for Proxy ARP"
83 1.11 ozaki atf_set "require.progs" "rump_server"
84 1.11 ozaki }
85 1.11 ozaki
86 1.1 ozaki setup_dst_server()
87 1.1 ozaki {
88 1.1 ozaki export RUMP_SERVER=$SOCKDST
89 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 create
90 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus1
91 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet $IP4DST/24
92 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 up
93 1.1 ozaki atf_check -s exit:0 rump.ifconfig -w 10
94 1.1 ozaki
95 1.1 ozaki $DEBUG && rump.ifconfig shmif0
96 1.1 ozaki $DEBUG && rump.arp -n -a
97 1.1 ozaki }
98 1.1 ozaki
99 1.1 ozaki setup_src_server()
100 1.1 ozaki {
101 1.9 ozaki local keep=$1
102 1.1 ozaki
103 1.1 ozaki export RUMP_SERVER=$SOCKSRC
104 1.1 ozaki
105 1.1 ozaki # Adjust ARP parameters
106 1.1 ozaki atf_check -s exit:0 -o ignore rump.sysctl -w net.inet.arp.keep=$keep
107 1.1 ozaki
108 1.1 ozaki # Setup an interface
109 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 create
110 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus1
111 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet $IP4SRC/24
112 1.1 ozaki atf_check -s exit:0 rump.ifconfig shmif0 up
113 1.1 ozaki atf_check -s exit:0 rump.ifconfig -w 10
114 1.1 ozaki
115 1.1 ozaki # Sanity check
116 1.1 ozaki $DEBUG && rump.ifconfig shmif0
117 1.1 ozaki $DEBUG && rump.arp -n -a
118 1.1 ozaki atf_check -s exit:0 -o ignore rump.arp -n $IP4SRC
119 1.1 ozaki atf_check -s not-exit:0 -e ignore rump.arp -n $IP4DST
120 1.1 ozaki }
121 1.1 ozaki
122 1.1 ozaki test_cache_expiration()
123 1.1 ozaki {
124 1.1 ozaki local arp_keep=$1
125 1.1 ozaki local bonus=2
126 1.1 ozaki
127 1.1 ozaki atf_check -s exit:0 ${inetserver} $SOCKSRC
128 1.1 ozaki atf_check -s exit:0 ${inetserver} $SOCKDST
129 1.1 ozaki
130 1.1 ozaki setup_dst_server
131 1.9 ozaki setup_src_server $arp_keep
132 1.1 ozaki
133 1.1 ozaki #
134 1.1 ozaki # Check if a cache is expired expectedly
135 1.1 ozaki #
136 1.1 ozaki export RUMP_SERVER=$SOCKSRC
137 1.1 ozaki atf_check -s exit:0 -o ignore rump.ping -n -w $TIMEOUT -c 1 $IP4DST
138 1.1 ozaki
139 1.1 ozaki $DEBUG && rump.arp -n -a
140 1.1 ozaki atf_check -s exit:0 -o ignore rump.arp -n $IP4SRC
141 1.1 ozaki # Should be cached
142 1.1 ozaki atf_check -s exit:0 -o ignore rump.arp -n $IP4DST
143 1.1 ozaki
144 1.9 ozaki atf_check -s exit:0 sleep $(($arp_keep + $bonus))
145 1.1 ozaki
146 1.1 ozaki $DEBUG && rump.arp -n -a
147 1.1 ozaki atf_check -s exit:0 -o ignore rump.arp -n $IP4SRC
148 1.1 ozaki # Should be expired
149 1.8 ozaki atf_check -s not-exit:0 -e ignore rump.arp -n $IP4DST
150 1.1 ozaki }
151 1.1 ozaki
152 1.1 ozaki cache_expiration_5s_body()
153 1.1 ozaki {
154 1.1 ozaki test_cache_expiration 5
155 1.1 ozaki }
156 1.1 ozaki
157 1.1 ozaki cache_expiration_10s_body()
158 1.1 ozaki {
159 1.1 ozaki test_cache_expiration 10
160 1.1 ozaki }
161 1.1 ozaki
162 1.1 ozaki command_body()
163 1.1 ozaki {
164 1.1 ozaki local arp_keep=5
165 1.1 ozaki local bonus=2
166 1.1 ozaki
167 1.1 ozaki atf_check -s exit:0 ${inetserver} $SOCKSRC
168 1.1 ozaki atf_check -s exit:0 ${inetserver} $SOCKDST
169 1.1 ozaki
170 1.1 ozaki setup_dst_server
171 1.9 ozaki setup_src_server $arp_keep
172 1.1 ozaki
173 1.1 ozaki export RUMP_SERVER=$SOCKSRC
174 1.1 ozaki
175 1.1 ozaki # Add and delete a static entry
176 1.1 ozaki $DEBUG && rump.arp -n -a
177 1.1 ozaki atf_check -s exit:0 -o ignore rump.arp -s 10.0.1.10 b2:a0:20:00:00:10
178 1.1 ozaki $DEBUG && rump.arp -n -a
179 1.7 ozaki atf_check -s exit:0 -o match:'b2:a0:20:00:00:10' rump.arp -n 10.0.1.10
180 1.1 ozaki atf_check -s exit:0 -o match:'permanent' rump.arp -n 10.0.1.10
181 1.1 ozaki atf_check -s exit:0 -o ignore rump.arp -d 10.0.1.10
182 1.1 ozaki $DEBUG && rump.arp -n -a
183 1.1 ozaki atf_check -s not-exit:0 -e ignore rump.arp -n 10.0.1.10
184 1.1 ozaki
185 1.1 ozaki # Add multiple entries via a file
186 1.1 ozaki cat - > ./list <<-EOF
187 1.1 ozaki 10.0.1.11 b2:a0:20:00:00:11
188 1.1 ozaki 10.0.1.12 b2:a0:20:00:00:12
189 1.1 ozaki 10.0.1.13 b2:a0:20:00:00:13
190 1.1 ozaki 10.0.1.14 b2:a0:20:00:00:14
191 1.1 ozaki 10.0.1.15 b2:a0:20:00:00:15
192 1.1 ozaki EOF
193 1.1 ozaki $DEBUG && rump.arp -n -a
194 1.1 ozaki atf_check -s exit:0 -o ignore rump.arp -f ./list
195 1.1 ozaki $DEBUG && rump.arp -n -a
196 1.7 ozaki atf_check -s exit:0 -o match:'b2:a0:20:00:00:11' rump.arp -n 10.0.1.11
197 1.1 ozaki atf_check -s exit:0 -o match:'permanent' rump.arp -n 10.0.1.11
198 1.7 ozaki atf_check -s exit:0 -o match:'b2:a0:20:00:00:12' rump.arp -n 10.0.1.12
199 1.1 ozaki atf_check -s exit:0 -o match:'permanent' rump.arp -n 10.0.1.12
200 1.7 ozaki atf_check -s exit:0 -o match:'b2:a0:20:00:00:13' rump.arp -n 10.0.1.13
201 1.1 ozaki atf_check -s exit:0 -o match:'permanent' rump.arp -n 10.0.1.13
202 1.7 ozaki atf_check -s exit:0 -o match:'b2:a0:20:00:00:14' rump.arp -n 10.0.1.14
203 1.1 ozaki atf_check -s exit:0 -o match:'permanent' rump.arp -n 10.0.1.14
204 1.7 ozaki atf_check -s exit:0 -o match:'b2:a0:20:00:00:15' rump.arp -n 10.0.1.15
205 1.1 ozaki atf_check -s exit:0 -o match:'permanent' rump.arp -n 10.0.1.15
206 1.1 ozaki
207 1.3 ozaki # Test arp -a
208 1.3 ozaki atf_check -s exit:0 -o match:'10.0.1.11' rump.arp -n -a
209 1.3 ozaki atf_check -s exit:0 -o match:'10.0.1.12' rump.arp -n -a
210 1.3 ozaki atf_check -s exit:0 -o match:'10.0.1.13' rump.arp -n -a
211 1.3 ozaki atf_check -s exit:0 -o match:'10.0.1.14' rump.arp -n -a
212 1.3 ozaki atf_check -s exit:0 -o match:'10.0.1.15' rump.arp -n -a
213 1.3 ozaki
214 1.1 ozaki # Flush all entries
215 1.1 ozaki $DEBUG && rump.arp -n -a
216 1.1 ozaki atf_check -s exit:0 -o ignore rump.arp -d -a
217 1.1 ozaki atf_check -s not-exit:0 -e ignore rump.arp -n 10.0.1.11
218 1.1 ozaki atf_check -s not-exit:0 -e ignore rump.arp -n 10.0.1.12
219 1.1 ozaki atf_check -s not-exit:0 -e ignore rump.arp -n 10.0.1.13
220 1.1 ozaki atf_check -s not-exit:0 -e ignore rump.arp -n 10.0.1.14
221 1.1 ozaki atf_check -s not-exit:0 -e ignore rump.arp -n 10.0.1.15
222 1.1 ozaki atf_check -s not-exit:0 -e ignore rump.arp -n 10.0.1.1
223 1.4 ozaki
224 1.4 ozaki # Test temp option
225 1.4 ozaki $DEBUG && rump.arp -n -a
226 1.4 ozaki atf_check -s exit:0 -o ignore rump.arp -s 10.0.1.10 b2:a0:20:00:00:10 temp
227 1.4 ozaki $DEBUG && rump.arp -n -a
228 1.7 ozaki atf_check -s exit:0 -o match:'b2:a0:20:00:00:10' rump.arp -n 10.0.1.10
229 1.4 ozaki atf_check -s exit:0 -o not-match:'permanent' rump.arp -n 10.0.1.10
230 1.4 ozaki
231 1.4 ozaki # Hm? the cache doesn't expire...
232 1.9 ozaki atf_check -s exit:0 sleep $(($arp_keep + $bonus))
233 1.4 ozaki $DEBUG && rump.arp -n -a
234 1.8 ozaki #atf_check -s not-exit:0 -e ignore rump.arp -n 10.0.1.10
235 1.6 ozaki
236 1.6 ozaki return 0
237 1.1 ozaki }
238 1.1 ozaki
239 1.11 ozaki make_pkt_str_arpreq()
240 1.2 ozaki {
241 1.2 ozaki local target=$1
242 1.2 ozaki local sender=$2
243 1.2 ozaki pkt="> ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42:"
244 1.2 ozaki pkt="$pkt Request who-has $target tell $sender, length 28"
245 1.2 ozaki echo $pkt
246 1.2 ozaki }
247 1.2 ozaki
248 1.2 ozaki garp_body()
249 1.2 ozaki {
250 1.2 ozaki local pkt=
251 1.2 ozaki
252 1.2 ozaki atf_check -s exit:0 ${inetserver} $SOCKSRC
253 1.2 ozaki export RUMP_SERVER=$SOCKSRC
254 1.2 ozaki
255 1.2 ozaki # Setup an interface
256 1.2 ozaki atf_check -s exit:0 rump.ifconfig shmif0 create
257 1.2 ozaki atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus1
258 1.2 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 10.0.0.1/24
259 1.2 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 10.0.0.2/24 alias
260 1.2 ozaki atf_check -s exit:0 rump.ifconfig shmif0 up
261 1.2 ozaki $DEBUG && rump.ifconfig shmif0
262 1.2 ozaki
263 1.2 ozaki atf_check -s exit:0 sleep 1
264 1.2 ozaki shmif_dumpbus -p - bus1 2>/dev/null| tcpdump -n -e -r - > ./out
265 1.2 ozaki
266 1.2 ozaki # A GARP packet is sent for the primary address
267 1.11 ozaki pkt=$(make_pkt_str_arpreq 10.0.0.1 10.0.0.1)
268 1.2 ozaki atf_check -s exit:0 -x "cat ./out |grep -q '$pkt'"
269 1.2 ozaki # No GARP packet is sent for the alias address
270 1.11 ozaki pkt=$(make_pkt_str_arpreq 10.0.0.2 10.0.0.2)
271 1.2 ozaki atf_check -s not-exit:0 -x "cat ./out |grep -q '$pkt'"
272 1.2 ozaki
273 1.2 ozaki atf_check -s exit:0 rump.ifconfig -w 10
274 1.2 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 10.0.0.3/24
275 1.2 ozaki atf_check -s exit:0 rump.ifconfig shmif0 inet 10.0.0.4/24 alias
276 1.2 ozaki
277 1.2 ozaki # No GARP packets are sent during IFF_UP
278 1.2 ozaki shmif_dumpbus -p - bus1 2>/dev/null| tcpdump -n -e -r - > ./out
279 1.11 ozaki pkt=$(make_pkt_str_arpreq 10.0.0.3 10.0.0.3)
280 1.2 ozaki atf_check -s not-exit:0 -x "cat ./out |grep -q '$pkt'"
281 1.11 ozaki pkt=$(make_pkt_str_arpreq 10.0.0.4 10.0.0.4)
282 1.2 ozaki atf_check -s not-exit:0 -x "cat ./out |grep -q '$pkt'"
283 1.2 ozaki }
284 1.2 ozaki
285 1.5 ozaki cache_overwriting_body()
286 1.5 ozaki {
287 1.5 ozaki local arp_keep=5
288 1.5 ozaki local bonus=2
289 1.5 ozaki
290 1.5 ozaki atf_check -s exit:0 ${inetserver} $SOCKSRC
291 1.5 ozaki atf_check -s exit:0 ${inetserver} $SOCKDST
292 1.5 ozaki
293 1.5 ozaki setup_dst_server
294 1.9 ozaki setup_src_server $arp_keep
295 1.5 ozaki
296 1.5 ozaki export RUMP_SERVER=$SOCKSRC
297 1.5 ozaki
298 1.5 ozaki # Cannot overwrite a permanent cache
299 1.10 ozaki atf_check -s not-exit:0 -e match:'File exists' \
300 1.10 ozaki rump.arp -s $IP4SRC b2:a0:20:00:00:ff
301 1.5 ozaki $DEBUG && rump.arp -n -a
302 1.5 ozaki
303 1.5 ozaki atf_check -s exit:0 -o ignore rump.ping -n -w $TIMEOUT -c 1 $IP4DST
304 1.5 ozaki $DEBUG && rump.arp -n -a
305 1.5 ozaki # Can overwrite a dynamic cache
306 1.5 ozaki atf_check -s exit:0 -o ignore rump.arp -s $IP4DST b2:a0:20:00:00:00
307 1.5 ozaki $DEBUG && rump.arp -n -a
308 1.7 ozaki atf_check -s exit:0 -o match:'b2:a0:20:00:00:00' rump.arp -n $IP4DST
309 1.5 ozaki atf_check -s exit:0 -o match:'permanent' rump.arp -n $IP4DST
310 1.5 ozaki
311 1.5 ozaki atf_check -s exit:0 -o ignore rump.arp -s 10.0.1.10 b2:a0:20:00:00:10 temp
312 1.5 ozaki $DEBUG && rump.arp -n -a
313 1.7 ozaki atf_check -s exit:0 -o match:'b2:a0:20:00:00:10' rump.arp -n 10.0.1.10
314 1.5 ozaki atf_check -s exit:0 -o not-match:'permanent' rump.arp -n 10.0.1.10
315 1.5 ozaki # Cannot overwrite a temp cache
316 1.10 ozaki atf_check -s not-exit:0 -e match:'File exists' \
317 1.10 ozaki rump.arp -s 10.0.1.10 b2:a0:20:00:00:ff
318 1.5 ozaki $DEBUG && rump.arp -n -a
319 1.6 ozaki
320 1.6 ozaki return 0
321 1.5 ozaki }
322 1.5 ozaki
323 1.11 ozaki make_pkt_str_arprep()
324 1.11 ozaki {
325 1.11 ozaki local ip=$1
326 1.11 ozaki local mac=$2
327 1.11 ozaki pkt="ethertype ARP (0x0806), length 42: "
328 1.11 ozaki pkt="Reply $ip is-at $mac, length 28"
329 1.11 ozaki echo $pkt
330 1.11 ozaki }
331 1.11 ozaki
332 1.11 ozaki extract_new_packets()
333 1.11 ozaki {
334 1.11 ozaki local old=./old
335 1.11 ozaki
336 1.11 ozaki if [ ! -f $old ]; then
337 1.11 ozaki old=/dev/null
338 1.11 ozaki fi
339 1.11 ozaki
340 1.11 ozaki shmif_dumpbus -p - bus1 2>/dev/null| \
341 1.11 ozaki tcpdump -n -e -r - 2>/dev/null > ./new
342 1.11 ozaki diff -u $old ./new |grep '^+' |cut -d '+' -f 2 > ./diff
343 1.11 ozaki mv -f ./new ./old
344 1.11 ozaki cat ./diff
345 1.11 ozaki }
346 1.11 ozaki
347 1.11 ozaki check_entry_flags()
348 1.11 ozaki {
349 1.11 ozaki local ip=$(echo $1 |sed 's/\./\\./g')
350 1.11 ozaki local flags=$2
351 1.11 ozaki
352 1.11 ozaki atf_check -s exit:0 -o match:" $flags " -e ignore -x \
353 1.11 ozaki "rump.netstat -rn -f inet | grep ^'$ip'"
354 1.11 ozaki }
355 1.11 ozaki
356 1.11 ozaki pubproxy_arp_body()
357 1.11 ozaki {
358 1.11 ozaki local arp_keep=5
359 1.11 ozaki
360 1.11 ozaki atf_check -s exit:0 ${inetserver} $SOCKSRC
361 1.11 ozaki atf_check -s exit:0 ${inetserver} $SOCKDST
362 1.11 ozaki
363 1.11 ozaki setup_dst_server
364 1.11 ozaki setup_src_server $arp_keep
365 1.11 ozaki
366 1.11 ozaki export RUMP_SERVER=$SOCKDST
367 1.11 ozaki
368 1.11 ozaki atf_check -s exit:0 -o ignore rump.arp -s $IP4DST_PUB \
369 1.11 ozaki $MACDST_PUB pub
370 1.11 ozaki atf_check -s exit:0 -o match:'permanent published' \
371 1.11 ozaki rump.arp -n $IP4DST_PUB
372 1.11 ozaki check_entry_flags $IP4DST_PUB ULSp
373 1.11 ozaki
374 1.11 ozaki $DEBUG && rump.arp -n -a
375 1.11 ozaki $DEBUG && rump.netstat -nr -f inet
376 1.11 ozaki
377 1.11 ozaki atf_check -s exit:0 -o ignore rump.arp -s $IP4DST_PUBPROXY \
378 1.11 ozaki $MACDST_PUBPROXY pub proxy
379 1.11 ozaki atf_check -s exit:0 -o match:'permanent published \(proxy only\)' \
380 1.11 ozaki rump.arp -n $IP4DST_PUBPROXY
381 1.11 ozaki check_entry_flags $IP4DST_PUBPROXY UHLSp
382 1.11 ozaki
383 1.11 ozaki $DEBUG && rump.arp -n -a
384 1.11 ozaki $DEBUG && rump.netstat -nr -f inet
385 1.11 ozaki
386 1.11 ozaki export RUMP_SERVER=$SOCKSRC
387 1.11 ozaki
388 1.11 ozaki atf_check -s not-exit:0 -o ignore -e ignore \
389 1.11 ozaki rump.ping -n -w 1 -c 1 $IP4DST_PUB
390 1.11 ozaki
391 1.11 ozaki atf_check -s exit:0 sleep 1
392 1.11 ozaki extract_new_packets > ./out
393 1.11 ozaki $DEBUG && cat ./out
394 1.11 ozaki
395 1.11 ozaki pkt=$(make_pkt_str_arprep $IP4DST_PUB $MACDST_PUB)
396 1.11 ozaki atf_check -s exit:0 -x "cat ./out |grep -q '$pkt'"
397 1.11 ozaki
398 1.11 ozaki atf_check -s not-exit:0 -o ignore -e ignore \
399 1.11 ozaki rump.ping -n -w 1 -c 1 $IP4DST_PUBPROXY
400 1.11 ozaki
401 1.11 ozaki atf_check -s exit:0 sleep 1
402 1.11 ozaki extract_new_packets > ./out
403 1.11 ozaki $DEBUG && cat ./out
404 1.11 ozaki
405 1.11 ozaki pkt=$(make_pkt_str_arprep $IP4DST_PUBPROXY $MACDST_PUBPROXY)
406 1.11 ozaki atf_check -s exit:0 -x "cat ./out |grep -q '$pkt'"
407 1.11 ozaki
408 1.11 ozaki return 0
409 1.11 ozaki }
410 1.11 ozaki
411 1.1 ozaki cleanup()
412 1.1 ozaki {
413 1.1 ozaki env RUMP_SERVER=$SOCKSRC rump.halt
414 1.1 ozaki env RUMP_SERVER=$SOCKDST rump.halt
415 1.1 ozaki }
416 1.1 ozaki
417 1.2 ozaki dump_src()
418 1.1 ozaki {
419 1.1 ozaki export RUMP_SERVER=$SOCKSRC
420 1.1 ozaki rump.netstat -nr
421 1.1 ozaki rump.arp -n -a
422 1.2 ozaki rump.ifconfig
423 1.1 ozaki $HIJACKING dmesg
424 1.2 ozaki }
425 1.1 ozaki
426 1.2 ozaki dump_dst()
427 1.2 ozaki {
428 1.1 ozaki export RUMP_SERVER=$SOCKDST
429 1.1 ozaki rump.netstat -nr
430 1.1 ozaki rump.arp -n -a
431 1.2 ozaki rump.ifconfig
432 1.1 ozaki $HIJACKING dmesg
433 1.2 ozaki }
434 1.1 ozaki
435 1.2 ozaki dump()
436 1.2 ozaki {
437 1.2 ozaki dump_src
438 1.2 ozaki dump_dst
439 1.1 ozaki shmif_dumpbus -p - bus1 2>/dev/null| tcpdump -n -e -r -
440 1.1 ozaki }
441 1.1 ozaki
442 1.1 ozaki cache_expiration_5s_cleanup()
443 1.1 ozaki {
444 1.1 ozaki $DEBUG && dump
445 1.1 ozaki cleanup
446 1.1 ozaki }
447 1.1 ozaki
448 1.1 ozaki cache_expiration_10s_cleanup()
449 1.1 ozaki {
450 1.1 ozaki $DEBUG && dump
451 1.1 ozaki cleanup
452 1.1 ozaki }
453 1.1 ozaki
454 1.1 ozaki command_cleanup()
455 1.1 ozaki {
456 1.1 ozaki $DEBUG && dump
457 1.1 ozaki cleanup
458 1.1 ozaki }
459 1.1 ozaki
460 1.2 ozaki garp_cleanup()
461 1.2 ozaki {
462 1.2 ozaki $DEBUG && dump_src
463 1.2 ozaki $DEBUG && shmif_dumpbus -p - bus1 2>/dev/null| tcpdump -n -e -r -
464 1.2 ozaki env RUMP_SERVER=$SOCKSRC rump.halt
465 1.2 ozaki }
466 1.2 ozaki
467 1.5 ozaki cache_overwriting_cleanup()
468 1.5 ozaki {
469 1.5 ozaki $DEBUG && dump
470 1.5 ozaki cleanup
471 1.5 ozaki }
472 1.5 ozaki
473 1.11 ozaki pubproxy_arp_cleanup()
474 1.11 ozaki {
475 1.11 ozaki $DEBUG && dump
476 1.11 ozaki cleanup
477 1.11 ozaki }
478 1.11 ozaki
479 1.1 ozaki atf_init_test_cases()
480 1.1 ozaki {
481 1.1 ozaki atf_add_test_case cache_expiration_5s
482 1.1 ozaki atf_add_test_case cache_expiration_10s
483 1.1 ozaki atf_add_test_case command
484 1.2 ozaki atf_add_test_case garp
485 1.5 ozaki atf_add_test_case cache_overwriting
486 1.11 ozaki atf_add_test_case pubproxy_arp
487 1.1 ozaki }
488