@@ -74,6 +74,17 @@ unset join_create_err
7474unset join_bind_err
7575unset join_connect_err
7676
77+ unset fb_ns1
78+ unset fb_ns2
79+ unset fb_infinite_map_tx
80+ unset fb_dss_corruption
81+ unset fb_simult_conn
82+ unset fb_mpc_passive
83+ unset fb_mpc_active
84+ unset fb_mpc_data
85+ unset fb_md5_sig
86+ unset fb_dss
87+
7788# generated using "nfbpf_compile '(ip && (ip[54] & 0xf0) == 0x30) ||
7889# (ip6 && (ip6[74] & 0xf0) == 0x30)'"
7990CBPF_MPTCP_SUBOPTION_ADD_ADDR=" 14,
@@ -1397,6 +1408,115 @@ chk_join_tx_nr()
13971408 print_results " join Tx" ${rc}
13981409}
13991410
1411+ chk_fallback_nr ()
1412+ {
1413+ local infinite_map_tx=${fb_infinite_map_tx:- 0}
1414+ local dss_corruption=${fb_dss_corruption:- 0}
1415+ local simult_conn=${fb_simult_conn:- 0}
1416+ local mpc_passive=${fb_mpc_passive:- 0}
1417+ local mpc_active=${fb_mpc_active:- 0}
1418+ local mpc_data=${fb_mpc_data:- 0}
1419+ local md5_sig=${fb_md5_sig:- 0}
1420+ local dss=${fb_dss:- 0}
1421+ local rc=${KSFT_PASS}
1422+ local ns=$1
1423+ local count
1424+
1425+ count=$( mptcp_lib_get_counter ${! ns} " MPTcpExtInfiniteMapTx" )
1426+ if [ -z " $count " ]; then
1427+ rc=${KSFT_SKIP}
1428+ elif [ " $count " != " $infinite_map_tx " ]; then
1429+ rc=${KSFT_FAIL}
1430+ print_check " $ns infinite map tx fallback"
1431+ fail_test " got $count infinite map tx fallback[s] in $ns expected $infinite_map_tx "
1432+ fi
1433+
1434+ count=$( mptcp_lib_get_counter ${! ns} " MPTcpExtDSSCorruptionFallback" )
1435+ if [ -z " $count " ]; then
1436+ rc=${KSFT_SKIP}
1437+ elif [ " $count " != " $dss_corruption " ]; then
1438+ rc=${KSFT_FAIL}
1439+ print_check " $ns dss corruption fallback"
1440+ fail_test " got $count dss corruption fallback[s] in $ns expected $dss_corruption "
1441+ fi
1442+
1443+ count=$( mptcp_lib_get_counter ${! ns} " MPTcpExtSimultConnectFallback" )
1444+ if [ -z " $count " ]; then
1445+ rc=${KSFT_SKIP}
1446+ elif [ " $count " != " $simult_conn " ]; then
1447+ rc=${KSFT_FAIL}
1448+ print_check " $ns simult conn fallback"
1449+ fail_test " got $count simult conn fallback[s] in $ns expected $simult_conn "
1450+ fi
1451+
1452+ count=$( mptcp_lib_get_counter ${! ns} " MPTcpExtMPCapableFallbackACK" )
1453+ if [ -z " $count " ]; then
1454+ rc=${KSFT_SKIP}
1455+ elif [ " $count " != " $mpc_passive " ]; then
1456+ rc=${KSFT_FAIL}
1457+ print_check " $ns mpc passive fallback"
1458+ fail_test " got $count mpc passive fallback[s] in $ns expected $mpc_passive "
1459+ fi
1460+
1461+ count=$( mptcp_lib_get_counter ${! ns} " MPTcpExtMPCapableFallbackSYNACK" )
1462+ if [ -z " $count " ]; then
1463+ rc=${KSFT_SKIP}
1464+ elif [ " $count " != " $mpc_active " ]; then
1465+ rc=${KSFT_FAIL}
1466+ print_check " $ns mpc active fallback"
1467+ fail_test " got $count mpc active fallback[s] in $ns expected $mpc_active "
1468+ fi
1469+
1470+ count=$( mptcp_lib_get_counter ${! ns} " MPTcpExtMPCapableDataFallback" )
1471+ if [ -z " $count " ]; then
1472+ rc=${KSFT_SKIP}
1473+ elif [ " $count " != " $mpc_data " ]; then
1474+ rc=${KSFT_FAIL}
1475+ print_check " $ns mpc data fallback"
1476+ fail_test " got $count mpc data fallback[s] in $ns expected $mpc_data "
1477+ fi
1478+
1479+ count=$( mptcp_lib_get_counter ${! ns} " MPTcpExtMD5SigFallback" )
1480+ if [ -z " $count " ]; then
1481+ rc=${KSFT_SKIP}
1482+ elif [ " $count " != " $md5_sig " ]; then
1483+ rc=${KSFT_FAIL}
1484+ print_check " $ns MD5 Sig fallback"
1485+ fail_test " got $count MD5 Sig fallback[s] in $ns expected $md5_sig "
1486+ fi
1487+
1488+ count=$( mptcp_lib_get_counter ${! ns} " MPTcpExtDssFallback" )
1489+ if [ -z " $count " ]; then
1490+ rc=${KSFT_SKIP}
1491+ elif [ " $count " != " $dss " ]; then
1492+ rc=${KSFT_FAIL}
1493+ print_check " $ns dss fallback"
1494+ fail_test " got $count dss fallback[s] in $ns expected $dss "
1495+ fi
1496+
1497+ return $rc
1498+ }
1499+
1500+ chk_fallback_nr_all ()
1501+ {
1502+ local netns=(" ns1" " ns2" )
1503+ local fb_ns=(" fb_ns1" " fb_ns2" )
1504+ local rc=${KSFT_PASS}
1505+
1506+ for i in 0 1; do
1507+ if [ -n " ${! fb_ns[i]} " ]; then
1508+ eval " ${! fb_ns[i]} " \
1509+ chk_fallback_nr ${netns[i]} || rc=${?}
1510+ else
1511+ chk_fallback_nr ${netns[i]} || rc=${?}
1512+ fi
1513+ done
1514+
1515+ if [ " ${rc} " != " ${KSFT_PASS} " ]; then
1516+ print_results " fallback" ${rc}
1517+ fi
1518+ }
1519+
14001520chk_join_nr ()
14011521{
14021522 local syn_nr=$1
@@ -1482,6 +1602,8 @@ chk_join_nr()
14821602 join_syn_tx=" ${join_syn_tx:- ${syn_nr} } " \
14831603 chk_join_tx_nr
14841604
1605+ chk_fallback_nr_all
1606+
14851607 if $validate_checksum ; then
14861608 chk_csum_nr $csum_ns1 $csum_ns2
14871609 chk_fail_nr $fail_nr $fail_nr
@@ -3334,6 +3456,7 @@ fail_tests()
33343456 join_csum_ns1=+1 join_csum_ns2=+0 \
33353457 join_fail_nr=1 join_rst_nr=0 join_infi_nr=1 \
33363458 join_corrupted_pkts=" $( pedit_action_pkts) " \
3459+ fb_ns1=" fb_dss=1" fb_ns2=" fb_infinite_map_tx=1" \
33373460 chk_join_nr 0 0 0
33383461 chk_fail_nr 1 -1 invert
33393462 fi
0 commit comments