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