blob: d8aa4362879da66f450d498ad62440f461383fd6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
#!/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
|