Lines Matching +full:signal +full:- +full:id

2 # SPDX-License-Identifier: GPL-2.0
30 declare -A all_tests
31 declare -a only_tests_ids
32 declare -a only_tests_names
33 declare -A failed_tests
63 rndh=$(mktemp -u XXXXXX)
65 ns1="ns1-$rndh"
66 ns2="ns2-$rndh"
71 ip -net $netns link set lo up
72 ip netns exec $netns sysctl -q net.mptcp.enabled=1
73 ip netns exec $netns sysctl -q net.mptcp.pm_type=0
74 ip netns exec $netns sysctl -q net.ipv4.conf.all.rp_filter=0
75 ip netns exec $netns sysctl -q net.ipv4.conf.default.rp_filter=0
76 if [ $checksum -eq 1 ]; then
77 ip netns exec $netns sysctl -q net.mptcp.checksum_enabled=1
94 ip -net "$ns1" addr add 10.0.$i.1/24 dev ns1eth$i
95 ip -net "$ns1" addr add dead:beef:$i::1/64 dev ns1eth$i nodad
96 ip -net "$ns1" link set ns1eth$i up
98 ip -net "$ns2" addr add 10.0.$i.2/24 dev ns2eth$i
99 ip -net "$ns2" addr add dead:beef:$i::2/64 dev ns2eth$i nodad
100 ip -net "$ns2" link set ns2eth$i up
103 ip -net "$ns2" route add default via 10.0.$i.1 dev ns2eth$i metric 10$i
104 ip -net "$ns2" route add default via dead:beef:$i::1 dev ns2eth$i metric 10$i
112 tc -n $ns1 qdisc add dev ns1eth$i root netem rate 20mbit delay 1
113 tc -n $ns2 qdisc add dev ns2eth$i root netem rate 20mbit delay 1
119 rm -f "$capout"
124 rm -f /tmp/$netns.{nstat,out}
130 if ! ip -Version &> /dev/null; then
135 if ! iptables -V &> /dev/null; then
140 if ! ip6tables -V &> /dev/null; then
165 rm -f "$cin" "$cout" "$sinfail"
166 rm -f "$sin" "$sout" "$cinsent" "$cinfail"
172 if [ "${#only_tests_ids[@]}" -eq 0 ] && [ "${#only_tests_names[@]}" -eq 0 ]; then
178 if [ "${TEST_COUNT}" -eq "${i}" ]; then
220 ip netns exec $netns sysctl -q net.ipv4.tcp_syncookies=2
227 local ip="${2:-4}"
233 if [ $ip -eq 6 ]; then
237 ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=1
238 ip netns exec $ns2 $tables -A OUTPUT -p tcp \
239 -m tcp --tcp-option 30 \
240 -m bpf --bytecode \
242 -j DROP
253 ip netns exec $ns1 sysctl -q net.mptcp.checksum_enabled=$ns1_enable
254 ip netns exec $ns2 sysctl -q net.mptcp.checksum_enabled=$ns2_enable
266 ip netns exec $ns1 sysctl -q net.mptcp.allow_join_initial_addr_port=$ns1_enable
267 ip netns exec $ns2 sysctl -q net.mptcp.allow_join_initial_addr_port=$ns2_enable
272 # This rule inverts a 8-bit word at byte offset 148 for the 2nd TCP ACK packets
290 ip netns exec $ns1 sysctl -q net.mptcp.checksum_enabled=1
291 ip netns exec $ns2 sysctl -q net.mptcp.checksum_enabled=1
296 local ip="${3:-4}"
300 if [ $ip -eq 6 ]; then
305 -t mangle \
306 -A OUTPUT \
307 -o ns2eth$i \
308 -p tcp \
309 -m length --length 150:9999 \
310 -m statistic --mode nth --packet 1 --every 99999 \
311 -j MARK --set-mark 42 || exit 1
313 tc -n $ns2 qdisc add dev ns2eth$i clsact || exit 1
314 tc -n $ns2 filter add dev ns2eth$i egress \
334 done | sort -n
339 ls -l "$1" 1>&2
341 tail -c 27 "$1"
353 if [ -n "$bytes" ]; then
355 local out_size=$(wc -c $out | awk '{print $1}')
356 if [ $out_size -ne $bytes ]; then
361 bytes="--bytes=${bytes}"
363 cmp -l "$in" "$out" ${bytes} | while read -r i a b; do
365 if [ $check_invert -eq 0 ] || [ $sum -ne $((0xff)) ]; then
386 if ! ip netns exec ${connector_ns} ping -q -c 1 $connect_addr >/dev/null; then
387 echo "$listener_ns -> $connect_addr connectivity [ FAIL ]" 1>&2
396 if [ -z "$FAILING_LINKS" ]; then
404 ip -net "$ns" link set "$veth" down
411 [ -z "${1##*:*}" ]
436 ip netns exec ${ns} nstat -as | grep MPTcpExtRmAddr | awk '{print $2}'
459 old_cnt=$(ip netns exec ${ns} nstat -as | grep MPJoinAckRx | awk '{print $2}')
463 cnt=$(ip netns exec ${ns} nstat -as | grep MPJoinAckRx | awk '{print $2}')
481 if [ $ip_mptcp -eq 1 ]; then
482 ip -n $ns mptcp limits set add_addr_accepted $addrs subflows $subflows
495 local id _id
503 [ -n "$_flags" ]; flags="flags $_flags"
507 [ -n "$_dev" ]; dev="dev $_dev"
509 if [ $p = "id" ]; then
511 [ -n "$_id" ]; id="id $_id"
515 [ -n "$_port" ]; port="port $_port"
521 if [ $ip_mptcp -eq 1 ]; then
522 ip -n $ns mptcp endpoint add $addr ${_flags//","/" "} $dev $id $port
524 ip netns exec $ns ./pm_nl_ctl add $addr $flags $dev $id $port
531 local id=$2
534 if [ $ip_mptcp -eq 1 ]; then
535 ip -n $ns mptcp endpoint delete id $id $addr
537 ip netns exec $ns ./pm_nl_ctl del $id $addr
545 if [ $ip_mptcp -eq 1 ]; then
546 ip -n $ns mptcp endpoint flush
556 if [ $ip_mptcp -eq 1 ]; then
557 ip -n $ns mptcp endpoint show
566 local id=$2
569 if [ $ip_mptcp -eq 1 ]; then
570 ip -n $ns mptcp endpoint change id $id ${flags//","/" "}
572 ip netns exec $ns ./pm_nl_ctl set id $id flags $flags
589 local id
592 printf "%03u %-36s %s" "${TEST_COUNT}" "${TEST_NAME}" "${msg}"
594 printf "%-${nr_blank}s %s" " " "${msg}"
598 while [ -n "$1" ]; do
601 [ -n "$_flags" ]; flags="flags $_flags"
604 [ -n "$2" ]; dev="dev $1"
606 elif [ $1 = "id" ]; then
608 [ -n "$_id" ]; id="id $_id"
612 [ -n "$_port" ]; port=" port $_port"
619 if [ -z "$id" ]; then
620 echo "[skip] bad test - missing endpoint id"
624 if [ $ip_mptcp -eq 1 ]; then
625 line=$(ip -n $ns mptcp endpoint show $id)
626 # the dump order is: address id flags port dev
628 [ -n "$addr" ] && expected_line="$expected_line $addr"
629 expected_line="$expected_line $id"
630 [ -n "$_flags" ] && expected_line="$expected_line ${_flags//","/" "}"
631 [ -n "$dev" ] && expected_line="$expected_line $dev"
632 [ -n "$port" ] && expected_line="$expected_line $port"
635 # the dump order is: id flags dev address port
636 expected_line="$id"
637 [ -n "$flags" ] && expected_line="$expected_line $flags"
638 [ -n "$dev" ] && expected_line="$expected_line $dev"
639 [ -n "$addr" ] && expected_line="$expected_line $addr"
640 [ -n "$_port" ] && expected_line="$expected_line $_port"
656 ip netns exec "${ns}" iptables -A INPUT -s "${src}" -p tcp -j "${target}"
672 local port=$((10000 + TEST_COUNT - 1))
684 if [ $capture -eq 1 ]; then
686 if [ -z $SUDO_USER ] ; then
689 capuser="-Z $SUDO_USER"
692 capfile=$(printf "mp_join-%02u-%s.pcap" "$TEST_COUNT" "${listener_ns}")
695 …ip netns exec ${listener_ns} tcpdump -i any -s 65535 -B 32768 $capuser -w $capfile > "$capout" 2>&…
702 nstat -n
704 nstat -n
708 extra_args="-j"
710 extra_args="-r 50"
712 extra_args="-r ${speed:6}"
725 if [ ${test_link_fail} -le 1 ]; then
736 extra_cl_args="-f ${test_link_fail}"
737 extra_srv_args="-f -1"
739 extra_srv_args="-f ${test_link_fail}"
740 extra_cl_args="-f -1"
755 if [ $userspace_pm -eq 1 ]; then
774 if [ "$test_link_fail" -gt 1 ];then
777 ./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \
782 ./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \
790 if [ "$test_link_fail" -eq 0 ];then
793 ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
795 elif [ "$test_link_fail" -eq 1 ] || [ "$test_link_fail" -eq 2 ];then
800 ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
806 ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
817 if [ $addr_nr_ns1 -gt 0 ]; then
820 local id=10
822 while [ $add_nr_ns1 -gt 0 ]; do
829 if [ $userspace_pm -eq 0 ]; then
830 pm_nl_add_endpoint $ns1 $addr flags signal
832 tk=$(sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns1")
833 ip netns exec ${listener_ns} ./pm_nl_ctl ann $addr token $tk id $id
835 ip netns exec ${listener_ns} ./pm_nl_ctl rem token $tk id $id
839 add_nr_ns1=$((add_nr_ns1 - 1))
840 id=$((id + 1))
842 elif [ $addr_nr_ns1 -lt 0 ]; then
843 local rm_nr_ns1=$((-addr_nr_ns1))
844 if [ $rm_nr_ns1 -lt 8 ]; then
847 pm_nl_show_endpoints ${listener_ns} | while read -r line; do
854 if [ $i = "id" ]; then
855 if [ $counter -eq $rm_nr_ns1 ]; then
858 id=${arr[$nr+1]}
860 pm_nl_del_endpoint ${listener_ns} $id
867 elif [ $rm_nr_ns1 -eq 8 ]; then
869 elif [ $rm_nr_ns1 -eq 9 ]; then
876 [ $addr_nr_ns1 -gt 0 ] && [ $addr_nr_ns2 -lt 0 ] && sleep 1
878 if [ $addr_nr_ns2 -gt 0 ]; then
881 local id=20
883 while [ $add_nr_ns2 -gt 0 ]; do
890 if [ $userspace_pm -eq 0 ]; then
893 tk=$(sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2")
894 da=$(sed -n 's/.*\(daddr4:\)\([0-9.]*\).*$/\2/p;q' "$evts_ns2")
895 dp=$(sed -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2")
896 ip netns exec ${connector_ns} ./pm_nl_ctl csf lip $addr lid $id \
900 sed -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q')
905 add_nr_ns2=$((add_nr_ns2 - 1))
906 id=$((id + 1))
908 elif [ $addr_nr_ns2 -lt 0 ]; then
909 local rm_nr_ns2=$((-addr_nr_ns2))
910 if [ $rm_nr_ns2 -lt 8 ]; then
913 pm_nl_show_endpoints ${connector_ns} | while read -r line; do
920 if [ $i = "id" ]; then
921 if [ $counter -eq $rm_nr_ns2 ]; then
924 local id rm_addr
927 id=${arr[$nr+1]}
929 pm_nl_del_endpoint ${connector_ns} $id
936 elif [ $rm_nr_ns2 -eq 8 ]; then
938 elif [ $rm_nr_ns2 -eq 9 ]; then
949 if [ -n "${sflags}" ]; then
955 pm_nl_show_endpoints $netns | while read -r line; do
959 local id
963 if [ $i = "id" ]; then
964 id=${arr[$nr+1]}
968 pm_nl_change_endpoint $netns $id $sflags
978 if [ $capture -eq 1 ]; then
983 if [ $userspace_pm -eq 1 ]; then
986 rm -rf $evts_ns1 $evts_ns2
994 if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then
996 echo -e "\nnetns ${listener_ns} socket stat for ${port}:" 1>&2
997 ip netns exec ${listener_ns} ss -Menita 1>&2 -o "sport = :$port"
999 echo -e "\nnetns ${connector_ns} socket stat for ${port}:" 1>&2
1000 ip netns exec ${connector_ns} ss -Menita 1>&2 -o "dport = :$port"
1008 if [ "$test_link_fail" -gt 1 ];then
1014 if [ "$test_link_fail" -eq 0 ];then
1021 if [ $retc -eq 0 ] && [ $rets -eq 0 ];then
1037 echo -e "\nMPTCP_TEST_FILE_END_MARKER" >> "$name"
1047 local test_linkfail="${4:-0}"
1048 local addr_nr_ns1="${5:-0}"
1049 local addr_nr_ns2="${6:-0}"
1050 local speed="${7:-fast}"
1051 local sflags="${8:-""}"
1057 if [ "$test_linkfail" -gt 2 ]; then
1060 if [ -z "$cinfail" ]; then
1066 elif [ "$test_linkfail" -ne 0 ] && [ -z "$cinfail" ]; then
1079 if [ "$test_linkfail" -gt 2 ]; then
1082 if [ -z "$sinfail" ]; then
1086 elif [ "$test_linkfail" -eq 2 ] && [ -z "$sinfail" ]; then
1102 ip netns exec $ns1 nstat -as | grep Tcp
1104 ip netns exec $ns2 nstat -as | grep Tcp
1109 local csum_ns1=${1:-0}
1110 local csum_ns2=${2:-0}
1126 printf "%-${nr_blank}s %s" " " "sum"
1127 count=$(ip netns exec $ns1 nstat -as | grep MPTcpExtDataCsumErr | awk '{print $2}')
1128 [ -z "$count" ] && count=0
1132 if { [ "$count" != $csum_ns1 ] && [ $allow_multi_errors_ns1 -eq 0 ]; } ||
1133 { [ "$count" -lt $csum_ns1 ] && [ $allow_multi_errors_ns1 -eq 1 ]; }; then
1138 echo -n "[ ok ]"
1140 echo -n " - csum "
1141 count=$(ip netns exec $ns2 nstat -as | grep MPTcpExtDataCsumErr | awk '{print $2}')
1142 [ -z "$count" ] && count=0
1146 if { [ "$count" != $csum_ns2 ] && [ $allow_multi_errors_ns2 -eq 0 ]; } ||
1147 { [ "$count" -lt $csum_ns2 ] && [ $allow_multi_errors_ns2 -eq 1 ]; }; then
1152 echo -n "[ ok ]"
1163 local ns_invert=${3:-""}
1178 if [[ "${fail_tx}" = "-"* ]]; then
1182 if [[ "${fail_rx}" = "-"* ]]; then
1187 printf "%-${nr_blank}s %s" " " "ftx"
1188 count=$(ip netns exec $ns_tx nstat -as | grep MPTcpExtMPFailTx | awk '{print $2}')
1189 [ -z "$count" ] && count=0
1193 if { [ "$count" != "$fail_tx" ] && [ $allow_tx_lost -eq 0 ]; } ||
1194 { [ "$count" -gt "$fail_tx" ] && [ $allow_tx_lost -eq 1 ]; }; then
1199 echo -n "[ ok ]"
1202 echo -n " - failrx"
1203 count=$(ip netns exec $ns_rx nstat -as | grep MPTcpExtMPFailRx | awk '{print $2}')
1204 [ -z "$count" ] && count=0
1208 if { [ "$count" != "$fail_rx" ] && [ $allow_rx_lost -eq 0 ]; } ||
1209 { [ "$count" -gt "$fail_rx" ] && [ $allow_rx_lost -eq 1 ]; }; then
1214 echo -n "[ ok ]"
1239 printf "%-${nr_blank}s %s" " " "ctx"
1240 count=$(ip netns exec $ns_tx nstat -as | grep MPTcpExtMPFastcloseTx | awk '{print $2}')
1241 [ -z "$count" ] && count=0
1248 echo -n "[ ok ]"
1251 echo -n " - fclzrx"
1252 count=$(ip netns exec $ns_rx nstat -as | grep MPTcpExtMPFastcloseRx | awk '{print $2}')
1253 [ -z "$count" ] && count=0
1260 echo -n "[ ok ]"
1272 local ns_invert=${3:-""}
1285 printf "%-${nr_blank}s %s" " " "rtx"
1286 count=$(ip netns exec $ns_tx nstat -as | grep MPTcpExtMPRstTx | awk '{print $2}')
1287 [ -z "$count" ] && count=0
1288 if [ $count -lt $rst_tx ]; then
1293 echo -n "[ ok ]"
1296 echo -n " - rstrx "
1297 count=$(ip netns exec $ns_rx nstat -as | grep MPTcpExtMPRstRx | awk '{print $2}')
1298 [ -z "$count" ] && count=0
1299 if [ "$count" -lt "$rst_rx" ]; then
1304 echo -n "[ ok ]"
1319 printf "%-${nr_blank}s %s" " " "itx"
1320 count=$(ip netns exec $ns2 nstat -as | grep InfiniteMapTx | awk '{print $2}')
1321 [ -z "$count" ] && count=0
1327 echo -n "[ ok ]"
1330 echo -n " - infirx"
1331 count=$(ip netns exec $ns1 nstat -as | grep InfiniteMapRx | awk '{print $2}')
1332 [ -z "$count" ] && count=0
1349 local csum_ns1=${4:-0}
1350 local csum_ns2=${5:-0}
1351 local fail_nr=${6:-0}
1352 local rst_nr=${7:-0}
1353 local infi_nr=${8:-0}
1354 local corrupted_pkts=${9:-0}
1360 if [ "${corrupted_pkts}" -gt 0 ]; then
1364 printf "%03u %-36s %s" "${TEST_COUNT}" "${title}" "syn"
1365 count=$(ip netns exec $ns1 nstat -as | grep MPTcpExtMPJoinSynRx | awk '{print $2}')
1366 [ -z "$count" ] && count=0
1372 echo -n "[ ok ]"
1375 echo -n " - synack"
1376 with_cookie=$(ip netns exec $ns2 sysctl -n net.ipv4.tcp_syncookies)
1377 count=$(ip netns exec $ns2 nstat -as | grep MPTcpExtMPJoinSynAckRx | awk '{print $2}')
1378 [ -z "$count" ] && count=0
1383 if [ "$with_cookie" = 2 ] && [ "$count" -gt "$syn_ack_nr" ] && [ "$count" -le "$syn_nr" ]; then
1384 echo -n "[ ok ]"
1391 echo -n "[ ok ]"
1394 echo -n " - ack"
1395 count=$(ip netns exec $ns1 nstat -as | grep MPTcpExtMPJoinAckRx | awk '{print $2}')
1396 [ -z "$count" ] && count=0
1405 if [ $validate_checksum -eq 1 ]; then
1415 # - as these tests do - we can have a quite high number of
1417 # sleep duration/ MPTCP-level RTX interval.
1428 printf "%-${nr_blank}s %-18s" " " "stale"
1429 stale_nr=$(ip netns exec $ns nstat -as | grep MPTcpExtSubflowStale | awk '{print $2}')
1430 [ -z "$stale_nr" ] && stale_nr=0
1431 recover_nr=$(ip netns exec $ns nstat -as | grep MPTcpExtSubflowRecover | awk '{print $2}')
1432 [ -z "$recover_nr" ] && recover_nr=0
1434 if [ $stale_nr -lt $stale_min ] ||
1435 { [ $stale_max -gt 0 ] && [ $stale_nr -gt $stale_max ]; } ||
1436 [ $((stale_nr - recover_nr)) -ne $stale_delta ]; then
1439 " stale-recover delta $stale_delta "
1448 ip netns exec $ns ip -s link show
1449 ip netns exec $ns nstat -as | grep MPTcp
1457 local port_nr=${3:-0}
1458 local syn_nr=${4:-$port_nr}
1459 local syn_ack_nr=${5:-$port_nr}
1460 local ack_nr=${6:-$port_nr}
1461 local mis_syn_nr=${7:-0}
1462 local mis_ack_nr=${8:-0}
1467 timeout=$(ip netns exec $ns1 sysctl -n net.mptcp.add_addr_timeout)
1469 printf "%-${nr_blank}s %s" " " "add"
1470 count=$(ip netns exec $ns2 nstat -as MPTcpExtAddAddr | grep MPTcpExtAddAddr | awk '{print $2}')
1471 [ -z "$count" ] && count=0
1475 if [ "$count" != "$add_nr" ] && { [ "$timeout" -gt 1 ] || [ "$count" -lt "$add_nr" ]; }; then
1480 echo -n "[ ok ]"
1483 echo -n " - echo "
1484 count=$(ip netns exec $ns1 nstat -as | grep MPTcpExtEchoAdd | awk '{print $2}')
1485 [ -z "$count" ] && count=0
1491 echo -n "[ ok ]"
1494 if [ $port_nr -gt 0 ]; then
1495 echo -n " - pt "
1496 count=$(ip netns exec $ns2 nstat -as | grep MPTcpExtPortAdd | awk '{print $2}')
1497 [ -z "$count" ] && count=0
1499 echo "[fail] got $count ADD_ADDR[s] with a port-number expected $port_nr"
1506 printf "%-${nr_blank}s %s" " " "syn"
1507 count=$(ip netns exec $ns1 nstat -as | grep MPTcpExtMPJoinPortSynRx |
1509 [ -z "$count" ] && count=0
1512 port-number expected $syn_nr"
1516 echo -n "[ ok ]"
1519 echo -n " - synack"
1520 count=$(ip netns exec $ns2 nstat -as | grep MPTcpExtMPJoinPortSynAckRx |
1522 [ -z "$count" ] && count=0
1525 port-number expected $syn_ack_nr"
1529 echo -n "[ ok ]"
1532 echo -n " - ack"
1533 count=$(ip netns exec $ns1 nstat -as | grep MPTcpExtMPJoinPortAckRx |
1535 [ -z "$count" ] && count=0
1538 port-number expected $ack_nr"
1545 printf "%-${nr_blank}s %s" " " "syn"
1546 count=$(ip netns exec $ns1 nstat -as | grep MPTcpExtMismatchPortSynRx |
1548 [ -z "$count" ] && count=0
1551 port-number expected $mis_syn_nr"
1555 echo -n "[ ok ]"
1558 echo -n " - ack "
1559 count=$(ip netns exec $ns1 nstat -as | grep MPTcpExtMismatchPortAckRx |
1561 [ -z "$count" ] && count=0
1564 port-number expected $mis_ack_nr"
1590 while [ -n "$1" ]; do
1596 if [ -z $invert ]; then
1605 printf "%-${nr_blank}s %s" " " "rm "
1606 count=$(ip netns exec $addr_ns nstat -as | grep MPTcpExtRmAddr | awk '{print $2}')
1607 [ -z "$count" ] && count=0
1613 echo -n "[ ok ]"
1616 echo -n " - rmsf "
1617 count=$(ip netns exec $subflow_ns nstat -as | grep MPTcpExtRmSubflow | awk '{print $2}')
1618 [ -z "$count" ] && count=0
1619 if [ -n "$simult" ]; then
1622 cnt=$(ip netns exec $addr_ns nstat -as | grep MPTcpExtRmSubflow | awk '{print $2}')
1626 [ -z "$cnt" ] && cnt=0
1629 if [ $count -ge "$rm_subflow_nr" ] && \
1630 [ "$count" -le "$((rm_subflow_nr *2 ))" ]; then
1644 echo -n "[ ok ]"
1659 printf "%-${nr_blank}s %s" " " "ptx"
1660 count=$(ip netns exec $ns1 nstat -as | grep MPTcpExtMPPrioTx | awk '{print $2}')
1661 [ -z "$count" ] && count=0
1667 echo -n "[ ok ]"
1670 echo -n " - prx "
1671 count=$(ip netns exec $ns1 nstat -as | grep MPTcpExtMPPrioRx | awk '{print $2}')
1672 [ -z "$count" ] && count=0
1692 if [ -n "${need_title}" ]; then
1693 printf "%03u %-36s %s" "${TEST_COUNT}" "${TEST_NAME}" "${msg}"
1695 printf "%-${nr_blank}s %s" " " "${msg}"
1698 cnt1=$(ss -N $ns1 -tOni | grep -c token)
1699 cnt2=$(ss -N $ns2 -tOni | grep -c token)
1700 if [ "$cnt1" != "$subflow_nr" -o "$cnt2" != "$subflow_nr" ]; then
1708 …[ "${dump_stats}" = 1 ] && ( ss -N $ns1 -tOni ; ss -N $ns1 -tOni | grep token; ip -n $ns1 mptcp en…
1720 tx_total=$(stat --format=%s $out)
1724 printf "%-${nr_blank}s %-18s" " " "link usage"
1725 if [ $tx_rate -lt $((expected_rate - tolerance)) ] || \
1726 [ $tx_rate -gt $((expected_rate + tolerance)) ]; then
1740 while [ $time -lt $timeout_ms ]; do
1743 cnt=$(ip netns exec $ns nstat -as TcpAttemptFails | grep TcpAttemptFails | awk '{print $2}')
1756 ip netns exec $ns sysctl -q net.mptcp.pm_type=1
1881 if reset "unused signal address"; then
1882 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
1889 if reset "signal address"; then
1892 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
1899 # note: signal address in server ns and local addresses in client ns must
1902 if reset "subflow and signal"; then
1903 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
1913 if reset "multiple subflows and signal"; then
1915 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
1924 # signal addresses
1925 if reset "signal addresses"; then
1927 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
1928 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
1929 pm_nl_add_endpoint $ns1 10.0.4.1 flags signal
1936 # signal invalid addresses
1937 if reset "signal invalid addresses"; then
1939 pm_nl_add_endpoint $ns1 10.0.12.1 flags signal
1940 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
1941 pm_nl_add_endpoint $ns1 10.0.14.1 flags signal
1948 # signal addresses race test
1949 if reset "signal addresses race test"; then
1952 pm_nl_add_endpoint $ns1 10.0.1.1 flags signal
1953 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
1954 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
1955 pm_nl_add_endpoint $ns1 10.0.4.1 flags signal
1956 pm_nl_add_endpoint $ns2 10.0.1.2 flags signal
1957 pm_nl_add_endpoint $ns2 10.0.2.2 flags signal
1958 pm_nl_add_endpoint $ns2 10.0.3.2 flags signal
1959 pm_nl_add_endpoint $ns2 10.0.4.2 flags signal
1962 ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=1
1966 # the server will not signal the address terminating
1975 if reset "multiple flows, signal, link failure"; then
1980 # active backup and link switch-over.
1984 pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal
1996 if reset "multi flows, signal, bidi, link fail"; then
1999 pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal
2006 chk_stale_nr $ns2 1 -1 1
2014 pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal
2029 pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal
2045 pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal
2052 chk_stale_nr $ns2 1 -1 2
2060 if reset_with_add_addr_timeout "signal address, ADD_ADDR timeout"; then
2063 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2070 if reset_with_add_addr_timeout "signal address, ADD_ADDR6 timeout" 6; then
2073 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal
2079 # signal addresses timeout
2080 if reset_with_add_addr_timeout "signal addresses, ADD_ADDR timeout"; then
2082 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2083 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
2090 # signal invalid addresses timeout
2093 pm_nl_add_endpoint $ns1 10.0.12.1 flags signal
2094 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
2109 run_tests $ns1 $ns2 10.0.1.1 0 0 -1 slow
2120 run_tests $ns1 $ns2 10.0.1.1 0 0 -2 slow
2128 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2130 run_tests $ns1 $ns2 10.0.1.1 0 -1 0 slow
2136 # subflow and signal, remove
2137 if reset "remove subflow and signal"; then
2139 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2142 run_tests $ns1 $ns2 10.0.1.1 0 -1 -1 slow
2148 # subflows and signal, remove
2149 if reset "remove subflows and signal"; then
2151 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2155 run_tests $ns1 $ns2 10.0.1.1 0 -1 -2 speed_10
2164 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal id 250
2165 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
2166 pm_nl_add_endpoint $ns1 10.0.4.1 flags signal
2168 run_tests $ns1 $ns2 10.0.1.1 0 -3 0 speed_10
2177 pm_nl_add_endpoint $ns1 10.0.12.1 flags signal
2178 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
2179 pm_nl_add_endpoint $ns1 10.0.14.1 flags signal
2181 run_tests $ns1 $ns2 10.0.1.1 0 -3 0 speed_10
2187 # subflows and signal, flush
2188 if reset "flush subflows and signal"; then
2190 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2194 run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow
2204 pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow id 150
2207 run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow
2215 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal id 250
2216 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
2217 pm_nl_add_endpoint $ns1 10.0.4.1 flags signal
2219 run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow
2228 pm_nl_add_endpoint $ns1 10.0.12.1 flags signal
2229 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
2230 pm_nl_add_endpoint $ns1 10.0.14.1 flags signal
2232 run_tests $ns1 $ns2 10.0.1.1 0 -8 0 slow
2238 # remove id 0 subflow
2239 if reset "remove id 0 subflow"; then
2243 run_tests $ns1 $ns2 10.0.1.1 0 0 -9 slow
2248 # remove id 0 address
2249 if reset "remove id 0 address"; then
2251 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2253 run_tests $ns1 $ns2 10.0.1.1 0 -9 0 slow
2270 # add signal address
2271 if reset "add signal address"; then
2317 if reset "unused signal address IPv6"; then
2318 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal
2324 # signal address IPv6
2327 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal
2337 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal
2339 run_tests $ns1 $ns2 dead:beef:1::1 0 -1 0 slow
2345 # subflow and signal IPv6, remove
2346 if reset "remove subflow and signal IPv6"; then
2348 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal
2351 run_tests $ns1 $ns2 dead:beef:1::1 0 -1 -1 slow
2360 # subflow IPv4-mapped to IPv4-mapped
2361 if reset "single subflow IPv4-mapped"; then
2369 # signal address IPv4-mapped with IPv4-mapped sk
2370 if reset "signal address IPv4-mapped"; then
2373 pm_nl_add_endpoint $ns1 "::ffff:10.0.2.1" flags signal
2379 # subflow v4-map-v6
2380 if reset "single subflow v4-map-v6"; then
2388 # signal address v4-map-v6
2389 if reset "signal address v4-map-v6"; then
2392 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2398 # subflow v6-map-v4
2399 if reset "single subflow v6-map-v4"; then
2407 # signal address v6-map-v4
2408 if reset "signal address v6-map-v4"; then
2411 pm_nl_add_endpoint $ns1 "::ffff:10.0.2.1" flags signal
2418 if reset "no JOIN with diff families v4-v6"; then
2427 if reset "no JOIN with diff families v4-v6-2"; then
2436 if reset "no JOIN with diff families v6-v4"; then
2460 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2471 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100
2512 # signal address with port
2513 if reset "signal address with port"; then
2516 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100
2522 # subflow and signal with port
2523 if reset "subflow and signal with port"; then
2524 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100
2536 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100
2538 run_tests $ns1 $ns2 10.0.1.1 0 -1 0 slow
2544 # subflow and signal with port, remove
2545 if reset "remove subflow and signal with port"; then
2547 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100
2550 run_tests $ns1 $ns2 10.0.1.1 0 -1 -1 slow
2556 # subflows and signal with port, flush
2557 if reset "flush subflows and signal with port"; then
2559 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100
2563 run_tests $ns1 $ns2 10.0.1.1 0 -8 -2 slow
2572 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100
2573 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal port 10100
2583 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100
2584 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal port 10101
2623 # test signal address with cookies
2624 if reset_with_cookies "signal address with syn cookies"; then
2627 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2633 # test cookie with subflow and signal
2634 if reset_with_cookies "subflow and signal w cookies"; then
2635 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2645 if reset_with_cookies "subflows and signal w. cookies"; then
2647 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2712 # signal address allow join id0 ns1
2714 if reset_with_allow_join_id0 "signal address allow join id0 ns1" 1 0; then
2717 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2723 # signal address allow join id0 ns2
2725 if reset_with_allow_join_id0 "signal address allow join id0 ns2" 0 1; then
2728 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2738 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2748 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2759 # 1 non-fullmesh addr in ns1, added during the connection.
2771 # 1 non-fullmesh addr in ns1, added before the connection,
2776 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2783 # 1 non-fullmesh addr in ns1, added before the connection,
2788 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2795 # 1 non-fullmesh addr in ns1, added before the connection,
2801 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2869 tc -n $ns2 -j -s action show action pedit index 100 | \
2871 sed 's/.*"packets":\([0-9]\+\),.*/\1/'
2880 chk_fail_nr 1 -1 invert
2885 tc -n $ns2 qdisc add dev ns2eth1 root netem rate 1mbit delay 5
2901 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2912 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2956 run_tests $ns1 $ns2 10.0.1.1 0 0 -1 slow
2987 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2992 $ns2 10.0.2.2 id 1 flags implicit
2994 pm_nl_add_endpoint $ns2 10.0.2.2 id 33
2995 pm_nl_check_endpoint 0 "ID change is prevented" \
2996 $ns2 10.0.2.2 id 1 flags implicit
2998 pm_nl_add_endpoint $ns2 10.0.2.2 flags signal
3000 $ns2 10.0.2.2 id 1 flags signal
3004 if reset "delete and re-add"; then
3007 pm_nl_add_endpoint $ns2 10.0.2.2 id 2 dev ns2eth2 flags subflow
3017 chk_subflow_nr "" "after re-add" 2
3025 if [ -n "${1}" ]; then
3034 echo " -${key} ${all_tests[${key}]}"
3037 echo " -c capture pcap files"
3038 echo " -C enable data checksum"
3039 echo " -i use ip mptcp"
3040 echo " -h help"
3101 usage "Unknown option: -${opt}"
3106 shift $((OPTIND - 1))
3109 if [[ "${arg}" =~ ^[0-9]+$ ]]; then
3116 if [ ${#tests[@]} -eq 0 ]; then
3124 if [ ${ret} -ne 0 ]; then
3128 echo -e "\t- ${i}: ${failed_tests[${i}]}"