1d7cdd897SAlexander V. Chernikov#!/usr/bin/env atf-sh 2d7cdd897SAlexander V. Chernikov#- 3d7cdd897SAlexander V. Chernikov# SPDX-License-Identifier: BSD-2-Clause 4d7cdd897SAlexander V. Chernikov# 5d7cdd897SAlexander V. Chernikov# Copyright (c) 2020 Alexander V. Chernikov 6d7cdd897SAlexander V. Chernikov# 7d7cdd897SAlexander V. Chernikov# Redistribution and use in source and binary forms, with or without 8d7cdd897SAlexander V. Chernikov# modification, are permitted provided that the following conditions 9d7cdd897SAlexander V. Chernikov# are met: 10d7cdd897SAlexander V. Chernikov# 1. Redistributions of source code must retain the above copyright 11d7cdd897SAlexander V. Chernikov# notice, this list of conditions and the following disclaimer. 12d7cdd897SAlexander V. Chernikov# 2. Redistributions in binary form must reproduce the above copyright 13d7cdd897SAlexander V. Chernikov# notice, this list of conditions and the following disclaimer in the 14d7cdd897SAlexander V. Chernikov# documentation and/or other materials provided with the distribution. 15d7cdd897SAlexander V. Chernikov# 16d7cdd897SAlexander V. Chernikov# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 17d7cdd897SAlexander V. Chernikov# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18d7cdd897SAlexander V. Chernikov# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19d7cdd897SAlexander V. Chernikov# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 20d7cdd897SAlexander V. Chernikov# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21d7cdd897SAlexander V. Chernikov# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22d7cdd897SAlexander V. Chernikov# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23d7cdd897SAlexander V. Chernikov# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24d7cdd897SAlexander V. Chernikov# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25d7cdd897SAlexander V. Chernikov# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26d7cdd897SAlexander V. Chernikov# SUCH DAMAGE. 27d7cdd897SAlexander V. Chernikov# 28d7cdd897SAlexander V. Chernikov# 29d7cdd897SAlexander V. Chernikov 30d7cdd897SAlexander V. Chernikov. $(atf_get_srcdir)/../common/vnet.subr 31d7cdd897SAlexander V. Chernikov 32d7cdd897SAlexander V. Chernikovatf_test_case "fwd_ip_icmp_iface_fast_success" "cleanup" 33d7cdd897SAlexander V. Chernikovfwd_ip_icmp_iface_fast_success_head() { 34d7cdd897SAlexander V. Chernikov 35d7cdd897SAlexander V. Chernikov atf_set descr 'Test valid IPv4 on-stick fastforwarding to iface' 36d7cdd897SAlexander V. Chernikov atf_set require.user root 37*c46af893SJose Luis Duran atf_set require.progs python3 scapy 38d7cdd897SAlexander V. Chernikov} 39d7cdd897SAlexander V. Chernikov 40d7cdd897SAlexander V. Chernikovfwd_ip_icmp_iface_fast_success_body() { 41d7cdd897SAlexander V. Chernikov 42d7cdd897SAlexander V. Chernikov vnet_init 43d7cdd897SAlexander V. Chernikov 44d7cdd897SAlexander V. Chernikov ip4a="192.0.2.1" 45d7cdd897SAlexander V. Chernikov ip4b="192.0.2.2" 46d7cdd897SAlexander V. Chernikov plen=29 47d7cdd897SAlexander V. Chernikov src_ip="192.0.2.3" 48d7cdd897SAlexander V. Chernikov 49d7cdd897SAlexander V. Chernikov script_name="../common/sender.py" 50d7cdd897SAlexander V. Chernikov 51d7cdd897SAlexander V. Chernikov epair=$(vnet_mkepair) 52d7cdd897SAlexander V. Chernikov ifconfig ${epair}a up 53d7cdd897SAlexander V. Chernikov ifconfig ${epair}a inet ${ip4a}/${plen} 54d7cdd897SAlexander V. Chernikov 55d7cdd897SAlexander V. Chernikov jname="v4t-fwd_ip_icmp_iface_fast_success" 56d7cdd897SAlexander V. Chernikov vnet_mkjail ${jname} ${epair}b 57d7cdd897SAlexander V. Chernikov jexec ${jname} ifconfig ${epair}b up 58d7cdd897SAlexander V. Chernikov jexec ${jname} ifconfig ${epair}b inet ${ip4b}/${plen} 59d7cdd897SAlexander V. Chernikov 60d7cdd897SAlexander V. Chernikov # Get router ip/mac 61d7cdd897SAlexander V. Chernikov jail_ip=${ip4b} 62d7cdd897SAlexander V. Chernikov jail_mac=`jexec ${jname} ifconfig ${epair}b ether | awk '$1~/ether/{print$2}'` 63d7cdd897SAlexander V. Chernikov 64d7cdd897SAlexander V. Chernikov our_mac=`ifconfig ${epair}a ether | awk '$1~/ether/{print$2}'` 65d7cdd897SAlexander V. Chernikov 66d7cdd897SAlexander V. Chernikov jexec ${jname} sysctl net.inet.ip.forwarding=1 67d7cdd897SAlexander V. Chernikov # As we're doing router-on-the-stick, turn sending IP redirects off: 68d7cdd897SAlexander V. Chernikov jexec ${jname} sysctl net.inet.ip.redirect=0 69d7cdd897SAlexander V. Chernikov 70d7cdd897SAlexander V. Chernikov # echo "LOCAL: ${local_ip} ${local_mac}" 71d7cdd897SAlexander V. Chernikov # echo "REMOTE: ${remote_rtr_ip} ${remote_rtr_mac}" 72d7cdd897SAlexander V. Chernikov 73d7cdd897SAlexander V. Chernikov atf_check -s exit:0 $(atf_get_srcdir)/${script_name} \ 74d7cdd897SAlexander V. Chernikov --test_name fwd_ip_icmp_fast \ 75d7cdd897SAlexander V. Chernikov --smac ${our_mac} --dmac ${jail_mac} \ 76d7cdd897SAlexander V. Chernikov --sip ${src_ip} --dip ${ip4a} \ 77d7cdd897SAlexander V. Chernikov --iface ${epair}a 78d7cdd897SAlexander V. Chernikov 79d7cdd897SAlexander V. Chernikov # check counters are valid 80d7cdd897SAlexander V. Chernikov atf_check -o match:'1 packet forwarded \(1 packet fast forwarded\)' jexec ${jname} netstat -sp ip 81d7cdd897SAlexander V. Chernikov} 82d7cdd897SAlexander V. Chernikov 83d7cdd897SAlexander V. Chernikovfwd_ip_icmp_iface_fast_success_cleanup() { 84d7cdd897SAlexander V. Chernikov 85d7cdd897SAlexander V. Chernikov vnet_cleanup 86d7cdd897SAlexander V. Chernikov} 87d7cdd897SAlexander V. Chernikov 88d7cdd897SAlexander V. Chernikovatf_test_case "fwd_ip_icmp_gw_fast_success" "cleanup" 89d7cdd897SAlexander V. Chernikovfwd_ip_icmp_gw_fast_success_head() { 90d7cdd897SAlexander V. Chernikov 91d7cdd897SAlexander V. Chernikov atf_set descr 'Test valid IPv4 on-stick fastforwarding to gw' 92d7cdd897SAlexander V. Chernikov atf_set require.user root 93*c46af893SJose Luis Duran atf_set require.progs python3 scapy 94d7cdd897SAlexander V. Chernikov} 95d7cdd897SAlexander V. Chernikov 96d7cdd897SAlexander V. Chernikovfwd_ip_icmp_gw_fast_success_body() { 97d7cdd897SAlexander V. Chernikov 98d7cdd897SAlexander V. Chernikov vnet_init 99d7cdd897SAlexander V. Chernikov 100d7cdd897SAlexander V. Chernikov ip4a="192.0.2.1" 101d7cdd897SAlexander V. Chernikov ip4b="192.0.2.2" 102d7cdd897SAlexander V. Chernikov plen=29 103d7cdd897SAlexander V. Chernikov src_ip="192.0.2.3" 104d7cdd897SAlexander V. Chernikov dst_ip="192.0.2.4" 105d7cdd897SAlexander V. Chernikov 106d7cdd897SAlexander V. Chernikov script_name="../common/sender.py" 107d7cdd897SAlexander V. Chernikov 108d7cdd897SAlexander V. Chernikov epair=$(vnet_mkepair) 109d7cdd897SAlexander V. Chernikov ifconfig ${epair}a up 110d7cdd897SAlexander V. Chernikov ifconfig ${epair}a inet ${ip4a}/${plen} 111d7cdd897SAlexander V. Chernikov 112d7cdd897SAlexander V. Chernikov jname="v4t-fwd_ip_icmp_gw_fast_success" 113d7cdd897SAlexander V. Chernikov vnet_mkjail ${jname} ${epair}b 114d7cdd897SAlexander V. Chernikov jexec ${jname} ifconfig ${epair}b up 115d7cdd897SAlexander V. Chernikov jexec ${jname} ifconfig ${epair}b inet ${ip4b}/${plen} 116d7cdd897SAlexander V. Chernikov 117d7cdd897SAlexander V. Chernikov # Get router ip/mac 118d7cdd897SAlexander V. Chernikov jail_ip=${ip4b} 119d7cdd897SAlexander V. Chernikov jail_mac=`jexec ${jname} ifconfig ${epair}b ether | awk '$1~/ether/{print$2}'` 120d7cdd897SAlexander V. Chernikov 121d7cdd897SAlexander V. Chernikov our_mac=`ifconfig ${epair}a ether | awk '$1~/ether/{print$2}'` 122d7cdd897SAlexander V. Chernikov 123d7cdd897SAlexander V. Chernikov jexec ${jname} sysctl net.inet.ip.forwarding=1 124d7cdd897SAlexander V. Chernikov # As we're doing router-on-the-stick, turn sending IP redirects off: 125d7cdd897SAlexander V. Chernikov jexec ${jname} sysctl net.inet.ip.redirect=0 126d7cdd897SAlexander V. Chernikov 127d7cdd897SAlexander V. Chernikov # Add host route 128d7cdd897SAlexander V. Chernikov jexec ${jname} route -4 add -host ${dst_ip} ${ip4a} 129d7cdd897SAlexander V. Chernikov 130d7cdd897SAlexander V. Chernikov # echo "LOCAL: ${local_ip} ${local_mac}" 131d7cdd897SAlexander V. Chernikov # echo "REMOTE: ${remote_rtr_ip} ${remote_rtr_mac}" 132d7cdd897SAlexander V. Chernikov 133d7cdd897SAlexander V. Chernikov atf_check -s exit:0 $(atf_get_srcdir)/${script_name} \ 134d7cdd897SAlexander V. Chernikov --test_name fwd_ip_icmp_fast \ 135d7cdd897SAlexander V. Chernikov --smac ${our_mac} --dmac ${jail_mac} \ 136d7cdd897SAlexander V. Chernikov --sip ${src_ip} --dip ${dst_ip} \ 137d7cdd897SAlexander V. Chernikov --iface ${epair}a 138d7cdd897SAlexander V. Chernikov 139d7cdd897SAlexander V. Chernikov # check counters are valid 140d7cdd897SAlexander V. Chernikov atf_check -o match:'1 packet forwarded \(1 packet fast forwarded\)' jexec ${jname} netstat -sp ip 141d7cdd897SAlexander V. Chernikov} 142d7cdd897SAlexander V. Chernikov 143d7cdd897SAlexander V. Chernikovfwd_ip_icmp_gw_fast_success_cleanup() { 144d7cdd897SAlexander V. Chernikov 145d7cdd897SAlexander V. Chernikov vnet_cleanup 146d7cdd897SAlexander V. Chernikov} 147d7cdd897SAlexander V. Chernikov 148d7cdd897SAlexander V. Chernikovatf_test_case "fwd_ip_icmp_iface_slow_success" "cleanup" 149d7cdd897SAlexander V. Chernikovfwd_ip_icmp_iface_slow_success_head() { 150d7cdd897SAlexander V. Chernikov 151d7cdd897SAlexander V. Chernikov atf_set descr 'Test valid IPv4 on-stick "slow" forwarding to iface' 152d7cdd897SAlexander V. Chernikov atf_set require.user root 153*c46af893SJose Luis Duran atf_set require.progs python3 scapy 154d7cdd897SAlexander V. Chernikov} 155d7cdd897SAlexander V. Chernikov 156d7cdd897SAlexander V. Chernikovfwd_ip_icmp_iface_slow_success_body() { 157d7cdd897SAlexander V. Chernikov 158d7cdd897SAlexander V. Chernikov vnet_init 159d7cdd897SAlexander V. Chernikov 160d7cdd897SAlexander V. Chernikov ip4a="192.0.2.1" 161d7cdd897SAlexander V. Chernikov ip4b="192.0.2.2" 162d7cdd897SAlexander V. Chernikov plen=29 163d7cdd897SAlexander V. Chernikov src_ip="192.0.2.3" 164d7cdd897SAlexander V. Chernikov 165d7cdd897SAlexander V. Chernikov script_name="../common/sender.py" 166d7cdd897SAlexander V. Chernikov 167d7cdd897SAlexander V. Chernikov epair=$(vnet_mkepair) 168d7cdd897SAlexander V. Chernikov ifconfig ${epair}a up 169d7cdd897SAlexander V. Chernikov ifconfig ${epair}a inet ${ip4a}/${plen} 170d7cdd897SAlexander V. Chernikov 171d7cdd897SAlexander V. Chernikov jname="v4t-fwd_ip_icmp_iface_slow_success" 172d7cdd897SAlexander V. Chernikov vnet_mkjail ${jname} ${epair}b 173d7cdd897SAlexander V. Chernikov jexec ${jname} ifconfig ${epair}b up 174d7cdd897SAlexander V. Chernikov jexec ${jname} ifconfig ${epair}b inet ${ip4b}/${plen} 175d7cdd897SAlexander V. Chernikov 176d7cdd897SAlexander V. Chernikov # Get router ip/mac 177d7cdd897SAlexander V. Chernikov jail_ip=${ip4b} 178d7cdd897SAlexander V. Chernikov jail_mac=`jexec ${jname} ifconfig ${epair}b ether | awk '$1~/ether/{print$2}'` 179d7cdd897SAlexander V. Chernikov 180d7cdd897SAlexander V. Chernikov our_mac=`ifconfig ${epair}a ether | awk '$1~/ether/{print$2}'` 181d7cdd897SAlexander V. Chernikov 182d7cdd897SAlexander V. Chernikov jexec ${jname} sysctl net.inet.ip.forwarding=1 183d7cdd897SAlexander V. Chernikov # As we're doing router-on-the-stick, turn sending IP redirects off: 184d7cdd897SAlexander V. Chernikov jexec ${jname} sysctl net.inet.ip.redirect=0 185d7cdd897SAlexander V. Chernikov 186d7cdd897SAlexander V. Chernikov # Generate packet with options to force slow-path 187d7cdd897SAlexander V. Chernikov atf_check -s exit:0 $(atf_get_srcdir)/${script_name} \ 188d7cdd897SAlexander V. Chernikov --test_name fwd_ip_icmp_slow \ 189d7cdd897SAlexander V. Chernikov --smac ${our_mac} --dmac ${jail_mac} \ 190d7cdd897SAlexander V. Chernikov --sip ${src_ip} --dip ${ip4a} \ 191d7cdd897SAlexander V. Chernikov --iface ${epair}a 192d7cdd897SAlexander V. Chernikov 193d7cdd897SAlexander V. Chernikov # check counters are valid 194d7cdd897SAlexander V. Chernikov atf_check -o match:'1 packet forwarded \(0 packets fast forwarded\)' jexec ${jname} netstat -sp ip 195d7cdd897SAlexander V. Chernikov} 196d7cdd897SAlexander V. Chernikov 197d7cdd897SAlexander V. Chernikovfwd_ip_icmp_iface_slow_success_cleanup() { 198d7cdd897SAlexander V. Chernikov 199d7cdd897SAlexander V. Chernikov vnet_cleanup 200d7cdd897SAlexander V. Chernikov} 201d7cdd897SAlexander V. Chernikov 202d7cdd897SAlexander V. Chernikovatf_test_case "fwd_ip_icmp_gw_slow_success" "cleanup" 203d7cdd897SAlexander V. Chernikovfwd_ip_icmp_gw_slow_success_head() { 204d7cdd897SAlexander V. Chernikov 205d7cdd897SAlexander V. Chernikov atf_set descr 'Test valid IPv4 on-stick "slow" forwarding to gw' 206d7cdd897SAlexander V. Chernikov atf_set require.user root 207*c46af893SJose Luis Duran atf_set require.progs python3 scapy 208d7cdd897SAlexander V. Chernikov} 209d7cdd897SAlexander V. Chernikov 210d7cdd897SAlexander V. Chernikovfwd_ip_icmp_gw_slow_success_body() { 211d7cdd897SAlexander V. Chernikov 212d7cdd897SAlexander V. Chernikov vnet_init 213d7cdd897SAlexander V. Chernikov 214d7cdd897SAlexander V. Chernikov ip4a="192.0.2.1" 215d7cdd897SAlexander V. Chernikov ip4b="192.0.2.2" 216d7cdd897SAlexander V. Chernikov plen=29 217d7cdd897SAlexander V. Chernikov src_ip="192.0.2.3" 218d7cdd897SAlexander V. Chernikov dst_ip="192.0.2.4" 219d7cdd897SAlexander V. Chernikov 220d7cdd897SAlexander V. Chernikov script_name="../common/sender.py" 221d7cdd897SAlexander V. Chernikov 222d7cdd897SAlexander V. Chernikov epair=$(vnet_mkepair) 223d7cdd897SAlexander V. Chernikov ifconfig ${epair}a up 224d7cdd897SAlexander V. Chernikov ifconfig ${epair}a inet ${ip4a}/${plen} 225d7cdd897SAlexander V. Chernikov 226d7cdd897SAlexander V. Chernikov jname="v4t-fwd_ip_icmp_gw_slow_success" 227d7cdd897SAlexander V. Chernikov vnet_mkjail ${jname} ${epair}b 228d7cdd897SAlexander V. Chernikov jexec ${jname} ifconfig ${epair}b up 229d7cdd897SAlexander V. Chernikov jexec ${jname} ifconfig ${epair}b inet ${ip4b}/${plen} 230d7cdd897SAlexander V. Chernikov 231d7cdd897SAlexander V. Chernikov # Get router ip/mac 232d7cdd897SAlexander V. Chernikov jail_ip=${ip4b} 233d7cdd897SAlexander V. Chernikov jail_mac=`jexec ${jname} ifconfig ${epair}b ether | awk '$1~/ether/{print$2}'` 234d7cdd897SAlexander V. Chernikov 235d7cdd897SAlexander V. Chernikov our_mac=`ifconfig ${epair}a ether | awk '$1~/ether/{print$2}'` 236d7cdd897SAlexander V. Chernikov 237d7cdd897SAlexander V. Chernikov jexec ${jname} sysctl net.inet.ip.forwarding=1 238d7cdd897SAlexander V. Chernikov # As we're doing router-on-the-stick, turn sending IP redirects off: 239d7cdd897SAlexander V. Chernikov jexec ${jname} sysctl net.inet.ip.redirect=0 240d7cdd897SAlexander V. Chernikov 241d7cdd897SAlexander V. Chernikov # Add host route 242d7cdd897SAlexander V. Chernikov jexec ${jname} route -4 add -host ${dst_ip} ${ip4a} 243d7cdd897SAlexander V. Chernikov 244d7cdd897SAlexander V. Chernikov # echo "LOCAL: ${local_ip} ${local_mac}" 245d7cdd897SAlexander V. Chernikov # echo "REMOTE: ${remote_rtr_ip} ${remote_rtr_mac}" 246d7cdd897SAlexander V. Chernikov 247d7cdd897SAlexander V. Chernikov atf_check -s exit:0 $(atf_get_srcdir)/${script_name} \ 248d7cdd897SAlexander V. Chernikov --test_name fwd_ip_icmp_fast \ 249d7cdd897SAlexander V. Chernikov --smac ${our_mac} --dmac ${jail_mac} \ 250d7cdd897SAlexander V. Chernikov --sip ${src_ip} --dip ${dst_ip} \ 251d7cdd897SAlexander V. Chernikov --iface ${epair}a 252d7cdd897SAlexander V. Chernikov 253d7cdd897SAlexander V. Chernikov # check counters are valid 254d7cdd897SAlexander V. Chernikov atf_check -o match:'1 packet forwarded \(1 packet fast forwarded\)' jexec ${jname} netstat -sp ip 255d7cdd897SAlexander V. Chernikov} 256d7cdd897SAlexander V. Chernikov 257d7cdd897SAlexander V. Chernikovfwd_ip_icmp_gw_slow_success_cleanup() { 258d7cdd897SAlexander V. Chernikov 259d7cdd897SAlexander V. Chernikov vnet_cleanup 260d7cdd897SAlexander V. Chernikov} 261d7cdd897SAlexander V. Chernikov 262e27970aeSKristof Provostatf_test_case "fwd_ip_blackhole" "cleanup" 263e27970aeSKristof Provostfwd_ip_blackhole_head() { 264e27970aeSKristof Provost 265e27970aeSKristof Provost atf_set descr 'Test blackhole routes' 266e27970aeSKristof Provost atf_set require.user root 267e27970aeSKristof Provost} 268e27970aeSKristof Provost 269e27970aeSKristof Provostfwd_ip_blackhole_body() { 270e27970aeSKristof Provost jname="v4t-fwd_ip_blackhole" 271e27970aeSKristof Provost 272e27970aeSKristof Provost vnet_init 273e27970aeSKristof Provost 274e27970aeSKristof Provost epair=$(vnet_mkepair) 275e27970aeSKristof Provost epair_out=$(vnet_mkepair) 276e27970aeSKristof Provost 277e27970aeSKristof Provost ifconfig ${epair}a 192.0.2.2/24 up 278e27970aeSKristof Provost 279e27970aeSKristof Provost vnet_mkjail ${jname} ${epair}b ${epair_out}b 280e27970aeSKristof Provost jexec ${jname} ifconfig lo0 127.0.0.1/8 up 281e27970aeSKristof Provost jexec ${jname} ifconfig ${epair}b 192.0.2.1/24 up 282e27970aeSKristof Provost jexec ${jname} ifconfig ${epair_out}b 198.51.100.1/24 up 283e27970aeSKristof Provost jexec ${jname} sysctl net.inet.ip.forwarding=1 284e27970aeSKristof Provost 285e27970aeSKristof Provost route add default 192.0.2.1 286e27970aeSKristof Provost 287e27970aeSKristof Provost atf_check -s exit:2 -o ignore \ 288e27970aeSKristof Provost ping -c 1 -t 1 198.51.100.2 289e27970aeSKristof Provost atf_check -s exit:0 -o match:"0 packets not forwardable" \ 290e27970aeSKristof Provost jexec ${jname} netstat -s -p ip 291e27970aeSKristof Provost 292e27970aeSKristof Provost # Create blackhole route 293e27970aeSKristof Provost jexec ${jname} /sbin/route add 198.51.100.2 -blackhole -fib 0 294e27970aeSKristof Provost jexec ${jname} netstat -rn 295e27970aeSKristof Provost 296e27970aeSKristof Provost # Include an IP option to ensure slow path 297e27970aeSKristof Provost atf_check -s exit:2 -o ignore \ 298e27970aeSKristof Provost ping -c 1 -t 1 -R 198.51.100.2 299e27970aeSKristof Provost atf_check -s exit:0 -o match:"1 packet not forwardable" \ 300e27970aeSKristof Provost jexec ${jname} netstat -s -p ip 301e27970aeSKristof Provost 302e27970aeSKristof Provost # Now try via the fast path 303e27970aeSKristof Provost atf_check -s exit:2 -o ignore \ 304e27970aeSKristof Provost ping -c 1 -t 1 198.51.100.2 305e27970aeSKristof Provost atf_check -s exit:0 -o match:"2 packets not forwardable" \ 306e27970aeSKristof Provost jexec ${jname} netstat -s -p ip 307e27970aeSKristof Provost} 308e27970aeSKristof Provost 309e27970aeSKristof Provostfwd_ip_blackhole_cleanup() { 310e27970aeSKristof Provost 311e27970aeSKristof Provost vnet_cleanup 312e27970aeSKristof Provost} 313e27970aeSKristof Provost 314d7cdd897SAlexander V. Chernikovatf_init_test_cases() 315d7cdd897SAlexander V. Chernikov{ 316d7cdd897SAlexander V. Chernikov 317d7cdd897SAlexander V. Chernikov atf_add_test_case "fwd_ip_icmp_iface_fast_success" 318d7cdd897SAlexander V. Chernikov atf_add_test_case "fwd_ip_icmp_gw_fast_success" 319d7cdd897SAlexander V. Chernikov atf_add_test_case "fwd_ip_icmp_iface_slow_success" 320d7cdd897SAlexander V. Chernikov atf_add_test_case "fwd_ip_icmp_gw_slow_success" 321e27970aeSKristof Provost atf_add_test_case "fwd_ip_blackhole" 322d7cdd897SAlexander V. Chernikov} 323d7cdd897SAlexander V. Chernikov 324d7cdd897SAlexander V. Chernikov# end 325d7cdd897SAlexander V. Chernikov 326