Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0
3
4source "$(dirname $(realpath $0))/../../kselftest/ktap_helpers.sh"
5
6readonly ipv4_args=('--ip_version=ipv4 '
7 '--local_ip=192.168.0.1 '
8 '--gateway_ip=192.168.0.1 '
9 '--netmask_ip=255.255.0.0 '
10 '--remote_ip=192.0.2.1 '
11 '-D CMSG_LEVEL_IP=SOL_IP '
12 '-D CMSG_TYPE_RECVERR=IP_RECVERR ')
13
14readonly ipv6_args=('--ip_version=ipv6 '
15 '--mtu=1520 '
16 '--local_ip=fd3d:0a0b:17d6::1 '
17 '--gateway_ip=fd3d:0a0b:17d6:8888::1 '
18 '--remote_ip=fd3d:fa7b:d17d::1 '
19 '-D CMSG_LEVEL_IP=SOL_IPV6 '
20 '-D CMSG_TYPE_RECVERR=IPV6_RECVERR ')
21
22if [ $# -ne 1 ]; then
23 ktap_exit_fail_msg "usage: $0 <script>"
24 exit "$KSFT_FAIL"
25fi
26script="$(basename $1)"
27
28if [ -z "$(which packetdrill)" ]; then
29 ktap_skip_all "packetdrill not found in PATH"
30 exit "$KSFT_SKIP"
31fi
32
33declare -a optargs
34failfunc=ktap_test_fail
35
36if [[ -n "${KSFT_MACHINE_SLOW}" ]]; then
37 optargs+=('--tolerance_usecs=14000')
38
39 # xfail tests that are known flaky with dbg config, not fixable.
40 # still run them for coverage (and expect 100% pass without dbg).
41 declare -ar xfail_list=(
42 "tcp_eor_no-coalesce-retrans.pkt"
43 "tcp_fast_recovery_prr-ss.*.pkt"
44 "tcp_slow_start_slow-start-after-win-update.pkt"
45 "tcp_timestamping.*.pkt"
46 "tcp_user_timeout_user-timeout-probe.pkt"
47 "tcp_zerocopy_epoll_.*.pkt"
48 "tcp_tcp_info_tcp-info-.*-limited.pkt"
49 )
50 readonly xfail_regex="^($(printf '%s|' "${xfail_list[@]}"))$"
51 [[ "$script" =~ ${xfail_regex} ]] && failfunc=ktap_test_xfail
52fi
53
54ktap_print_header
55ktap_set_plan 2
56
57unshare -n packetdrill ${ipv4_args[@]} ${optargs[@]} $script > /dev/null \
58 && ktap_test_pass "ipv4" || $failfunc "ipv4"
59unshare -n packetdrill ${ipv6_args[@]} ${optargs[@]} $script > /dev/null \
60 && ktap_test_pass "ipv6" || $failfunc "ipv6"
61
62ktap_finished