xref: /freebsd/sbin/route/tests/basic.sh (revision 3b01bf881c848ba0be72fc74ba5eaa58c66c35e1)
1*3b01bf88STom Jones#-
2*3b01bf88STom Jones# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3*3b01bf88STom Jones#
4*3b01bf88STom Jones# Copyright (c) 2020 Ahsan Barkati
5*3b01bf88STom Jones#
6*3b01bf88STom Jones# Redistribution and use in source and binary forms, with or without
7*3b01bf88STom Jones# modification, are permitted provided that the following conditions
8*3b01bf88STom Jones# are met:
9*3b01bf88STom Jones# 1. Redistributions of source code must retain the above copyright
10*3b01bf88STom Jones#    notice, this list of conditions and the following disclaimer.
11*3b01bf88STom Jones# 2. Redistributions in binary form must reproduce the above copyright
12*3b01bf88STom Jones#    notice, this list of conditions and the following disclaimer in the
13*3b01bf88STom Jones#    documentation and/or other materials provided with the distribution.
14*3b01bf88STom Jones#
15*3b01bf88STom Jones# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16*3b01bf88STom Jones# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17*3b01bf88STom Jones# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18*3b01bf88STom Jones# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19*3b01bf88STom Jones# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20*3b01bf88STom Jones# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21*3b01bf88STom Jones# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22*3b01bf88STom Jones# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23*3b01bf88STom Jones# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24*3b01bf88STom Jones# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25*3b01bf88STom Jones# SUCH DAMAGE.
26*3b01bf88STom Jones#
27*3b01bf88STom Jones# $FreeBSD$
28*3b01bf88STom Jones#
29*3b01bf88STom Jones
30*3b01bf88STom Jones. $(atf_get_srcdir)/utils.subr
31*3b01bf88STom Jones
32*3b01bf88STom Jonesatf_test_case "basic_v4" "cleanup"
33*3b01bf88STom Jonesbasic_v4_head()
34*3b01bf88STom Jones{
35*3b01bf88STom Jones	atf_set descr 'add/change/delete route test for v4'
36*3b01bf88STom Jones	atf_set require.user root
37*3b01bf88STom Jones	atf_set require.progs jq
38*3b01bf88STom Jones}
39*3b01bf88STom Jones
40*3b01bf88STom Jonesbasic_v4_body()
41*3b01bf88STom Jones{
42*3b01bf88STom Jones	epair=$(vnet_mkepair)
43*3b01bf88STom Jones	ifconfig ${epair}a 192.0.2.2/24 up
44*3b01bf88STom Jones	vnet_mkjail alcatraz ${epair}b
45*3b01bf88STom Jones	jexec alcatraz ifconfig ${epair}b 192.0.2.1/24 up
46*3b01bf88STom Jones
47*3b01bf88STom Jones	# add a new route in the jail
48*3b01bf88STom Jones	jexec alcatraz route add 192.0.2.3 192.0.2.2
49*3b01bf88STom Jones	gateway=$(check_route "alcatraz" "192.0.2.3")
50*3b01bf88STom Jones
51*3b01bf88STom Jones	if [ "${gateway}" != "192.0.2.2" ]; then
52*3b01bf88STom Jones		atf_fail "Failed to add new route."
53*3b01bf88STom Jones	fi
54*3b01bf88STom Jones
55*3b01bf88STom Jones	# change the added route
56*3b01bf88STom Jones	jexec alcatraz route change 192.0.2.3 192.0.2.4
57*3b01bf88STom Jones	gateway=$(check_route "alcatraz" "192.0.2.3")
58*3b01bf88STom Jones
59*3b01bf88STom Jones	if [ "${gateway}" != "192.0.2.4" ]; then
60*3b01bf88STom Jones		atf_fail "Failed to change route."
61*3b01bf88STom Jones	fi
62*3b01bf88STom Jones
63*3b01bf88STom Jones	# delete the route
64*3b01bf88STom Jones	jexec alcatraz route delete 192.0.2.3
65*3b01bf88STom Jones	gateway=$(check_route "alcatraz" "192.0.2.3")
66*3b01bf88STom Jones
67*3b01bf88STom Jones	if [ "${gateway}" != "" ]; then
68*3b01bf88STom Jones		atf_fail "Failed to delete route."
69*3b01bf88STom Jones	fi
70*3b01bf88STom Jones}
71*3b01bf88STom Jones
72*3b01bf88STom Jonesbasic_v4_cleanup()
73*3b01bf88STom Jones{
74*3b01bf88STom Jones	vnet_cleanup
75*3b01bf88STom Jones}
76*3b01bf88STom Jones
77*3b01bf88STom Jonesatf_test_case "basic_v6" "cleanup"
78*3b01bf88STom Jonesbasic_v6_head()
79*3b01bf88STom Jones{
80*3b01bf88STom Jones	atf_set descr 'add/change/delete route test for v6'
81*3b01bf88STom Jones	atf_set require.user root
82*3b01bf88STom Jones	atf_set require.progs jq
83*3b01bf88STom Jones}
84*3b01bf88STom Jones
85*3b01bf88STom Jonesbasic_v6_body()
86*3b01bf88STom Jones{
87*3b01bf88STom Jones	epair=$(vnet_mkepair)
88*3b01bf88STom Jones	ifconfig ${epair}a inet6 2001:db8:cc4b::1/64 up no_dad
89*3b01bf88STom Jones	vnet_mkjail alcatraz ${epair}b
90*3b01bf88STom Jones	jexec alcatraz ifconfig ${epair}b inet6 2001:db8:cc4b::2/64 up no_dad
91*3b01bf88STom Jones
92*3b01bf88STom Jones	# add a new route in the jail
93*3b01bf88STom Jones	jexec alcatraz route add -6 2001:db8:cc4b::3 2001:db8:cc4b::1
94*3b01bf88STom Jones	gateway=$(check_route "alcatraz" "2001:db8:cc4b::3")
95*3b01bf88STom Jones
96*3b01bf88STom Jones	if [ "${gateway}" != "2001:db8:cc4b::1" ]; then
97*3b01bf88STom Jones		atf_fail "Failed to add new route."
98*3b01bf88STom Jones	fi
99*3b01bf88STom Jones
100*3b01bf88STom Jones	# change the added route
101*3b01bf88STom Jones	jexec alcatraz route change -6 2001:db8:cc4b::3 2001:db8:cc4b::4
102*3b01bf88STom Jones	gateway=$(check_route "alcatraz" "2001:db8:cc4b::3")
103*3b01bf88STom Jones	if [ "${gateway}" != "2001:db8:cc4b::4" ]; then
104*3b01bf88STom Jones		atf_fail "Failed to change route."
105*3b01bf88STom Jones	fi
106*3b01bf88STom Jones
107*3b01bf88STom Jones	# delete the route
108*3b01bf88STom Jones	jexec alcatraz route -6 delete 2001:db8:cc4b::3
109*3b01bf88STom Jones	gateway=$(check_route "alcatraz" "2001:db8:cc4b::3")
110*3b01bf88STom Jones
111*3b01bf88STom Jones	if [ "${gateway}" != "" ]; then
112*3b01bf88STom Jones		atf_fail "Failed to delete route."
113*3b01bf88STom Jones	fi
114*3b01bf88STom Jones}
115*3b01bf88STom Jones
116*3b01bf88STom Jonesbasic_v6_cleanup()
117*3b01bf88STom Jones{
118*3b01bf88STom Jones	vnet_cleanup
119*3b01bf88STom Jones}
120*3b01bf88STom Jones
121*3b01bf88STom Jonesatf_init_test_cases()
122*3b01bf88STom Jones{
123*3b01bf88STom Jones	atf_add_test_case "basic_v4"
124*3b01bf88STom Jones	atf_add_test_case "basic_v6"
125*3b01bf88STom Jones}
126