Commit 24733e19 authored by Matthieu Baerts (NGI0)'s avatar Matthieu Baerts (NGI0) Committed by Jakub Kicinski
Browse files

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: 702c2f64 ("mptcp: netlink: allow userspace-driven subflow establishment")
Reviewed-by: default avatarMat Martineau <martineau@kernel.org>
Signed-off-by: default avatarMatthieu 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: default avatarJakub Kicinski <kuba@kernel.org>
parent 2293c574
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -188,6 +188,13 @@ static int capture_events(int fd, int event_group)
					fprintf(stderr, ",error:%u", *(__u8 *)RTA_DATA(attrs));
				else if (attrs->rta_type == MPTCP_ATTR_SERVER_SIDE)
					fprintf(stderr, ",server_side:%u", *(__u8 *)RTA_DATA(attrs));
				else if (attrs->rta_type == MPTCP_ATTR_FLAGS) {
					__u16 flags = *(__u16 *)RTA_DATA(attrs);

					/* only print when present, easier */
					if (flags & MPTCP_PM_EV_FLAG_DENY_JOIN_ID0)
						fprintf(stderr, ",deny_join_id0:1");
				}

				attrs = RTA_NEXT(attrs, msg_len);
			}
+11 −3
Original line number Diff line number Diff line
@@ -201,6 +201,9 @@ make_connection()
		is_v6="v4"
	fi

	# set this on the client side only: will not affect the rest
	ip netns exec "$ns2" sysctl -q net.mptcp.allow_join_initial_addr_port=0

	:>"$client_evts"
	:>"$server_evts"

@@ -223,23 +226,28 @@ make_connection()
	local client_token
	local client_port
	local client_serverside
	local client_nojoin
	local server_token
	local server_serverside
	local server_nojoin

	client_token=$(mptcp_lib_evts_get_info token "$client_evts")
	client_port=$(mptcp_lib_evts_get_info sport "$client_evts")
	client_serverside=$(mptcp_lib_evts_get_info server_side "$client_evts")
	client_nojoin=$(mptcp_lib_evts_get_info deny_join_id0 "$client_evts")
	server_token=$(mptcp_lib_evts_get_info token "$server_evts")
	server_serverside=$(mptcp_lib_evts_get_info server_side "$server_evts")
	server_nojoin=$(mptcp_lib_evts_get_info deny_join_id0 "$server_evts")

	print_test "Established IP${is_v6} MPTCP Connection ns2 => ns1"
	if [ "$client_token" != "" ] && [ "$server_token" != "" ] && [ "$client_serverside" = 0 ] &&
		   [ "$server_serverside" = 1 ]
	if [ "${client_token}" != "" ] && [ "${server_token}" != "" ] &&
	   [ "${client_serverside}" = 0 ] && [ "${server_serverside}" = 1 ] &&
	   [ "${client_nojoin:-0}" = 0 ] && [ "${server_nojoin:-0}" = 1 ]
	then
		test_pass
		print_title "Connection info: ${client_addr}:${client_port} -> ${connect_addr}:${app_port}"
	else
		test_fail "Expected tokens (c:${client_token} - s:${server_token}) and server (c:${client_serverside} - s:${server_serverside})"
		test_fail "Expected tokens (c:${client_token} - s:${server_token}), server (c:${client_serverside} - s:${server_serverside}), nojoin (c:${client_nojoin} - s:${server_nojoin})"
		mptcp_lib_result_print_all_tap
		exit ${KSFT_FAIL}
	fi