xref: /linux/tools/testing/selftests/net/test_so_rcv.sh (revision 1a9239bb4253f9076b5b4b2a1a4e8d7defd77a95)
1*c935af42SAnna Emese Nyiri#!/bin/bash
2*c935af42SAnna Emese Nyiri# SPDX-License-Identifier: GPL-2.0
3*c935af42SAnna Emese Nyiri
4*c935af42SAnna Emese Nyirisource lib.sh
5*c935af42SAnna Emese Nyiri
6*c935af42SAnna Emese NyiriHOSTS=("127.0.0.1" "::1")
7*c935af42SAnna Emese NyiriPORT=1234
8*c935af42SAnna Emese NyiriTOTAL_TESTS=0
9*c935af42SAnna Emese NyiriFAILED_TESTS=0
10*c935af42SAnna Emese Nyiri
11*c935af42SAnna Emese Nyirideclare -A TESTS=(
12*c935af42SAnna Emese Nyiri	["SO_RCVPRIORITY"]="-P 2"
13*c935af42SAnna Emese Nyiri	["SO_RCVMARK"]="-M 3"
14*c935af42SAnna Emese Nyiri)
15*c935af42SAnna Emese Nyiri
16*c935af42SAnna Emese Nyiricheck_result() {
17*c935af42SAnna Emese Nyiri	((TOTAL_TESTS++))
18*c935af42SAnna Emese Nyiri	if [ "$1" -ne 0 ]; then
19*c935af42SAnna Emese Nyiri		((FAILED_TESTS++))
20*c935af42SAnna Emese Nyiri	fi
21*c935af42SAnna Emese Nyiri}
22*c935af42SAnna Emese Nyiri
23*c935af42SAnna Emese Nyiricleanup()
24*c935af42SAnna Emese Nyiri{
25*c935af42SAnna Emese Nyiri	cleanup_ns $NS
26*c935af42SAnna Emese Nyiri}
27*c935af42SAnna Emese Nyiri
28*c935af42SAnna Emese Nyiritrap cleanup EXIT
29*c935af42SAnna Emese Nyiri
30*c935af42SAnna Emese Nyirisetup_ns NS
31*c935af42SAnna Emese Nyiri
32*c935af42SAnna Emese Nyirifor HOST in "${HOSTS[@]}"; do
33*c935af42SAnna Emese Nyiri	PROTOCOL="IPv4"
34*c935af42SAnna Emese Nyiri	if [[ "$HOST" == "::1" ]]; then
35*c935af42SAnna Emese Nyiri		PROTOCOL="IPv6"
36*c935af42SAnna Emese Nyiri	fi
37*c935af42SAnna Emese Nyiri	for test_name in "${!TESTS[@]}"; do
38*c935af42SAnna Emese Nyiri		echo "Running $test_name test, $PROTOCOL"
39*c935af42SAnna Emese Nyiri		arg=${TESTS[$test_name]}
40*c935af42SAnna Emese Nyiri
41*c935af42SAnna Emese Nyiri		ip netns exec $NS ./so_rcv_listener $arg $HOST $PORT &
42*c935af42SAnna Emese Nyiri		LISTENER_PID=$!
43*c935af42SAnna Emese Nyiri
44*c935af42SAnna Emese Nyiri		sleep 0.5
45*c935af42SAnna Emese Nyiri
46*c935af42SAnna Emese Nyiri		if ! ip netns exec $NS ./cmsg_sender $arg $HOST $PORT; then
47*c935af42SAnna Emese Nyiri			echo "Sender failed for $test_name, $PROTOCOL"
48*c935af42SAnna Emese Nyiri			kill "$LISTENER_PID" 2>/dev/null
49*c935af42SAnna Emese Nyiri			wait "$LISTENER_PID"
50*c935af42SAnna Emese Nyiri			check_result 1
51*c935af42SAnna Emese Nyiri			continue
52*c935af42SAnna Emese Nyiri		fi
53*c935af42SAnna Emese Nyiri
54*c935af42SAnna Emese Nyiri		wait "$LISTENER_PID"
55*c935af42SAnna Emese Nyiri		LISTENER_EXIT_CODE=$?
56*c935af42SAnna Emese Nyiri
57*c935af42SAnna Emese Nyiri		if [ "$LISTENER_EXIT_CODE" -eq 0 ]; then
58*c935af42SAnna Emese Nyiri			echo "Rcv test OK for $test_name, $PROTOCOL"
59*c935af42SAnna Emese Nyiri			check_result 0
60*c935af42SAnna Emese Nyiri		else
61*c935af42SAnna Emese Nyiri			echo "Rcv test FAILED for $test_name, $PROTOCOL"
62*c935af42SAnna Emese Nyiri			check_result 1
63*c935af42SAnna Emese Nyiri		fi
64*c935af42SAnna Emese Nyiri	done
65*c935af42SAnna Emese Nyiridone
66*c935af42SAnna Emese Nyiri
67*c935af42SAnna Emese Nyiriif [ "$FAILED_TESTS" -ne 0 ]; then
68*c935af42SAnna Emese Nyiri	echo "FAIL - $FAILED_TESTS/$TOTAL_TESTS tests failed"
69*c935af42SAnna Emese Nyiri	exit ${KSFT_FAIL}
70*c935af42SAnna Emese Nyirielse
71*c935af42SAnna Emese Nyiri	echo "OK - All $TOTAL_TESTS tests passed"
72*c935af42SAnna Emese Nyiri	exit ${KSFT_PASS}
73*c935af42SAnna Emese Nyirifi
74