Skip to content

Commit 24733e1

Browse files
matttbekuba-moo
authored andcommitted
selftests: mptcp: userspace pm: validate deny-join-id0 flag
The previous commit adds the MPTCP_PM_EV_FLAG_DENY_JOIN_ID0 flag. Make sure it is correctly announced by the other peer when it has been received. pm_nl_ctl will now display 'deny_join_id0:1' when monitoring the events, and when this flag was set by the other peer. The 'Fixes' tag here below is the same as the one from the previous commit: this patch here is not fixing anything wrong in the selftests, but it validates the previous fix for an issue introduced by this commit ID. Fixes: 702c2f6 ("mptcp: netlink: allow userspace-driven subflow establishment") Reviewed-by: Mat Martineau <martineau@kernel.org> Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Link: https://patch.msgid.link/20250912-net-mptcp-pm-uspace-deny_join_id0-v1-3-40171884ade8@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 2293c57 commit 24733e1

2 files changed

Lines changed: 18 additions & 3 deletions

File tree

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,13 @@ static int capture_events(int fd, int event_group)
188188
fprintf(stderr, ",error:%u", *(__u8 *)RTA_DATA(attrs));
189189
else if (attrs->rta_type == MPTCP_ATTR_SERVER_SIDE)
190190
fprintf(stderr, ",server_side:%u", *(__u8 *)RTA_DATA(attrs));
191+
else if (attrs->rta_type == MPTCP_ATTR_FLAGS) {
192+
__u16 flags = *(__u16 *)RTA_DATA(attrs);
193+
194+
/* only print when present, easier */
195+
if (flags & MPTCP_PM_EV_FLAG_DENY_JOIN_ID0)
196+
fprintf(stderr, ",deny_join_id0:1");
197+
}
191198

192199
attrs = RTA_NEXT(attrs, msg_len);
193200
}

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

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,9 @@ make_connection()
201201
is_v6="v4"
202202
fi
203203

204+
# set this on the client side only: will not affect the rest
205+
ip netns exec "$ns2" sysctl -q net.mptcp.allow_join_initial_addr_port=0
206+
204207
:>"$client_evts"
205208
:>"$server_evts"
206209

@@ -223,23 +226,28 @@ make_connection()
223226
local client_token
224227
local client_port
225228
local client_serverside
229+
local client_nojoin
226230
local server_token
227231
local server_serverside
232+
local server_nojoin
228233

229234
client_token=$(mptcp_lib_evts_get_info token "$client_evts")
230235
client_port=$(mptcp_lib_evts_get_info sport "$client_evts")
231236
client_serverside=$(mptcp_lib_evts_get_info server_side "$client_evts")
237+
client_nojoin=$(mptcp_lib_evts_get_info deny_join_id0 "$client_evts")
232238
server_token=$(mptcp_lib_evts_get_info token "$server_evts")
233239
server_serverside=$(mptcp_lib_evts_get_info server_side "$server_evts")
240+
server_nojoin=$(mptcp_lib_evts_get_info deny_join_id0 "$server_evts")
234241

235242
print_test "Established IP${is_v6} MPTCP Connection ns2 => ns1"
236-
if [ "$client_token" != "" ] && [ "$server_token" != "" ] && [ "$client_serverside" = 0 ] &&
237-
[ "$server_serverside" = 1 ]
243+
if [ "${client_token}" != "" ] && [ "${server_token}" != "" ] &&
244+
[ "${client_serverside}" = 0 ] && [ "${server_serverside}" = 1 ] &&
245+
[ "${client_nojoin:-0}" = 0 ] && [ "${server_nojoin:-0}" = 1 ]
238246
then
239247
test_pass
240248
print_title "Connection info: ${client_addr}:${client_port} -> ${connect_addr}:${app_port}"
241249
else
242-
test_fail "Expected tokens (c:${client_token} - s:${server_token}) and server (c:${client_serverside} - s:${server_serverside})"
250+
test_fail "Expected tokens (c:${client_token} - s:${server_token}), server (c:${client_serverside} - s:${server_serverside}), nojoin (c:${client_nojoin} - s:${server_nojoin})"
243251
mptcp_lib_result_print_all_tap
244252
exit ${KSFT_FAIL}
245253
fi

0 commit comments

Comments
 (0)