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