Home | History | Annotate | Line # | Download | only in route
t_flags.sh revision 1.10.2.1
      1  1.10.2.1  pgoyette #	$NetBSD: t_flags.sh,v 1.10.2.1 2017/01/07 08:56:56 pgoyette 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 SOCK_LOCAL=unix://commsock1
     29       1.1     ozaki SOCK_PEER=unix://commsock2
     30       1.1     ozaki SOCK_GW=unix://commsock3
     31       1.1     ozaki BUS=bus1
     32       1.1     ozaki BUS2=bus2
     33       1.1     ozaki 
     34  1.10.2.1  pgoyette DEBUG=${DEBUG:-false}
     35       1.1     ozaki 
     36       1.1     ozaki setup_local()
     37       1.1     ozaki {
     38       1.1     ozaki 
     39  1.10.2.1  pgoyette 	rump_server_start $SOCK_LOCAL
     40  1.10.2.1  pgoyette 	rump_server_add_iface $SOCK_LOCAL shmif0 $BUS
     41       1.1     ozaki 
     42       1.1     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
     43       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.ifconfig shmif0 10.0.0.2/24
     44       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.ifconfig shmif0 up
     45  1.10.2.1  pgoyette 	atf_check -s exit:0 -o ignore rump.ifconfig -w 10
     46       1.1     ozaki 
     47       1.1     ozaki 	$DEBUG && rump.ifconfig
     48       1.1     ozaki 	$DEBUG && rump.netstat -rn -f inet
     49       1.1     ozaki }
     50       1.1     ozaki 
     51       1.1     ozaki setup_peer()
     52       1.1     ozaki {
     53       1.1     ozaki 
     54  1.10.2.1  pgoyette 	rump_server_start $SOCK_PEER
     55  1.10.2.1  pgoyette 	rump_server_add_iface $SOCK_PEER shmif0 $BUS
     56       1.1     ozaki 
     57       1.1     ozaki 	export RUMP_SERVER=$SOCK_PEER
     58       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.ifconfig shmif0 10.0.0.1/24
     59       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.ifconfig shmif0 up
     60  1.10.2.1  pgoyette 	atf_check -s exit:0 -o ignore rump.ifconfig -w 10
     61       1.1     ozaki 
     62       1.1     ozaki 	$DEBUG && rump.ifconfig
     63       1.1     ozaki 	$DEBUG && rump.netstat -rn -f inet
     64       1.1     ozaki }
     65       1.1     ozaki 
     66       1.1     ozaki setup_gw()
     67       1.1     ozaki {
     68       1.1     ozaki 
     69  1.10.2.1  pgoyette 	rump_server_start $SOCK_GW
     70  1.10.2.1  pgoyette 	rump_server_add_iface $SOCK_GW shmif0 $BUS
     71  1.10.2.1  pgoyette 	rump_server_add_iface $SOCK_GW shmif1 $BUS2
     72       1.1     ozaki 
     73       1.1     ozaki 	export RUMP_SERVER=$SOCK_GW
     74       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.ifconfig shmif0 10.0.0.254/24
     75       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.ifconfig shmif0 up
     76       1.1     ozaki 
     77       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.ifconfig shmif1 10.0.2.1/24
     78       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.ifconfig shmif1 alias 10.0.2.2/24
     79       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.ifconfig shmif1 up
     80       1.1     ozaki 
     81       1.1     ozaki 	# Wait until DAD completes (10 sec at most)
     82       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.ifconfig -w 10
     83       1.1     ozaki 	atf_check -s not-exit:0 -x "rump.ifconfig shmif1 |grep -q tentative"
     84       1.1     ozaki 
     85       1.1     ozaki 	$DEBUG && rump.ifconfig
     86       1.1     ozaki 	$DEBUG && rump.netstat -rn -f inet
     87       1.1     ozaki }
     88       1.1     ozaki 
     89      1.10     ozaki test_lo()
     90       1.1     ozaki {
     91       1.1     ozaki 
     92       1.1     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
     93       1.1     ozaki 
     94       1.1     ozaki 	# Up, Host, local
     95  1.10.2.1  pgoyette 	check_route_flags 127.0.0.1 UHl
     96       1.1     ozaki }
     97       1.1     ozaki 
     98      1.10     ozaki test_connected()
     99       1.1     ozaki {
    100       1.1     ozaki 
    101       1.1     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    102       1.1     ozaki 
    103       1.1     ozaki 	# Up, Host, LLINFO, local
    104  1.10.2.1  pgoyette 	check_route_flags 10.0.0.2 UHl
    105       1.1     ozaki 
    106       1.1     ozaki 	# Up, Cloning
    107  1.10.2.1  pgoyette 	check_route_flags 10.0.0/24 UC
    108       1.1     ozaki }
    109       1.1     ozaki 
    110      1.10     ozaki test_default_gateway()
    111       1.1     ozaki {
    112       1.1     ozaki 
    113       1.1     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    114       1.1     ozaki 
    115       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.route add default 10.0.0.1
    116       1.1     ozaki 	$DEBUG && rump.netstat -rn -f inet
    117       1.1     ozaki 
    118       1.1     ozaki 	# Up, Gateway, Static
    119  1.10.2.1  pgoyette 	check_route_flags default UGS
    120       1.1     ozaki }
    121       1.1     ozaki 
    122      1.10     ozaki test_static()
    123       1.1     ozaki {
    124       1.1     ozaki 
    125       1.1     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    126       1.1     ozaki 
    127       1.1     ozaki 	# Static route to host
    128       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.route add 10.0.1.1 10.0.0.1
    129       1.1     ozaki 	$DEBUG && rump.netstat -rn -f inet
    130       1.1     ozaki 
    131       1.1     ozaki 	# Up, Gateway, Host, Static
    132  1.10.2.1  pgoyette 	check_route_flags 10.0.1.1 UGHS
    133       1.1     ozaki 
    134       1.1     ozaki 	# Static route to network
    135       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.route add -net 10.0.2.0/24 10.0.0.1
    136       1.1     ozaki 	$DEBUG && rump.netstat -rn -f inet
    137       1.1     ozaki 
    138       1.1     ozaki 	# Up, Gateway, Static
    139  1.10.2.1  pgoyette 	check_route_flags 10.0.2/24 UGS
    140       1.1     ozaki }
    141       1.1     ozaki 
    142      1.10     ozaki test_blackhole()
    143       1.1     ozaki {
    144       1.1     ozaki 
    145       1.1     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    146       1.1     ozaki 
    147       1.5     ozaki 	atf_check -s exit:0 -o ignore rump.ping -n -w 1 -c 1 10.0.0.1
    148       1.5     ozaki 
    149       1.1     ozaki 	# Delete an existing route first
    150       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.route delete -net 10.0.0.0/24
    151       1.1     ozaki 
    152       1.5     ozaki 	# Gateway must be lo0
    153       1.5     ozaki 	atf_check -s exit:0 -o ignore \
    154       1.5     ozaki 	    rump.route add -net 10.0.0.0/24 127.0.0.1 -blackhole
    155       1.1     ozaki 	$DEBUG && rump.netstat -rn -f inet
    156       1.1     ozaki 
    157       1.1     ozaki 	# Up, Gateway, Blackhole, Static
    158  1.10.2.1  pgoyette 	check_route_flags 10.0.0/24 UGBS
    159       1.1     ozaki 
    160       1.5     ozaki 	atf_check -s not-exit:0 -o match:'100.0% packet loss' \
    161       1.1     ozaki 	    rump.ping -n -w 1 -c 1 10.0.0.1
    162       1.1     ozaki 	$DEBUG && rump.netstat -rn -f inet
    163       1.1     ozaki 
    164       1.1     ozaki 	# Shouldn't be created
    165  1.10.2.1  pgoyette 	check_route_no_entry 10.0.0.1
    166       1.1     ozaki }
    167       1.1     ozaki 
    168      1.10     ozaki test_reject()
    169       1.1     ozaki {
    170       1.1     ozaki 
    171       1.1     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    172       1.1     ozaki 
    173       1.1     ozaki 	# Delete an existing route first
    174       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.route delete -net 10.0.0.0/24
    175       1.1     ozaki 
    176       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.route add -net 10.0.0.0/24 10.0.0.1 -reject
    177       1.1     ozaki 	$DEBUG && rump.netstat -rn -f inet
    178       1.1     ozaki 
    179       1.1     ozaki 	# Up, Gateway, Reject, Static
    180  1.10.2.1  pgoyette 	check_route_flags 10.0.0/24 UGRS
    181       1.1     ozaki 
    182       1.1     ozaki 	atf_check -s not-exit:0 -o ignore -e match:'No route to host' \
    183       1.1     ozaki 	    rump.ping -n -w 1 -c 1 10.0.0.1
    184       1.1     ozaki 	$DEBUG && rump.netstat -rn -f inet
    185       1.1     ozaki 
    186       1.1     ozaki 	# Shouldn't be created
    187  1.10.2.1  pgoyette 	check_route_no_entry 10.0.0.1
    188       1.6     ozaki 
    189       1.7     ozaki 	# Gateway is lo0 (RTF_GATEWAY)
    190       1.6     ozaki 
    191       1.6     ozaki 	# Delete an existing route first
    192       1.6     ozaki 	atf_check -s exit:0 -o ignore rump.route delete -net 10.0.0.0/24
    193       1.6     ozaki 
    194       1.6     ozaki 	atf_check -s exit:0 -o ignore \
    195       1.6     ozaki 	    rump.route add -net 10.0.0.0/24 127.0.0.1 -reject
    196       1.6     ozaki 	$DEBUG && rump.netstat -rn -f inet
    197       1.6     ozaki 
    198       1.6     ozaki 	# Up, Gateway, Reject, Static
    199  1.10.2.1  pgoyette 	check_route_flags 10.0.0/24 UGRS
    200       1.6     ozaki 
    201       1.6     ozaki 	atf_check -s not-exit:0 -o ignore -e match:'Network is unreachable' \
    202       1.6     ozaki 	    rump.ping -n -w 1 -c 1 10.0.0.1
    203       1.6     ozaki 	$DEBUG && rump.netstat -rn -f inet
    204       1.6     ozaki 
    205       1.6     ozaki 	# Shouldn't be created
    206  1.10.2.1  pgoyette 	check_route_no_entry 10.0.0.1
    207       1.7     ozaki 
    208       1.7     ozaki 	# Gateway is lo0 (RTF_HOST)
    209       1.7     ozaki 
    210       1.7     ozaki 	# Delete an existing route first
    211       1.7     ozaki 	atf_check -s exit:0 -o ignore rump.route delete -net 10.0.0.0/24
    212       1.7     ozaki 
    213       1.7     ozaki 	atf_check -s exit:0 -o ignore \
    214       1.7     ozaki 	    rump.route add -host 10.0.0.1/24 127.0.0.1 -iface -reject
    215       1.7     ozaki 	$DEBUG && rump.netstat -rn -f inet
    216       1.7     ozaki 
    217       1.7     ozaki 	# Up, Host, Reject, Static
    218  1.10.2.1  pgoyette 	check_route_flags 10.0.0.1 UHRS
    219       1.7     ozaki 
    220       1.7     ozaki 	atf_check -s not-exit:0 -o ignore -e match:'No route to host' \
    221       1.7     ozaki 	    rump.ping -n -w 1 -c 1 10.0.0.1
    222       1.7     ozaki 	$DEBUG && rump.netstat -rn -f inet
    223       1.8     ozaki 
    224       1.8     ozaki 	return 0
    225       1.1     ozaki }
    226       1.1     ozaki 
    227      1.10     ozaki test_icmp_redirect()
    228       1.1     ozaki {
    229       1.1     ozaki 
    230       1.1     ozaki 	### Testing Dynamic flag ###
    231       1.1     ozaki 
    232       1.1     ozaki 	#
    233       1.1     ozaki 	# Setup a gateway 10.0.0.254. 10.0.2.1 is behind it.
    234       1.1     ozaki 	#
    235       1.1     ozaki 	setup_gw
    236       1.1     ozaki 
    237       1.1     ozaki 	#
    238       1.1     ozaki 	# Teach the peer that 10.0.2.* is behind 10.0.0.254
    239       1.1     ozaki 	#
    240       1.1     ozaki 	export RUMP_SERVER=$SOCK_PEER
    241       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.route add -net 10.0.2.0/24 10.0.0.254
    242       1.1     ozaki 	# Up, Gateway, Static
    243  1.10.2.1  pgoyette 	check_route_flags 10.0.2/24 UGS
    244       1.1     ozaki 
    245       1.1     ozaki 	#
    246       1.1     ozaki 	# Setup the default gateway to the peer, 10.0.0.1
    247       1.1     ozaki 	#
    248       1.1     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    249       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.route add default 10.0.0.1
    250       1.1     ozaki 	# Up, Gateway, Static
    251  1.10.2.1  pgoyette 	check_route_flags default UGS
    252       1.1     ozaki 
    253       1.1     ozaki 	# Try ping 10.0.2.1
    254       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.ping -n -w 1 -c 1 10.0.2.1
    255       1.1     ozaki 	$DEBUG && rump.netstat -rn -f inet
    256       1.1     ozaki 
    257       1.1     ozaki 	# Up, Gateway, Host, Dynamic
    258  1.10.2.1  pgoyette 	check_route_flags 10.0.2.1 UGHD
    259  1.10.2.1  pgoyette 	check_route_gw 10.0.2.1 10.0.0.254
    260       1.1     ozaki 
    261       1.1     ozaki 	export RUMP_SERVER=$SOCK_PEER
    262       1.1     ozaki 	$DEBUG && rump.netstat -rn -f inet
    263       1.1     ozaki 
    264       1.1     ozaki 	### Testing Modified flag ###
    265       1.1     ozaki 
    266       1.1     ozaki 	#
    267       1.1     ozaki 	# Teach a wrong route to 10.0.2.2
    268       1.1     ozaki 	#
    269       1.1     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    270       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.route add 10.0.2.2 10.0.0.1
    271       1.1     ozaki 	# Up, Gateway, Host, Static
    272  1.10.2.1  pgoyette 	check_route_flags 10.0.2.2 UGHS
    273  1.10.2.1  pgoyette 	check_route_gw 10.0.2.2 10.0.0.1
    274       1.1     ozaki 
    275       1.1     ozaki 	# Try ping 10.0.2.2
    276       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.ping -n -w 1 -c 1 10.0.2.2
    277       1.1     ozaki 	$DEBUG && rump.netstat -rn -f inet
    278       1.1     ozaki 
    279       1.1     ozaki 	# Up, Gateway, Host, Modified, Static
    280  1.10.2.1  pgoyette 	check_route_flags 10.0.2.2 UGHMS
    281  1.10.2.1  pgoyette 	check_route_gw 10.0.2.2 10.0.0.254
    282       1.1     ozaki }
    283       1.1     ozaki 
    284      1.10     ozaki test_announce()
    285       1.1     ozaki {
    286       1.1     ozaki 	export RUMP_SERVER=$SOCK_LOCAL
    287       1.1     ozaki 
    288       1.1     ozaki 	# Delete an existing route first
    289       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.route delete -net 10.0.0.0/24
    290       1.1     ozaki 
    291       1.1     ozaki 	atf_check -s exit:0 -o ignore rump.route add -net 10.0.0.0/24 10.0.0.1 -proxy
    292       1.1     ozaki 	$DEBUG && rump.netstat -rn -f inet
    293       1.1     ozaki 
    294       1.1     ozaki 	# Up, Gateway, Static, proxy
    295  1.10.2.1  pgoyette 	check_route_flags 10.0.0/24 UGSp
    296       1.1     ozaki 
    297       1.1     ozaki 	# TODO test its behavior
    298       1.1     ozaki }
    299       1.1     ozaki 
    300       1.1     ozaki add_test()
    301       1.1     ozaki {
    302       1.1     ozaki 	local name=$1
    303       1.1     ozaki 	local desc="$2"
    304       1.1     ozaki 
    305       1.1     ozaki 	atf_test_case "route_flags_${name}" cleanup
    306       1.1     ozaki 	eval "route_flags_${name}_head() { \
    307       1.1     ozaki 			atf_set \"descr\" \"${desc}\"; \
    308       1.1     ozaki 			atf_set \"require.progs\" \"rump_server\"; \
    309       1.1     ozaki 		}; \
    310       1.1     ozaki 	    route_flags_${name}_body() { \
    311       1.1     ozaki 			setup_local; \
    312       1.1     ozaki 			setup_peer; \
    313       1.1     ozaki 			test_${name}; \
    314  1.10.2.1  pgoyette 			rump_server_destroy_ifaces; \
    315       1.1     ozaki 		}; \
    316       1.1     ozaki 	    route_flags_${name}_cleanup() { \
    317  1.10.2.1  pgoyette 			$DEBUG && dump; \
    318       1.1     ozaki 			cleanup; \
    319       1.1     ozaki 		}"
    320       1.1     ozaki 	atf_add_test_case "route_flags_${name}"
    321       1.1     ozaki }
    322       1.1     ozaki 
    323       1.1     ozaki atf_init_test_cases()
    324       1.1     ozaki {
    325       1.1     ozaki 
    326      1.10     ozaki 	add_test lo              "Tests route flags: loop back interface"
    327      1.10     ozaki 	add_test connected       "Tests route flags: connected route"
    328      1.10     ozaki 	add_test default_gateway "Tests route flags: default gateway"
    329      1.10     ozaki 	add_test static          "Tests route flags: static route"
    330      1.10     ozaki 	add_test blackhole       "Tests route flags: blackhole route"
    331      1.10     ozaki 	add_test reject          "Tests route flags: reject route"
    332      1.10     ozaki 	add_test icmp_redirect   "Tests route flags: icmp redirect"
    333      1.10     ozaki 	add_test announce        "Tests route flags: announce flag"
    334       1.1     ozaki }
    335