Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'selftests-mptcp-refactoring-and-minor-fixes'

Mat Martineau says:

====================
selftests: mptcp: Refactoring and minor fixes

Patch 1 moves code around for clarity and improved code reuse.

Patch 2 makes use of new MPTCP info that consolidates MPTCP-level and
subflow-level information.

Patches 3-7 refactor code to favor limited-scope environment vars over
optional parameters.

Patch 8: typo fix
====================

Link: https://lore.kernel.org/r/20230623-send-net-next-20230623-v1-0-a883213c8ba9@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+369 -264
+1 -1
tools/testing/selftests/net/mptcp/mptcp_connect.sh
··· 809 809 810 810 cat $cin $cin $cin > "$cin".disconnect 811 811 812 - # force do_transfer to cope with the multiple tranmissions 812 + # force do_transfer to cope with the multiple transmissions 813 813 sin="$cin.disconnect" 814 814 cin="$cin.disconnect" 815 815 cin_disconnect="$old_cin"
+368 -263
tools/testing/selftests/net/mptcp/mptcp_join.sh
··· 50 50 nr_blank=40 51 51 52 52 export FAILING_LINKS="" 53 + export test_linkfail=0 54 + export addr_nr_ns1=0 55 + export addr_nr_ns2=0 56 + export sflags="" 53 57 54 58 # generated using "nfbpf_compile '(ip && (ip[54] & 0xf0) == 0x30) || 55 59 # (ip6 && (ip6[74] & 0xf0) == 0x30)'" ··· 593 589 done 594 590 } 595 591 592 + rm_sf_count() 593 + { 594 + get_counter "${1}" "MPTcpExtRmSubflow" 595 + } 596 + 597 + # $1: ns, $2: old rm_sf counter in $ns 598 + wait_rm_sf() 599 + { 600 + local ns="${1}" 601 + local old_cnt="${2}" 602 + local cnt 603 + 604 + local i 605 + for i in $(seq 10); do 606 + cnt=$(rm_sf_count ${ns}) 607 + [ "$cnt" = "${old_cnt}" ] || break 608 + sleep 0.1 609 + done 610 + } 611 + 596 612 wait_mpj() 597 613 { 598 614 local ns="${1}" ··· 822 798 fi 823 799 } 824 800 825 - do_transfer() 801 + pm_nl_set_endpoint() 826 802 { 827 803 local listener_ns="$1" 828 804 local connector_ns="$2" 829 - local cl_proto="$3" 830 - local srv_proto="$4" 831 - local connect_addr="$5" 832 - local test_link_fail="$6" 833 - local addr_nr_ns1="$7" 834 - local addr_nr_ns2="$8" 835 - local speed="$9" 836 - local sflags="${10}" 837 - 838 - local port=$((10000 + TEST_COUNT - 1)) 839 - local cappid 840 - local userspace_pm=0 841 - 842 - :> "$cout" 843 - :> "$sout" 844 - :> "$capout" 845 - 846 - if [ $capture -eq 1 ]; then 847 - local capuser 848 - if [ -z $SUDO_USER ] ; then 849 - capuser="" 850 - else 851 - capuser="-Z $SUDO_USER" 852 - fi 853 - 854 - capfile=$(printf "mp_join-%02u-%s.pcap" "$TEST_COUNT" "${listener_ns}") 855 - 856 - echo "Capturing traffic for test $TEST_COUNT into $capfile" 857 - ip netns exec ${listener_ns} tcpdump -i any -s 65535 -B 32768 $capuser -w $capfile > "$capout" 2>&1 & 858 - cappid=$! 859 - 860 - sleep 1 861 - fi 862 - 863 - NSTAT_HISTORY=/tmp/${listener_ns}.nstat ip netns exec ${listener_ns} \ 864 - nstat -n 865 - NSTAT_HISTORY=/tmp/${connector_ns}.nstat ip netns exec ${connector_ns} \ 866 - nstat -n 867 - 868 - local extra_args 869 - if [ $speed = "fast" ]; then 870 - extra_args="-j" 871 - elif [ $speed = "slow" ]; then 872 - extra_args="-r 50" 873 - elif [[ $speed = "speed_"* ]]; then 874 - extra_args="-r ${speed:6}" 875 - fi 876 - 877 - if [[ "${addr_nr_ns1}" = "userspace_"* ]]; then 878 - userspace_pm=1 879 - addr_nr_ns1=${addr_nr_ns1:10} 880 - fi 881 - 882 - local flags="subflow" 883 - local extra_cl_args="" 884 - local extra_srv_args="" 885 - local trunc_size="" 886 - if [[ "${addr_nr_ns2}" = "fastclose_"* ]]; then 887 - if [ ${test_link_fail} -le 1 ]; then 888 - echo "fastclose tests need test_link_fail argument" 889 - fail_test 890 - return 1 891 - fi 892 - 893 - # disconnect 894 - trunc_size=${test_link_fail} 895 - local side=${addr_nr_ns2:10} 896 - 897 - if [ ${side} = "client" ]; then 898 - extra_cl_args="-f ${test_link_fail}" 899 - extra_srv_args="-f -1" 900 - elif [ ${side} = "server" ]; then 901 - extra_srv_args="-f ${test_link_fail}" 902 - extra_cl_args="-f -1" 903 - else 904 - echo "wrong/unknown fastclose spec ${side}" 905 - fail_test 906 - return 1 907 - fi 908 - addr_nr_ns2=0 909 - elif [[ "${addr_nr_ns2}" = "userspace_"* ]]; then 910 - userspace_pm=1 911 - addr_nr_ns2=${addr_nr_ns2:10} 912 - elif [[ "${addr_nr_ns2}" = "fullmesh_"* ]]; then 913 - flags="${flags},fullmesh" 914 - addr_nr_ns2=${addr_nr_ns2:9} 915 - fi 916 - 917 - extra_srv_args="$extra_args $extra_srv_args" 918 - if [ "$test_link_fail" -gt 1 ];then 919 - timeout ${timeout_test} \ 920 - ip netns exec ${listener_ns} \ 921 - ./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \ 922 - $extra_srv_args "::" < "$sinfail" > "$sout" & 923 - else 924 - timeout ${timeout_test} \ 925 - ip netns exec ${listener_ns} \ 926 - ./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \ 927 - $extra_srv_args "::" < "$sin" > "$sout" & 928 - fi 929 - local spid=$! 930 - 931 - wait_local_port_listen "${listener_ns}" "${port}" 932 - 933 - extra_cl_args="$extra_args $extra_cl_args" 934 - if [ "$test_link_fail" -eq 0 ];then 935 - timeout ${timeout_test} \ 936 - ip netns exec ${connector_ns} \ 937 - ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \ 938 - $extra_cl_args $connect_addr < "$cin" > "$cout" & 939 - elif [ "$test_link_fail" -eq 1 ] || [ "$test_link_fail" -eq 2 ];then 940 - ( cat "$cinfail" ; sleep 2; link_failure $listener_ns ; cat "$cinfail" ) | \ 941 - tee "$cinsent" | \ 942 - timeout ${timeout_test} \ 943 - ip netns exec ${connector_ns} \ 944 - ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \ 945 - $extra_cl_args $connect_addr > "$cout" & 946 - else 947 - tee "$cinsent" < "$cinfail" | \ 948 - timeout ${timeout_test} \ 949 - ip netns exec ${connector_ns} \ 950 - ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \ 951 - $extra_cl_args $connect_addr > "$cout" & 952 - fi 953 - local cpid=$! 805 + local connect_addr="$3" 954 806 955 807 # let the mptcp subflow be established in background before 956 808 # do endpoint manipulation ··· 838 938 local counter=2 839 939 local add_nr_ns1=${addr_nr_ns1} 840 940 local id=10 841 - local tk 842 941 while [ $add_nr_ns1 -gt 0 ]; do 843 942 local addr 844 943 if is_v6 "${connect_addr}"; then ··· 845 946 else 846 947 addr="10.0.$counter.1" 847 948 fi 848 - if [ $userspace_pm -eq 0 ]; then 849 - pm_nl_add_endpoint $ns1 $addr flags signal 850 - else 851 - tk=$(grep "type:1," "$evts_ns1" | 852 - sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q') 853 - ip netns exec ${listener_ns} ./pm_nl_ctl ann $addr token $tk id $id 854 - sleep 1 855 - sp=$(grep "type:10" "$evts_ns1" | 856 - sed -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q') 857 - da=$(grep "type:10" "$evts_ns1" | 858 - sed -n 's/.*\(daddr6:\)\([0-9a-f:.]*\).*$/\2/p;q') 859 - dp=$(grep "type:10" "$evts_ns1" | 860 - sed -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q') 861 - ip netns exec ${listener_ns} ./pm_nl_ctl rem token $tk id $id 862 - ip netns exec ${listener_ns} ./pm_nl_ctl dsf lip "::ffff:$addr" \ 863 - lport $sp rip $da rport $dp token $tk 864 - fi 865 - 949 + pm_nl_add_endpoint $ns1 $addr flags signal 866 950 counter=$((counter + 1)) 867 951 add_nr_ns1=$((add_nr_ns1 - 1)) 868 952 id=$((id + 1)) ··· 890 1008 local add_nr_ns2=${addr_nr_ns2} 891 1009 local counter=3 892 1010 local id=20 893 - local tk da dp sp 894 1011 while [ $add_nr_ns2 -gt 0 ]; do 895 1012 local addr 896 1013 if is_v6 "${connect_addr}"; then ··· 897 1016 else 898 1017 addr="10.0.$counter.2" 899 1018 fi 900 - if [ $userspace_pm -eq 0 ]; then 901 - pm_nl_add_endpoint $ns2 $addr flags $flags 902 - else 903 - tk=$(sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2") 904 - da=$(sed -n 's/.*\(daddr4:\)\([0-9.]*\).*$/\2/p;q' "$evts_ns2") 905 - dp=$(sed -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2") 906 - ip netns exec ${connector_ns} ./pm_nl_ctl csf lip $addr lid $id \ 907 - rip $da rport $dp token $tk 908 - sleep 1 909 - sp=$(grep "type:10" "$evts_ns2" | 910 - sed -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q') 911 - ip netns exec ${connector_ns} ./pm_nl_ctl rem token $tk id $id 912 - ip netns exec ${connector_ns} ./pm_nl_ctl dsf lip $addr lport $sp \ 913 - rip $da rport $dp token $tk 914 - fi 1019 + pm_nl_add_endpoint $ns2 $addr flags $flags 915 1020 counter=$((counter + 1)) 916 1021 add_nr_ns2=$((add_nr_ns2 - 1)) 917 1022 id=$((id + 1)) ··· 966 1099 done 967 1100 done 968 1101 fi 1102 + } 1103 + 1104 + do_transfer() 1105 + { 1106 + local listener_ns="$1" 1107 + local connector_ns="$2" 1108 + local cl_proto="$3" 1109 + local srv_proto="$4" 1110 + local connect_addr="$5" 1111 + local speed="$6" 1112 + 1113 + local port=$((10000 + TEST_COUNT - 1)) 1114 + local cappid 1115 + 1116 + :> "$cout" 1117 + :> "$sout" 1118 + :> "$capout" 1119 + 1120 + if [ $capture -eq 1 ]; then 1121 + local capuser 1122 + if [ -z $SUDO_USER ] ; then 1123 + capuser="" 1124 + else 1125 + capuser="-Z $SUDO_USER" 1126 + fi 1127 + 1128 + capfile=$(printf "mp_join-%02u-%s.pcap" "$TEST_COUNT" "${listener_ns}") 1129 + 1130 + echo "Capturing traffic for test $TEST_COUNT into $capfile" 1131 + ip netns exec ${listener_ns} tcpdump -i any -s 65535 -B 32768 $capuser -w $capfile > "$capout" 2>&1 & 1132 + cappid=$! 1133 + 1134 + sleep 1 1135 + fi 1136 + 1137 + NSTAT_HISTORY=/tmp/${listener_ns}.nstat ip netns exec ${listener_ns} \ 1138 + nstat -n 1139 + NSTAT_HISTORY=/tmp/${connector_ns}.nstat ip netns exec ${connector_ns} \ 1140 + nstat -n 1141 + 1142 + local extra_args 1143 + if [ $speed = "fast" ]; then 1144 + extra_args="-j" 1145 + elif [ $speed = "slow" ]; then 1146 + extra_args="-r 50" 1147 + elif [[ $speed = "speed_"* ]]; then 1148 + extra_args="-r ${speed:6}" 1149 + fi 1150 + 1151 + local flags="subflow" 1152 + local extra_cl_args="" 1153 + local extra_srv_args="" 1154 + local trunc_size="" 1155 + if [[ "${addr_nr_ns2}" = "fastclose_"* ]]; then 1156 + if [ ${test_linkfail} -le 1 ]; then 1157 + echo "fastclose tests need test_linkfail argument" 1158 + fail_test 1159 + return 1 1160 + fi 1161 + 1162 + # disconnect 1163 + trunc_size=${test_linkfail} 1164 + local side=${addr_nr_ns2:10} 1165 + 1166 + if [ ${side} = "client" ]; then 1167 + extra_cl_args="-f ${test_linkfail}" 1168 + extra_srv_args="-f -1" 1169 + elif [ ${side} = "server" ]; then 1170 + extra_srv_args="-f ${test_linkfail}" 1171 + extra_cl_args="-f -1" 1172 + else 1173 + echo "wrong/unknown fastclose spec ${side}" 1174 + fail_test 1175 + return 1 1176 + fi 1177 + addr_nr_ns2=0 1178 + elif [[ "${addr_nr_ns2}" = "fullmesh_"* ]]; then 1179 + flags="${flags},fullmesh" 1180 + addr_nr_ns2=${addr_nr_ns2:9} 1181 + fi 1182 + 1183 + extra_srv_args="$extra_args $extra_srv_args" 1184 + if [ "$test_linkfail" -gt 1 ];then 1185 + timeout ${timeout_test} \ 1186 + ip netns exec ${listener_ns} \ 1187 + ./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \ 1188 + $extra_srv_args "::" < "$sinfail" > "$sout" & 1189 + else 1190 + timeout ${timeout_test} \ 1191 + ip netns exec ${listener_ns} \ 1192 + ./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \ 1193 + $extra_srv_args "::" < "$sin" > "$sout" & 1194 + fi 1195 + local spid=$! 1196 + 1197 + wait_local_port_listen "${listener_ns}" "${port}" 1198 + 1199 + extra_cl_args="$extra_args $extra_cl_args" 1200 + if [ "$test_linkfail" -eq 0 ];then 1201 + timeout ${timeout_test} \ 1202 + ip netns exec ${connector_ns} \ 1203 + ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \ 1204 + $extra_cl_args $connect_addr < "$cin" > "$cout" & 1205 + elif [ "$test_linkfail" -eq 1 ] || [ "$test_linkfail" -eq 2 ];then 1206 + ( cat "$cinfail" ; sleep 2; link_failure $listener_ns ; cat "$cinfail" ) | \ 1207 + tee "$cinsent" | \ 1208 + timeout ${timeout_test} \ 1209 + ip netns exec ${connector_ns} \ 1210 + ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \ 1211 + $extra_cl_args $connect_addr > "$cout" & 1212 + else 1213 + tee "$cinsent" < "$cinfail" | \ 1214 + timeout ${timeout_test} \ 1215 + ip netns exec ${connector_ns} \ 1216 + ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \ 1217 + $extra_cl_args $connect_addr > "$cout" & 1218 + fi 1219 + local cpid=$! 1220 + 1221 + pm_nl_set_endpoint $listener_ns $connector_ns $connect_addr 969 1222 970 1223 wait $cpid 971 1224 local retc=$? ··· 1116 1129 return 1 1117 1130 fi 1118 1131 1119 - if [ "$test_link_fail" -gt 1 ];then 1132 + if [ "$test_linkfail" -gt 1 ];then 1120 1133 check_transfer $sinfail $cout "file received by client" $trunc_size 1121 1134 else 1122 1135 check_transfer $sin $cout "file received by client" $trunc_size 1123 1136 fi 1124 1137 retc=$? 1125 - if [ "$test_link_fail" -eq 0 ];then 1138 + if [ "$test_linkfail" -eq 0 ];then 1126 1139 check_transfer $cin $sout "file received by server" $trunc_size 1127 1140 else 1128 1141 check_transfer $cinsent $sout "file received by server" $trunc_size ··· 1155 1168 local listener_ns="$1" 1156 1169 local connector_ns="$2" 1157 1170 local connect_addr="$3" 1158 - local test_linkfail="${4:-0}" 1159 - local addr_nr_ns1="${5:-0}" 1160 - local addr_nr_ns2="${6:-0}" 1161 - local speed="${7:-fast}" 1162 - local sflags="${8:-""}" 1171 + local speed="${4:-fast}" 1163 1172 1164 1173 local size 1165 1174 ··· 1199 1216 make_file "$sinfail" "server" $size 1200 1217 fi 1201 1218 1202 - do_transfer ${listener_ns} ${connector_ns} MPTCP MPTCP ${connect_addr} \ 1203 - ${test_linkfail} ${addr_nr_ns1} ${addr_nr_ns2} ${speed} ${sflags} 1219 + do_transfer ${listener_ns} ${connector_ns} MPTCP MPTCP ${connect_addr} ${speed} 1204 1220 } 1205 1221 1206 1222 dump_stats() ··· 1836 1854 1837 1855 chk_mptcp_info() 1838 1856 { 1839 - local nr_info=$1 1840 - local info 1857 + local info1=$1 1858 + local exp1=$2 1859 + local info2=$3 1860 + local exp2=$4 1841 1861 local cnt1 1842 1862 local cnt2 1843 1863 local dump_stats 1844 1864 1845 - if [[ $nr_info = "subflows_"* ]]; then 1846 - info="subflows" 1847 - nr_info=${nr_info:9} 1848 - else 1849 - echo "[fail] unsupported argument: $nr_info" 1850 - fail_test 1851 - return 1 1852 - fi 1865 + printf "%-${nr_blank}s %-30s" " " "mptcp_info $info1:$info2=$exp1:$exp2" 1853 1866 1854 - printf "%-${nr_blank}s %-30s" " " "mptcp_info $info=$nr_info" 1855 - 1856 - cnt1=$(ss -N $ns1 -inmHM | grep "$info:" | 1857 - sed -n 's/.*\('"$info"':\)\([[:digit:]]*\).*$/\2/p;q') 1867 + cnt1=$(ss -N $ns1 -inmHM | grep "$info1:" | 1868 + sed -n 's/.*\('"$info1"':\)\([[:digit:]]*\).*$/\2/p;q') 1869 + cnt2=$(ss -N $ns2 -inmHM | grep "$info2:" | 1870 + sed -n 's/.*\('"$info2"':\)\([[:digit:]]*\).*$/\2/p;q') 1871 + # 'ss' only display active connections and counters that are not 0. 1858 1872 [ -z "$cnt1" ] && cnt1=0 1859 - cnt2=$(ss -N $ns2 -inmHM | grep "$info:" | 1860 - sed -n 's/.*\('"$info"':\)\([[:digit:]]*\).*$/\2/p;q') 1861 1873 [ -z "$cnt2" ] && cnt2=0 1862 - if [ "$cnt1" != "$nr_info" ] || [ "$cnt2" != "$nr_info" ]; then 1863 - echo "[fail] got $cnt1:$cnt2 $info expected $nr_info" 1874 + 1875 + if [ "$cnt1" != "$exp1" ] || [ "$cnt2" != "$exp2" ]; then 1876 + echo "[fail] got $cnt1:$cnt2 $info1:$info2 expected $exp1:$exp2" 1864 1877 fail_test 1865 1878 dump_stats=1 1866 1879 else ··· 1988 2011 pm_nl_set_limits $ns1 0 1 1989 2012 pm_nl_set_limits $ns2 0 1 1990 2013 pm_nl_add_endpoint $ns2 10.0.1.2 flags subflow 1991 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow 2014 + run_tests $ns1 $ns2 10.0.1.1 slow 1992 2015 chk_join_nr 0 0 0 1993 2016 fi 1994 2017 ··· 1999 2022 pm_nl_set_limits $ns2 0 2 2000 2023 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow 2001 2024 pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow 2002 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow 2025 + run_tests $ns1 $ns2 10.0.1.1 slow 2003 2026 chk_join_nr 1 1 1 2004 2027 fi 2005 2028 ··· 2010 2033 pm_nl_set_limits $ns2 0 2 2011 2034 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow 2012 2035 pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow 2013 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow 2036 + run_tests $ns1 $ns2 10.0.1.1 slow 2014 2037 chk_join_nr 1 1 1 2015 2038 fi 2016 2039 ··· 2022 2045 pm_nl_set_limits $ns1 0 1 2023 2046 pm_nl_set_limits $ns2 0 1 2024 2047 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow 2025 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow & 2048 + run_tests $ns1 $ns2 10.0.1.1 slow & 2026 2049 2027 2050 # mpj subflow will be in TW after the reset 2028 2051 wait_attempt_fail $ns2 ··· 2121 2144 2122 2145 # the peer could possibly miss some addr notification, allow retransmission 2123 2146 ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=1 2124 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow 2147 + run_tests $ns1 $ns2 10.0.1.1 slow 2125 2148 2126 2149 # It is not directly linked to the commit introducing this 2127 2150 # symbol but for the parent one which is linked anyway. ··· 2153 2176 pm_nl_set_limits $ns2 1 3 2154 2177 pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow 2155 2178 pm_nl_add_endpoint $ns2 10.0.4.2 dev ns2eth4 flags subflow 2156 - run_tests $ns1 $ns2 10.0.1.1 1 2179 + test_linkfail=1 \ 2180 + run_tests $ns1 $ns2 10.0.1.1 2157 2181 chk_join_nr 3 3 3 2158 2182 chk_add_nr 1 1 2159 2183 chk_stale_nr $ns2 1 5 1 ··· 2169 2191 pm_nl_set_limits $ns2 1 3 2170 2192 pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow 2171 2193 pm_nl_add_endpoint $ns2 10.0.4.2 dev ns2eth4 flags subflow 2172 - run_tests $ns1 $ns2 10.0.1.1 2 2194 + test_linkfail=2 \ 2195 + run_tests $ns1 $ns2 10.0.1.1 2173 2196 chk_join_nr 3 3 3 2174 2197 chk_add_nr 1 1 2175 2198 chk_stale_nr $ns2 1 -1 1 ··· 2183 2204 pm_nl_set_limits $ns1 0 2 2184 2205 pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal 2185 2206 pm_nl_set_limits $ns2 1 2 2186 - FAILING_LINKS="1" 2187 2207 pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow,backup 2188 - run_tests $ns1 $ns2 10.0.1.1 1 2208 + FAILING_LINKS="1" test_linkfail=1 \ 2209 + run_tests $ns1 $ns2 10.0.1.1 2189 2210 chk_join_nr 2 2 2 2190 2211 chk_add_nr 1 1 2191 2212 chk_link_usage $ns2 ns2eth3 $cinsent 0 ··· 2199 2220 pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal 2200 2221 pm_nl_set_limits $ns2 1 2 2201 2222 pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow,backup 2202 - FAILING_LINKS="1 2" 2203 - run_tests $ns1 $ns2 10.0.1.1 1 2223 + FAILING_LINKS="1 2" test_linkfail=1 \ 2224 + run_tests $ns1 $ns2 10.0.1.1 2204 2225 chk_join_nr 2 2 2 2205 2226 chk_add_nr 1 1 2206 2227 chk_stale_nr $ns2 2 4 2 ··· 2215 2236 pm_nl_add_endpoint $ns1 10.0.2.1 dev ns1eth2 flags signal 2216 2237 pm_nl_set_limits $ns2 1 3 2217 2238 pm_nl_add_endpoint $ns2 10.0.3.2 dev ns2eth3 flags subflow,backup 2218 - FAILING_LINKS="1 2" 2219 - run_tests $ns1 $ns2 10.0.1.1 2 2239 + FAILING_LINKS="1 2" test_linkfail=2 \ 2240 + run_tests $ns1 $ns2 10.0.1.1 2220 2241 chk_join_nr 2 2 2 2221 2242 chk_add_nr 1 1 2222 2243 chk_stale_nr $ns2 1 -1 2 ··· 2231 2252 pm_nl_set_limits $ns1 0 1 2232 2253 pm_nl_set_limits $ns2 1 1 2233 2254 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal 2234 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow 2255 + run_tests $ns1 $ns2 10.0.1.1 slow 2235 2256 chk_join_nr 1 1 1 2236 2257 chk_add_tx_nr 4 4 2237 2258 chk_add_nr 4 0 ··· 2242 2263 pm_nl_set_limits $ns1 0 1 2243 2264 pm_nl_set_limits $ns2 1 1 2244 2265 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal 2245 - run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow 2266 + run_tests $ns1 $ns2 dead:beef:1::1 slow 2246 2267 chk_join_nr 1 1 1 2247 2268 chk_add_nr 4 0 2248 2269 fi ··· 2253 2274 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal 2254 2275 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal 2255 2276 pm_nl_set_limits $ns2 2 2 2256 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 speed_10 2277 + run_tests $ns1 $ns2 10.0.1.1 speed_10 2257 2278 chk_join_nr 2 2 2 2258 2279 chk_add_nr 8 0 2259 2280 fi ··· 2264 2285 pm_nl_add_endpoint $ns1 10.0.12.1 flags signal 2265 2286 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal 2266 2287 pm_nl_set_limits $ns2 2 2 2267 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 speed_10 2288 + run_tests $ns1 $ns2 10.0.1.1 speed_10 2268 2289 chk_join_nr 1 1 1 2269 2290 chk_add_nr 8 0 2270 2291 fi ··· 2277 2298 pm_nl_set_limits $ns1 0 1 2278 2299 pm_nl_set_limits $ns2 0 1 2279 2300 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow 2280 - run_tests $ns1 $ns2 10.0.1.1 0 0 -1 slow 2301 + addr_nr_ns2=-1 \ 2302 + run_tests $ns1 $ns2 10.0.1.1 slow 2281 2303 chk_join_nr 1 1 1 2282 2304 chk_rm_tx_nr 1 2283 2305 chk_rm_nr 1 1 ··· 2290 2310 pm_nl_set_limits $ns2 0 2 2291 2311 pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow 2292 2312 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow 2293 - run_tests $ns1 $ns2 10.0.1.1 0 0 -2 slow 2313 + addr_nr_ns2=-2 \ 2314 + run_tests $ns1 $ns2 10.0.1.1 slow 2294 2315 chk_join_nr 2 2 2 2295 2316 chk_rm_nr 2 2 2296 2317 fi ··· 2301 2320 pm_nl_set_limits $ns1 0 1 2302 2321 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal 2303 2322 pm_nl_set_limits $ns2 1 1 2304 - run_tests $ns1 $ns2 10.0.1.1 0 -1 0 slow 2323 + addr_nr_ns1=-1 \ 2324 + run_tests $ns1 $ns2 10.0.1.1 slow 2305 2325 chk_join_nr 1 1 1 2306 2326 chk_add_nr 1 1 2307 2327 chk_rm_nr 1 1 invert ··· 2314 2332 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal 2315 2333 pm_nl_set_limits $ns2 1 2 2316 2334 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow 2317 - run_tests $ns1 $ns2 10.0.1.1 0 -1 -1 slow 2335 + addr_nr_ns1=-1 addr_nr_ns2=-1 \ 2336 + run_tests $ns1 $ns2 10.0.1.1 slow 2318 2337 chk_join_nr 2 2 2 2319 2338 chk_add_nr 1 1 2320 2339 chk_rm_nr 1 1 ··· 2328 2345 pm_nl_set_limits $ns2 1 3 2329 2346 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow 2330 2347 pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow 2331 - run_tests $ns1 $ns2 10.0.1.1 0 -1 -2 speed_10 2348 + addr_nr_ns1=-1 addr_nr_ns2=-2 \ 2349 + run_tests $ns1 $ns2 10.0.1.1 speed_10 2332 2350 chk_join_nr 3 3 3 2333 2351 chk_add_nr 1 1 2334 2352 chk_rm_nr 2 2 ··· 2342 2358 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal 2343 2359 pm_nl_add_endpoint $ns1 10.0.4.1 flags signal 2344 2360 pm_nl_set_limits $ns2 3 3 2345 - run_tests $ns1 $ns2 10.0.1.1 0 -3 0 speed_10 2361 + addr_nr_ns1=-3 \ 2362 + run_tests $ns1 $ns2 10.0.1.1 speed_10 2346 2363 chk_join_nr 3 3 3 2347 2364 chk_add_nr 3 3 2348 2365 chk_rm_nr 3 3 invert ··· 2356 2371 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal 2357 2372 pm_nl_add_endpoint $ns1 10.0.14.1 flags signal 2358 2373 pm_nl_set_limits $ns2 3 3 2359 - run_tests $ns1 $ns2 10.0.1.1 0 -3 0 speed_10 2374 + addr_nr_ns1=-3 \ 2375 + run_tests $ns1 $ns2 10.0.1.1 speed_10 2360 2376 chk_join_nr 1 1 1 2361 2377 chk_add_nr 3 3 2362 2378 chk_rm_nr 3 1 invert ··· 2370 2384 pm_nl_set_limits $ns2 1 3 2371 2385 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow 2372 2386 pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow 2373 - run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow 2387 + addr_nr_ns1=-8 addr_nr_ns2=-8 \ 2388 + run_tests $ns1 $ns2 10.0.1.1 slow 2374 2389 chk_join_nr 3 3 3 2375 2390 chk_add_nr 1 1 2376 2391 chk_rm_nr 1 3 invert simult ··· 2384 2397 pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow id 150 2385 2398 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow 2386 2399 pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow 2387 - run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow 2400 + addr_nr_ns1=-8 addr_nr_ns2=-8 \ 2401 + run_tests $ns1 $ns2 10.0.1.1 slow 2388 2402 chk_join_nr 3 3 3 2389 2403 2390 2404 if mptcp_lib_kversion_ge 5.18; then ··· 2403 2415 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal 2404 2416 pm_nl_add_endpoint $ns1 10.0.4.1 flags signal 2405 2417 pm_nl_set_limits $ns2 3 3 2406 - run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow 2418 + addr_nr_ns1=-8 addr_nr_ns2=-8 \ 2419 + run_tests $ns1 $ns2 10.0.1.1 slow 2407 2420 chk_join_nr 3 3 3 2408 2421 chk_add_nr 3 3 2409 2422 chk_rm_nr 3 3 invert simult ··· 2417 2428 pm_nl_add_endpoint $ns1 10.0.3.1 flags signal 2418 2429 pm_nl_add_endpoint $ns1 10.0.14.1 flags signal 2419 2430 pm_nl_set_limits $ns2 3 3 2420 - run_tests $ns1 $ns2 10.0.1.1 0 -8 0 slow 2431 + addr_nr_ns1=-8 \ 2432 + run_tests $ns1 $ns2 10.0.1.1 slow 2421 2433 chk_join_nr 1 1 1 2422 2434 chk_add_nr 3 3 2423 2435 chk_rm_nr 3 1 invert ··· 2429 2439 pm_nl_set_limits $ns1 0 1 2430 2440 pm_nl_set_limits $ns2 0 1 2431 2441 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow 2432 - run_tests $ns1 $ns2 10.0.1.1 0 0 -9 slow 2442 + addr_nr_ns2=-9 \ 2443 + run_tests $ns1 $ns2 10.0.1.1 slow 2433 2444 chk_join_nr 1 1 1 2434 2445 chk_rm_nr 1 1 2435 2446 fi ··· 2440 2449 pm_nl_set_limits $ns1 0 1 2441 2450 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal 2442 2451 pm_nl_set_limits $ns2 1 1 2443 - run_tests $ns1 $ns2 10.0.1.1 0 -9 0 slow 2452 + addr_nr_ns1=-9 \ 2453 + run_tests $ns1 $ns2 10.0.1.1 slow 2444 2454 chk_join_nr 1 1 1 2445 2455 chk_add_nr 1 1 2446 2456 chk_rm_nr 1 1 invert ··· 2454 2462 if reset "add single subflow"; then 2455 2463 pm_nl_set_limits $ns1 0 1 2456 2464 pm_nl_set_limits $ns2 0 1 2457 - run_tests $ns1 $ns2 10.0.1.1 0 0 1 slow 2465 + addr_nr_ns2=1 \ 2466 + run_tests $ns1 $ns2 10.0.1.1 slow 2458 2467 chk_join_nr 1 1 1 2459 2468 fi 2460 2469 ··· 2463 2470 if reset "add signal address"; then 2464 2471 pm_nl_set_limits $ns1 0 1 2465 2472 pm_nl_set_limits $ns2 1 1 2466 - run_tests $ns1 $ns2 10.0.1.1 0 1 0 slow 2473 + addr_nr_ns1=1 \ 2474 + run_tests $ns1 $ns2 10.0.1.1 slow 2467 2475 chk_join_nr 1 1 1 2468 2476 chk_add_nr 1 1 2469 2477 fi ··· 2473 2479 if reset "add multiple subflows"; then 2474 2480 pm_nl_set_limits $ns1 0 2 2475 2481 pm_nl_set_limits $ns2 0 2 2476 - run_tests $ns1 $ns2 10.0.1.1 0 0 2 slow 2482 + addr_nr_ns2=2 \ 2483 + run_tests $ns1 $ns2 10.0.1.1 slow 2477 2484 chk_join_nr 2 2 2 2478 2485 fi 2479 2486 ··· 2482 2487 if reset "add multiple subflows IPv6"; then 2483 2488 pm_nl_set_limits $ns1 0 2 2484 2489 pm_nl_set_limits $ns2 0 2 2485 - run_tests $ns1 $ns2 dead:beef:1::1 0 0 2 slow 2490 + addr_nr_ns2=2 \ 2491 + run_tests $ns1 $ns2 dead:beef:1::1 slow 2486 2492 chk_join_nr 2 2 2 2487 2493 fi 2488 2494 ··· 2491 2495 if reset "add multiple addresses IPv6"; then 2492 2496 pm_nl_set_limits $ns1 0 2 2493 2497 pm_nl_set_limits $ns2 2 2 2494 - run_tests $ns1 $ns2 dead:beef:1::1 0 2 0 slow 2498 + addr_nr_ns1=2 \ 2499 + run_tests $ns1 $ns2 dead:beef:1::1 slow 2495 2500 chk_join_nr 2 2 2 2496 2501 chk_add_nr 2 2 2497 2502 fi ··· 2505 2508 pm_nl_set_limits $ns1 0 1 2506 2509 pm_nl_set_limits $ns2 0 1 2507 2510 pm_nl_add_endpoint $ns2 dead:beef:3::2 dev ns2eth3 flags subflow 2508 - run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow 2511 + run_tests $ns1 $ns2 dead:beef:1::1 slow 2509 2512 chk_join_nr 1 1 1 2510 2513 fi 2511 2514 2512 2515 # add_address, unused IPv6 2513 2516 if reset "unused signal address IPv6"; then 2514 2517 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal 2515 - run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow 2518 + run_tests $ns1 $ns2 dead:beef:1::1 slow 2516 2519 chk_join_nr 0 0 0 2517 2520 chk_add_nr 1 1 2518 2521 fi ··· 2522 2525 pm_nl_set_limits $ns1 0 1 2523 2526 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal 2524 2527 pm_nl_set_limits $ns2 1 1 2525 - run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow 2528 + run_tests $ns1 $ns2 dead:beef:1::1 slow 2526 2529 chk_join_nr 1 1 1 2527 2530 chk_add_nr 1 1 2528 2531 fi ··· 2532 2535 pm_nl_set_limits $ns1 0 1 2533 2536 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal 2534 2537 pm_nl_set_limits $ns2 1 1 2535 - run_tests $ns1 $ns2 dead:beef:1::1 0 -1 0 slow 2538 + addr_nr_ns1=-1 \ 2539 + run_tests $ns1 $ns2 dead:beef:1::1 slow 2536 2540 chk_join_nr 1 1 1 2537 2541 chk_add_nr 1 1 2538 2542 chk_rm_nr 1 1 invert ··· 2545 2547 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal 2546 2548 pm_nl_set_limits $ns2 1 2 2547 2549 pm_nl_add_endpoint $ns2 dead:beef:3::2 dev ns2eth3 flags subflow 2548 - run_tests $ns1 $ns2 dead:beef:1::1 0 -1 -1 slow 2550 + addr_nr_ns1=-1 addr_nr_ns2=-1 \ 2551 + run_tests $ns1 $ns2 dead:beef:1::1 slow 2549 2552 chk_join_nr 2 2 2 2550 2553 chk_add_nr 1 1 2551 2554 chk_rm_nr 1 1 ··· 2647 2648 pm_nl_set_limits $ns1 0 1 2648 2649 pm_nl_set_limits $ns2 1 1 2649 2650 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal 2650 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow 2651 + run_tests $ns1 $ns2 10.0.1.1 slow 2651 2652 chk_join_nr 0 0 0 2652 2653 fi 2653 2654 ··· 2657 2658 pm_nl_set_limits $ns1 0 1 2658 2659 pm_nl_set_limits $ns2 1 1 2659 2660 pm_nl_add_endpoint $ns1 10.0.1.1 flags signal 2660 - run_tests $ns1 $ns2 dead:beef:2::1 0 0 0 slow 2661 + run_tests $ns1 $ns2 dead:beef:2::1 slow 2661 2662 chk_join_nr 1 1 1 2662 2663 fi 2663 2664 ··· 2668 2669 pm_nl_set_limits $ns2 1 4 2669 2670 pm_nl_add_endpoint $ns2 dead:beef:2::2 flags subflow,fullmesh 2670 2671 pm_nl_add_endpoint $ns1 10.0.1.1 flags signal 2671 - run_tests $ns1 $ns2 dead:beef:2::1 0 0 0 slow 2672 + run_tests $ns1 $ns2 dead:beef:2::1 slow 2672 2673 chk_join_nr 1 1 1 2673 2674 fi 2674 2675 ··· 2680 2681 pm_nl_set_limits $ns2 2 4 2681 2682 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal 2682 2683 pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal 2683 - run_tests $ns1 $ns2 dead:beef:1::1 0 0 fullmesh_1 slow 2684 + addr_nr_ns2=fullmesh_1 \ 2685 + run_tests $ns1 $ns2 dead:beef:1::1 slow 2684 2686 chk_join_nr 4 4 4 2685 2687 fi 2686 2688 } ··· 2694 2694 pm_nl_set_limits $ns1 0 1 2695 2695 pm_nl_set_limits $ns2 0 1 2696 2696 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow,backup 2697 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow nobackup 2697 + sflags=nobackup \ 2698 + run_tests $ns1 $ns2 10.0.1.1 slow 2698 2699 chk_join_nr 1 1 1 2699 2700 chk_prio_nr 0 1 2700 2701 fi ··· 2706 2705 pm_nl_set_limits $ns1 0 1 2707 2706 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal 2708 2707 pm_nl_set_limits $ns2 1 1 2709 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup 2708 + sflags=backup \ 2709 + run_tests $ns1 $ns2 10.0.1.1 slow 2710 2710 chk_join_nr 1 1 1 2711 2711 chk_add_nr 1 1 2712 2712 chk_prio_nr 1 1 ··· 2719 2717 pm_nl_set_limits $ns1 0 1 2720 2718 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 2721 2719 pm_nl_set_limits $ns2 1 1 2722 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup 2720 + sflags=backup \ 2721 + run_tests $ns1 $ns2 10.0.1.1 slow 2723 2722 chk_join_nr 1 1 1 2724 2723 chk_add_nr 1 1 2725 2724 chk_prio_nr 1 1 ··· 2729 2726 if reset "mpc backup" && 2730 2727 continue_if mptcp_lib_kallsyms_doesnt_have "mptcp_subflow_send_ack$"; then 2731 2728 pm_nl_add_endpoint $ns2 10.0.1.2 flags subflow,backup 2732 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow 2729 + run_tests $ns1 $ns2 10.0.1.1 slow 2733 2730 chk_join_nr 0 0 0 2734 2731 chk_prio_nr 0 1 2735 2732 fi ··· 2738 2735 continue_if mptcp_lib_kallsyms_doesnt_have "mptcp_subflow_send_ack$"; then 2739 2736 pm_nl_add_endpoint $ns1 10.0.1.1 flags subflow,backup 2740 2737 pm_nl_add_endpoint $ns2 10.0.1.2 flags subflow,backup 2741 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow 2738 + run_tests $ns1 $ns2 10.0.1.1 slow 2742 2739 chk_join_nr 0 0 0 2743 2740 chk_prio_nr 1 1 2744 2741 fi ··· 2746 2743 if reset "mpc switch to backup" && 2747 2744 continue_if mptcp_lib_kallsyms_doesnt_have "mptcp_subflow_send_ack$"; then 2748 2745 pm_nl_add_endpoint $ns2 10.0.1.2 flags subflow 2749 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup 2746 + sflags=backup \ 2747 + run_tests $ns1 $ns2 10.0.1.1 slow 2750 2748 chk_join_nr 0 0 0 2751 2749 chk_prio_nr 0 1 2752 2750 fi ··· 2756 2752 continue_if mptcp_lib_kallsyms_doesnt_have "mptcp_subflow_send_ack$"; then 2757 2753 pm_nl_add_endpoint $ns1 10.0.1.1 flags subflow 2758 2754 pm_nl_add_endpoint $ns2 10.0.1.2 flags subflow 2759 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup 2755 + sflags=backup \ 2756 + run_tests $ns1 $ns2 10.0.1.1 slow 2760 2757 chk_join_nr 0 0 0 2761 2758 chk_prio_nr 1 1 2762 2759 fi ··· 2846 2841 pm_nl_set_limits $ns1 0 1 2847 2842 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 2848 2843 pm_nl_set_limits $ns2 1 1 2849 - run_tests $ns1 $ns2 10.0.1.1 0 -1 0 slow 2844 + addr_nr_ns1=-1 \ 2845 + run_tests $ns1 $ns2 10.0.1.1 slow 2850 2846 chk_join_nr 1 1 1 2851 2847 chk_add_nr 1 1 1 2852 2848 chk_rm_nr 1 1 invert ··· 2863 2857 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal port 10100 2864 2858 pm_nl_set_limits $ns2 1 2 2865 2859 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow 2866 - run_tests $ns1 $ns2 10.0.1.1 0 -1 -1 slow 2860 + addr_nr_ns1=-1 addr_nr_ns2=-1 \ 2861 + run_tests $ns1 $ns2 10.0.1.1 slow 2867 2862 chk_join_nr 2 2 2 2868 2863 chk_add_nr 1 1 1 2869 2864 chk_rm_nr 1 1 ··· 2877 2870 pm_nl_set_limits $ns2 1 3 2878 2871 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow 2879 2872 pm_nl_add_endpoint $ns2 10.0.4.2 flags subflow 2880 - run_tests $ns1 $ns2 10.0.1.1 0 -8 -2 slow 2873 + addr_nr_ns1=-8 addr_nr_ns2=-2 \ 2874 + run_tests $ns1 $ns2 10.0.1.1 slow 2881 2875 chk_join_nr 3 3 3 2882 2876 chk_add_nr 1 1 2883 2877 chk_rm_nr 1 3 invert simult ··· 3080 3072 pm_nl_set_limits $ns2 1 4 3081 3073 pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow,fullmesh 3082 3074 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow,fullmesh 3083 - run_tests $ns1 $ns2 10.0.1.1 0 1 0 slow 3075 + addr_nr_ns1=1 \ 3076 + run_tests $ns1 $ns2 10.0.1.1 slow 3084 3077 chk_join_nr 4 4 4 3085 3078 chk_add_nr 1 1 3086 3079 fi ··· 3093 3084 pm_nl_set_limits $ns1 1 3 3094 3085 pm_nl_set_limits $ns2 1 3 3095 3086 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal 3096 - run_tests $ns1 $ns2 10.0.1.1 0 0 fullmesh_1 slow 3087 + addr_nr_ns2=fullmesh_1 \ 3088 + run_tests $ns1 $ns2 10.0.1.1 slow 3097 3089 chk_join_nr 3 3 3 3098 3090 chk_add_nr 1 1 3099 3091 fi ··· 3106 3096 pm_nl_set_limits $ns1 2 5 3107 3097 pm_nl_set_limits $ns2 1 5 3108 3098 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal 3109 - run_tests $ns1 $ns2 10.0.1.1 0 0 fullmesh_2 slow 3099 + addr_nr_ns2=fullmesh_2 \ 3100 + run_tests $ns1 $ns2 10.0.1.1 slow 3110 3101 chk_join_nr 5 5 5 3111 3102 chk_add_nr 1 1 3112 3103 fi ··· 3120 3109 pm_nl_set_limits $ns1 2 4 3121 3110 pm_nl_set_limits $ns2 1 4 3122 3111 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal 3123 - run_tests $ns1 $ns2 10.0.1.1 0 0 fullmesh_2 slow 3112 + addr_nr_ns2=fullmesh_2 \ 3113 + run_tests $ns1 $ns2 10.0.1.1 slow 3124 3114 chk_join_nr 4 4 4 3125 3115 chk_add_nr 1 1 3126 3116 fi ··· 3132 3120 pm_nl_set_limits $ns1 4 4 3133 3121 pm_nl_add_endpoint $ns1 10.0.2.1 flags subflow 3134 3122 pm_nl_set_limits $ns2 4 4 3135 - run_tests $ns1 $ns2 10.0.1.1 0 0 1 slow fullmesh 3123 + addr_nr_ns2=1 sflags=fullmesh \ 3124 + run_tests $ns1 $ns2 10.0.1.1 slow 3136 3125 chk_join_nr 2 2 2 3137 3126 chk_rm_nr 0 1 3138 3127 fi ··· 3144 3131 pm_nl_set_limits $ns1 4 4 3145 3132 pm_nl_add_endpoint $ns1 10.0.2.1 flags subflow,fullmesh 3146 3133 pm_nl_set_limits $ns2 4 4 3147 - run_tests $ns1 $ns2 10.0.1.1 0 0 fullmesh_1 slow nofullmesh 3134 + addr_nr_ns2=fullmesh_1 sflags=nofullmesh \ 3135 + run_tests $ns1 $ns2 10.0.1.1 slow 3148 3136 chk_join_nr 2 2 2 3149 3137 chk_rm_nr 0 1 3150 3138 fi ··· 3156 3142 pm_nl_set_limits $ns1 4 4 3157 3143 pm_nl_add_endpoint $ns1 10.0.2.1 flags subflow 3158 3144 pm_nl_set_limits $ns2 4 4 3159 - run_tests $ns1 $ns2 10.0.1.1 0 0 1 slow backup,fullmesh 3145 + addr_nr_ns2=1 sflags=backup,fullmesh \ 3146 + run_tests $ns1 $ns2 10.0.1.1 slow 3160 3147 chk_join_nr 2 2 2 3161 3148 chk_prio_nr 0 1 3162 3149 chk_rm_nr 0 1 ··· 3169 3154 pm_nl_set_limits $ns1 4 4 3170 3155 pm_nl_set_limits $ns2 4 4 3171 3156 pm_nl_add_endpoint $ns2 10.0.2.2 flags subflow,backup,fullmesh 3172 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow nobackup,nofullmesh 3157 + sflags=nobackup,nofullmesh \ 3158 + run_tests $ns1 $ns2 10.0.1.1 slow 3173 3159 chk_join_nr 2 2 2 3174 3160 chk_prio_nr 0 1 3175 3161 chk_rm_nr 0 1 ··· 3180 3164 fastclose_tests() 3181 3165 { 3182 3166 if reset_check_counter "fastclose test" "MPTcpExtMPFastcloseTx"; then 3183 - run_tests $ns1 $ns2 10.0.1.1 1024 0 fastclose_client 3167 + test_linkfail=1024 addr_nr_ns2=fastclose_client \ 3168 + run_tests $ns1 $ns2 10.0.1.1 3184 3169 chk_join_nr 0 0 0 3185 3170 chk_fclose_nr 1 1 3186 3171 chk_rst_nr 1 1 invert 3187 3172 fi 3188 3173 3189 3174 if reset_check_counter "fastclose server test" "MPTcpExtMPFastcloseRx"; then 3190 - run_tests $ns1 $ns2 10.0.1.1 1024 0 fastclose_server 3175 + test_linkfail=1024 addr_nr_ns2=fastclose_server \ 3176 + run_tests $ns1 $ns2 10.0.1.1 3191 3177 chk_join_nr 0 0 0 3192 3178 chk_fclose_nr 1 1 invert 3193 3179 chk_rst_nr 1 1 ··· 3207 3189 { 3208 3190 # single subflow 3209 3191 if reset_with_fail "Infinite map" 1; then 3210 - run_tests $ns1 $ns2 10.0.1.1 128 3192 + test_linkfail=128 \ 3193 + run_tests $ns1 $ns2 10.0.1.1 3211 3194 chk_join_nr 0 0 0 +1 +0 1 0 1 "$(pedit_action_pkts)" 3212 3195 chk_fail_nr 1 -1 invert 3213 3196 fi ··· 3219 3200 pm_nl_set_limits $ns1 0 1 3220 3201 pm_nl_set_limits $ns2 0 1 3221 3202 pm_nl_add_endpoint $ns2 10.0.2.2 dev ns2eth2 flags subflow 3222 - run_tests $ns1 $ns2 10.0.1.1 1024 3203 + test_linkfail=1024 \ 3204 + run_tests $ns1 $ns2 10.0.1.1 3223 3205 chk_join_nr 1 1 1 1 0 1 1 0 "$(pedit_action_pkts)" 3224 3206 fi 3207 + } 3208 + 3209 + userspace_pm_add_addr() 3210 + { 3211 + local addr=$1 3212 + local id=$2 3213 + local tk 3214 + 3215 + tk=$(grep "type:1," "$evts_ns1" | 3216 + sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q') 3217 + ip netns exec $ns1 ./pm_nl_ctl ann $addr token $tk id $id 3218 + sleep 1 3219 + } 3220 + 3221 + userspace_pm_rm_sf_addr_ns1() 3222 + { 3223 + local addr=$1 3224 + local id=$2 3225 + local tk sp da dp 3226 + 3227 + tk=$(grep "type:1," "$evts_ns1" | 3228 + sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q') 3229 + sp=$(grep "type:10" "$evts_ns1" | 3230 + sed -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q') 3231 + da=$(grep "type:10" "$evts_ns1" | 3232 + sed -n 's/.*\(daddr6:\)\([0-9a-f:.]*\).*$/\2/p;q') 3233 + dp=$(grep "type:10" "$evts_ns1" | 3234 + sed -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q') 3235 + ip netns exec $ns1 ./pm_nl_ctl rem token $tk id $id 3236 + ip netns exec $ns1 ./pm_nl_ctl dsf lip "::ffff:$addr" \ 3237 + lport $sp rip $da rport $dp token $tk 3238 + wait_rm_addr $ns1 1 3239 + wait_rm_sf $ns1 1 3240 + } 3241 + 3242 + userspace_pm_add_sf() 3243 + { 3244 + local addr=$1 3245 + local id=$2 3246 + local tk da dp 3247 + 3248 + tk=$(sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2") 3249 + da=$(sed -n 's/.*\(daddr4:\)\([0-9.]*\).*$/\2/p;q' "$evts_ns2") 3250 + dp=$(sed -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2") 3251 + ip netns exec $ns2 ./pm_nl_ctl csf lip $addr lid $id \ 3252 + rip $da rport $dp token $tk 3253 + sleep 1 3254 + } 3255 + 3256 + userspace_pm_rm_sf_addr_ns2() 3257 + { 3258 + local addr=$1 3259 + local id=$2 3260 + local tk da dp sp 3261 + 3262 + tk=$(sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2") 3263 + da=$(sed -n 's/.*\(daddr4:\)\([0-9.]*\).*$/\2/p;q' "$evts_ns2") 3264 + dp=$(sed -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2") 3265 + sp=$(grep "type:10" "$evts_ns2" | 3266 + sed -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q') 3267 + ip netns exec $ns2 ./pm_nl_ctl rem token $tk id $id 3268 + ip netns exec $ns2 ./pm_nl_ctl dsf lip $addr lport $sp \ 3269 + rip $da rport $dp token $tk 3270 + wait_rm_addr $ns2 1 3271 + wait_rm_sf $ns2 1 3225 3272 } 3226 3273 3227 3274 userspace_tests() ··· 3345 3260 pm_nl_set_limits $ns1 1 1 3346 3261 pm_nl_set_limits $ns2 1 1 3347 3262 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow 3348 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup 3263 + sflags=backup \ 3264 + run_tests $ns1 $ns2 10.0.1.1 slow 3349 3265 chk_join_nr 1 1 0 3350 3266 chk_prio_nr 0 0 3351 3267 fi ··· 3359 3273 pm_nl_set_limits $ns1 0 1 3360 3274 pm_nl_set_limits $ns2 0 1 3361 3275 pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow 3362 - run_tests $ns1 $ns2 10.0.1.1 0 0 -1 slow 3276 + addr_nr_ns2=-1 \ 3277 + run_tests $ns1 $ns2 10.0.1.1 slow 3363 3278 chk_join_nr 0 0 0 3364 3279 chk_rm_nr 0 0 3365 3280 fi ··· 3370 3283 continue_if mptcp_lib_has_file '/proc/sys/net/mptcp/pm_type'; then 3371 3284 set_userspace_pm $ns1 3372 3285 pm_nl_set_limits $ns2 1 1 3373 - run_tests $ns1 $ns2 10.0.1.1 0 userspace_1 0 slow 3286 + run_tests $ns1 $ns2 10.0.1.1 speed_10 & 3287 + local tests_pid=$! 3288 + wait_mpj $ns1 3289 + userspace_pm_add_addr 10.0.2.1 10 3374 3290 chk_join_nr 1 1 1 3375 3291 chk_add_nr 1 1 3292 + chk_mptcp_info subflows 1 subflows 1 3293 + chk_mptcp_info add_addr_signal 1 add_addr_accepted 1 3294 + userspace_pm_rm_sf_addr_ns1 10.0.2.1 10 3376 3295 chk_rm_nr 1 1 invert 3296 + chk_mptcp_info subflows 0 subflows 0 3377 3297 kill_events_pids 3298 + wait $tests_pid 3378 3299 fi 3379 3300 3380 3301 # userspace pm create destroy subflow ··· 3390 3295 continue_if mptcp_lib_has_file '/proc/sys/net/mptcp/pm_type'; then 3391 3296 set_userspace_pm $ns2 3392 3297 pm_nl_set_limits $ns1 0 1 3393 - run_tests $ns1 $ns2 10.0.1.1 0 0 userspace_1 slow 3298 + run_tests $ns1 $ns2 10.0.1.1 speed_10 & 3299 + local tests_pid=$! 3300 + wait_mpj $ns2 3301 + userspace_pm_add_sf 10.0.3.2 20 3394 3302 chk_join_nr 1 1 1 3303 + chk_mptcp_info subflows 1 subflows 1 3304 + userspace_pm_rm_sf_addr_ns2 10.0.3.2 20 3395 3305 chk_rm_nr 1 1 3306 + chk_mptcp_info subflows 0 subflows 0 3396 3307 kill_events_pids 3308 + wait $tests_pid 3397 3309 fi 3398 3310 } 3399 3311 ··· 3413 3311 pm_nl_set_limits $ns1 2 2 3414 3312 pm_nl_set_limits $ns2 2 2 3415 3313 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal 3416 - run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow 2>/dev/null & 3314 + run_tests $ns1 $ns2 10.0.1.1 slow 2>/dev/null & 3417 3315 3418 3316 wait_mpj $ns1 3419 3317 pm_nl_check_endpoint 1 "creation" \ 3420 3318 $ns2 10.0.2.2 id 1 flags implicit 3319 + chk_mptcp_info subflows 1 subflows 1 3320 + chk_mptcp_info add_addr_signal 1 add_addr_accepted 1 3421 3321 3422 3322 pm_nl_add_endpoint $ns2 10.0.2.2 id 33 3423 3323 pm_nl_check_endpoint 0 "ID change is prevented" \ ··· 3436 3332 pm_nl_set_limits $ns1 1 1 3437 3333 pm_nl_set_limits $ns2 1 1 3438 3334 pm_nl_add_endpoint $ns2 10.0.2.2 id 2 dev ns2eth2 flags subflow 3439 - run_tests $ns1 $ns2 10.0.1.1 4 0 0 speed_20 2>/dev/null & 3335 + test_linkfail=4 \ 3336 + run_tests $ns1 $ns2 10.0.1.1 speed_20 2>/dev/null & 3440 3337 3441 3338 wait_mpj $ns2 3442 3339 chk_subflow_nr needtitle "before delete" 2 3443 - chk_mptcp_info subflows_1 3340 + chk_mptcp_info subflows 1 subflows 1 3444 3341 3445 3342 pm_nl_del_endpoint $ns2 2 10.0.2.2 3446 3343 sleep 0.5 3447 3344 chk_subflow_nr "" "after delete" 1 3448 - chk_mptcp_info subflows_0 3345 + chk_mptcp_info subflows 0 subflows 0 3449 3346 3450 3347 pm_nl_add_endpoint $ns2 10.0.2.2 dev ns2eth2 flags subflow 3451 3348 wait_mpj $ns2 3452 3349 chk_subflow_nr "" "after re-add" 2 3453 - chk_mptcp_info subflows_1 3350 + chk_mptcp_info subflows 1 subflows 1 3454 3351 kill_tests_wait 3455 3352 fi 3456 3353 }