mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-01 23:46:45 +00:00

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>
74 lines
1.3 KiB
Bash
Executable File
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
|