brintos

brintos / linux-shallow public Read only

0
0
Text · 2.0 KiB · 1d7e756 Raw
88 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4source lib.sh5 6IP4=172.16.0.1/247TGT4=172.16.0.28IP6=2001:db8:1::1/649TGT6=2001:db8:1::210 11cleanup()12{13    cleanup_ns $NS14}15 16trap cleanup EXIT17 18# Namespaces19setup_ns NS20 21ip netns exec $NS sysctl -w net.ipv4.ping_group_range='0 2147483647' > /dev/null22 23# Connectivity24ip -netns $NS link add type dummy25ip -netns $NS link set dev dummy0 up26ip -netns $NS addr add $IP4 dev dummy027ip -netns $NS addr add $IP6 dev dummy028 29# Need FQ for TXTIME30ip netns exec $NS tc qdisc replace dev dummy0 root fq31 32# Test33BAD=034TOTAL=035 36check_result() {37    ((TOTAL++))38    if [ $1 -ne 0 ]; then39	echo "  Case $4 returned $1, expected 0"40	((BAD++))41    elif [ "$2" != "$3" ]; then42	echo "  Case $4 returned '$2', expected '$3'"43	((BAD++))44    fi45}46 47for i in "-4 $TGT4" "-6 $TGT6"; do48    for p in u i r; do49	[ $p == "u" ] && prot=UDPv${i:1:2}50	[ $p == "i" ] && prot=ICMPv${i:1:2}51	[ $p == "r" ] && prot=RAWv${i:1:2}52 53	ts=$(ip netns exec $NS ./cmsg_sender -p $p $i 1234)54	check_result $? "$ts" "" "$prot - no options"55 56	ts=$(ip netns exec $NS ./cmsg_sender -p $p $i 1234 -t | wc -l)57	check_result $? "$ts" "2" "$prot - ts cnt"58	ts=$(ip netns exec $NS ./cmsg_sender -p $p $i 1234 -t |59		 sed -n "s/.*SCHED ts0 [0-9].*/OK/p")60	check_result $? "$ts" "OK" "$prot - ts0 SCHED"61	ts=$(ip netns exec $NS ./cmsg_sender -p $p $i 1234 -t |62		 sed -n "s/.*SND ts0 [0-9].*/OK/p")63	check_result $? "$ts" "OK" "$prot - ts0 SND"64 65	ts=$(ip netns exec $NS ./cmsg_sender -p $p $i 1234 -t -d 1000 |66		 awk '/SND/ { if ($3 > 1000) print "OK"; }')67	check_result $? "$ts" "OK" "$prot - TXTIME abs"68 69	[ "$KSFT_MACHINE_SLOW" = yes ] && delay=8000 || delay=100070 71	ts=$(ip netns exec $NS ./cmsg_sender -p $p $i 1234 -t -d $delay |72		 awk '/SND/ {snd=$3}73		      /SCHED/ {sch=$3}74		      END { if (snd - sch > '$((delay/2))') print "OK";75			    else print snd, "-", sch, "<", '$((delay/2))'; }')76	check_result $? "$ts" "OK" "$prot - TXTIME rel"77    done78done79 80# Summary81if [ $BAD -ne 0 ]; then82    echo "FAIL - $BAD/$TOTAL cases failed"83    exit 184else85    echo "OK"86    exit 087fi88