Commit d3423ed9 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge branch 'selftests-mptcp-share-code-and-fix-shellcheck-warnings'

Matthieu Baerts says:

====================
selftests: mptcp: share code and fix shellcheck warnings

This series cleans MPTCP selftests code.

Patch 1 stops using 'iptables-legacy' if available, but uses 'iptables',
which is likely 'iptables-nft' behind.

Patches 2, 4 and 6 move duplicated code to mptcp_lib.sh. Patch 3 is a
preparation for patch 4, and patch 5 adds generic actions at the
creation and deletion of netns.

Patches 7 to 11 disable a few shellcheck warnings, and fix the rest, so
it is easy to spot real issues later. MPTCP CI is checking that now.

Patch 12 avoids redoing some actions at init time twice, e.g. restarting
the pm events tool.

v1: https://lore.kernel.org/r/20240305-upstream-net-next-20240304-selftests-mptcp-shared-code-shellcheck-v1-0-66618ea5504e@kernel.org
====================

Link: https://lore.kernel.org/r/20240306-upstream-net-next-20240304-selftests-mptcp-shared-code-shellcheck-v2-0-bc79e6e5e6a0@kernel.org


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents c3874bbe c66fb480
Loading
Loading
Loading
Loading
+14 −21
Original line number Diff line number Diff line
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0

# Double quotes to prevent globbing and word splitting is recommended in new
# code but we accept it, especially because there were too many before having
# address all other issues detected by shellcheck.
#shellcheck disable=SC2086

. "$(dirname "${0}")/mptcp_lib.sh"

sec=$(date +%s)
rndh=$(printf %x $sec)-$(mktemp -u XXXXXX)
ns="ns1-$rndh"
ksft_skip=4
ns=""
test_cnt=1
timeout_poll=30
timeout_test=$((timeout_poll * 2 + 1))
@@ -26,25 +28,17 @@ flush_pids()
	done
}

# This function is used in the cleanup trap
#shellcheck disable=SC2317
cleanup()
{
	ip netns pids "${ns}" | xargs --no-run-if-empty kill -SIGKILL &>/dev/null

	ip netns del $ns
	mptcp_lib_ns_exit "${ns}"
}

mptcp_lib_check_mptcp

ip -Version > /dev/null 2>&1
if [ $? -ne 0 ];then
	echo "SKIP: Could not run test without ip tool"
	exit $ksft_skip
fi
ss -h | grep -q MPTCP
if [ $? -ne 0 ];then
	echo "SKIP: ss tool does not support MPTCP"
	exit $ksft_skip
fi
mptcp_lib_check_tools ip ss

get_msk_inuse()
{
@@ -186,7 +180,7 @@ chk_msk_inuse()
	expected=$((expected + listen_nr))

	for _ in $(seq 10); do
		if [ $(get_msk_inuse) -eq $expected ];then
		if [ "$(get_msk_inuse)" -eq $expected ]; then
			break
		fi
		sleep 0.1
@@ -224,8 +218,7 @@ wait_connected()
}

trap cleanup EXIT
ip netns add $ns
ip -n $ns link set dev lo up
mptcp_lib_ns_init ns

echo "a" | \
	timeout ${timeout_test} \
@@ -273,7 +266,7 @@ chk_msk_inuse 0 "1->0"
chk_msk_cestab 0 "1->0"

NR_CLIENTS=100
for I in `seq 1 $NR_CLIENTS`; do
for I in $(seq 1 $NR_CLIENTS); do
	echo "a" | \
		timeout ${timeout_test} \
			ip netns exec $ns \
@@ -282,7 +275,7 @@ for I in `seq 1 $NR_CLIENTS`; do
done
mptcp_lib_wait_local_port_listen $ns $((NR_CLIENTS + 10001))

for I in `seq 1 $NR_CLIENTS`; do
for I in $(seq 1 $NR_CLIENTS); do
	echo "b" | \
		timeout ${timeout_test} \
			ip netns exec $ns \
+58 −53
Original line number Diff line number Diff line
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0

# Double quotes to prevent globbing and word splitting is recommended in new
# code but we accept it, especially because there were too many before having
# address all other issues detected by shellcheck.
#shellcheck disable=SC2086

. "$(dirname "${0}")/mptcp_lib.sh"

time_start=$(date +%s)
@@ -13,7 +18,6 @@ sout=""
cin_disconnect=""
cin=""
cout=""
ksft_skip=4
capture=false
timeout_poll=30
timeout_test=$((timeout_poll * 2 + 1))
@@ -121,16 +125,16 @@ while getopts "$optstring" option;do
	esac
done

sec=$(date +%s)
rndh=$(printf %x $sec)-$(mktemp -u XXXXXX)
ns1="ns1-$rndh"
ns2="ns2-$rndh"
ns3="ns3-$rndh"
ns4="ns4-$rndh"
ns1=""
ns2=""
ns3=""
ns4=""

TEST_COUNT=0
TEST_GROUP=""

# This function is used in the cleanup trap
#shellcheck disable=SC2317
cleanup()
{
	rm -f "$cin_disconnect" "$cout_disconnect"
@@ -138,21 +142,12 @@ cleanup()
	rm -f "$sin" "$sout"
	rm -f "$capout"

	local netns
	for netns in "$ns1" "$ns2" "$ns3" "$ns4";do
		ip netns del $netns
		rm -f /tmp/$netns.{nstat,out}
	done
	mptcp_lib_ns_exit "${ns1}" "${ns2}" "${ns3}" "${ns4}"
}

mptcp_lib_check_mptcp
mptcp_lib_check_kallsyms

ip -Version > /dev/null 2>&1
if [ $? -ne 0 ];then
	echo "SKIP: Could not run test without ip tool"
	exit $ksft_skip
fi
mptcp_lib_check_tools ip

sin=$(mktemp)
sout=$(mktemp)
@@ -163,10 +158,7 @@ cin_disconnect="$cin".disconnect
cout_disconnect="$cout".disconnect
trap cleanup EXIT

for i in "$ns1" "$ns2" "$ns3" "$ns4";do
	ip netns add $i || exit $ksft_skip
	ip -net $i link set lo up
done
mptcp_lib_ns_init ns1 ns2 ns3 ns4

#  "$ns1"              ns2                    ns3                     ns4
# ns1eth2    ns2eth1   ns2eth3      ns3eth2   ns3eth4       ns4eth3
@@ -225,8 +217,9 @@ set_ethtool_flags() {
	local dev="$2"
	local flags="$3"

	ip netns exec $ns ethtool -K $dev $flags 2>/dev/null
	[ $? -eq 0 ] && echo "INFO: set $ns dev $dev: ethtool -K $flags"
	if ip netns exec $ns ethtool -K $dev $flags 2>/dev/null; then
		echo "INFO: set $ns dev $dev: ethtool -K $flags"
	fi
}

set_random_ethtool_flags() {
@@ -256,8 +249,8 @@ fi

check_mptcp_disabled()
{
	local disabled_ns="ns_disabled-$rndh"
	ip netns add ${disabled_ns} || exit $ksft_skip
	local disabled_ns
	mptcp_lib_ns_init disabled_ns

	# net.mptcp.enabled should be enabled by default
	if [ "$(ip netns exec ${disabled_ns} sysctl net.mptcp.enabled | awk '{ print $3 }')" -ne 1 ]; then
@@ -271,7 +264,7 @@ check_mptcp_disabled()
	local err=0
	LC_ALL=C ip netns exec ${disabled_ns} ./mptcp_connect -p 10000 -s MPTCP 127.0.0.1 < "$cin" 2>&1 | \
		grep -q "^socket: Protocol not available$" && err=1
	ip netns delete ${disabled_ns}
	mptcp_lib_ns_exit "${disabled_ns}"

	if [ ${err} -eq 0 ]; then
		echo -e "New MPTCP socket cannot be blocked via sysctl\t\t[ FAIL ]"
@@ -321,7 +314,7 @@ do_transfer()
	local extra_args="$7"

	local port
	port=$((10000+$TEST_COUNT))
	port=$((10000+TEST_COUNT))
	TEST_COUNT=$((TEST_COUNT+1))

	if [ "$rcvbuf" -gt 0 ]; then
@@ -353,6 +346,7 @@ do_transfer()

	if $capture; then
		local capuser
		local rndh="${connector_ns:4}"
		if [ -z $SUDO_USER ] ; then
			capuser=""
		else
@@ -378,12 +372,18 @@ do_transfer()
			nstat -n
	fi

	local stat_synrx_last_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableSYNRX")
	local stat_ackrx_last_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableACKRX")
	local stat_cookietx_last=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesSent")
	local stat_cookierx_last=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesRecv")
	local stat_csum_err_s=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtDataCsumErr")
	local stat_csum_err_c=$(mptcp_lib_get_counter "${connector_ns}" "MPTcpExtDataCsumErr")
	local stat_synrx_last_l
	local stat_ackrx_last_l
	local stat_cookietx_last
	local stat_cookierx_last
	local stat_csum_err_s
	local stat_csum_err_c
	stat_synrx_last_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableSYNRX")
	stat_ackrx_last_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableACKRX")
	stat_cookietx_last=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesSent")
	stat_cookierx_last=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesRecv")
	stat_csum_err_s=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtDataCsumErr")
	stat_csum_err_c=$(mptcp_lib_get_counter "${connector_ns}" "MPTcpExtDataCsumErr")

	timeout ${timeout_test} \
		ip netns exec ${listener_ns} \
@@ -446,11 +446,16 @@ do_transfer()
	mptcp_lib_check_transfer $cin $sout "file received by server"
	rets=$?

	local stat_synrx_now_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableSYNRX")
	local stat_ackrx_now_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableACKRX")
	local stat_cookietx_now=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesSent")
	local stat_cookierx_now=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesRecv")
	local stat_ooo_now=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtTCPOFOQueue")
	local stat_synrx_now_l
	local stat_ackrx_now_l
	local stat_cookietx_now
	local stat_cookierx_now
	local stat_ooo_now
	stat_synrx_now_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableSYNRX")
	stat_ackrx_now_l=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtMPCapableACKRX")
	stat_cookietx_now=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesSent")
	stat_cookierx_now=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtSyncookiesRecv")
	stat_ooo_now=$(mptcp_lib_get_counter "${listener_ns}" "TcpExtTCPOFOQueue")

	expect_synrx=$((stat_synrx_last_l))
	expect_ackrx=$((stat_ackrx_last_l))
@@ -459,8 +464,8 @@ do_transfer()
	cookies=${cookies##*=}

	if [ ${cl_proto} = "MPTCP" ] && [ ${srv_proto} = "MPTCP" ]; then
		expect_synrx=$((stat_synrx_last_l+$connect_per_transfer))
		expect_ackrx=$((stat_ackrx_last_l+$connect_per_transfer))
		expect_synrx=$((stat_synrx_last_l+connect_per_transfer))
		expect_ackrx=$((stat_ackrx_last_l+connect_per_transfer))
	fi

	if [ ${stat_synrx_now_l} -lt ${expect_synrx} ]; then
@@ -468,7 +473,7 @@ do_transfer()
			"${stat_synrx_now_l}" "${expect_synrx}" 1>&2
		retc=1
	fi
	if [ ${stat_ackrx_now_l} -lt ${expect_ackrx} -a ${stat_ooo_now} -eq 0 ]; then
	if [ ${stat_ackrx_now_l} -lt ${expect_ackrx} ] && [ ${stat_ooo_now} -eq 0 ]; then
		if [ ${stat_ooo_now} -eq 0 ]; then
			printf "[ FAIL ] lower MPC ACK rx (%d) than expected (%d)\n" \
				"${stat_ackrx_now_l}" "${expect_ackrx}" 1>&2
@@ -479,18 +484,20 @@ do_transfer()
	fi

	if $checksum; then
		local csum_err_s=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtDataCsumErr")
		local csum_err_c=$(mptcp_lib_get_counter "${connector_ns}" "MPTcpExtDataCsumErr")
		local csum_err_s
		local csum_err_c
		csum_err_s=$(mptcp_lib_get_counter "${listener_ns}" "MPTcpExtDataCsumErr")
		csum_err_c=$(mptcp_lib_get_counter "${connector_ns}" "MPTcpExtDataCsumErr")

		local csum_err_s_nr=$((csum_err_s - stat_csum_err_s))
		if [ $csum_err_s_nr -gt 0 ]; then
			printf "[ FAIL ]\nserver got $csum_err_s_nr data checksum error[s]"
			printf "[ FAIL ]\nserver got %d data checksum error[s]" ${csum_err_s_nr}
			rets=1
		fi

		local csum_err_c_nr=$((csum_err_c - stat_csum_err_c))
		if [ $csum_err_c_nr -gt 0 ]; then
			printf "[ FAIL ]\nclient got $csum_err_c_nr data checksum error[s]"
			printf "[ FAIL ]\nclient got %d data checksum error[s]" ${csum_err_c_nr}
			retc=1
		fi
	fi
@@ -658,7 +665,7 @@ run_test_transparent()
		return
	fi

ip netns exec "$listener_ns" nft -f /dev/stdin <<"EOF"
	if ! ip netns exec "$listener_ns" nft -f /dev/stdin <<"EOF"
flush ruleset
table inet mangle {
	chain divert {
@@ -669,7 +676,7 @@ table inet mangle {
	}
}
EOF
	if [ $? -ne 0 ]; then
	then
		echo "SKIP: $msg, could not load nft ruleset"
		mptcp_lib_fail_if_expected_feature "nft rules"
		mptcp_lib_result_skip "${TEST_GROUP}"
@@ -684,8 +691,7 @@ EOF
		local_addr="0.0.0.0"
	fi

	ip -net "$listener_ns" $r6flag rule add fwmark 1 lookup 100
	if [ $? -ne 0 ]; then
	if ! ip -net "$listener_ns" $r6flag rule add fwmark 1 lookup 100; then
		ip netns exec "$listener_ns" nft flush ruleset
		echo "SKIP: $msg, ip $r6flag rule failed"
		mptcp_lib_fail_if_expected_feature "ip rule"
@@ -693,8 +699,7 @@ EOF
		return
	fi

	ip -net "$listener_ns" route add local $local_addr/0 dev lo table 100
	if [ $? -ne 0 ]; then
	if ! ip -net "$listener_ns" route add local $local_addr/0 dev lo table 100; then
		ip netns exec "$listener_ns" nft flush ruleset
		ip -net "$listener_ns" $r6flag rule del fwmark 1 lookup 100
		echo "SKIP: $msg, ip route add local $local_addr failed"
@@ -857,7 +862,7 @@ stop_if_error "Could not even run ping tests"
echo -n "INFO: Using loss of $tc_loss "
test "$tc_delay" -gt 0 && echo -n "delay $tc_delay ms "

reorder_delay=$(($tc_delay / 4))
reorder_delay=$((tc_delay / 4))

if [ -z "${tc_reorder}" ]; then
	reorder1=$((RANDOM%10))
+9 −51
Original line number Diff line number Diff line
@@ -86,21 +86,11 @@ init_partial()
{
	capout=$(mktemp)

	local sec rndh
	sec=$(date +%s)
	rndh=$(printf %x $sec)-$(mktemp -u XXXXXX)

	ns1="ns1-$rndh"
	ns2="ns2-$rndh"
	mptcp_lib_ns_init ns1 ns2

	local netns
	for netns in "$ns1" "$ns2"; do
		ip netns add $netns || exit $ksft_skip
		ip -net $netns link set lo up
		ip netns exec $netns sysctl -q net.mptcp.enabled=1
		ip netns exec $netns sysctl -q net.mptcp.pm_type=0 2>/dev/null || true
		ip netns exec $netns sysctl -q net.ipv4.conf.all.rp_filter=0
		ip netns exec $netns sysctl -q net.ipv4.conf.default.rp_filter=0
		if $checksum; then
			ip netns exec $netns sysctl -q net.mptcp.checksum_enabled=1
		fi
@@ -145,45 +135,15 @@ cleanup_partial()
{
	rm -f "$capout"

	local netns
	for netns in "$ns1" "$ns2"; do
		ip netns del $netns
		rm -f /tmp/$netns.{nstat,out}
	done
}

check_tools()
{
	mptcp_lib_check_mptcp
	mptcp_lib_check_kallsyms

	if ! ip -Version &> /dev/null; then
		echo "SKIP: Could not run test without ip tool"
		exit $ksft_skip
	fi

	if ! ss -h | grep -q MPTCP; then
		echo "SKIP: ss tool does not support MPTCP"
		exit $ksft_skip
	fi

	# Use the legacy version if available to support old kernel versions
	if iptables-legacy -V &> /dev/null; then
		iptables="iptables-legacy"
		ip6tables="ip6tables-legacy"
	elif ! iptables -V &> /dev/null; then
		echo "SKIP: Could not run all tests without iptables tool"
		exit $ksft_skip
	elif ! ip6tables -V &> /dev/null; then
		echo "SKIP: Could not run all tests without ip6tables tool"
		exit $ksft_skip
	fi
	mptcp_lib_ns_exit "${ns1}" "${ns2}"
}

init() {
	init=1

	check_tools
	mptcp_lib_check_mptcp
	mptcp_lib_check_kallsyms
	mptcp_lib_check_tools ip ss "${iptables}" "${ip6tables}"

	sin=$(mktemp)
	sout=$(mktemp)
@@ -470,12 +430,8 @@ reset_with_events()
{
	reset "${1}" || return 1

	:> "$evts_ns1"
	:> "$evts_ns2"
	ip netns exec $ns1 ./pm_nl_ctl events >> "$evts_ns1" 2>&1 &
	evts_ns1_pid=$!
	ip netns exec $ns2 ./pm_nl_ctl events >> "$evts_ns2" 2>&1 &
	evts_ns2_pid=$!
	mptcp_lib_events "${ns1}" "${evts_ns1}" evts_ns1_pid
	mptcp_lib_events "${ns2}" "${evts_ns2}" evts_ns2_pid
}

reset_with_tcp_filter()
@@ -648,7 +604,9 @@ wait_mpj()
kill_events_pids()
{
	mptcp_lib_kill_wait $evts_ns1_pid
	evts_ns1_pid=0
	mptcp_lib_kill_wait $evts_ns2_pid
	evts_ns2_pid=0
}

pm_nl_set_limits()
+68 −0
Original line number Diff line number Diff line
@@ -342,3 +342,71 @@ mptcp_lib_check_output() {
		return 1
	fi
}

mptcp_lib_check_tools() {
	local tool

	for tool in "${@}"; do
		case "${tool}" in
		"ip")
			if ! ip -Version &> /dev/null; then
				mptcp_lib_print_warn "SKIP: Could not run test without ip tool"
				exit ${KSFT_SKIP}
			fi
			;;
		"ss")
			if ! ss -h | grep -q MPTCP; then
				mptcp_lib_print_warn "SKIP: ss tool does not support MPTCP"
				exit ${KSFT_SKIP}
			fi
			;;
		"iptables"* | "ip6tables"*)
			if ! "${tool}" -V &> /dev/null; then
				mptcp_lib_print_warn "SKIP: Could not run all tests without ${tool}"
				exit ${KSFT_SKIP}
			fi
			;;
		*)
			mptcp_lib_print_err "Internal error: unsupported tool: ${tool}"
			exit ${KSFT_FAIL}
			;;
		esac
	done
}
mptcp_lib_ns_init() {
	local sec rndh

	sec=$(date +%s)
	rndh=$(printf %x "${sec}")-$(mktemp -u XXXXXX)

	local netns
	for netns in "${@}"; do
		eval "${netns}=${netns}-${rndh}"

		ip netns add "${!netns}" || exit ${KSFT_SKIP}
		ip -net "${!netns}" link set lo up
		ip netns exec "${!netns}" sysctl -q net.mptcp.enabled=1
		ip netns exec "${!netns}" sysctl -q net.ipv4.conf.all.rp_filter=0
		ip netns exec "${!netns}" sysctl -q net.ipv4.conf.default.rp_filter=0
	done
}

mptcp_lib_ns_exit() {
	local netns
	for netns in "${@}"; do
		ip netns del "${netns}"
		rm -f /tmp/"${netns}".{nstat,out}
	done
}

mptcp_lib_events() {
	local ns="${1}"
	local evts="${2}"
	declare -n pid="${3}"

	:>"${evts}"

	mptcp_lib_kill_wait "${pid:-0}"
	ip netns exec "${ns}" ./pm_nl_ctl events >> "${evts}" 2>&1 &
	pid=$!
}
+16 −39
Original line number Diff line number Diff line
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0

# Double quotes to prevent globbing and word splitting is recommended in new
# code but we accept it, especially because there were too many before having
# address all other issues detected by shellcheck.
#shellcheck disable=SC2086

. "$(dirname "${0}")/mptcp_lib.sh"

ret=0
@@ -8,17 +13,14 @@ sin=""
sout=""
cin=""
cout=""
ksft_skip=4
timeout_poll=30
timeout_test=$((timeout_poll * 2 + 1))
iptables="iptables"
ip6tables="ip6tables"

sec=$(date +%s)
rndh=$(printf %x $sec)-$(mktemp -u XXXXXX)
ns1="ns1-$rndh"
ns2="ns2-$rndh"
ns_sbox="ns_sbox-$rndh"
ns1=""
ns2=""
ns_sbox=""

add_mark_rules()
{
@@ -40,17 +42,10 @@ add_mark_rules()

init()
{
	local netns
	for netns in "$ns1" "$ns2" "$ns_sbox";do
		ip netns add $netns || exit $ksft_skip
		ip -net $netns link set lo up
		ip netns exec $netns sysctl -q net.mptcp.enabled=1
		ip netns exec $netns sysctl -q net.ipv4.conf.all.rp_filter=0
		ip netns exec $netns sysctl -q net.ipv4.conf.default.rp_filter=0
	done
	mptcp_lib_ns_init ns1 ns2 ns_sbox

	local i
	for i in `seq 1 4`; do
	for i in $(seq 1 4); do
		ip link add ns1eth$i netns "$ns1" type veth peer name ns2eth$i netns "$ns2"
		ip -net "$ns1" addr add 10.0.$i.1/24 dev ns1eth$i
		ip -net "$ns1" addr add dead:beef:$i::1/64 dev ns1eth$i nodad
@@ -77,36 +72,18 @@ init()
	add_mark_rules $ns2 2
}

# This function is used in the cleanup trap
#shellcheck disable=SC2317
cleanup()
{
	local netns
	for netns in "$ns1" "$ns2" "$ns_sbox"; do
		ip netns del $netns
	done
	mptcp_lib_ns_exit "${ns1}" "${ns2}" "${ns_sbox}"
	rm -f "$cin" "$cout"
	rm -f "$sin" "$sout"
}

mptcp_lib_check_mptcp
mptcp_lib_check_kallsyms

ip -Version > /dev/null 2>&1
if [ $? -ne 0 ];then
	echo "SKIP: Could not run test without ip tool"
	exit $ksft_skip
fi

# Use the legacy version if available to support old kernel versions
if iptables-legacy -V &> /dev/null; then
	iptables="iptables-legacy"
	ip6tables="ip6tables-legacy"
elif ! iptables -V &> /dev/null; then
	echo "SKIP: Could not run all tests without iptables tool"
	exit $ksft_skip
elif ! ip6tables -V &> /dev/null; then
	echo "SKIP: Could not run all tests without ip6tables tool"
	exit $ksft_skip
fi
mptcp_lib_check_tools ip "${iptables}" "${ip6tables}"

check_mark()
{
@@ -286,12 +263,12 @@ do_tcpinq_test()
	local lret=$?
	if [ $lret -ne 0 ];then
		ret=$lret
		echo "FAIL: mptcp_inq $@" 1>&2
		echo "FAIL: mptcp_inq $*" 1>&2
		mptcp_lib_result_fail "TCP_INQ: $*"
		return $lret
	fi

	echo "PASS: TCP_INQ cmsg/ioctl $@"
	echo "PASS: TCP_INQ cmsg/ioctl $*"
	mptcp_lib_result_pass "TCP_INQ: $*"
	return $lret
}
Loading