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 lib.sh
5
6HOSTS=("127.0.0.1" "::1")
7PORT=1234
8TOTAL_TESTS=0
9FAILED_TESTS=0
10
11declare -A TESTS=(
12 ["SO_RCVPRIORITY"]="-P 2"
13 ["SO_RCVMARK"]="-M 3"
14)
15
16check_result() {
17 ((TOTAL_TESTS++))
18 if [ "$1" -ne 0 ]; then
19 ((FAILED_TESTS++))
20 fi
21}
22
23cleanup()
24{
25 cleanup_ns $NS
26}
27
28trap cleanup EXIT
29
30setup_ns NS
31
32for HOST in "${HOSTS[@]}"; do
33 PROTOCOL="IPv4"
34 if [[ "$HOST" == "::1" ]]; then
35 PROTOCOL="IPv6"
36 fi
37 for test_name in "${!TESTS[@]}"; do
38 echo "Running $test_name test, $PROTOCOL"
39 arg=${TESTS[$test_name]}
40
41 ip netns exec $NS ./so_rcv_listener $arg $HOST $PORT &
42 LISTENER_PID=$!
43
44 sleep 0.5
45
46 if ! ip netns exec $NS ./cmsg_sender $arg $HOST $PORT; then
47 echo "Sender failed for $test_name, $PROTOCOL"
48 kill "$LISTENER_PID" 2>/dev/null
49 wait "$LISTENER_PID"
50 check_result 1
51 continue
52 fi
53
54 wait "$LISTENER_PID"
55 LISTENER_EXIT_CODE=$?
56
57 if [ "$LISTENER_EXIT_CODE" -eq 0 ]; then
58 echo "Rcv test OK for $test_name, $PROTOCOL"
59 check_result 0
60 else
61 echo "Rcv test FAILED for $test_name, $PROTOCOL"
62 check_result 1
63 fi
64 done
65done
66
67if [ "$FAILED_TESTS" -ne 0 ]; then
68 echo "FAIL - $FAILED_TESTS/$TOTAL_TESTS tests failed"
69 exit ${KSFT_FAIL}
70else
71 echo "OK - All $TOTAL_TESTS tests passed"
72 exit ${KSFT_PASS}
73fi