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
|