Skip to content

Commit c912f93

Browse files
matttbekuba-moo
authored andcommitted
selftests: mptcp: join: validate new laminar endp
Here are a few sub-tests for mptcp_join.sh, validating the new 'laminar' endpoint type. In a setup where subflows created using the routing rules would be rejected by the listener, and where the latter announces one IP address, some cases are verified: - Without any 'laminar' endpoints: no new subflows are created. - With one 'laminar' endpoint: a second subflow is created. - With multiple 'laminar' endpoints: 2 IPv4 subflows are created. - With one 'laminar' endpoint, but the server announcing a second IP address, only one subflow is created. - With one 'laminar' + 'subflow' endpoint, the same endpoint is only used once. Reviewed-by: Mat Martineau <martineau@kernel.org> Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Link: https://patch.msgid.link/20250927-net-next-mptcp-rcv-path-imp-v1-8-5da266aa9c1a@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 59701b1 commit c912f93

2 files changed

Lines changed: 78 additions & 0 deletions

File tree

tools/testing/selftests/net/mptcp/mptcp_join.sh

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2320,6 +2320,74 @@ signal_address_tests()
23202320
fi
23212321
}
23222322

2323+
laminar_endp_tests()
2324+
{
2325+
# no laminar endpoints: routing rules are used
2326+
if reset_with_tcp_filter "without a laminar endpoint" ns1 10.0.2.2 REJECT &&
2327+
mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then
2328+
pm_nl_set_limits $ns1 0 2
2329+
pm_nl_set_limits $ns2 2 2
2330+
pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2331+
run_tests $ns1 $ns2 10.0.1.1
2332+
join_syn_tx=1 \
2333+
chk_join_nr 0 0 0
2334+
chk_add_nr 1 1
2335+
fi
2336+
2337+
# laminar endpoints: this endpoint is used
2338+
if reset_with_tcp_filter "with a laminar endpoint" ns1 10.0.2.2 REJECT &&
2339+
mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then
2340+
pm_nl_set_limits $ns1 0 2
2341+
pm_nl_set_limits $ns2 2 2
2342+
pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2343+
pm_nl_add_endpoint $ns2 10.0.3.2 flags laminar
2344+
run_tests $ns1 $ns2 10.0.1.1
2345+
chk_join_nr 1 1 1
2346+
chk_add_nr 1 1
2347+
fi
2348+
2349+
# laminar endpoints: these endpoints are used
2350+
if reset_with_tcp_filter "with multiple laminar endpoints" ns1 10.0.2.2 REJECT &&
2351+
mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then
2352+
pm_nl_set_limits $ns1 0 2
2353+
pm_nl_set_limits $ns2 2 2
2354+
pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2355+
pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
2356+
pm_nl_add_endpoint $ns2 dead:beef:3::2 flags laminar
2357+
pm_nl_add_endpoint $ns2 10.0.3.2 flags laminar
2358+
pm_nl_add_endpoint $ns2 10.0.4.2 flags laminar
2359+
run_tests $ns1 $ns2 10.0.1.1
2360+
chk_join_nr 2 2 2
2361+
chk_add_nr 2 2
2362+
fi
2363+
2364+
# laminar endpoints: only one endpoint is used
2365+
if reset_with_tcp_filter "single laminar endpoint" ns1 10.0.2.2 REJECT &&
2366+
mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then
2367+
pm_nl_set_limits $ns1 0 2
2368+
pm_nl_set_limits $ns2 2 2
2369+
pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2370+
pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
2371+
pm_nl_add_endpoint $ns2 10.0.3.2 flags laminar
2372+
run_tests $ns1 $ns2 10.0.1.1
2373+
chk_join_nr 1 1 1
2374+
chk_add_nr 2 2
2375+
fi
2376+
2377+
# laminar endpoints: subflow and laminar flags
2378+
if reset_with_tcp_filter "sublow + laminar endpoints" ns1 10.0.2.2 REJECT &&
2379+
mptcp_lib_kallsyms_has "mptcp_pm_get_endp_laminar_max$"; then
2380+
pm_nl_set_limits $ns1 0 4
2381+
pm_nl_set_limits $ns2 2 4
2382+
pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
2383+
pm_nl_add_endpoint $ns2 10.0.1.2 flags subflow,laminar
2384+
pm_nl_add_endpoint $ns2 10.0.3.2 flags subflow,laminar
2385+
run_tests $ns1 $ns2 10.0.1.1
2386+
chk_join_nr 1 1 1
2387+
chk_add_nr 1 1
2388+
fi
2389+
}
2390+
23232391
link_failure_tests()
23242392
{
23252393
# accept and use add_addr with additional subflows and link loss
@@ -4109,6 +4177,7 @@ all_tests_sorted=(
41094177
f@subflows_tests
41104178
e@subflows_error_tests
41114179
s@signal_address_tests
4180+
L@laminar_endp_tests
41124181
l@link_failure_tests
41134182
t@add_addr_timeout_tests
41144183
r@remove_tests

tools/testing/selftests/net/mptcp/pm_nl_ctl.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -830,6 +830,8 @@ int add_addr(int fd, int pm_family, int argc, char *argv[])
830830
flags |= MPTCP_PM_ADDR_FLAG_SUBFLOW;
831831
else if (!strcmp(tok, "signal"))
832832
flags |= MPTCP_PM_ADDR_FLAG_SIGNAL;
833+
else if (!strcmp(tok, "laminar"))
834+
flags |= MPTCP_PM_ADDR_FLAG_LAMINAR;
833835
else if (!strcmp(tok, "backup"))
834836
flags |= MPTCP_PM_ADDR_FLAG_BACKUP;
835837
else if (!strcmp(tok, "fullmesh"))
@@ -1018,6 +1020,13 @@ static void print_addr(struct rtattr *attrs, int len)
10181020
printf(",");
10191021
}
10201022

1023+
if (flags & MPTCP_PM_ADDR_FLAG_LAMINAR) {
1024+
printf("laminar");
1025+
flags &= ~MPTCP_PM_ADDR_FLAG_LAMINAR;
1026+
if (flags)
1027+
printf(",");
1028+
}
1029+
10211030
if (flags & MPTCP_PM_ADDR_FLAG_BACKUP) {
10221031
printf("backup");
10231032
flags &= ~MPTCP_PM_ADDR_FLAG_BACKUP;

0 commit comments

Comments
 (0)