14d846d26SWarner Losh# SPDX-License-Identifier: BSD-2-Clause 2b800be97SKajetan Staszkiewicz# 3b800be97SKajetan Staszkiewicz# Copyright (c) 2020 Kristof Provost <kp@FreeBSD.org> 4b800be97SKajetan Staszkiewicz# Copyright (c) 2023 Kajetan Staszkiewicz <vegeta@tuxpowered.net> 5b800be97SKajetan Staszkiewicz# 6b800be97SKajetan Staszkiewicz# Redistribution and use in source and binary forms, with or without 7b800be97SKajetan Staszkiewicz# modification, are permitted provided that the following conditions 8b800be97SKajetan Staszkiewicz# are met: 9b800be97SKajetan Staszkiewicz# 1. Redistributions of source code must retain the above copyright 10b800be97SKajetan Staszkiewicz# notice, this list of conditions and the following disclaimer. 11b800be97SKajetan Staszkiewicz# 2. Redistributions in binary form must reproduce the above copyright 12b800be97SKajetan Staszkiewicz# notice, this list of conditions and the following disclaimer in the 13b800be97SKajetan Staszkiewicz# documentation and/or other materials provided with the distribution. 14b800be97SKajetan Staszkiewicz# 15b800be97SKajetan Staszkiewicz# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16b800be97SKajetan Staszkiewicz# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17b800be97SKajetan Staszkiewicz# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18b800be97SKajetan Staszkiewicz# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19b800be97SKajetan Staszkiewicz# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20b800be97SKajetan Staszkiewicz# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21b800be97SKajetan Staszkiewicz# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22b800be97SKajetan Staszkiewicz# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23b800be97SKajetan Staszkiewicz# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24b800be97SKajetan Staszkiewicz# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25b800be97SKajetan Staszkiewicz# SUCH DAMAGE. 26b800be97SKajetan Staszkiewicz 27b800be97SKajetan Staszkiewicz. $(atf_get_srcdir)/utils.subr 28b800be97SKajetan Staszkiewicz 29b800be97SKajetan Staszkiewiczcommon_dir=$(atf_get_srcdir)/../common 30b800be97SKajetan Staszkiewicz 31b800be97SKajetan Staszkiewiczatf_test_case "max_mss_v4" "cleanup" 32b800be97SKajetan Staszkiewiczmax_mss_v4_head() 33b800be97SKajetan Staszkiewicz{ 34b800be97SKajetan Staszkiewicz atf_set descr 'Test IPv4 pass "mss" rule' 35b800be97SKajetan Staszkiewicz atf_set require.user root 36*c46af893SJose Luis Duran atf_set require.progs python3 scapy 37b800be97SKajetan Staszkiewicz} 38b800be97SKajetan Staszkiewicz 39b800be97SKajetan Staszkiewiczmax_mss_v4_body() 40b800be97SKajetan Staszkiewicz{ 41b800be97SKajetan Staszkiewicz setup_router_dummy_ipv4 42b800be97SKajetan Staszkiewicz pft_set_rules router "pass on ${epair_tester}b scrub ( max-mss 1300 )" 43b800be97SKajetan Staszkiewicz # Check aligned 44b800be97SKajetan Staszkiewicz ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-mss=1400 --expect-mss=1300 45b800be97SKajetan Staszkiewicz # And unaligned 46b800be97SKajetan Staszkiewicz ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-mss=1400 --expect-mss=1300 \ 47b800be97SKajetan Staszkiewicz --send-tcpopt-unaligned 48b800be97SKajetan Staszkiewicz} 49b800be97SKajetan Staszkiewicz 50b800be97SKajetan Staszkiewiczmax_mss_v4_cleanup() 51b800be97SKajetan Staszkiewicz{ 52b800be97SKajetan Staszkiewicz pft_cleanup 53b800be97SKajetan Staszkiewicz} 54b800be97SKajetan Staszkiewicz 55b800be97SKajetan Staszkiewicz 56b800be97SKajetan Staszkiewiczatf_test_case "max_mss_v6" "cleanup" 57b800be97SKajetan Staszkiewiczmax_mss_v6_head() 58b800be97SKajetan Staszkiewicz{ 59b800be97SKajetan Staszkiewicz atf_set descr 'Test IPv6 pass "mss" rule' 60b800be97SKajetan Staszkiewicz atf_set require.user root 61*c46af893SJose Luis Duran atf_set require.progs python3 scapy 62b800be97SKajetan Staszkiewicz} 63b800be97SKajetan Staszkiewicz 64b800be97SKajetan Staszkiewiczmax_mss_v6_body() 65b800be97SKajetan Staszkiewicz{ 66b800be97SKajetan Staszkiewicz setup_router_dummy_ipv6 67b800be97SKajetan Staszkiewicz pft_set_rules router "pass on ${epair_tester}b scrub ( max-mss 1300 )" 68b800be97SKajetan Staszkiewicz # Check aligned 69b800be97SKajetan Staszkiewicz ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-mss=1400 --expect-mss=1300 70b800be97SKajetan Staszkiewicz # And unaligned 71b800be97SKajetan Staszkiewicz ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-mss=1400 --expect-mss=1300 \ 72b800be97SKajetan Staszkiewicz --send-tcpopt-unaligned 73b800be97SKajetan Staszkiewicz} 74b800be97SKajetan Staszkiewicz 75b800be97SKajetan Staszkiewiczmax_mss_v6_cleanup() 76b800be97SKajetan Staszkiewicz{ 77b800be97SKajetan Staszkiewicz pft_cleanup 78b800be97SKajetan Staszkiewicz} 79b800be97SKajetan Staszkiewicz 80b800be97SKajetan Staszkiewicz 81b800be97SKajetan Staszkiewiczatf_test_case "set_tos_v4" "cleanup" 82b800be97SKajetan Staszkiewiczset_tos_v4_head() 83b800be97SKajetan Staszkiewicz{ 84b800be97SKajetan Staszkiewicz atf_set descr 'Test IPv4 pass "set-tos" rule' 85b800be97SKajetan Staszkiewicz atf_set require.user root 86*c46af893SJose Luis Duran atf_set require.progs python3 scapy 87b800be97SKajetan Staszkiewicz} 88b800be97SKajetan Staszkiewicz 89b800be97SKajetan Staszkiewiczset_tos_v4_body() 90b800be97SKajetan Staszkiewicz{ 91b800be97SKajetan Staszkiewicz setup_router_dummy_ipv4 92b800be97SKajetan Staszkiewicz pft_set_rules router "pass on ${epair_tester}b set ( tos 0x42 )" 93b800be97SKajetan Staszkiewicz ping_dummy_check_request exit:0 --send-tc=66 --expect-tc=66 94b800be97SKajetan Staszkiewicz} 95b800be97SKajetan Staszkiewicz 96b800be97SKajetan Staszkiewiczset_tos_v4_cleanup() 97b800be97SKajetan Staszkiewicz{ 98b800be97SKajetan Staszkiewicz pft_cleanup 99b800be97SKajetan Staszkiewicz} 100b800be97SKajetan Staszkiewicz 101b800be97SKajetan Staszkiewicz 102b800be97SKajetan Staszkiewiczatf_test_case "set_tos_v6" "cleanup" 103b800be97SKajetan Staszkiewiczset_tos_v6_head() 104b800be97SKajetan Staszkiewicz{ 105b800be97SKajetan Staszkiewicz atf_set descr 'Test IPv6 pass "set-tos" rule' 106b800be97SKajetan Staszkiewicz atf_set require.user root 107*c46af893SJose Luis Duran atf_set require.progs python3 scapy 108b800be97SKajetan Staszkiewicz} 109b800be97SKajetan Staszkiewicz 110b800be97SKajetan Staszkiewiczset_tos_v6_body() 111b800be97SKajetan Staszkiewicz{ 112b800be97SKajetan Staszkiewicz setup_router_dummy_ipv4 113b800be97SKajetan Staszkiewicz pft_set_rules router "pass on ${epair_tester}b set ( tos 0x42 )" 114b800be97SKajetan Staszkiewicz ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-tc=66 --expect-tc=66 115b800be97SKajetan Staszkiewicz} 116b800be97SKajetan Staszkiewicz 117b800be97SKajetan Staszkiewiczset_tos_v6_cleanup() 118b800be97SKajetan Staszkiewicz{ 119b800be97SKajetan Staszkiewicz pft_cleanup 120b800be97SKajetan Staszkiewicz} 121b800be97SKajetan Staszkiewicz 122b800be97SKajetan Staszkiewicz 123b800be97SKajetan Staszkiewiczatf_test_case "min_ttl_v4" "cleanup" 124b800be97SKajetan Staszkiewiczmin_ttl_v4_head() 125b800be97SKajetan Staszkiewicz{ 126b800be97SKajetan Staszkiewicz atf_set descr 'Test IPv4 pass "min-ttl" rule' 127b800be97SKajetan Staszkiewicz atf_set require.user root 128*c46af893SJose Luis Duran atf_set require.progs python3 scapy 129b800be97SKajetan Staszkiewicz} 130b800be97SKajetan Staszkiewicz 131b800be97SKajetan Staszkiewiczmin_ttl_v4_body() 132b800be97SKajetan Staszkiewicz{ 133b800be97SKajetan Staszkiewicz setup_router_dummy_ipv4 134b800be97SKajetan Staszkiewicz pft_set_rules router "pass on ${epair_tester}b scrub ( min-ttl 50 )" 135b800be97SKajetan Staszkiewicz ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-hlim=40 --expect-hlim=49 136b800be97SKajetan Staszkiewicz} 137b800be97SKajetan Staszkiewicz 138b800be97SKajetan Staszkiewiczmin_ttl_v4_cleanup() 139b800be97SKajetan Staszkiewicz{ 140b800be97SKajetan Staszkiewicz pft_cleanup 141b800be97SKajetan Staszkiewicz} 142b800be97SKajetan Staszkiewicz 143b800be97SKajetan Staszkiewicz 144b800be97SKajetan Staszkiewiczatf_test_case "min_ttl_v6" "cleanup" 145b800be97SKajetan Staszkiewiczmin_ttl_v6_head() 146b800be97SKajetan Staszkiewicz{ 147b800be97SKajetan Staszkiewicz atf_set descr 'Test IPv6 pass "min-ttl" rule' 148b800be97SKajetan Staszkiewicz atf_set require.user root 149*c46af893SJose Luis Duran atf_set require.progs python3 scapy 150b800be97SKajetan Staszkiewicz} 151b800be97SKajetan Staszkiewicz 152b800be97SKajetan Staszkiewiczmin_ttl_v6_body() 153b800be97SKajetan Staszkiewicz{ 154b800be97SKajetan Staszkiewicz setup_router_dummy_ipv6 155b800be97SKajetan Staszkiewicz pft_set_rules router "pass on ${epair_tester}b scrub ( min-ttl 50 )" 156b800be97SKajetan Staszkiewicz ping_dummy_check_request exit:0 --ping-type=tcpsyn --send-hlim=40 --expect-hlim=49 157b800be97SKajetan Staszkiewicz} 158b800be97SKajetan Staszkiewicz 159b800be97SKajetan Staszkiewiczmin_ttl_v6_cleanup() 160b800be97SKajetan Staszkiewicz{ 161b800be97SKajetan Staszkiewicz pft_cleanup 162b800be97SKajetan Staszkiewicz} 163b800be97SKajetan Staszkiewicz 164b800be97SKajetan Staszkiewicz 165b800be97SKajetan Staszkiewiczatf_init_test_cases() 166b800be97SKajetan Staszkiewicz{ 167b800be97SKajetan Staszkiewicz atf_add_test_case "max_mss_v4" 168b800be97SKajetan Staszkiewicz atf_add_test_case "max_mss_v6" 169b800be97SKajetan Staszkiewicz atf_add_test_case "set_tos_v4" 170b800be97SKajetan Staszkiewicz atf_add_test_case "set_tos_v6" 171b800be97SKajetan Staszkiewicz atf_add_test_case "min_ttl_v4" 172b800be97SKajetan Staszkiewicz atf_add_test_case "min_ttl_v6" 173b800be97SKajetan Staszkiewicz} 174