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

2 # SPDX-License-Identifier: GPL-2.0
46 declare -A all_tests
47 declare -a only_tests_ids
48 declare -a only_tests_names
49 declare -A failed_tests
103 ip netns exec $netns sysctl -q net.mptcp.pm_type=0 2>/dev/null || true
105 ip netns exec $netns sysctl -q net.mptcp.checksum_enabled=1
121 ip -net "$ns1" addr add 10.0.$i.1/24 dev ns1eth$i
122 ip -net "$ns1" addr add dead:beef:$i::1/64 dev ns1eth$i nodad
123 ip -net "$ns1" link set ns1eth$i up
125 ip -net "$ns2" addr add 10.0.$i.2/24 dev ns2eth$i
126 ip -net "$ns2" addr add dead:beef:$i::2/64 dev ns2eth$i nodad
127 ip -net "$ns2" link set ns2eth$i up
130 ip -net "$ns2" route add default via 10.0.$i.1 dev ns2eth$i metric 10$i
131 ip -net "$ns2" route add default via dead:beef:$i::1 dev ns2eth$i metric 10$i
139 tc -n $ns1 qdisc add dev ns1eth$i root netem rate 20mbit delay 1ms
140 tc -n $ns2 qdisc add dev ns2eth$i root netem rate 20mbit delay 1ms
146 rm -f "$capout"
175 rm -f "$cin" "$cout" "$sinfail"
176 rm -f "$sin" "$sout" "$cinsent" "$cinfail"
177 rm -f "$tmpfile"
178 rm -rf $evts_ns1 $evts_ns2
179 rm -f "$err"
185 printf "%-${nr_blank}s%-36s" " " "${*}"
191 [ -z "${1}" ] && return
230 local msg="${1:-"Feature not supported"}"
251 if [ "${#only_tests_ids[@]}" -eq 0 ] && [ "${#only_tests_names[@]}" -eq 0 ]; then
257 if [ "$((MPTCP_LIB_TEST_COUNTER+1))" -eq "${i}" ]; then
272 if [ ${last_test_failed} -eq 1 ]; then
274 elif [ ${last_test_skipped} -eq 1 ]; then
276 elif [ ${last_test_ignored} -ne 1 ]; then
320 if ! nstat -asz "${counter}" | grep -wq "${counter}"; then
333 ip netns exec $netns sysctl -q net.ipv4.tcp_syncookies=2
340 local ip="${2:-4}"
346 if [ $ip -eq 6 ]; then
350 ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=1
352 if ! ip netns exec $ns2 $tables -A OUTPUT -p tcp \
353 -m tcp --tcp-option 30 \
354 -m bpf --bytecode \
356 -j DROP; then
370 ip netns exec $ns1 sysctl -q net.mptcp.checksum_enabled=$ns1_enable
371 ip netns exec $ns2 sysctl -q net.mptcp.checksum_enabled=$ns2_enable
383 ip netns exec $ns1 sysctl -q net.mptcp.allow_join_initial_addr_port=$ns1_enable
384 ip netns exec $ns2 sysctl -q net.mptcp.allow_join_initial_addr_port=$ns2_enable
389 # This rule inverts a 8-bit word at byte offset 148 for the 2nd TCP ACK packets
408 local ip="${2:-4}"
412 if [ $ip -eq 6 ]; then
417 -t mangle \
418 -A OUTPUT \
419 -o ns2eth$i \
420 -p tcp \
421 -m length --length 150:9999 \
422 -m statistic --mode nth --packet 1 --every 99999 \
423 -j MARK --set-mark 42 || return ${KSFT_SKIP}
425 tc -n $ns2 qdisc add dev ns2eth$i clsact || return ${KSFT_SKIP}
426 tc -n $ns2 filter add dev ns2eth$i egress \
439 ip netns exec $ns1 sysctl -q net.mptcp.checksum_enabled=1
440 ip netns exec $ns2 sysctl -q net.mptcp.checksum_enabled=1
445 if [ ${rc} -eq ${KSFT_SKIP} ]; then
472 local chain="${4:-INPUT}"
475 -A "${chain}" \
476 -s "${src}" \
477 -p tcp \
478 -j "${target}"; then
491 if [ ${#} -gt 0 ]; then
496 if [ ${last_test_failed} -eq 0 ]; then
509 done | sort -n
521 if [ -n "$bytes" ]; then
524 out_size=$(wc -c $out | awk '{print $1}')
525 if [ $out_size -ne $bytes ]; then
530 # note: BusyBox's "cmp" command doesn't support --bytes
532 head --bytes="$bytes" "$in" > "$tmpfile"
534 head --bytes="$bytes" "$out" > "$tmpfile"
538 cmp -l "$in" "$out" | while read -r i a b; do
540 if [ $check_invert -eq 0 ] || [ $sum -ne $((0xff)) ]; then
560 if ! ip netns exec ${connector_ns} ping -q -c 1 $connect_addr >/dev/null; then
561 fail_test "$listener_ns -> $connect_addr connectivity"
569 if [ -z "$FAILING_LINKS" ]; then
577 ip -net "$ns" link set "$veth" down
679 local flags dev id port
684 while [ -n "$1" ]; do
686 "flags" | "dev" | "id" | "port")
697 if [ -z "${id}" ]; then
698 fail_test "bad test - missing endpoint id"
702 check_output "mptcp_lib_pm_nl_get_endpoint ${ns} ${id}" \
704 "${id},${addr},${flags//","/" "},${dev},${port}")"
713 local addr_nr_ns1=${addr_nr_ns1:-0}
714 local addr_nr_ns2=${addr_nr_ns2:-0}
715 local sflags=${sflags:-""}
716 local fullmesh=${fullmesh:-""}
719 if [ -n "${fullmesh}" ]; then
730 if [ $addr_nr_ns1 -gt 0 ]; then
733 local id=10
734 while [ $add_nr_ns1 -gt 0 ]; do
741 pm_nl_add_endpoint $ns1 $addr flags signal
743 add_nr_ns1=$((add_nr_ns1 - 1))
744 id=$((id + 1))
746 elif [ $addr_nr_ns1 -lt 0 ]; then
747 local rm_nr_ns1=$((-addr_nr_ns1))
748 if [ $rm_nr_ns1 -lt 8 ]; then
751 pm_nl_show_endpoints ${listener_ns} | while read -r line; do
758 if [ $i = "id" ]; then
759 if [ $counter -eq $rm_nr_ns1 ]; then
762 id=${arr[$nr+1]}
764 pm_nl_del_endpoint ${listener_ns} $id
771 elif [ $rm_nr_ns1 -eq 8 ]; then
773 elif [ $rm_nr_ns1 -eq 9 ]; then
780 [ $addr_nr_ns1 -gt 0 ] && [ $addr_nr_ns2 -lt 0 ] && sleep 1
782 if [ $addr_nr_ns2 -gt 0 ]; then
785 local id=20
786 while [ $add_nr_ns2 -gt 0 ]; do
795 add_nr_ns2=$((add_nr_ns2 - 1))
796 id=$((id + 1))
798 elif [ $addr_nr_ns2 -lt 0 ]; then
799 local rm_nr_ns2=$((-addr_nr_ns2))
800 if [ $rm_nr_ns2 -lt 8 ]; then
803 pm_nl_show_endpoints ${connector_ns} | while read -r line; do
810 if [ $i = "id" ]; then
811 if [ $counter -eq $rm_nr_ns2 ]; then
814 local id rm_addr
817 id=${arr[$nr+1]}
819 pm_nl_del_endpoint ${connector_ns} $id
826 elif [ $rm_nr_ns2 -eq 8 ]; then
828 elif [ $rm_nr_ns2 -eq 9 ]; then
839 if [ -n "${sflags}" ]; then
845 pm_nl_show_endpoints $netns | while read -r line; do
849 local id
853 if [ $i = "id" ]; then
854 id=${arr[$nr+1]}
858 pm_nl_change_endpoint $netns $id $sflags
872 if [ -z "$count" ]; then
884 if [ -n "${cestab_ns1}" ]; then
887 if [ -n "${cestab_ns2}" ]; then
900 if [ -z $SUDO_USER ]; then
903 capuser="-Z $SUDO_USER"
906 capfile=$(printf "mp_join-%02u-%s.pcap" "$MPTCP_LIB_TEST_COUNTER" "$ns")
909 ip netns exec "$ns" tcpdump -i any -s 65535 -B 32768 $capuser -w "$capfile" > "$capout" 2>&1 &
927 echo "$((10000 + MPTCP_LIB_TEST_COUNTER - 1))"
939 local FAILING_LINKS=${FAILING_LINKS:-""}
940 local fastclose=${fastclose:-""}
941 local speed=${speed:-"fast"}
950 nstat -n
952 nstat -n
956 extra_args="-j"
958 extra_args="-r 50"
959 elif [ $speed -gt 0 ]; then
960 extra_args="-r ${speed}"
966 if [ -n "${fastclose}" ]; then
967 if [ ${test_linkfail} -le 1 ]; then
977 extra_cl_args="-f ${test_linkfail}"
978 extra_srv_args="-f -1"
980 extra_srv_args="-f ${test_linkfail}"
981 extra_cl_args="-f -1"
989 if [ "$test_linkfail" -gt 1 ];then
992 ./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \
997 ./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \
1005 if [ "$test_linkfail" -eq 0 ];then
1008 ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
1010 elif [ "$test_linkfail" -eq 1 ] || [ "$test_linkfail" -eq 2 ];then
1015 ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
1021 ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
1041 if [ ${rets} -ne 0 ] || [ ${retc} -ne 0 ]; then
1048 if [ "$test_linkfail" -gt 1 ];then
1054 if [ "$test_linkfail" -eq 0 ];then
1061 [ $retc -eq 0 ] && [ $rets -eq 0 ]
1082 local test_linkfail=${test_linkfail:-0}
1086 if [ "$test_linkfail" -gt 2 ]; then
1089 if [ -z "$cinfail" ]; then
1095 elif [ "$test_linkfail" -ne 0 ] && [ -z "$cinfail" ]; then
1108 if [ "$test_linkfail" -gt 2 ]; then
1111 if [ -z "$sinfail" ]; then
1115 elif [ "$test_linkfail" -eq 2 ] && [ -z "$sinfail" ]; then
1130 ip netns exec $ns1 nstat -as | grep Tcp
1132 ip netns exec $ns2 nstat -as | grep Tcp
1137 local csum_ns1=${1:-0}
1138 local csum_ns2=${2:-0}
1155 if [ -n "$count" ] && [ "$count" != "$csum_ns1" ]; then
1158 if [ -z "$count" ]; then
1160 elif { [ "$count" != $csum_ns1 ] && [ $allow_multi_errors_ns1 -eq 0 ]; } ||
1161 { [ "$count" -lt $csum_ns1 ] && [ $allow_multi_errors_ns1 -eq 1 ]; }; then
1169 if [ -n "$count" ] && [ "$count" != "$csum_ns2" ]; then
1172 if [ -z "$count" ]; then
1174 elif { [ "$count" != $csum_ns2 ] && [ $allow_multi_errors_ns2 -eq 0 ]; } ||
1175 { [ "$count" -lt $csum_ns2 ] && [ $allow_multi_errors_ns2 -eq 1 ]; }; then
1188 local ns_invert=${3:-""}
1205 if [[ "${fail_tx}" = "-"* ]]; then
1209 if [[ "${fail_rx}" = "-"* ]]; then
1216 if [ -n "$count" ] && [ "$count" != "$fail_tx" ]; then
1219 if [ -z "$count" ]; then
1221 elif { [ "$count" != "$fail_tx" ] && [ $allow_tx_lost -eq 0 ]; } ||
1222 { [ "$count" -gt "$fail_tx" ] && [ $allow_tx_lost -eq 1 ]; }; then
1230 if [ -n "$count" ] && [ "$count" != "$fail_rx" ]; then
1233 if [ -z "$count" ]; then
1235 elif { [ "$count" != "$fail_rx" ] && [ $allow_rx_lost -eq 0 ]; } ||
1236 { [ "$count" -gt "$fail_rx" ] && [ $allow_rx_lost -eq 1 ]; }; then
1265 if [ -z "$count" ]; then
1275 if [ -z "$count" ]; then
1288 local ns_invert=${3:-""}
1304 if [ -z "$count" ]; then
1307 elif { [ $rst_tx -ne 0 ] && [ $count -lt $rst_tx ]; } ||
1308 { [ $rst_tx -eq 0 ] && [ $count -ne 0 ]; }; then
1316 if [ -z "$count" ]; then
1319 elif { [ $rst_rx -ne 0 ] && [ $count -lt $rst_rx ]; } ||
1320 { [ $rst_rx -eq 0 ] && [ $count -ne 0 ]; }; then
1335 if [ -z "$count" ]; then
1345 if [ -z "$count" ]; then
1356 local syn_tx=${join_syn_tx:-0}
1357 local create=${join_create_err:-0}
1358 local bind=${join_bind_err:-0}
1359 local connect=${join_connect_err:-0}
1364 if [ -z "$count" ]; then
1373 if [ -z "$count" ]; then
1382 if [ -z "$count" ]; then
1391 if [ -z "$count" ]; then
1407 local syn_rej=${join_syn_rej:-0}
1408 local csum_ns1=${join_csum_ns1:-0}
1409 local csum_ns2=${join_csum_ns2:-0}
1410 local fail_nr=${join_fail_nr:-0}
1411 local rst_nr=${join_rst_nr:-0}
1412 local infi_nr=${join_infi_nr:-0}
1413 local corrupted_pkts=${join_corrupted_pkts:-0}
1418 if [ "${corrupted_pkts}" -gt 0 ]; then
1423 if [ -z "$count" ]; then
1431 with_cookie=$(ip netns exec $ns2 sysctl -n net.ipv4.tcp_syncookies)
1433 if [ -z "$count" ]; then
1439 if [ "$with_cookie" != 2 ] || [ "$count" -le "$syn_ack_nr" ] || [ "$count" -gt "$syn_nr" ]; then
1447 if [ -z "$count" ]; then
1456 if [ -z "$count" ]; then
1465 if [ -z "$count" ]; then
1474 if [ -z "$count" ]; then
1484 join_syn_tx="${join_syn_tx:-${syn_nr}}" \
1497 # - as these tests do - we can have a quite high number of
1499 # sleep duration/ MPTCP-level RTX interval.
1514 if [ -z "$stale_nr" ] || [ -z "$recover_nr" ]; then
1516 elif [ $stale_nr -lt $stale_min ] ||
1517 { [ $stale_max -gt 0 ] && [ $stale_nr -gt $stale_max ]; } ||
1518 [ $((stale_nr - recover_nr)) -ne $stale_delta ]; then
1521 " stale-recover delta $stale_delta"
1529 ip netns exec $ns ip -s link show
1530 ip netns exec $ns nstat -as | grep MPTcp
1538 local port_nr=${3:-0}
1539 local ns_invert=${4:-""}
1559 timeout=$(ip netns exec ${ns_tx} sysctl -n net.mptcp.add_addr_timeout)
1563 if [ -z "$count" ]; then
1567 elif [ "$count" != "$add_nr" ] && { [ "$timeout" -gt 1 ] || [ "$count" -lt "$add_nr" ]; }; then
1575 if [ -z "$count" ]; then
1583 if [ $port_nr -gt 0 ]; then
1586 if [ -z "$count" ]; then
1589 fail_test "got $count ADD_ADDR[s] with a port-number expected $port_nr"
1596 if [ -z "$count" ]; then
1600 port-number expected $syn_nr"
1607 if [ -z "$count" ]; then
1611 port-number expected $syn_ack_nr"
1618 if [ -z "$count" ]; then
1622 port-number expected $ack_nr"
1629 if [ -z "$count" ]; then
1633 port-number expected $mis_syn_nr"
1640 if [ -z "$count" ]; then
1644 port-number expected $mis_ack_nr"
1658 timeout=$(ip netns exec $ns1 sysctl -n net.mptcp.add_addr_timeout)
1662 if [ -z "$count" ]; then
1666 …elif [ "$count" != "$add_tx_nr" ] && { [ "$timeout" -gt 1 ] || [ "$count" -lt "$add_tx_nr" ]; }; t…
1674 if [ -z "$count" ]; then
1697 while [ -n "$1" ]; do
1712 if [ -z "$count" ]; then
1722 if [ -z "$count" ]; then
1724 elif [ -n "$simult" ]; then
1736 if [ $count -ge "$rm_subflow_nr" ] && \
1737 [ "$count" -le "$((rm_subflow_nr *2 ))" ]; then
1757 if [ -z "$count" ]; then
1776 if [ -z "$count" ]; then
1786 if [ -z "$count" ]; then
1796 if [ -z "$count" ]; then
1806 if [ -z "$count" ]; then
1825 cnt1=$(ss -N $ns1 -tOni | grep -c token)
1826 cnt2=$(ss -N $ns2 -tOni | grep -c token)
1835 ss -N $ns1 -tOni
1836 ss -N $ns1 -tOni | grep token
1837 ip -n $ns1 mptcp endpoint
1853 cnt1=$(ss -N $ns1 -inmHM | mptcp_lib_get_info_value "$info1" "$info1")
1854 cnt2=$(ss -N $ns2 -inmHM | mptcp_lib_get_info_value "$info2" "$info2")
1856 [ -z "$cnt1" ] && cnt1=0
1857 [ -z "$cnt2" ] && cnt2=0
1867 ss -N $ns1 -inmHM
1868 ss -N $ns2 -inmHM
1882 if [ -n "$(ss -N $ns1 -inmHM | mptcp_lib_get_info_value $info $info)" ]; then
1890 cnt1=$(ss -N $ns1 -ti state established state syn-sent state syn-recv |
1891 grep -c tcp-ulp-mptcp)
1892 cnt2=$(ss -N $ns2 -ti state established state syn-sent state syn-recv |
1893 grep -c tcp-ulp-mptcp)
1903 ss -N $ns1 -ti
1904 ss -N $ns2 -ti
1917 tx_total=$(stat --format=%s $out)
1922 if [ $tx_rate -lt $((expected_rate - tolerance)) ] || \
1923 [ $tx_rate -gt $((expected_rate + tolerance)) ]; then
1936 while [ $time -lt $timeout_ms ]; do
1952 ip netns exec $ns sysctl -q net.mptcp.pm_type=1
2088 if reset "unused signal address"; then
2089 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2097 if reset "signal address"; then
2100 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2107 # note: signal address in server ns and local addresses in client ns must
2110 if reset "subflow and signal"; then
2111 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2120 # uncommon: subflow and signal flags on the same endpoint
2123 if reset "subflow and signal together"; then
2126 pm_nl_add_endpoint $ns2 10.0.3.2 flags signal,subflow
2136 if reset "multiple subflows and signal"; then
2138 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2147 # signal addresses
2148 if reset "signal addresses"; then
2150 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2151 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
2152 pm_nl_add_endpoint $ns1 10.0.4.1 flags signal
2159 # signal invalid addresses
2160 if reset "signal invalid addresses"; then
2162 pm_nl_add_endpoint $ns1 10.0.12.1 flags signal
2163 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
2164 pm_nl_add_endpoint $ns1 10.0.14.1 flags signal
2172 # signal addresses race test
2173 if reset "signal addresses race test"; then
2176 pm_nl_add_endpoint $ns1 10.0.1.1 flags signal
2177 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2178 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
2179 pm_nl_add_endpoint $ns1 10.0.4.1 flags signal
2180 pm_nl_add_endpoint $ns2 10.0.1.2 flags signal
2181 pm_nl_add_endpoint $ns2 10.0.2.2 flags signal
2182 pm_nl_add_endpoint $ns2 10.0.3.2 flags signal
2183 pm_nl_add_endpoint $ns2 10.0.4.2 flags signal
2186 ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=1
2197 # the server will not signal the address terminating
2207 if reset "multiple flows, signal, link failure"; then
2212 # active backup and link switch-over.
2216 pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal
2229 if reset "multi flows, signal, bidi, link fail"; then
2232 pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal
2240 chk_stale_nr $ns2 1 -1 1
2248 pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal
2263 pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal
2279 pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal
2286 chk_stale_nr $ns2 1 -1 2
2294 if reset_with_add_addr_timeout "signal address, ADD_ADDR timeout"; then
2297 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2306 if reset_with_add_addr_timeout "signal address, ADD_ADDR6 timeout" 6; then
2309 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal
2316 # signal addresses timeout
2317 if reset_with_add_addr_timeout "signal addresses, ADD_ADDR timeout"; then
2319 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2320 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
2328 # signal invalid addresses timeout
2331 pm_nl_add_endpoint $ns1 10.0.12.1 flags signal
2332 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
2349 addr_nr_ns2=-1 speed=slow \
2363 addr_nr_ns2=-2 speed=slow \
2373 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2375 addr_nr_ns1=-1 speed=slow \
2383 # subflow and signal, remove
2384 if reset "remove subflow and signal"; then
2386 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2389 addr_nr_ns1=-1 addr_nr_ns2=-1 speed=slow \
2397 # subflows and signal, remove
2398 if reset "remove subflows and signal"; then
2400 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2404 addr_nr_ns1=-1 addr_nr_ns2=-2 speed=10 \
2415 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal id 250
2416 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
2417 pm_nl_add_endpoint $ns1 10.0.4.1 flags signal
2419 addr_nr_ns1=-3 speed=10 \
2430 pm_nl_add_endpoint $ns1 10.0.12.1 flags signal
2432 pm_nl_add_endpoint $ns1 224.0.0.1 flags signal
2433 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
2435 addr_nr_ns1=-3 speed=10 \
2444 # subflows and signal, flush
2445 if reset "flush subflows and signal"; then
2447 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2451 addr_nr_ns1=-8 addr_nr_ns2=-8 speed=slow \
2463 pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow id 150
2466 addr_nr_ns1=-8 addr_nr_ns2=-8 speed=slow \
2482 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal id 250
2483 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
2484 pm_nl_add_endpoint $ns1 10.0.4.1 flags signal
2486 addr_nr_ns1=-8 addr_nr_ns2=-8 speed=slow \
2497 pm_nl_add_endpoint $ns1 10.0.12.1 flags signal
2498 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
2499 pm_nl_add_endpoint $ns1 10.0.14.1 flags signal
2501 addr_nr_ns1=-8 speed=slow \
2510 # remove id 0 subflow
2511 if reset "remove id 0 subflow"; then
2515 addr_nr_ns2=-9 speed=slow \
2522 # remove id 0 address
2523 if reset "remove id 0 address"; then
2525 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2527 addr_nr_ns1=-9 speed=slow \
2548 # add signal address
2549 if reset "add signal address"; then
2604 if reset "unused signal address IPv6"; then
2605 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal
2612 # signal address IPv6
2615 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal
2626 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal
2628 addr_nr_ns1=-1 speed=slow \
2635 # subflow and signal IPv6, remove
2636 if reset "remove subflow and signal IPv6"; then
2638 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal
2641 addr_nr_ns1=-1 addr_nr_ns2=-1 speed=slow \
2651 # subflow IPv4-mapped to IPv4-mapped
2652 if reset "single subflow IPv4-mapped"; then
2660 # signal address IPv4-mapped with IPv4-mapped sk
2661 if reset "signal address IPv4-mapped"; then
2664 pm_nl_add_endpoint $ns1 "::ffff:10.0.2.1" flags signal
2670 # subflow v4-map-v6
2671 if reset "single subflow v4-map-v6"; then
2679 # signal address v4-map-v6
2680 if reset "signal address v4-map-v6"; then
2683 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2689 # subflow v6-map-v4
2690 if reset "single subflow v6-map-v4"; then
2698 # signal address v6-map-v4
2699 if reset "signal address v6-map-v4"; then
2702 pm_nl_add_endpoint $ns1 "::ffff:10.0.2.1" flags signal
2709 if reset "no JOIN with diff families v4-v6"; then
2718 if reset "no JOIN with diff families v4-v6-2"; then
2727 if reset "no JOIN with diff families v6-v4"; then
2742 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal
2753 pm_nl_add_endpoint $ns1 10.0.1.1 flags signal
2765 pm_nl_add_endpoint $ns1 10.0.1.1 flags signal
2777 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2778 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal
2803 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal,backup
2816 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2829 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal,backup port 10100
2851 pm_nl_add_endpoint $ns1 10.0.1.1 flags signal,backup
2854 # 10.0.2.2 (non-backup) -> 10.0.1.1 (backup)
2856 # 10.0.1.2 (backup) -> 10.0.2.1 (non-backup)
2857 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2858 ip -net "$ns2" route add 10.0.2.1 via 10.0.1.1 dev ns2eth1 # force this path
2931 if [ -z "$count" ]; then
2934 fail_test "got ${count} MPC attempt[s] on port-based endpoint, expected ${attempts}"
2943 # signal address with port
2944 if reset "signal address with port"; then
2947 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100
2953 # subflow and signal with port
2954 if reset "subflow and signal with port"; then
2955 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100
2968 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100
2970 addr_nr_ns1=-1 speed=slow \
2983 # subflow and signal with port, remove
2984 if reset "remove subflow and signal with port"; then
2986 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100
2989 addr_nr_ns1=-1 addr_nr_ns2=-1 speed=slow \
2996 # subflows and signal with port, flush
2997 if reset "flush subflows and signal with port"; then
2999 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100
3003 addr_nr_ns1=-8 addr_nr_ns2=-2 speed=slow \
3013 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100
3014 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal port 10100
3024 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100
3025 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal port 10101
3032 if reset "port-based signal endpoint must not accept mpc"; then
3037 pm_nl_add_endpoint ${ns1} 10.0.2.1 flags signal port ${port}
3041 ./mptcp_connect -t ${timeout_poll} -p $port -s MPTCP 10.0.2.1 >/dev/null 2>&1
3081 # test signal address with cookies
3082 if reset_with_cookies "signal address with syn cookies"; then
3085 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
3091 # test cookie with subflow and signal
3092 if reset_with_cookies "subflow and signal w cookies"; then
3093 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
3103 if reset_with_cookies "subflows and signal w. cookies"; then
3105 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
3149 # signal address allow join id0 ns1
3151 if reset_with_allow_join_id0 "signal address allow join id0 ns1" 1 0; then
3154 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
3160 # signal address allow join id0 ns2
3162 if reset_with_allow_join_id0 "signal address allow join id0 ns2" 0 1; then
3165 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
3175 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
3185 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
3196 # 1 non-fullmesh addr in ns1, added during the connection.
3209 # 1 non-fullmesh addr in ns1, added before the connection,
3214 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
3225 # 1 non-fullmesh addr in ns1, added before the connection,
3230 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
3238 # 1 non-fullmesh addr in ns1, added before the connection,
3244 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
3326 tc -n $ns2 -j -s action show action pedit index 100 | \
3341 chk_fail_nr 1 -1 invert
3347 tc -n $ns2 qdisc add dev ns2eth1 root netem rate 1mbit delay 5ms
3360 # $1: ns ; $2: addr ; $3: id
3369 ip netns exec $1 ./pm_nl_ctl ann $2 token $tk id $3
3373 # $1: ns ; $2: id
3384 ip netns exec $1 ./pm_nl_ctl rem token $tk id $2
3388 # $1: ns ; $2: addr ; $3: id
3408 local t=${3:-1}
3414 [ -n "$(mptcp_lib_evts_get_info "saddr4" "$evts" $t)" ] && ip=4
3415 [ -n "$(mptcp_lib_evts_get_info "saddr6" "$evts" $t)" ] && ip=6
3435 if [ ${rc} -eq 2 ]; then
3437 elif [ ${rc} -eq 0 ]; then
3439 elif [ ${rc} -eq 1 ]; then
3456 # $1: ns ; $2: id
3486 local id="${2}"
3489 print_check "get id ${id} addr"
3492 check_output "userspace_pm_get_addr ${ns} ${id}" "${exp}"
3520 count=$(grep -cw "type:${evt}" "${evts}")
3536 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
3548 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
3599 addr_nr_ns2=-1 speed=slow \
3622 $'id 10 flags signal 10.0.2.1\nid 20 flags signal 10.0.3.1' \
3623 "signal"
3624 userspace_pm_chk_get_addr "${ns1}" "10" "id 10 flags signal 10.0.2.1"
3625 userspace_pm_chk_get_addr "${ns1}" "20" "id 20 flags signal 10.0.3.1"
3628 "id 20 flags signal 10.0.3.1" "after rm_sf 10"
3652 "id 20 flags subflow 10.0.3.2" \
3654 userspace_pm_chk_get_addr "${ns2}" "20" "id 20 flags subflow 10.0.3.2"
3666 # userspace pm create id 0 subflow
3667 if reset_with_events "userspace pm create id 0 subflow" &&
3679 "id 0 flags subflow 10.0.3.2" "id 0 subflow"
3711 # userspace pm send RM_ADDR for ID 0
3712 if reset_with_events "userspace pm send RM_ADDR for ID 0" &&
3746 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
3753 $ns2 10.0.2.2 id 1 flags implicit
3757 pm_nl_add_endpoint $ns2 10.0.2.2 id 33 2>/dev/null
3758 pm_nl_check_endpoint "ID change is prevented" \
3759 $ns2 10.0.2.2 id 1 flags implicit
3761 pm_nl_add_endpoint $ns2 10.0.2.2 flags signal
3763 $ns2 10.0.2.2 id 1 flags signal
3767 if reset_with_tcp_filter "delete and re-add" ns2 10.0.3.2 REJECT OUTPUT &&
3772 pm_nl_add_endpoint $ns2 10.0.1.2 id 1 dev ns2eth1 flags subflow
3773 pm_nl_add_endpoint $ns2 10.0.2.2 id 2 dev ns2eth2 flags subflow
3780 $ns2 10.0.2.2 id 2 flags subflow dev ns2eth2
3781 chk_subflow_nr "before delete id 2" 2
3786 chk_subflow_nr "after delete id 2" 1
3789 pm_nl_add_endpoint $ns2 10.0.2.2 id 2 dev ns2eth2 flags subflow
3791 chk_subflow_nr "after re-add id 2" 2
3794 pm_nl_add_endpoint $ns2 10.0.3.2 id 3 flags subflow
3799 ip netns exec "${ns2}" ${iptables} -D OUTPUT -s "10.0.3.2" -p tcp -j REJECT
3801 pm_nl_add_endpoint $ns2 10.0.3.2 id 3 flags subflow
3810 chk_subflow_nr "after delete id 0 ($i)" 2
3813 pm_nl_add_endpoint $ns2 10.0.1.2 id 1 dev ns2eth1 flags subflow
3815 chk_subflow_nr "after re-add id 0 ($i)" 3
3842 # remove and re-add
3843 if reset_with_events "delete re-add signal" &&
3847 pm_nl_add_endpoint $ns1 10.0.2.1 id 1 flags signal
3849 pm_nl_add_endpoint $ns1 224.0.0.1 id 2 flags signal
3850 pm_nl_add_endpoint $ns1 10.0.1.1 id 42 flags signal
3857 $ns1 10.0.2.1 id 1 flags signal
3867 pm_nl_add_endpoint $ns1 10.0.2.1 id 1 flags signal
3868 pm_nl_add_endpoint $ns1 10.0.3.1 id 2 flags signal
3870 chk_subflow_nr "after re-add" 3
3875 chk_subflow_nr "after delete ID 0" 2
3878 pm_nl_add_endpoint $ns1 10.0.1.1 id 99 flags signal
3880 chk_subflow_nr "after re-add ID 0" 3
3885 chk_subflow_nr "after re-delete ID 0" 2
3888 pm_nl_add_endpoint $ns1 10.0.1.1 id 88 flags signal
3890 chk_subflow_nr "after re-re-add ID 0" 3
3916 # flush and re-add
3917 if reset_with_tcp_filter "flush re-add" ns2 10.0.3.2 REJECT OUTPUT &&
3922 pm_nl_add_endpoint $ns1 224.0.0.1 id 2 flags signal
3923 pm_nl_add_endpoint $ns2 10.0.3.2 id 3 flags subflow
3935 ip netns exec "${ns2}" ${iptables} -D OUTPUT -s "10.0.3.2" -p tcp -j REJECT
3936 pm_nl_add_endpoint $ns2 10.0.3.2 id 3 flags subflow
3938 pm_nl_add_endpoint $ns1 10.0.3.1 id 2 flags signal
3952 if [ -n "${1}" ]; then
3961 echo " -${key} ${all_tests[${key}]}"
3964 echo " -c capture pcap files"
3965 echo " -C enable data checksum"
3966 echo " -i use ip mptcp"
3967 echo " -h help"
4029 usage "Unknown option: -${opt}"
4034 shift $((OPTIND - 1))
4037 if [[ "${arg}" =~ ^[0-9]+$ ]]; then
4044 if [ ${#tests[@]} -eq 0 ]; then
4054 if [ ${ret} -ne 0 ]; then
4058 echo -e "\t- ${i}: ${failed_tests[${i}]}"