linux-loongson/tools/testing/selftests/net/test_so_rcv.sh
Anna Emese Nyiri c935af429e selftests: net: add support for testing SO_RCVMARK and SO_RCVPRIORITY
Introduce tests to verify the correct functionality of the SO_RCVMARK and
SO_RCVPRIORITY socket options.

Suggested-by: Jakub Kicinski <kuba@kernel.org>
Suggested-by: Ferenc Fejes <fejes@inf.elte.hu>
Signed-off-by: Anna Emese Nyiri <annaemesenyiri@gmail.com>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Tested-by: Ido Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/20250214205828.48503-1-annaemesenyiri@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2025-02-17 16:45:19 -08:00

74 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
source lib.sh
HOSTS=("127.0.0.1" "::1")
PORT=1234
TOTAL_TESTS=0
FAILED_TESTS=0
declare -A TESTS=(
["SO_RCVPRIORITY"]="-P 2"
["SO_RCVMARK"]="-M 3"
)
check_result() {
((TOTAL_TESTS++))
if [ "$1" -ne 0 ]; then
((FAILED_TESTS++))
fi
}
cleanup()
{
cleanup_ns $NS
}
trap cleanup EXIT
setup_ns NS
for HOST in "${HOSTS[@]}"; do
PROTOCOL="IPv4"
if [[ "$HOST" == "::1" ]]; then
PROTOCOL="IPv6"
fi
for test_name in "${!TESTS[@]}"; do
echo "Running $test_name test, $PROTOCOL"
arg=${TESTS[$test_name]}
ip netns exec $NS ./so_rcv_listener $arg $HOST $PORT &
LISTENER_PID=$!
sleep 0.5
if ! ip netns exec $NS ./cmsg_sender $arg $HOST $PORT; then
echo "Sender failed for $test_name, $PROTOCOL"
kill "$LISTENER_PID" 2>/dev/null
wait "$LISTENER_PID"
check_result 1
continue
fi
wait "$LISTENER_PID"
LISTENER_EXIT_CODE=$?
if [ "$LISTENER_EXIT_CODE" -eq 0 ]; then
echo "Rcv test OK for $test_name, $PROTOCOL"
check_result 0
else
echo "Rcv test FAILED for $test_name, $PROTOCOL"
check_result 1
fi
done
done
if [ "$FAILED_TESTS" -ne 0 ]; then
echo "FAIL - $FAILED_TESTS/$TOTAL_TESTS tests failed"
exit ${KSFT_FAIL}
else
echo "OK - All $TOTAL_TESTS tests passed"
exit ${KSFT_PASS}
fi