From nobody Thu Nov 27 12:38:49 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B731020468E; Mon, 24 Nov 2025 11:19:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763983184; cv=none; b=Rpudi3EdARtKFwJyv6hOh+oFbj4pWUtmnIIFJzujjw76WT27hSi8NypPWLdXyIfnZiVShRP+RJYI8tv8oGVK0jndEDxB0Wh2RfrkpiuPiF/ThYeBl4k6cCMywPXMF4koMu9omDfUYDB4PcY/6fJ+dz+TXgG7h3yo87OYZ6SBYVk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763983184; c=relaxed/simple; bh=C/4LF05n4+oEdELeQ5klZ3Zm0v1aNAXbUWk4Z8AZxn8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NeAKzek5yH5Z7ckoQXst7+TH0F8qEAUFLRDrDbSLBaNqk7cRjRZX+44lUmTrr7E9w4Aww2Fu4tSqQfJX8J7gVxyT5D7QVbGwsAHnKj19nzhoxp8wLYy58kc+eJLj53CP3rnoMaBsfzsOA9VKXzGeuVQMOpjURXNkNFsOsmh/3fA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=EzTKGFRe; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="EzTKGFRe" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A3501C4CEFB; Mon, 24 Nov 2025 11:19:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763983183; bh=C/4LF05n4+oEdELeQ5klZ3Zm0v1aNAXbUWk4Z8AZxn8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=EzTKGFReFpvF6R5Rt/GoaEVt7D6DbRG0CZ5Ak84YEgpPh9e9ZJTRD/GGlqwSuAKHU o1+OME07IpyS707nRbtSxKi+bAczEEutwpdOUzjPiIXizgdwCSsvl0oQDY5i59ub4E fv8mzSjScui+9ZzGBzoG3StQL8AjDb/oEgnqmuW9EALMV5BmqRSHn/Qf4XSEiyhEri Fy8kywTF+cqxUUB3JiBUlZMynOaQhpwwQZ4Cgk0uGXBLFr5ABrNIqo14BrbR6QiZnl sWIDuNjJItdQbbCX2P+fSpiaW+D2/UYfLh49BBTWxSWVV/u2okMZfN0Ez7zVgCA1NV oQNcGBHV2BW6A== From: "Matthieu Baerts (NGI0)" Date: Mon, 24 Nov 2025 12:19:21 +0100 Subject: [PATCH iproute2-net 1/6] MAINTAINERS: add entry for mptcp Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251124-iproute-mptcp-laminar-v1-1-e56437483fdf@kernel.org> References: <20251124-iproute-mptcp-laminar-v1-0-e56437483fdf@kernel.org> In-Reply-To: <20251124-iproute-mptcp-laminar-v1-0-e56437483fdf@kernel.org> To: Stephen Hemminger Cc: netdev@vger.kernel.org, MPTCP Linux , Mat Martineau , Geliang Tang , "Matthieu Baerts (NGI0)" , David Ahern X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=742; i=matttbe@kernel.org; h=from:subject:message-id; bh=C/4LF05n4+oEdELeQ5klZ3Zm0v1aNAXbUWk4Z8AZxn8=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJV7D3iVOMse+JEFjSevHs0/RsT0yZb8/6HsYviBB9kN /p+UfvcUcrCIMbFICumyCLdFpk/83kVb4mXnwXMHFYmkCEMXJwCMBEBG0aGri7d/llGQfON049+ m+uvdWH3q58KvEa9oVqMh4Ib6y40MTLsfHYo33qnUN+W19w7z/Mv8l0qG7r/Fc+GenfpQwpLXlX zAwA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Add Matthieu as main maintainer, but also the MPTCP Linux mailing list to reach more people interested by MPTCP when submitting patches on this subject. Signed-off-by: Matthieu Baerts (NGI0) --- MAINTAINERS | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 51833ec1..2d13c752 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -42,6 +42,13 @@ devlink M: Jiri Pirko F: devlink/* =20 +Multipath TCP - mptcp +M: Matthieu Baerts +L: mptcp@lists.linux.dev +F: ip/ipmptcp.c +F: man/man8/ip-mptcp.8 +K: mptcp + netkit M: Daniel Borkmann M: Nikolay Aleksandrov --=20 2.51.0 From nobody Thu Nov 27 12:38:49 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 287C52FD7DE; Mon, 24 Nov 2025 11:19:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763983186; cv=none; b=HTtHD4dt6gvvWWWxUFkVosQ5ZF9ZyFzZ5DIVz2tq5l+E2/rA7UyJuFimuh0LDPNcIu5aelWAAIkzfIAgg6C2ISrX/ZPYeXIfYHteHZu54pahGhZp3/sw8eB/6v8VfzVCq0/m+FAIjKSimPdRIINWZUl/o8/+EGSlOGnp7KbN58E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763983186; c=relaxed/simple; bh=fti7cZNya1a374oe6jjffz6LN7YFMKsrRH1/Osl0Cgk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Bt8SrCKJxtt+n+DjWYUpvZ99u8jSDB7NrfkmxsZFDTw0YOHt7SS201WEsut09Mg+iMcFvrrjNPOWKlPmkk+gTLQhPiQH+xmuUsi108Nri4m0jiRKOoIVcFluTCdQQ9BcRtRi15zrIheW8BAdZVDEXRhY1l1zO6nPc5L9Zo2h9S8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=eLFnIBwg; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="eLFnIBwg" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4F9FBC4CEF1; Mon, 24 Nov 2025 11:19:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763983185; bh=fti7cZNya1a374oe6jjffz6LN7YFMKsrRH1/Osl0Cgk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=eLFnIBwgKyizQBgIyvEqkt2/5l/HAdTaZmz2sJbUMAuDcnAGk4HwA/5OZ4+fb5Om5 hifZqa1t9avaTqctpKcnt9coReDxEBuNIbyg9TUBh6V+OE4gAVaAQe+mU+oZgmzqdr q9C8ZonDkNVzionxeouZzSVNO0/C4qiFk+qMmtLzCCyoTvGp7qeQd6yTVRpJOY1ukz TbfcfHzffxioyHyoN1DGdpdeZM16N6xZJVsWVDGrn6l4Cvx4vHwiN3LqGEzQuNqMQ+ 7yxsqEEgSLO3oOJl/wz3Qyw36DPwEpwj2squ9hSWyiblOcYAInQDpKhCylnd/BqCtI cn0ZHceCZFq6w== From: "Matthieu Baerts (NGI0)" Date: Mon, 24 Nov 2025 12:19:22 +0100 Subject: [PATCH iproute2-net 2/6] man: mptcp: fix minor typos Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251124-iproute-mptcp-laminar-v1-2-e56437483fdf@kernel.org> References: <20251124-iproute-mptcp-laminar-v1-0-e56437483fdf@kernel.org> In-Reply-To: <20251124-iproute-mptcp-laminar-v1-0-e56437483fdf@kernel.org> To: Stephen Hemminger Cc: netdev@vger.kernel.org, MPTCP Linux , Mat Martineau , Geliang Tang , "Matthieu Baerts (NGI0)" , David Ahern X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1189; i=matttbe@kernel.org; h=from:subject:message-id; bh=fti7cZNya1a374oe6jjffz6LN7YFMKsrRH1/Osl0Cgk=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJV7D0Nnz08c/R99PwvTok7ngfbfOB43hR3zUdesOnT2 wPHuwvFOkpZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACYy4Qcjw5qW9uKY74anj/zb 0m6gtelr7vJfXUyrzggsZ1+gtvWuFDcjQ+Oz3iuBB8Lt77rxu1+L7Jn8rzBEQkMx8MExkcX68pr vOQA= X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 - 'signaled' -> 'signalled' - 'a implicit' -> 'an implicit' Signed-off-by: Matthieu Baerts (NGI0) --- man/man8/ip-mptcp.8 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/man/man8/ip-mptcp.8 b/man/man8/ip-mptcp.8 index e4a55f6c..500dc671 100644 --- a/man/man8/ip-mptcp.8 +++ b/man/man8/ip-mptcp.8 @@ -156,7 +156,7 @@ ID. =20 .TP .BR signal -The endpoint will be announced/signaled to each peer via an MPTCP ADD_ADDR +The endpoint will be announced/signalled to each peer via an MPTCP ADD_ADDR sub-option. Typically, a server would be responsible for this. Upon recept= ion of an ADD_ADDR sub-option, the other peer, typically the client side, can try= to create additional subflows, see @@ -207,7 +207,7 @@ is then optional. .BR implicit In some scenarios, an MPTCP .BR subflow -can use a local address mapped by a implicit endpoint created by the +can use a local address mapped by an implicit endpoint created by the in-kernel path manager. Once set, the implicit flag cannot be removed, but other flags can be added to the endpoint. Implicit endpoints cannot be created from user-space. --=20 2.51.0 From nobody Thu Nov 27 12:38:49 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 992D32FDC3C; Mon, 24 Nov 2025 11:19:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763983188; cv=none; b=ad+CmGZIYhac8dZ3YtmUFDyoSytqJ00HrCJjO1d/ms5UonuP8WrJbsScfcMPQn+q38dwagLAYliwLcnfFwPaPvM9qeSOShTF9il2b/mR4UrynvFbPUNAUUBbmfxUeBcJr/W+GagebhrPgkfoESlJ/FIdtnuBh+xwd2DEKNJDq0E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763983188; c=relaxed/simple; bh=zyLpxW28Q0T2f6/rD+Ss09t0Vdu9Bh+cK5fBHg2ssRA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cbBXO5At5jy2LN0U/RwK/fwL/2GMAjOslg/cs4UlT3qd5VX51wF0muhkS4K5/DmjRDFh8iq1fNLvOKfJgvieaDaoGRd2tr31XLYCHTxJRFfhy17GI+83CmYGKUkiAw1A3Qjdb/X/YXsjA0PQkvW2n8aAwj5dTF94cCjyfojQ5iM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=olT/0Ads; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="olT/0Ads" Received: by smtp.kernel.org (Postfix) with ESMTPSA id EFDE6C116D0; Mon, 24 Nov 2025 11:19:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763983187; bh=zyLpxW28Q0T2f6/rD+Ss09t0Vdu9Bh+cK5fBHg2ssRA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=olT/0AdsOwX4WUui+OFazvpUT2rK8iNJ3Lmp2oeKXxCOHCaLAK3IQ7XbSR+cFPHlZ tk53ZE1gDzgEKZVRfsKYduRQ+TJ1hyyF6B+QiodaX5qEK63Rri1zPzHLqUbg3xhrZe MsiySkKasKICIV9d6gV1g6RILFJOE7QMcLjfAIFN6PDj54NEd8fKkgB2veSzrhVavX PETS1Z1SDgBTAl6S+zplJBAR82Gr8gKVbcZKZa6547n4tW8kOw1wALkPEuE+NcDNCY vjdWz0ntlwgF2iKdB7UY51nR0F7XJARPJ83eQ5H80UtI4Np4batm+Wxinv7Ws2MfCQ 2P5pjHqO2QKQw== From: "Matthieu Baerts (NGI0)" Date: Mon, 24 Nov 2025 12:19:23 +0100 Subject: [PATCH iproute2-net 3/6] mptcp: add 'laminar' endpoint support Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251124-iproute-mptcp-laminar-v1-3-e56437483fdf@kernel.org> References: <20251124-iproute-mptcp-laminar-v1-0-e56437483fdf@kernel.org> In-Reply-To: <20251124-iproute-mptcp-laminar-v1-0-e56437483fdf@kernel.org> To: Stephen Hemminger Cc: netdev@vger.kernel.org, MPTCP Linux , Mat Martineau , Geliang Tang , "Matthieu Baerts (NGI0)" , David Ahern X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3754; i=matttbe@kernel.org; h=from:subject:message-id; bh=zyLpxW28Q0T2f6/rD+Ss09t0Vdu9Bh+cK5fBHg2ssRA=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJV7L0Ym7RkPgRI3LmyOXkDU3XqLz/mvw2XtP+evju7S SXz65sJHaUsDGJcDLJiiizSbZH5M59X8ZZ4+VnAzGFlAhnCwMUpABPpyGBk2Nr14XrEO3MNB4+T nUfKbjms+63xZOmS+vvM7hc7FCdmf2NkuHsxLOS2i9nU57cCZDm+Xbkl5C215eFrt+7Gn1s/7jr 8mREA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 This new endpoint type has been recently added to the kernel in v6.18 [1]. It will be used to create new subflows from the associated address to additional addresses announced by the other peer. This will be done if allowed by the MPTCP limits, and if the associated address is not already being used by another subflow from the same MPTCP connection. Note that the fullmesh flag takes precedence over the laminar one. Without any of these two flags, the path-manager will create new subflows to additional addresses announced by the other peer by selecting the source address from the routing tables, which is harder to configure if the announced address is not known in advance. The support of the new flag is easy: simply by adding it in the mptcp_addr_flag_names array. The usage menu and the manual now references the new endpoint type. The new corresponding counter has also been added in ss. Link: https://git.kernel.org/torvalds/c/539f6b9de39e [1] Signed-off-by: Matthieu Baerts (NGI0) --- ip/ipmptcp.c | 3 ++- man/man8/ip-mptcp.8 | 16 ++++++++++++++++ misc/ss.c | 2 ++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/ip/ipmptcp.c b/ip/ipmptcp.c index 2415cac8..2908b69e 100644 --- a/ip/ipmptcp.c +++ b/ip/ipmptcp.c @@ -32,7 +32,7 @@ static void usage(void) " ip mptcp limits show\n" " ip mptcp monitor\n" "FLAG-LIST :=3D [ FLAG-LIST ] FLAG\n" - "FLAG :=3D [ signal | subflow | backup | fullmesh ]\n" + "FLAG :=3D [ signal | subflow | laminar | backup | fullmesh ]\n" "CHANGE-OPT :=3D [ backup | nobackup | fullmesh | nofullmesh ]\n"); =20 exit(-1); @@ -59,6 +59,7 @@ static const struct { { "backup", MPTCP_PM_ADDR_FLAG_BACKUP }, { "fullmesh", MPTCP_PM_ADDR_FLAG_FULLMESH }, { "implicit", MPTCP_PM_ADDR_FLAG_IMPLICIT }, + { "laminar", MPTCP_PM_ADDR_FLAG_LAMINAR }, { "nobackup", MPTCP_PM_ADDR_FLAG_NONE }, { "nofullmesh", MPTCP_PM_ADDR_FLAG_NONE } }; diff --git a/man/man8/ip-mptcp.8 b/man/man8/ip-mptcp.8 index 500dc671..c03935dd 100644 --- a/man/man8/ip-mptcp.8 +++ b/man/man8/ip-mptcp.8 @@ -66,6 +66,8 @@ ip-mptcp \- MPTCP path manager configuration .RB "|" .B subflow .RB "|" +.B laminar +.RB "|" .B backup .RB "|" .B fullmesh @@ -169,6 +171,20 @@ path manager will try to create an additional subflow = using this endpoint as the source address after the MPTCP connection is established. A client = would typically do this. =20 +.TP +.BR laminar +The endpoint will be used to create new subflows from the associated addre= ss to +additional addresses announced by the other peer. This will be done if all= owed +by the MPTCP limits, and if the associated address is not already being us= ed by +another subflow from the same MPTCP connection. Note that the +.BR fullmesh +flag takes precedence over the +.BR laminar +one. Without any of these two flags, the path-manager will create new subf= lows +to additional addresses announced by the other peer by selecting the source +address from the routing tables, which is harder to configure if the annou= nced +address is not known in advance. + .TP .BR backup If this is a diff --git a/misc/ss.c b/misc/ss.c index 989e168a..b3566f6b 100644 --- a/misc/ss.c +++ b/misc/ss.c @@ -3308,6 +3308,8 @@ static void mptcp_stats_print(struct mptcp_info *s) out(" bytes_acked:%llu", s->mptcpi_bytes_acked); if (s->mptcpi_subflows_total) out(" subflows_total:%u", s->mptcpi_subflows_total); + if (s->mptcpi_endp_laminar_max) + out(" endp_laminar_max:%u", s->mptcpi_endp_laminar_max); if (s->mptcpi_last_data_sent) out(" last_data_sent:%u", s->mptcpi_last_data_sent); if (s->mptcpi_last_data_recv) --=20 2.51.0 From nobody Thu Nov 27 12:38:49 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C980E2FD692; Mon, 24 Nov 2025 11:19:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763983190; cv=none; b=Vb3DIvormZ93YTYwdBPIrwkeNLVDLUtJkJhwrqGP1SFUmRxTqI/o4LPN7HEDN4ZJ7GJeEsLwRmcF/DVjvYMlyuaaKoWni5V/j4nHJOqF/5B98DBGg/nJUXXMZhyN+LBTlCFmIOhTwz3c7iR9q/WVXfOAMbz+N5yPifArhLIjV3A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763983190; c=relaxed/simple; bh=33UMzi5ALatwQegwEyJbUX9t+OpATSj63Dck+HHNBac=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=I7sUp+VZe2GQ0+ITc2iD0EWy2xXSpxbcSo1m+0n9RiZWWiWEwmLasINfoe+gMsfh7x6GWpdLgHCXej5sg/LR9+I5IVsBEHqs0FeLDZ8pee96pLZFlfLgjumZ7EbBDusjjt/xzhUeIS5M+hgJClfTvFt2/CJmMfknVVN1riXppJs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=a1QvU+eC; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="a1QvU+eC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9B93BC4CEF1; Mon, 24 Nov 2025 11:19:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763983188; bh=33UMzi5ALatwQegwEyJbUX9t+OpATSj63Dck+HHNBac=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=a1QvU+eC8FsMLwO/b/53o+lQhkqXWYX8yrDCi/BRq+OdvnA7S730O87W/DTw+DotU C7GRV0Zmz+y+9XrpmaUp7TXFndxQi4kBH/qvbw4FBv8r/kCQ4hLJWvkwfVe+Pt8VZf SKtDYQAAbCytTFBClfCDbHDUw0tJ3ShcM9G/TtOXeiuWWWbQephhwn87k8S5JuMUGi z1CIupx/wxKuudp2KlqHRkkgQZvMdRKUUg5em70+aRDBJG/3EFOZ+suLBr6K2UZn3v sVecVOJSmVGxsoJUfzOSOSUwD8e26cHbd4Xqas7jJHkEad5UMx0TCOuwiEk/zYBTEs t76r3U5OtK+Qw== From: "Matthieu Baerts (NGI0)" Date: Mon, 24 Nov 2025 12:19:24 +0100 Subject: [PATCH iproute2-net 4/6] mptcp: monitor: add 'server side' info Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251124-iproute-mptcp-laminar-v1-4-e56437483fdf@kernel.org> References: <20251124-iproute-mptcp-laminar-v1-0-e56437483fdf@kernel.org> In-Reply-To: <20251124-iproute-mptcp-laminar-v1-0-e56437483fdf@kernel.org> To: Stephen Hemminger Cc: netdev@vger.kernel.org, MPTCP Linux , Mat Martineau , Geliang Tang , "Matthieu Baerts (NGI0)" , David Ahern X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1097; i=matttbe@kernel.org; h=from:subject:message-id; bh=33UMzi5ALatwQegwEyJbUX9t+OpATSj63Dck+HHNBac=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJV7L1rF767v/Vd+b63WQqVczct5F9bWxMv+drEaMLmn NnajmfSOkpZGMS4GGTFFFmk2yLzZz6v4i3x8rOAmcPKBDKEgYtTACaisZjhf8m2CRMMT8Um9t4R ZPs+Mau06/9zvnU3kyb53BKQcEg+zcbwP+yNY0ioOUeW3cachNkfFdO+/drtcejwSz+vxcLPKw7 cYQMA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 This info has been added a while ago in the kernel [1], but it was not displayed in 'ip monitor'. Now, 'server_side' is displayed if the attribute is defined and set to true. It looks better to do that instead of showing server_side=3D0. Note that since v6.18 [2], this attribute is only defined if it is set to true. Link: https://git.kernel.org/torvalds/c/41b3c69bf941 [1] Link: https://git.kernel.org/torvalds/c/c9809f03c158 [2] Signed-off-by: Matthieu Baerts (NGI0) --- ip/ipmptcp.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ip/ipmptcp.c b/ip/ipmptcp.c index 2908b69e..aaacc0a5 100644 --- a/ip/ipmptcp.c +++ b/ip/ipmptcp.c @@ -536,6 +536,8 @@ static int mptcp_monitor_msg(struct rtnl_ctrl_data *ctr= l, printf(" reset_reason=3D%u", rta_getattr_u32(tb[MPTCP_ATTR_RESET_REASON]= )); if (tb[MPTCP_ATTR_RESET_FLAGS]) printf(" reset_flags=3D0x%x", rta_getattr_u32(tb[MPTCP_ATTR_RESET_FLAGS]= )); + if (tb[MPTCP_ATTR_SERVER_SIDE] && rta_getattr_u8(tb[MPTCP_ATTR_SERVER_SID= E])) + printf(" server_side"); =20 puts(""); out: --=20 2.51.0 From nobody Thu Nov 27 12:38:49 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D6F542FDC43; Mon, 24 Nov 2025 11:19:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763983190; cv=none; b=XKXG0WNSx55CjISC7ENVWsS2XfjRJf657359KDYZMr2GLYpSU6Ogrg38k53JvMGcc5D/uOq6MW5sd0q+lPmXKjh4eP1WUdrxMsm0g45IBkM38M2WshxNVGmuD51HSSNiXPff7nbjHy3tfE8syFNLdupxQZZNZPMaBa0kL6u6044= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763983190; c=relaxed/simple; bh=bOQsq2XrOhtU0EBb/p1+2MsayISWWKNP/oCn0/irc+4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oE/AzvtvTlBDULwrmMRSDdKeybxUuMvaMAwuJCKmRLDUALdT6ddhiFljpUaADIV+2xR2+FVVLGrhe4ZXHD2/t8liFYzB47hQSzGhhSYoujjRRm7KzjivxgnO32NdZ3tBr2KIo+e3DYKBrc3jIRtNx0fG2EHSmvJWi5ZpTl8kViQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ebj1QtEo; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ebj1QtEo" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 46D10C19422; Mon, 24 Nov 2025 11:19:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763983190; bh=bOQsq2XrOhtU0EBb/p1+2MsayISWWKNP/oCn0/irc+4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ebj1QtEo/ND2pMi73mjwyELohJaW4fQMNLq7ZSoZuplsv+QCdvTWjiZ0jdBuAtKKr LBjoxB3Mc8d693XwZpsV+JGzLZKOppL7uuh66/q/dizq9fm1KnIPAduyr5zTBOX3Q+ MfT+fwYfbzF3zWNMYL5jZnliMZ3lmtZ7YONTo+bpbpOHP6vysRhePbaaoN3gTEJBWf hzY6P7SrA4955fmTNpxZBsTI7jcRUeEWjXDC662d2rs2hyCOUKMPGvrTu3IpzGMcsw 7OvfOxsjAmiK5Lkpons1DuKGSS86v+4TgpZaBfj24BoKEYgYwR6pDAU4p/IDqFFtbY u+UC1pGk0uErg== From: "Matthieu Baerts (NGI0)" Date: Mon, 24 Nov 2025 12:19:25 +0100 Subject: [PATCH iproute2-net 5/6] mptcp: monitor: add 'deny join id0' info Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251124-iproute-mptcp-laminar-v1-5-e56437483fdf@kernel.org> References: <20251124-iproute-mptcp-laminar-v1-0-e56437483fdf@kernel.org> In-Reply-To: <20251124-iproute-mptcp-laminar-v1-0-e56437483fdf@kernel.org> To: Stephen Hemminger Cc: netdev@vger.kernel.org, MPTCP Linux , Mat Martineau , Geliang Tang , "Matthieu Baerts (NGI0)" , David Ahern X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2296; i=matttbe@kernel.org; h=from:subject:message-id; bh=bOQsq2XrOhtU0EBb/p1+2MsayISWWKNP/oCn0/irc+4=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJV7L2bFjyduMDG7Nffx23992zYn/IfStNjkDq7e+PJk K+BVv8ed5SyMIhxMciKKbJIt0Xmz3xexVvi5WcBM4eVCWQIAxenAExkCy8jw2FTP9kt76zMSrf9 mqt9dSajIv+9tdYPLzftPHt/q3bf5nxGhmOKsjeKmycd/DBf2+hlG/8lLgEBVd2SmcXzTsslCx7 24AUA X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 Until recently, the 'flags' attribute was not used. This has recently been changed with the introduction of the 'deny_join_id0' flag [1]. This flag is set when a connection is created and the other peer set the 'C' flag in the MP_CAPABLE packets [2]. This flag can be set to tell the other side that the peer will not accept extra subflows requests sent to its initial IP address and port: typically set by a server behind a legacy Layer 4 load balancer. Now, when this flag is set, "deny_join_id0" will be printed instead of "flags=3D1". Unknown remaining flags will be printed in hexadecimal at the end, e.g. "flags=3D0x2". Link: https://git.kernel.org/torvalds/c/2293c57484ae [1] Link: https://datatracker.ietf.org/doc/html/rfc8684#section-3.1-20.6 [2] Signed-off-by: Matthieu Baerts (NGI0) --- ip/ipmptcp.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ip/ipmptcp.c b/ip/ipmptcp.c index aaacc0a5..01f6906f 100644 --- a/ip/ipmptcp.c +++ b/ip/ipmptcp.c @@ -477,6 +477,7 @@ static int mptcp_monitor_msg(struct rtnl_ctrl_data *ctr= l, const struct genlmsghdr *ghdr =3D NLMSG_DATA(n); struct rtattr *tb[MPTCP_ATTR_MAX + 1]; int len =3D n->nlmsg_len; + __u16 flags =3D 0; =20 len -=3D NLMSG_LENGTH(GENL_HDRLEN); if (len < 0) @@ -526,8 +527,6 @@ static int mptcp_monitor_msg(struct rtnl_ctrl_data *ctr= l, printf(" backup=3D%u", rta_getattr_u8(tb[MPTCP_ATTR_BACKUP])); if (tb[MPTCP_ATTR_ERROR]) printf(" error=3D%u", rta_getattr_u8(tb[MPTCP_ATTR_ERROR])); - if (tb[MPTCP_ATTR_FLAGS]) - printf(" flags=3D%x", rta_getattr_u16(tb[MPTCP_ATTR_FLAGS])); if (tb[MPTCP_ATTR_TIMEOUT]) printf(" timeout=3D%u", rta_getattr_u32(tb[MPTCP_ATTR_TIMEOUT])); if (tb[MPTCP_ATTR_IF_IDX]) @@ -539,6 +538,15 @@ static int mptcp_monitor_msg(struct rtnl_ctrl_data *ct= rl, if (tb[MPTCP_ATTR_SERVER_SIDE] && rta_getattr_u8(tb[MPTCP_ATTR_SERVER_SID= E])) printf(" server_side"); =20 + if (tb[MPTCP_ATTR_FLAGS]) + flags =3D rta_getattr_u16(tb[MPTCP_ATTR_FLAGS]); + if (flags & MPTCP_PM_EV_FLAG_DENY_JOIN_ID0) { + flags &=3D ~MPTCP_PM_EV_FLAG_DENY_JOIN_ID0; + printf(" deny_join_id0"); + } + if (flags) /* remaining bits */ + printf(" flags=3D0x%x", flags); + puts(""); out: fflush(stdout); --=20 2.51.0 From nobody Thu Nov 27 12:38:49 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E61132FE04F; Mon, 24 Nov 2025 11:19:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763983193; cv=none; b=FelZU/pDtUVAmQoz5v8FZ8DydGdcEmHepN+0wz6cHZWROEMHWA+MABA0MNdJ7CenXbbfOKwUCRZmk+x76Yn+2xQR19Lv4NaJgyIvwcx5bD+qSii3wZaOf7WNotFNco05wuZm3ER/eHWyj0QgwMQTaF5sUGMro8k0YBYgIMwtaoc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763983193; c=relaxed/simple; bh=Ijk5pe9mMQ9Z2WSXWd9d09O4dX0EBa2qbR1Hznf3iSQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gLKqYVzO4JPOWBsG0H1Sw+IIyH11Z1dYCed6ZNB/tf8NOaXq1gY1jyA6A3D7IQYb4+HG7FEeG8nI8NbVdxKmRByXycomu4jt6VC7JmEBtc7niFpjweefCnhUdyvj/Z7RUWw2Nenn4CG/RQDXOgyiRiEE30vpLMvSt32hAlOzJGk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OtBnu/Q6; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="OtBnu/Q6" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E69FAC116D0; Mon, 24 Nov 2025 11:19:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1763983192; bh=Ijk5pe9mMQ9Z2WSXWd9d09O4dX0EBa2qbR1Hznf3iSQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=OtBnu/Q6vcsuIzm0Rm60kGn1nRkIHAsRKnDft/Efaz+3ICQNiiLCNQh4Scab4x46l CeJl7bolEdZfN6FpvhimjulAHeQQMg/uRb53L2WJydKcTF4RY42ca4fhhHiRVEVkeL /3YmoVeUgrOBSFVDv3oCXSwkmyjxmsLhdEi+P6zIsmgR78mhrxX0mf7sI42PRhvG0D YVT/D0e8okjrX5u3CT8U1xAJ0faB7Ce6X/57Proiz0/Oz0UGF/QhmU2my49hw8u+4c k3IcmJdZFOpvk2UGQO9M0nrCTAu/uWMUBYG1sw4DQsvfNKtehSbbSltEFe8X1BECMh fFmcOfA/TR6fQ== From: "Matthieu Baerts (NGI0)" Date: Mon, 24 Nov 2025 12:19:26 +0100 Subject: [PATCH iproute2-net 6/6] mptcp: monitor: support 'server side' as a flag Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251124-iproute-mptcp-laminar-v1-6-e56437483fdf@kernel.org> References: <20251124-iproute-mptcp-laminar-v1-0-e56437483fdf@kernel.org> In-Reply-To: <20251124-iproute-mptcp-laminar-v1-0-e56437483fdf@kernel.org> To: Stephen Hemminger Cc: netdev@vger.kernel.org, MPTCP Linux , Mat Martineau , Geliang Tang , "Matthieu Baerts (NGI0)" , David Ahern X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1416; i=matttbe@kernel.org; h=from:subject:message-id; bh=Ijk5pe9mMQ9Z2WSXWd9d09O4dX0EBa2qbR1Hznf3iSQ=; b=owGbwMvMwCVWo/Th0Gd3rumMp9WSGDJV7H36Je9qZDpZa8k4hgYfWDXvTeP/yuq2oqROSbWbd zM/KpZ3lLIwiHExyIopski3RebPfF7FW+LlZwEzh5UJZAgDF6cATMT9DMM/BQ1G/V7ZKI+9O5Ou yC35sPin6PGlVrO/bDP1ncW/UdWEheF/cX2ojoxI/oElQmzT+3QEue839Tazqe5+omL98GMDpy8 nAA== X-Developer-Key: i=matttbe@kernel.org; a=openpgp; fpr=E8CB85F76877057A6E27F77AF6B7824F4269A073 In the v6.18 kernel, the 'server side' attribute has been deprecated [1] in favour of the 'server side' flag [2]. Support both: first checking the new flag, then the old attribute to continue supporting older kernels. Link: https://git.kernel.org/torvalds/c/c8bc168f5f3d [1] Link: https://git.kernel.org/torvalds/c/3d7ae91107b8 [2] Signed-off-by: Matthieu Baerts (NGI0) --- ip/ipmptcp.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ip/ipmptcp.c b/ip/ipmptcp.c index 01f6906f..acd008f3 100644 --- a/ip/ipmptcp.c +++ b/ip/ipmptcp.c @@ -535,11 +535,14 @@ static int mptcp_monitor_msg(struct rtnl_ctrl_data *c= trl, printf(" reset_reason=3D%u", rta_getattr_u32(tb[MPTCP_ATTR_RESET_REASON]= )); if (tb[MPTCP_ATTR_RESET_FLAGS]) printf(" reset_flags=3D0x%x", rta_getattr_u32(tb[MPTCP_ATTR_RESET_FLAGS]= )); - if (tb[MPTCP_ATTR_SERVER_SIDE] && rta_getattr_u8(tb[MPTCP_ATTR_SERVER_SID= E])) - printf(" server_side"); =20 if (tb[MPTCP_ATTR_FLAGS]) flags =3D rta_getattr_u16(tb[MPTCP_ATTR_FLAGS]); + if ((flags & MPTCP_PM_EV_FLAG_SERVER_SIDE) || + (tb[MPTCP_ATTR_SERVER_SIDE] && rta_getattr_u8(tb[MPTCP_ATTR_SERVER_SI= DE]))) { + flags &=3D ~MPTCP_PM_EV_FLAG_SERVER_SIDE; + printf(" server_side"); + } if (flags & MPTCP_PM_EV_FLAG_DENY_JOIN_ID0) { flags &=3D ~MPTCP_PM_EV_FLAG_DENY_JOIN_ID0; printf(" deny_join_id0"); --=20 2.51.0