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: 702c2f646d42 ("mptcp: netlink: allow userspace-driven subflow 
establishment")
Reviewed-by: Mat Martineau <martin...@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matt...@kernel.org>
---
 tools/testing/selftests/net/mptcp/pm_nl_ctl.c     |  7 +++++++
 tools/testing/selftests/net/mptcp/userspace_pm.sh | 14 +++++++++++---
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c 
b/tools/testing/selftests/net/mptcp/pm_nl_ctl.c
index 
994a556f46c15163bae6cb517c371801f0cd6e3b..93fea3442216c8fef43731a99c1d5710f234b150
 100644
--- a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c
+++ b/tools/testing/selftests/net/mptcp/pm_nl_ctl.c
@@ -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);
                        }
diff --git a/tools/testing/selftests/net/mptcp/userspace_pm.sh 
b/tools/testing/selftests/net/mptcp/userspace_pm.sh
index 
970c329735ff14f87f0048ba0030dc7edaaa86bc..3d45991f24ede919264185e3b5c2a3b95c1dcc85
 100755
--- a/tools/testing/selftests/net/mptcp/userspace_pm.sh
+++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh
@@ -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

-- 
2.51.0


Reply via email to