git: c8f38634eda3 - main - tests/netinet6: remove test that uses Jumbo Payload Option
Gleb Smirnoff <[email protected]>
| Newsgroups | gmane.os.freebsd.devel.cvs.src |
|---|---|
| Message-ID | <6a7a378c.245e5.493ae3f8__34230.5667627201$1786394543$gmane$org@gitrepo.freebsd.org> |
The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=c8f38634eda390b8709a6051c031ab7ee2c4503f commit c8f38634eda390b8709a6051c031ab7ee2c4503f Author: Gleb Smirnoff <[email protected]> AuthorDate: 2026-08-10 20:40:39 +0000 Commit: Gleb Smirnoff <[email protected]> CommitDate: 2026-08-10 20:41:37 +0000 tests/netinet6: remove test that uses Jumbo Payload Option This test was already marked as always skipped. Fixes: 069a67374ed9641ff1ada2aecaac1cc61a560649 Reviewed by: pouria Differential Revision: https://reviews.freebsd.org/D58114 --- ObsoleteFiles.inc | 4 + tests/sys/netinet6/frag6/Makefile | 3 - tests/sys/netinet6/frag6/frag6_01.py | 116 ------------------ tests/sys/netinet6/frag6/frag6_01.sh | 232 ----------------------------------- 4 files changed, 4 insertions(+), 351 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 79c59baf188d..24211b4ab2a9 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -51,6 +51,10 @@ # xargs -n1 | sort | uniq -d; # done +# 20260810: test removed +OLD_FILES+=usr/tests/sys/netinet6/frag6/frag6_01 +OLD_FILES+=usr/tests/sys/netinet6/frag6/frag6_01.py + # 20260707: Move sendfile_helper to tests/sys/common OLD_FILES+=usr/tests/sys/kern/sendfile_helper diff --git a/tests/sys/netinet6/frag6/Makefile b/tests/sys/netinet6/frag6/Makefile index 3fca0522e533..2efb60cb20e3 100644 --- a/tests/sys/netinet6/frag6/Makefile +++ b/tests/sys/netinet6/frag6/Makefile @@ -7,7 +7,6 @@ FILESDIR= ${TESTSDIR} # Seems kyua is not running the test cases from one file in parallel. # Otherwise we could cat the files together into one shell file. ATF_TESTS_SH= \ - frag6_01 \ frag6_02 \ frag6_03 \ frag6_04 \ @@ -32,7 +31,6 @@ TEST_METADATA+= is_exclusive=true ${PACKAGE}FILES+= frag6.subr ${PACKAGE}FILES+= sniffer.py -${PACKAGE}FILES+= frag6_01.py ${PACKAGE}FILES+= frag6_02.py ${PACKAGE}FILES+= frag6_03.py ${PACKAGE}FILES+= frag6_04.py @@ -55,7 +53,6 @@ ${PACKAGE}FILES+= frag6_20.py ${PACKAGE}FILESMODE_frag6.subr= 0444 ${PACKAGE}FILESMODE_sniffer.py= 0555 -${PACKAGE}FILESMODE_frag6_01.py= 0555 ${PACKAGE}FILESMODE_frag6_02.py= 0555 ${PACKAGE}FILESMODE_frag6_03.py= 0555 ${PACKAGE}FILESMODE_frag6_04.py= 0555 diff --git a/tests/sys/netinet6/frag6/frag6_01.py b/tests/sys/netinet6/frag6/frag6_01.py deleted file mode 100644 index f51a63a01ed6..000000000000 --- a/tests/sys/netinet6/frag6/frag6_01.py +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/bin/env python -#- -# SPDX-License-Identifier: BSD-2-Clause -# -# Copyright (c) 2019 Netflix, Inc. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# - -import argparse -import logging -logging.getLogger("scapy").setLevel(logging.CRITICAL) -import scapy.all as sp -import socket -import sys -from sniffer import Sniffer -from time import sleep - -def check_icmp6_error(args, packet): - ip6 = packet.getlayer(sp.IPv6) - if not ip6: - return False - oip6 = sp.IPv6(src=args.src[0], dst=args.to[0]) - if ip6.dst != oip6.src: - return False - icmp6 = packet.getlayer(sp.ICMPv6ParamProblem) - if not icmp6: - return False - # ICMP6_PARAMPROB_HEADER 0 - if icmp6.code != 0: - return False - # Should we check the payload as well? - # We are running in a very isolated environment and nothing else - # should trigger an ICMPv6 Param Prob so leave it. - #icmp6.display() - return True - -def main(): - parser = argparse.ArgumentParser("frag6.py", - description="IPv6 fragementation test tool") - parser.add_argument('--sendif', nargs=1, - required=True, - help='The interface through which the packet will be sent') - parser.add_argument('--recvif', nargs=1, - required=True, - help='The interface on which to check for the packet') - parser.add_argument('--src', nargs=1, - required=True, - help='The source IP address') - parser.add_argument('--to', nargs=1, - required=True, - help='The destination IP address') - parser.add_argument('--debug', - required=False, action='store_true', - help='Enable test debugging') - - args = parser.parse_args() - - - # Start sniffing on recvif - sniffer = Sniffer(args, check_icmp6_error) - - - ######################################################################## - # - # A single start fragment with zero length IPv6 header (jumbo). - # Make sure we do hit the Fragment case, which is tricky as the - # jumbogram needs to be > 64k. - # - # A: Jumbo-Fragment not allowed. - # R: ICMPv6 param problem. - # - #data = "6" * (65536 - 2 - 6 - 8 - 8) - data = "6" * 65512 - ip6f01 = sp.Ether() / \ - sp.IPv6(src=args.src[0], dst=args.to[0], plen=0) / \ - sp.IPv6ExtHdrHopByHop(options=sp.Jumbo(jumboplen=65536)) / \ - sp.IPv6ExtHdrFragment(offset=0, m=1, id=6) / \ - sp.UDP(dport=3456, sport=6543) / \ - data - if args.debug : - ip6f01.display() - sp.sendp(ip6f01, iface=args.sendif[0], verbose=False) - - # We should only need to sleep 0.10 but it seems scapy - # takes time for this one. - sleep(3) - sniffer.setEnd() - sniffer.join() - if not sniffer.foundCorrectPacket: - sys.exit(1) - - sys.exit(0) - -if __name__ == '__main__': - main() diff --git a/tests/sys/netinet6/frag6/frag6_01.sh b/tests/sys/netinet6/frag6/frag6_01.sh deleted file mode 100755 index 906a6b8059bf..000000000000 --- a/tests/sys/netinet6/frag6/frag6_01.sh +++ /dev/null @@ -1,232 +0,0 @@ -#- -# SPDX-License-Identifier: BSD-2-Clause -# -# Copyright (c) 2019 Netflix, Inc. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# - -. $(atf_get_srcdir)/frag6.subr - -atf_test_case "frag6_01" "cleanup" -frag6_01_head() { - frag6_head 1 -} - -frag6_01_check_stats() { - - local jname ifname - jname=$1 - ifname=$2 - - case "${jname}" in - "") echo "ERROR: jname is empty"; return ;; - esac - case "${ifname}" in - "") echo "ERROR: ifname is empty"; return ;; - esac - - # Defaults are: IPV6_FRAGTTL 120 slowtimo ticks. - # pfslowtimo() is run at hz/2. So this takes 60s. - # This is awefully long for a test case. - # The Python script has to wait for this already to get the ICMPv6 - # hence we do not sleep here anymore. - - nf=`jexec ${jname} sysctl -n net.inet6.ip6.frag6_nfragpackets` - case ${nf} in - 0) break ;; - *) atf_fail "VNET frag6_nfragpackets not 0 but: ${nf}" ;; - esac - nf=`sysctl -n net.inet6.ip6.frag6_nfrags` - case ${nf} in - 0) break ;; - *) atf_fail "Global frag6_nfrags not 0 but: ${nf}" ;; - esac - - # - # Check selection of global UDP stats. - # - cat <<EOF > ${HOME}/filter-${jname}.txt - <received-datagrams>0</received-datagrams> - <dropped-incomplete-headers>0</dropped-incomplete-headers> - <dropped-bad-data-length>0</dropped-bad-data-length> - <dropped-bad-checksum>0</dropped-bad-checksum> - <dropped-no-checksum>0</dropped-no-checksum> - <dropped-no-socket>0</dropped-no-socket> - <dropped-broadcast-multicast>0</dropped-broadcast-multicast> - <dropped-full-socket-buffer>0</dropped-full-socket-buffer> - <not-for-hashed-pcb>0</not-for-hashed-pcb> -EOF - count=`jexec ${jname} netstat -s -p udp --libxo xml,pretty | grep -E -x -c -f ${HOME}/filter-${jname}.txt` - rm -f ${HOME}/filter-${jname}.txt - case ${count} in - 9) ;; - *) jexec ${jname} netstat -s -p udp --libxo xml,pretty - atf_fail "Global UDP statistics do not match: ${count} != 9" ;; - esac - - # - # Check selection of global IPv6 stats. - # - cat <<EOF > ${HOME}/filter-${jname}.txt - <dropped-below-minimum-size>0</dropped-below-minimum-size> - <dropped-short-packets>0</dropped-short-packets> - <dropped-bad-options>1</dropped-bad-options> - <dropped-bad-version>0</dropped-bad-version> - <received-fragments>0</received-fragments> - <dropped-fragment>0</dropped-fragment> - <dropped-fragment-after-timeout>0</dropped-fragment-after-timeout> - <dropped-fragments-overflow>0</dropped-fragments-overflow> - <atomic-fragments>0</atomic-fragments> - <reassembled-packets>0</reassembled-packets> - <forwarded-packets>0</forwarded-packets> - <packets-not-forwardable>0</packets-not-forwardable> - <sent-redirects>0</sent-redirects> - <send-packets-fabricated-header>0</send-packets-fabricated-header> - <discard-no-mbufs>0</discard-no-mbufs> - <discard-no-route>0</discard-no-route> - <sent-fragments>0</sent-fragments> - <fragments-created>0</fragments-created> - <discard-cannot-fragment>0</discard-cannot-fragment> - <discard-scope-violations>0</discard-scope-violations> -EOF - count=`jexec ${jname} netstat -s -p ip6 --libxo xml,pretty | grep -E -x -c -f ${HOME}/filter-${jname}.txt` - rm -f ${HOME}/filter-${jname}.txt - case ${count} in - 20) ;; - *) jexec ${jname} netstat -s -p ip6 --libxo xml,pretty - atf_fail "Global IPv6 statistics do not match: ${count} != 20" ;; - esac - - # - # Check selection of global ICMPv6 stats. - # - cat <<EOF > ${HOME}/filter-${jname}.txt - <icmp6-calls>1</icmp6-calls> - <no-route>0</no-route> - <admin-prohibited>0</admin-prohibited> - <beyond-scope>0</beyond-scope> - <address-unreachable>0</address-unreachable> - <port-unreachable>0</port-unreachable> - <packet-too-big>0</packet-too-big> - <time-exceed-transmit>0</time-exceed-transmit> - <time-exceed-reassembly>0</time-exceed-reassembly> - <bad-header>1</bad-header> - <bad-next-header>0</bad-next-header> - <bad-option>0</bad-option> - <redirects>0</redirects> - <unknown>0</unknown> - <reflect>0</reflect> - <too-many-nd-options>0</too-many-nd-options> - <bad-nd-options>0</bad-nd-options> - <bad-neighbor-solicitation>0</bad-neighbor-solicitation> - <bad-neighbor-advertisement>0</bad-neighbor-advertisement> - <bad-router-solicitation>0</bad-router-solicitation> - <bad-router-advertisement>0</bad-router-advertisement> - <bad-redirect>0</bad-redirect> -EOF - count=`jexec ${jname} netstat -s -p icmp6 --libxo xml,pretty | grep -E -x -c -f ${HOME}/filter-${jname}.txt` - rm -f ${HOME}/filter-${jname}.txt - case ${count} in - 22) ;; - *) jexec ${jname} netstat -s -p icmp6 --libxo xml,pretty - atf_fail "Global ICMPv6 statistics do not match: ${count} != 22" ;; - esac - - # - # Check selection of interface IPv6 stats. - # XXX-BZ TODO FIXME reassembly-failed should be 1? - # - cat <<EOF > ${HOME}/filter-${jname}.txt - <dropped-invalid-header>0</dropped-invalid-header> - <dropped-mtu-exceeded>0</dropped-mtu-exceeded> - <dropped-no-route>0</dropped-no-route> - <dropped-invalid-destination>0</dropped-invalid-destination> - <dropped-unknown-protocol>0</dropped-unknown-protocol> - <dropped-truncated>0</dropped-truncated> - <sent-forwarded>0</sent-forwarded> - <discard-packets>0</discard-packets> - <discard-fragments>0</discard-fragments> - <fragments-failed>0</fragments-failed> - <fragments-created>0</fragments-created> - <reassembly-required>0</reassembly-required> - <reassembled-packets>0</reassembled-packets> - <reassembly-failed>0</reassembly-failed> -EOF - count=`jexec ${jname} netstat -s -p ip6 -I ${ifname} --libxo xml,pretty | grep -E -x -c -f ${HOME}/filter-${jname}.txt` - rm -f ${HOME}/filter-${jname}.txt - case ${count} in - 14) ;; - *) jexec ${jname} netstat -s -p ip6 -I ${ifname} --libxo xml,pretty - atf_fail "Interface IPv6 statistics do not match: ${count} != 14" ;; - esac - - # - # Check selection of interface ICMPv6 stats. - # - cat <<EOF > ${HOME}/filter-${jname}.txt - <received-errors>0</received-errors> - <received-destination-unreachable>0</received-destination-unreachable> - <received-admin-prohibited>0</received-admin-prohibited> - <received-time-exceeded>0</received-time-exceeded> - <received-bad-parameter>0</received-bad-parameter> - <received-packet-too-big>0</received-packet-too-big> - <received-echo-requests>0</received-echo-requests> - <received-echo-replies>0</received-echo-replies> - <received-router-solicitation>0</received-router-solicitation> - <received-router-advertisement>0</received-router-advertisement> - <sent-errors>1</sent-errors> - <sent-destination-unreachable>0</sent-destination-unreachable> - <sent-admin-prohibited>0</sent-admin-prohibited> - <sent-time-exceeded>0</sent-time-exceeded> - <sent-bad-parameter>1</sent-bad-parameter> - <sent-packet-too-big>0</sent-packet-too-big> - <sent-echo-requests>0</sent-echo-requests> - <sent-echo-replies>0</sent-echo-replies> - <sent-router-solicitation>0</sent-router-solicitation> - <sent-router-advertisement>0</sent-router-advertisement> - <sent-redirects>0</sent-redirects> -EOF - count=`jexec ${jname} netstat -s -p icmp6 -I ${ifname} --libxo xml,pretty | grep -E -x -c -f ${HOME}/filter-${jname}.txt` - rm -f ${HOME}/filter-${jname}.txt - case ${count} in - 21) ;; - *) jexec ${jname} netstat -s -p icmp6 -I ${ifname} --libxo xml,pretty - atf_fail "Interface ICMPv6 statistics do not match: ${count} != 21" ;; - esac -} - -frag6_01_body() { - - atf_skip "Sending IPv6 Jumbograms needs 1 kernel changes and BPF fixes" - - frag6_body 1 frag6_01_check_stats -} - -frag6_01_cleanup() { - frag6_cleanup 1 -} - -atf_init_test_cases() -{ - atf_add_test_case "frag6_01" -}