From nobody Sun May 5 18:54:49 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a50:bae3:0:0:0:0:0 with SMTP id x90csp821124ede; Thu, 17 Mar 2022 08:35:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwqhLyNtM9bzon2VjnVwLkdR5F82v7z/oANkMzxZnIEZP60pI5X8Ya/C36MH75/DUBiRDkL X-Received: by 2002:a05:6a00:14c2:b0:4f7:aa97:b5e with SMTP id w2-20020a056a0014c200b004f7aa970b5emr5491436pfu.36.1647531306917; Thu, 17 Mar 2022 08:35:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647531306; cv=none; d=google.com; s=arc-20160816; b=tNz6YRYDz06rnvBPaZqj/yhhSTPQ3mDl5xoykq+qBDqy8sW04afZKTW2YCj5/jSj59 XNwtSz0UBey2VVtldWq8VbT2XAmPSzu6ll1BnpGmCP5D8P/mzarnnfzaeZmeo2dRf3QR Ah0J0Pz+tSIn4zAX35UCTjC3SnWZTxTZro3oq2saXQTzzbZR2cNiKady+8o4TVhIUrPl aAQWPPwrEs9EuXhwmMdWEA6L6LhykLAJTeT/hnp4smaVk/X6Obm29gE2dWg7oDBuR4BO UC5gZmIXLlTc6AHcTn9v/ncDXz7ZT5ex1Ti87qTIswLsTnAvlBhU43oEkxHFBZ2ysh2g Qrlw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:to:from:dkim-signature; bh=79sl1jlimzrqF3L/UrkcD3cXoWuhyt0bHF5YYlikgiY=; b=J6wO13WJiJFaR8l9eRl8/G/+OOE8VKMgkaWgGuW/jpC7AzLzVidznN2NynrHutBOMm 7DNDuTP0i0oTtOk28PM8fK2zgBafzVO3zleqDfS/hkiTyB6ak5b1F3gvIXf30vrgcG8v XRGwgZxY1Agw2Jlklr4h9vrF//Lv79AhV0R+QyJxLOZDks3suNxm5DAbyF6hWqP0P8/Q rFPImOoPR+t0tNzVHA1NbOuXt7HFaePcGFf+ZXXHqMCOFiNV/CTRSjjvsgWMpnp+gCrz 30oqPPowRshk4h9UFD+81WjFFw/TtVcNkLYB8uzZabJBeqgDPuKQuOrup1nxrX2XOdXj 3qqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=cHjcCle7; spf=pass (google.com: domain of mptcp+bounces-4285-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4285-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [147.75.69.165]) by mx.google.com with ESMTPS id bh28-20020a056a00309c00b004f7a71df3b4si4516466pfb.318.2022.03.17.08.35.06 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Mar 2022 08:35:06 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4285-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) client-ip=147.75.69.165; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=cHjcCle7; spf=pass (google.com: domain of mptcp+bounces-4285-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4285-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sjc.edge.kernel.org (Postfix) with ESMTPS id 56ADA3E0FEE for ; Thu, 17 Mar 2022 15:35:06 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C25C448A3; Thu, 17 Mar 2022 15:35:05 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) (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 4D8244378 for ; Thu, 17 Mar 2022 15:35:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647531304; x=1679067304; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=sNpLyf0/kmEdFE28G0FiYo3NuGRiHRzo9TrdggqbAbo=; b=cHjcCle7PWI3BkgF0Yoxy/HJuXrWtvyzDSQu4rqt0P7nu72fJonUZbQU 9ofdc2laEqPTjLyRWuSDY9yHWLSFbwjFZ/uEWNBg25EkoWq0ZJy8jrrn5 +hofQs0D+3qOMKGW0FyqZV56Q4w6M6NJUHvHt8kAHdgSX0v0Bbun4aDR3 VnHIyXe2AMWIFh9JcsyfSVZmPYi13PHd1bdNmUdc1M64wLpnaj0qQ4aMd rCzmNXlhFH4h8LhWX4QZE+zbcgsrdmVvVqTZVZMsCbmP5XtFnezsYGagH a1QxG/MHWSK0hjS5QnDZClAk6dFXIIYcpKprtWpJxLxDZ+KEK4ZR+oGnA Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10289"; a="237504877" X-IronPort-AV: E=Sophos;i="5.90,188,1643702400"; d="scan'208";a="237504877" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 08:35:02 -0700 X-IronPort-AV: E=Sophos;i="5.90,188,1643702400"; d="scan'208";a="516804199" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 08:35:01 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v7 1/5] mptcp: bypass in-kernel PM restrictions for non-kernel PMs Date: Thu, 17 Mar 2022 11:34:49 -0400 Message-Id: <20220317153453.665359-2-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220317153453.665359-1-kishen.maloor@intel.com> References: <20220317153453.665359-1-kishen.maloor@intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Current limits on the # of addresses/subflows must apply only to in-kernel PM managed sockets. Thus this change removes such restrictions on connections overseen by non-kernel (e.g. userspace) PMs. This change also ensures that the kernel does not record stats inside struct mptcp_pm_data updated along kernel code paths when exercised via non-kernel PMs. Additionally, address announcements are acknolwedged and subflow requests are honored only when it's deemed that a userspace path manager is active at the time. Signed-off-by: Kishen Maloor --- net/mptcp/pm.c | 13 +++++++++++-- net/mptcp/pm_netlink.c | 8 ++++++++ net/mptcp/protocol.h | 10 ++++++++-- net/mptcp/subflow.c | 4 +++- 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index d0d31d5c198a..5353340194c0 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -87,6 +87,12 @@ bool mptcp_pm_allow_new_subflow(struct mptcp_sock *msk) unsigned int subflows_max; int ret =3D 0; =20 + if (mptcp_pm_is_userspace(msk)) { + if (mptcp_userspace_pm_active(sock_net((struct sock *)msk))) + return true; + return false; + } + subflows_max =3D mptcp_pm_get_subflows_max(msk); =20 pr_debug("msk=3D%p subflows=3D%d max=3D%d allow=3D%d", msk, pm->subflows, @@ -179,7 +185,8 @@ void mptcp_pm_subflow_check_next(struct mptcp_sock *msk= , const struct sock *ssk, bool update_subflows; =20 update_subflows =3D (ssk->sk_state =3D=3D TCP_CLOSE) && - (subflow->request_join || subflow->mp_join); + (subflow->request_join || subflow->mp_join) && + mptcp_pm_is_kernel(msk); if (!READ_ONCE(pm->work_pending) && !update_subflows) return; =20 @@ -208,7 +215,9 @@ void mptcp_pm_add_addr_received(struct mptcp_sock *msk, =20 spin_lock_bh(&pm->lock); =20 - if (!READ_ONCE(pm->accept_addr) || mptcp_pm_is_userspace(msk)) { + if (!READ_ONCE(pm->accept_addr) || + (mptcp_pm_is_userspace(msk) && + mptcp_userspace_pm_active(sock_net((struct sock *)msk)))) { mptcp_pm_announce_addr(msk, addr, true); mptcp_pm_add_addr_send_ack(msk); } else if (mptcp_pm_schedule_work(msk, MPTCP_PM_ADD_ADDR_RECEIVED)) { diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index c1f4befb1e45..4f09eb97faff 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -796,6 +796,9 @@ static void mptcp_pm_nl_rm_addr_or_subflow(struct mptcp= _sock *msk, if (!removed) continue; =20 + if (!mptcp_pm_is_kernel(msk)) + continue; + if (rm_type =3D=3D MPTCP_MIB_RMADDR) { msk->pm.add_addr_accepted--; WRITE_ONCE(msk->pm.accept_addr, true); @@ -1846,6 +1849,11 @@ static void mptcp_nl_mcast_send(struct net *net, str= uct sk_buff *nlskb, gfp_t gf nlskb, 0, MPTCP_PM_EV_GRP_OFFSET, gfp); } =20 +bool mptcp_userspace_pm_active(struct net *net) +{ + return genl_has_listeners(&mptcp_genl_family, net, MPTCP_PM_EV_GRP_OFFSET= ); +} + static int mptcp_event_add_subflow(struct sk_buff *skb, const struct sock = *ssk) { const struct inet_sock *issk =3D inet_sk(ssk); diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index c8bada4537e2..1d8c58fb8cdc 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -781,6 +781,7 @@ void mptcp_event(enum mptcp_event_type type, const stru= ct mptcp_sock *msk, const struct sock *ssk, gfp_t gfp); void mptcp_event_addr_announced(const struct mptcp_sock *msk, const struct= mptcp_addr_info *info); void mptcp_event_addr_removed(const struct mptcp_sock *msk, u8 id); +bool mptcp_userspace_pm_active(struct net *net); =20 static inline bool mptcp_pm_should_add_signal(struct mptcp_sock *msk) { @@ -803,9 +804,14 @@ static inline bool mptcp_pm_should_rm_signal(struct mp= tcp_sock *msk) return READ_ONCE(msk->pm.addr_signal) & BIT(MPTCP_RM_ADDR_SIGNAL); } =20 -static inline bool mptcp_pm_is_userspace(struct mptcp_sock *msk) +static inline bool mptcp_pm_is_userspace(const struct mptcp_sock *msk) { - return READ_ONCE(msk->pm.pm_type) !=3D MPTCP_PM_TYPE_KERNEL; + return READ_ONCE(msk->pm.pm_type) =3D=3D MPTCP_PM_TYPE_USERSPACE; +} + +static inline bool mptcp_pm_is_kernel(const struct mptcp_sock *msk) +{ + return READ_ONCE(msk->pm.pm_type) =3D=3D MPTCP_PM_TYPE_KERNEL; } =20 static inline unsigned int mptcp_add_addr_len(int family, bool echo, bool = port) diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 30ffb00661bb..2fb78b4b3ca6 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -62,7 +62,9 @@ static void subflow_generate_hmac(u64 key1, u64 key2, u32= nonce1, u32 nonce2, static bool mptcp_can_accept_new_subflow(const struct mptcp_sock *msk) { return mptcp_is_fully_established((void *)msk) && - READ_ONCE(msk->pm.accept_subflow); + ((mptcp_pm_is_userspace(msk) && + mptcp_userspace_pm_active(sock_net((struct sock *)msk))) || + READ_ONCE(msk->pm.accept_subflow)); } =20 /* validate received token and create truncated hmac and nonce for SYN-ACK= */ --=20 2.31.1 From nobody Sun May 5 18:54:49 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a50:bae3:0:0:0:0:0 with SMTP id x90csp821148ede; Thu, 17 Mar 2022 08:35:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw26LNNQvI5rbK1FAoss8CfRKsTEa3KZ2Xj3jqcm2NxGhIqYqxUfEF2pFzqTcYS67WuLqzl X-Received: by 2002:a17:902:bd95:b0:14f:40ab:270e with SMTP id q21-20020a170902bd9500b0014f40ab270emr5586830pls.101.1647531308144; Thu, 17 Mar 2022 08:35:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647531308; cv=none; d=google.com; s=arc-20160816; b=O/RBDX7nNvdaQ1Ol4ow5Uv6C9Vt4HRPlSI4olAfPsrHok4CThEiI7uOihPyaRaRFcR hfFfsDuM0ceTeXzz8IDGoU8so5199twjTAqRgthUpz9EQFosEgvW9U2BGtzkcuOtklyK JNMf8ks54y/8BImv0uyjRxhO43lS7sxeU8j2Ik02a3zlwBicOnE0LFA/HhgZqWBo8cpV wF/dS+re3kzl4iMuNqjniga5QcHGlYmahWgkhBWdPxTUvSmDudYy4Doi4N8EclB0e33b gWEY4cq4pHLcXuXsb6omLRhyMChI9a6Mh8UEiUeiM/cK9JRCVnv/igIc9RsR3o69JSzf 7ELw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:to:from:dkim-signature; bh=/tfog3MEhGgkbeNpi4NJ3jS/MmEXT5tgVKuqnThNYwE=; b=Hy8F2sOohSjlyfRxf53CBLCBgEreug9YA1MqRvPim0Y+pLJsMhd9lWmyNoqTeo0DVb e2dLczHbl1Rtoou1Q/kwMNegeFvVplT29NX+G4fxUKsLBbYxhVULocWMeryBCgJ8kQaa Gfwbhk7Ko9zIQMbHBohc4ADlro0on5cLDEtuoen1yH2obM0cN7pixKd9N51vF01ff7u2 yp0d07htGFrH1e5v7oMzxsIBhk1NoAtgpKKE8fX5Ef7hq9ovhgvwuptjfFhEhqmooimX 5R0yDeztbrvlX7uXWyNg88zA4rHukYhT/drZ9RMqW6mCpA5wjfYdDHpNJjv1EamTLhRh eKoA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=NYQvCcJg; spf=pass (google.com: domain of mptcp+bounces-4286-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4286-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id t9-20020a1709028c8900b0015398371c1asi4550064plo.441.2022.03.17.08.35.07 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Mar 2022 08:35:08 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4286-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) client-ip=2604:1380:1000:8100::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=NYQvCcJg; spf=pass (google.com: domain of mptcp+bounces-4286-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4286-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sjc.edge.kernel.org (Postfix) with ESMTPS id 7C13B3E0F75 for ; Thu, 17 Mar 2022 15:35:07 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 6662848A1; Thu, 17 Mar 2022 15:35:06 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) (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 9235848A2 for ; Thu, 17 Mar 2022 15:35:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647531304; x=1679067304; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=HrlYba3+geBltWVQiUd+2w/Aff7LNAiojSaD3N7snHg=; b=NYQvCcJgcv9eGdCuAU5yk0FHJ1h6hrhDBj3m59isH3lrbWeJjOstOKU6 DQ7NtpFVDMI+ddFJZa+uNjoqaqWJeCxwdpqBljwTEFQkuYC7u7p89+WdP c4AyUv+Kk4CGNAB8mwIlR73zVAzGTozVCnYanyl5rh9SFpS4PSBi/fVJ9 bXR9Yv3BhCfUgq8QxB88/DunflVFw0hT2X+mlqvc8wI0tuTIspuc5hj7X J23dRsPCadCreg+elK5Ct8oBz3fZb7C3O/ZwOtsynj/CVAMY+qD7Y1P7W CbAGaP7t/N9Humc6N3GW2Nz6XEfjPI+rUOb7mFstHnGmm08CKVN/JDlls g==; X-IronPort-AV: E=McAfee;i="6200,9189,10289"; a="237504878" X-IronPort-AV: E=Sophos;i="5.90,188,1643702400"; d="scan'208";a="237504878" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 08:35:02 -0700 X-IronPort-AV: E=Sophos;i="5.90,188,1643702400"; d="scan'208";a="516804203" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 08:35:01 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v7 2/5] mptcp: store remote id from MP_JOIN SYN/ACK in local ctx Date: Thu, 17 Mar 2022 11:34:50 -0400 Message-Id: <20220317153453.665359-3-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220317153453.665359-1-kishen.maloor@intel.com> References: <20220317153453.665359-1-kishen.maloor@intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This change reads the addr id assigned to the remote endpoint of a subflow from the MP_JOIN SYN/ACK message and stores it in the related subflow context. The remote id was not being captured prior to this change, and will now provide a consistent view of remote endpoints and their ids as seen through netlink events. Signed-off-by: Kishen Maloor --- net/mptcp/subflow.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 2fb78b4b3ca6..59657b7e4788 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -443,6 +443,7 @@ static void subflow_finish_connect(struct sock *sk, con= st struct sk_buff *skb) subflow->backup =3D mp_opt.backup; subflow->thmac =3D mp_opt.thmac; subflow->remote_nonce =3D mp_opt.nonce; + subflow->remote_id =3D mp_opt.join_id; pr_debug("subflow=3D%p, thmac=3D%llu, remote_nonce=3D%u backup=3D%d", subflow, subflow->thmac, subflow->remote_nonce, subflow->backup); --=20 2.31.1 From nobody Sun May 5 18:54:49 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a50:bae3:0:0:0:0:0 with SMTP id x90csp821174ede; Thu, 17 Mar 2022 08:35:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxiSJJyjHOhmbLmkX5bvai4tz73ccezC/c5Kj+C/v16z132eyIaTyf6xAEX8tlLdlPT7O4B X-Received: by 2002:ac2:434c:0:b0:445:bfb1:c37a with SMTP id o12-20020ac2434c000000b00445bfb1c37amr3208876lfl.657.1647531310198; Thu, 17 Mar 2022 08:35:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647531310; cv=none; d=google.com; s=arc-20160816; b=ezF6ldkHJPvKd3BTpM9hVSOSG3bNwM5sfsUQgwiGVPL8U0ebNgZHE3Nqd4Rsn8BA2d 3GXVxiOLa2noWEP3JKsswjMlJG3mADvLTvMOkBM64FAZH3EvF2mFP8ZgY8PB8gk3Z6qo /2t/mjtQwYuQVRJ0Low9beFSmBLdFsla8Y2xVB3oxFiVLUgMwKQQz2x+/pwpVLxymuIG 1MMACDIojnODRj+u4JasP86Mg+YTw8bJZPgbcmnENeO3tdWSsIlCgSgSTqjEQ95D5Wbi GGtU5hZVcfl+EsM4GvtNCmXcbyK86Y18zv90TqCbrnHU4RK9Y+60wqc+FL/gaGtMvQd5 5XSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:to:from:dkim-signature; bh=HmHs10u7njMVM+WONQtyJiedUQvytWGNPopGc5nyyX8=; b=T8QdFoRjdJJyREzZn46lyPKsasdF6/k9QNqOvEhVAkvhHZODtsiZsFcPOWtMagtHWX QnjmD6e5nOAny+oaDk468UPFLei/yDtLKzieOwcenHAMiOxdXW1wzj8hLbCRjDt7j74w HyI2BpziL5F3+1lsY/Sm6WEszQpN2+IRuq4wRHy0huP99FgfNS0rEPg1KGNiA/Tewyiu 5n2UJ684nhhGkgCiks1qu81j4NPo50G6f45wKZodNRjRpKfhIxmhxJJzzgDHAv5fsP07 AiV7kAzaWrfGZmcvBA1gPNY+StC8XXhB7KKUGzKY67Sq7ROQUibPYhYg9V3nrQfhrIeP fLzA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="eh5/icdJ"; spf=pass (google.com: domain of mptcp+bounces-4287-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4287-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id q5-20020a0565123a8500b004483655faa7si5315281lfu.8.2022.03.17.08.35.09 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Mar 2022 08:35:10 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4287-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="eh5/icdJ"; spf=pass (google.com: domain of mptcp+bounces-4287-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4287-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 09F411C0C63 for ; Thu, 17 Mar 2022 15:35:09 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3307D48A5; Thu, 17 Mar 2022 15:35:07 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) (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 CDFDA4378 for ; Thu, 17 Mar 2022 15:35:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647531305; x=1679067305; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=qQJ0t/7QAJevVmMY8BCYpOBYqFiXB0eG5qGfZh55mto=; b=eh5/icdJTYM5QRHa/pcBnTVJx63TRSkdQnvCHYQ+drJbcyjUCj2iSXaz LcjDXpsQ7M4nYdOunD5kzSfguIM6GaEXlYdH02FZBQGXWs1RhXVeQXEQE CVaoRQazeqAWQ7Ujzwsi2vAkNjHsdXaz3BSLPJiSmwBQeARVWwrNTItVM GmZhiKss29O3JxjwEJljsYT+DsVFtrFNT6UIHNEmj6kgGg0+1AVjUOr4H gm7csb1+Btmm2uRQiKXpUk2+EBg2IOniq5ygKq05dvHYZCfD37tdfLnv3 5H+hGu1Da/uPyIK4yKjE7Kg4iXxh/2aDTekwZCzx9DPji0OK27pIhOrhK w==; X-IronPort-AV: E=McAfee;i="6200,9189,10289"; a="237504879" X-IronPort-AV: E=Sophos;i="5.90,188,1643702400"; d="scan'208";a="237504879" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 08:35:02 -0700 X-IronPort-AV: E=Sophos;i="5.90,188,1643702400"; d="scan'208";a="516804206" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 08:35:01 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v7 3/5] mptcp: reflect remote port (not 0) in ANNOUNCED events Date: Thu, 17 Mar 2022 11:34:51 -0400 Message-Id: <20220317153453.665359-4-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220317153453.665359-1-kishen.maloor@intel.com> References: <20220317153453.665359-1-kishen.maloor@intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Per RFC 8684, if no port is specified in an ADD_ADDR message, MPTCP SHOULD attempt to connect to the specified address on the same port as the port that is already in use by the subflow on which the ADD_ADDR signal was sent. To facilitate that, this change reflects the specific remote port in use by that subflow in MPTCP_EVENT_ANNOUNCED events. Signed-off-by: Kishen Maloor --- net/mptcp/options.c | 2 +- net/mptcp/pm.c | 6 ++++-- net/mptcp/pm_netlink.c | 11 ++++++++--- net/mptcp/protocol.h | 4 ++-- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index 88f4ebbd6515..c9625fea3ef9 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -1133,7 +1133,7 @@ bool mptcp_incoming_options(struct sock *sk, struct s= k_buff *skb) if ((mp_opt.suboptions & OPTION_MPTCP_ADD_ADDR) && add_addr_hmac_valid(msk, &mp_opt)) { if (!mp_opt.echo) { - mptcp_pm_add_addr_received(msk, &mp_opt.addr); + mptcp_pm_add_addr_received(sk, &mp_opt.addr); MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_ADDADDR); } else { mptcp_pm_add_addr_echoed(msk, &mp_opt.addr); diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 5353340194c0..459e79ddf187 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -203,15 +203,17 @@ void mptcp_pm_subflow_check_next(struct mptcp_sock *m= sk, const struct sock *ssk, spin_unlock_bh(&pm->lock); } =20 -void mptcp_pm_add_addr_received(struct mptcp_sock *msk, +void mptcp_pm_add_addr_received(const struct sock *ssk, const struct mptcp_addr_info *addr) { + struct mptcp_subflow_context *subflow =3D mptcp_subflow_ctx(ssk); + struct mptcp_sock *msk =3D mptcp_sk(subflow->conn); struct mptcp_pm_data *pm =3D &msk->pm; =20 pr_debug("msk=3D%p remote_id=3D%d accept=3D%d", msk, addr->id, READ_ONCE(pm->accept_addr)); =20 - mptcp_event_addr_announced(msk, addr); + mptcp_event_addr_announced(ssk, addr); =20 spin_lock_bh(&pm->lock); =20 diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 4f09eb97faff..905f451ff0f9 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -2008,10 +2008,12 @@ void mptcp_event_addr_removed(const struct mptcp_so= ck *msk, uint8_t id) kfree_skb(skb); } =20 -void mptcp_event_addr_announced(const struct mptcp_sock *msk, +void mptcp_event_addr_announced(const struct sock *ssk, const struct mptcp_addr_info *info) { - struct net *net =3D sock_net((const struct sock *)msk); + struct mptcp_subflow_context *subflow =3D mptcp_subflow_ctx(ssk); + struct mptcp_sock *msk =3D mptcp_sk(subflow->conn); + struct net *net =3D sock_net(ssk); struct nlmsghdr *nlh; struct sk_buff *skb; =20 @@ -2033,7 +2035,10 @@ void mptcp_event_addr_announced(const struct mptcp_s= ock *msk, if (nla_put_u8(skb, MPTCP_ATTR_REM_ID, info->id)) goto nla_put_failure; =20 - if (nla_put_be16(skb, MPTCP_ATTR_DPORT, info->port)) + if (nla_put_be16(skb, MPTCP_ATTR_DPORT, + info->port =3D=3D 0 ? + ((struct inet_sock *)inet_sk(ssk))->inet_dport : + info->port)) goto nla_put_failure; =20 switch (info->family) { diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 1d8c58fb8cdc..3e5c8d5273a9 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -750,7 +750,7 @@ void mptcp_pm_subflow_established(struct mptcp_sock *ms= k); bool mptcp_pm_nl_check_work_pending(struct mptcp_sock *msk); void mptcp_pm_subflow_check_next(struct mptcp_sock *msk, const struct sock= *ssk, const struct mptcp_subflow_context *subflow); -void mptcp_pm_add_addr_received(struct mptcp_sock *msk, +void mptcp_pm_add_addr_received(const struct sock *ssk, const struct mptcp_addr_info *addr); void mptcp_pm_add_addr_echoed(struct mptcp_sock *msk, const struct mptcp_addr_info *addr); @@ -779,7 +779,7 @@ int mptcp_pm_remove_subflow(struct mptcp_sock *msk, con= st struct mptcp_rm_list * =20 void mptcp_event(enum mptcp_event_type type, const struct mptcp_sock *msk, const struct sock *ssk, gfp_t gfp); -void mptcp_event_addr_announced(const struct mptcp_sock *msk, const struct= mptcp_addr_info *info); +void mptcp_event_addr_announced(const struct sock *ssk, const struct mptcp= _addr_info *info); void mptcp_event_addr_removed(const struct mptcp_sock *msk, u8 id); bool mptcp_userspace_pm_active(struct net *net); =20 --=20 2.31.1 From nobody Sun May 5 18:54:49 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a50:bae3:0:0:0:0:0 with SMTP id x90csp821179ede; Thu, 17 Mar 2022 08:35:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyNsqVBgdx0bH//xT7QzBUJoxuj4xslpHa7VW6f4zboAQlneVwh5YIqiwv5EXOYr6wmZlTT X-Received: by 2002:a17:902:e889:b0:151:a56d:eb8f with SMTP id w9-20020a170902e88900b00151a56deb8fmr5270548plg.142.1647531310699; Thu, 17 Mar 2022 08:35:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647531310; cv=none; d=google.com; s=arc-20160816; b=oxKQJBK/KuALCWzKPPTWR+xXT8l2FpDdnXAt6CaE35Q733s894JT2futuPpnS/wJfh 0hU+0BVbQnV5mSxRNOP4gspk1juL2TnyY7i4cqBmfVpEBE1ji9N8XXPOu+41E6ZcdgPd 0ZG3uGASHhxMV4W2f/ishA32IlNjta3r115kuDY3rjWAHSdETAsDo6xoxH+akjlrPBLK dQFVHNcvD5J+QEu0iAztvV8Pq58XZG1U9dMfI8dF7TcFjywI7dvH63oWwzEH7hHw/qfE pG82PoG1ow2fmGV6n3bUMI0O9nyq+O/icWPeSW9dVGUDTIURCsM6pKJqA/nwGi5+675R 5Ekg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:to:from:dkim-signature; bh=jbH1Wqo1tSPJa4AV3EU7gsiYJMCbBZFZiTGAWgrWeFM=; b=X3GZjzDLpcjCXcQGYqnHR6T5OpSF2OIR/kx56tf6gWXHZW+Tq3iLUJCoNB/80CLWhD d5vSEZfHphPWcd6bxuwgRX/bpCTwkflPcmqQiul6zdQfeGjfgSYAUzndgRr58x754EsT QIsS35ilYvSvJHW/YgFHhPqsy2zETHYOWic2Tr8SVK+u9rjkpOEPAI+ZoLaAxk3tnGll Ob0XQQ/PKWR93MuUHofzmVBwmSvwyHhTWQN4vKHzL3DIDMi+A7u8hCG9VnKAFeRKE1pB 05Szwpg3jOwlfQT6Zoh1xFg1BiywBWBo58zoksZrZ1naMLGSSvJREfFQdpnmxB+Kkew7 gtRw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=HbzE4Aif; spf=pass (google.com: domain of mptcp+bounces-4288-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4288-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id m6-20020a63fd46000000b003816043eef4si2331699pgj.233.2022.03.17.08.35.10 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Mar 2022 08:35:10 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4288-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) client-ip=2604:1380:1000:8100::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=HbzE4Aif; spf=pass (google.com: domain of mptcp+bounces-4288-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4288-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sjc.edge.kernel.org (Postfix) with ESMTPS id BD6F93E102C for ; Thu, 17 Mar 2022 15:35:09 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7D3A94378; Thu, 17 Mar 2022 15:35:07 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) (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 59BB248A4 for ; Thu, 17 Mar 2022 15:35:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647531306; x=1679067306; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=EgtX7OdoidfI0MVW/LMhtWa08zx5ZLwz3aDUcE5kC7U=; b=HbzE4AifOgX7Xh7WrfJS0Ui0/e9s9hA1k1YGSFpLbD+jjRU5HBBzou+8 rb15AKe4b94xiBCqgg0dUEkCDumRgAJMPFmrKCsC6Xr69iqzl1KehMQEn /CpwHl182z8Lg6l5hH4vAT/2qX1qBWWh3ksqgUXGmRJqg8MaLLHQibWP4 E08IC9V9Hrnbx5UZ4VsSHeGhOrC+0OH4E+eoXfQpssD6ETO3oK3nNtP2A WrLDwg4DVOweflr+eDM2mV8aIJwHcsOV4daRMdj8cVCutXRnUFOOyvGZz t1RlXjBeRJxV8Gyy5hcwWZz80SHWt/K15gzT5pzo/HikdI4fT7GWrndSd A==; X-IronPort-AV: E=McAfee;i="6200,9189,10289"; a="237504880" X-IronPort-AV: E=Sophos;i="5.90,188,1643702400"; d="scan'208";a="237504880" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 08:35:02 -0700 X-IronPort-AV: E=Sophos;i="5.90,188,1643702400"; d="scan'208";a="516804209" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 08:35:01 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v7 4/5] mptcp: establish subflows from either end of connection Date: Thu, 17 Mar 2022 11:34:52 -0400 Message-Id: <20220317153453.665359-5-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220317153453.665359-1-kishen.maloor@intel.com> References: <20220317153453.665359-1-kishen.maloor@intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This change updates internal logic to permit subflows to be established from either the client or server ends of MPTCP connections. This symmetry and added flexibility may be harnessed by PM implementations running on either end in creating new subflows. The essence of this change lies in not relying on the "server_side" flag (which continues to be available if needed). Signed-off-by: Kishen Maloor --- net/mptcp/options.c | 2 +- net/mptcp/protocol.c | 5 +---- net/mptcp/protocol.h | 8 ++++++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/net/mptcp/options.c b/net/mptcp/options.c index c9625fea3ef9..e05d9458a025 100644 --- a/net/mptcp/options.c +++ b/net/mptcp/options.c @@ -931,7 +931,7 @@ static bool check_fully_established(struct mptcp_sock *= msk, struct sock *ssk, if (TCP_SKB_CB(skb)->seq =3D=3D subflow->ssn_offset + 1 && TCP_SKB_CB(skb)->end_seq =3D=3D TCP_SKB_CB(skb)->seq && subflow->mp_join && (mp_opt->suboptions & OPTIONS_MPTCP_MPJ) && - READ_ONCE(msk->pm.server_side)) + !subflow->request_join) tcp_send_ack(ssk); goto fully_established; } diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index fbb14dfe62b3..97b0338fe96f 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -3263,15 +3263,12 @@ bool mptcp_finish_join(struct sock *ssk) return false; } =20 - if (!msk->pm.server_side) + if (!list_empty(&subflow->node)) goto out; =20 if (!mptcp_pm_allow_new_subflow(msk)) goto err_prohibited; =20 - if (WARN_ON_ONCE(!list_empty(&subflow->node))) - goto err_prohibited; - /* active connections are already on conn_list. * If we can't acquire msk socket lock here, let the release callback * handle it diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 3e5c8d5273a9..9b655d049b94 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -908,13 +908,17 @@ static inline bool mptcp_check_infinite_map(struct sk= _buff *skb) return false; } =20 +static inline bool is_active_ssk(struct mptcp_subflow_context *subflow) +{ + return (subflow->request_mptcp || subflow->request_join); +} + static inline bool subflow_simultaneous_connect(struct sock *sk) { struct mptcp_subflow_context *subflow =3D mptcp_subflow_ctx(sk); - struct sock *parent =3D subflow->conn; =20 return sk->sk_state =3D=3D TCP_ESTABLISHED && - !mptcp_sk(parent)->pm.server_side && + is_active_ssk(subflow) && !subflow->conn_finished; } =20 --=20 2.31.1 From nobody Sun May 5 18:54:49 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a50:bae3:0:0:0:0:0 with SMTP id x90csp821213ede; Thu, 17 Mar 2022 08:35:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy9q9miSspfm5yBAUUDoCe5gRlmyiUwv6HKtvT+FGZpFF55e1zuXpfGGtOoVLEPUjRB3yiP X-Received: by 2002:a19:7b04:0:b0:443:add9:fdf5 with SMTP id w4-20020a197b04000000b00443add9fdf5mr3226377lfc.265.1647531313614; Thu, 17 Mar 2022 08:35:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647531313; cv=none; d=google.com; s=arc-20160816; b=ZATfRhowdAjLfImerjO0qETbKLN2jy/aMBlZBZQBYjvBGpnnsHmhxmp5gmSzfr4P0I w+Y8XjkhP3t27hRBQeQQlbBOap/Gh1BlvgrgQCQyfL3NkFrc8XWV4RWu0haKCYlxLus9 jHcq6GEk3C02+hERA81B3JOBlR8L7ExBrv8feCX1nHsaFe3y13RWCdIc27ATd0ep9VJw a/6K2kbF0Lq4p/dhiQGSqHfOrv3UrSIOJLOQ0VI+f/0oFMGM6xP+CrLkGncxLFsgVPSJ yxanFVEbp92sCfraZQu1/Enhi804sPfVy1H566EJW2uvP6HNpTvMhU++pInxhEQ8lSX8 pg5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:to:from:dkim-signature; bh=RRIcUhx9tPpVq1zCtVkJm4h7EDcLBySPOtxnrSGcioo=; b=NjuQvauzZKtk1B+PbHaqWNZ7OLtEUPRZ4lv7+jNwAo4EeR9N0f9cdBd2VkSHfFl2Sj qeqUaxcjE3CqHOByDbBzZEj3sVEWvFsAOdOxjQMhTuTOHqMuf2m2Gh5ZmRPpW0jCHzAx 5N7m8W9Lq3KX0ZTHR8042Fjpqz7IIJU3QelVUUphRrjFZCCy5wXA9kqsAH/jFgpWxz+k Yf4aFa7GiVr9hKlBs88NvltIlEaB8yfje2lOpr9Y5lq/nS85EnofKNepz6eQfQQIRxL3 VJEJvCMWN7xxq3P2GUCBbQk01uuQmF+SwVw/MijOuyoc1++b0JWM16E6kodonmc/BNrQ a8HQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=a4EWz5z7; spf=pass (google.com: domain of mptcp+bounces-4289-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4289-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id h1-20020a0565123c8100b00448ac0a396csi5136684lfv.240.2022.03.17.08.35.13 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Mar 2022 08:35:13 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4289-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=a4EWz5z7; spf=pass (google.com: domain of mptcp+bounces-4289-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4289-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 4B8B61C0E10 for ; Thu, 17 Mar 2022 15:35:11 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 5E86B48A3; Thu, 17 Mar 2022 15:35:08 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) (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 7A10448A2 for ; Thu, 17 Mar 2022 15:35:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647531306; x=1679067306; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=Dfkdg5YKUEuC4T75Wfo2CDAcejWqGn3fTVKkOtLWEjo=; b=a4EWz5z7qEHdicx2g8HQaWZDf4EoO2zvvgR7MIncfRqRRJ3/4impAsqy UghDxlGUils4zz9ANSlRzxCYy1QSx5Lw3CEiGYsqiPYOt/XsW4ag6Ja2D vaqwZ3/YGPcm26P7WP1lwVvZgBlDr8XXHH6XeMhQovvEFj0yjmgVLNu/B cBN99VT6H/yiWyCaNpvICafI6GNf91Z8mHmVM4uOa5xhatt8fYQdNtyK0 UMbGe6rtnLi03MJqlnclJMzEoKm/W37lB/gshdmdnx5YnTvLPg5ogPSaG TRf3PtREo07aCJ5sbzAXO25OAauapNuzLY2khcTPIMz4oMqoy3BWEUjb6 Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10289"; a="237504881" X-IronPort-AV: E=Sophos;i="5.90,188,1643702400"; d="scan'208";a="237504881" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 08:35:02 -0700 X-IronPort-AV: E=Sophos;i="5.90,188,1643702400"; d="scan'208";a="516804212" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Mar 2022 08:35:01 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next v7 5/5] mptcp: expose server_side attribute in MPTCP netlink events Date: Thu, 17 Mar 2022 11:34:53 -0400 Message-Id: <20220317153453.665359-6-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220317153453.665359-1-kishen.maloor@intel.com> References: <20220317153453.665359-1-kishen.maloor@intel.com> Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This change records the 'server_side' attribute of MPTCP_EVENT_CREATED and MPTCP_EVENT_ESTABLISHED events to inform their recipient about the Client/Server role of the running MPTCP application. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/246 Signed-off-by: Kishen Maloor --- include/uapi/linux/mptcp.h | 1 + net/mptcp/pm_netlink.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/include/uapi/linux/mptcp.h b/include/uapi/linux/mptcp.h index 9690efedb5fa..e41ea01a94bb 100644 --- a/include/uapi/linux/mptcp.h +++ b/include/uapi/linux/mptcp.h @@ -188,6 +188,7 @@ enum mptcp_event_attr { MPTCP_ATTR_IF_IDX, /* s32 */ MPTCP_ATTR_RESET_REASON,/* u32 */ MPTCP_ATTR_RESET_FLAGS, /* u32 */ + MPTCP_ATTR_SERVER_SIDE, /* u8 */ =20 __MPTCP_ATTR_AFTER_LAST }; diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 905f451ff0f9..6fb84f9c377f 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1974,6 +1974,9 @@ static int mptcp_event_created(struct sk_buff *skb, if (err) return err; =20 + if (nla_put_u8(skb, MPTCP_ATTR_SERVER_SIDE, READ_ONCE(msk->pm.server_side= ))) + return -EMSGSIZE; + return mptcp_event_add_subflow(skb, ssk); } =20 --=20 2.31.1