From nobody Sat May 4 12:05:09 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a50:bae3:0:0:0:0:0 with SMTP id x90csp411127ede; Wed, 16 Mar 2022 12:08:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz0MKK052TC1trhDDqON3u5DE9itDK3UGeo3ac57mzrIYHgpGEy5KgBLif1PR1EUZslSygh X-Received: by 2002:a05:6512:3d22:b0:448:797c:e4f7 with SMTP id d34-20020a0565123d2200b00448797ce4f7mr621834lfv.251.1647457684316; Wed, 16 Mar 2022 12:08:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647457684; cv=none; d=google.com; s=arc-20160816; b=g+iwi5zUOESeu7WRdh3HuZRSAfWSiEHRxGu4PyQD9X+4yPWr+VWqIF1mnFJljZVUnk BfO26jShxE3hhLeLqtOU7874zasi1QyJLU2R6aTvsrxCBsV/wFM80jQ3ZatSOkmbxa3s vH8sFG0cVLIACsxQFkUJClVBAzspsQaCZq92+CMZnlbuqblPOtdbej5AYWwxGI4QAuk1 oDHfI7gHIqLdV2AfybBW55GQuIpG8Z2szn8JQD30jkKOmDYef8T9jHOlj/08Q36ppQpj hQ1KQ/uPhS3wioz+0Jdst4K8YefFUL9t/227cNj/53JadnIQ6KkN1y/F1BHGyRTbch3j i5iw== 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=/8xKxNhNaqN6fJ3bXuwduhlk0nWnD6Ml1klVMXxR6T8=; b=Mv1dVV/edsYC5vSVVWb1NEsPFwX/55tMrtKpeoHo6XmnMkd26xKj8J18ssS0D9//xw OoD1pzyf6IOzTFwPiCAeu9rhbBkxNLJZ5PjOt/iMQTf/XLMFm6H7ihZADBI3CRjuf1uo 0XeWwqer+3Rf9CsypBx/Knfnp4eVNgy//nUHUZEUSMvpd6TtW/3YJafLU43ffP4lk3xy N/4tkNSg4k2BV6tDdCQyXePKDleetn+pVAEL9HpYoVHM4Y5yBnk3Q3Ib3G51dwM0SjEs xFOGTLNnV8Sry/8EPy/BzOruvuW0EwnBM6pGsPTHIVX/lhAT5uWnCnO4RNZPEaQcJ43n GQPw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=NdkydQFM; spf=pass (google.com: domain of mptcp+bounces-4237-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4237-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 bu1-20020a056512168100b00445c32cf8ccsi2969793lfb.261.2022.03.16.12.08.04 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 16 Mar 2022 12:08:04 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4237-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=NdkydQFM; spf=pass (google.com: domain of mptcp+bounces-4237-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4237-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 216C91C0A40 for ; Wed, 16 Mar 2022 19:08:03 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4A89B3B3A; Wed, 16 Mar 2022 19:08:02 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (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 9626438F5 for ; Wed, 16 Mar 2022 19:08:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647457680; x=1678993680; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=fIoPzEmu4NtbenRE//fCUqZWPI8c5eX+CWhBBeHth9k=; b=NdkydQFMvb86LIjcs3/NHYkvhO4Vu5yGJZ94dAo43rddJ5huvQxmCOQ1 eVf7GLMbaIs3PVXubNbbWaOSPsInKrdKr0Fxkn9yb94ZkK+d0FOnf9ZCn onW7fZl/rj9ZUdbmk9wEUqWFRRR4QGHDbHqYFLrcLkz6cOgj1buNx7Vb9 mOSo1qc8EsdnkjEvPBFruk62Zg0Nke0lvOiRIAHz+pkH8EGsf+tPUdRQd EdmskfhLfdRDVXDnjb7UWxhpkSZCHCpx1sKF6YP4NINeahORhfUkHbcbY iULW6umL9B/cqF4ckjHTmUgI5ILmy3BpUUAV+70yC4rnaN+qGs81MrxEO A==; X-IronPort-AV: E=McAfee;i="6200,9189,10288"; a="255521707" X-IronPort-AV: E=Sophos;i="5.90,187,1643702400"; d="scan'208";a="255521707" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2022 12:07:58 -0700 X-IronPort-AV: E=Sophos;i="5.90,187,1643702400"; d="scan'208";a="644799805" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2022 12:07:58 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next 1/5] mptcp: bypass in-kernel PM restrictions for non-kernel PMs Date: Wed, 16 Mar 2022 15:07:43 -0400 Message-Id: <20220316190747.634325-2-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220316190747.634325-1-kishen.maloor@intel.com> References: <20220316190747.634325-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 | 15 ++++++++++++--- net/mptcp/pm_netlink.c | 8 ++++++++ net/mptcp/protocol.h | 10 ++++++++-- net/mptcp/subflow.c | 4 +++- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index d0d31d5c198a..32a9bcc4b9be 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 @@ -209,8 +216,10 @@ void mptcp_pm_add_addr_received(struct mptcp_sock *msk, spin_lock_bh(&pm->lock); =20 if (!READ_ONCE(pm->accept_addr) || mptcp_pm_is_userspace(msk)) { - mptcp_pm_announce_addr(msk, addr, true); - mptcp_pm_add_addr_send_ack(msk); + if (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)) { pm->remote =3D *addr; } else { 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 Sat May 4 12:05:09 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a50:bae3:0:0:0:0:0 with SMTP id x90csp411141ede; Wed, 16 Mar 2022 12:08:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzurPEXwBPnYReTmTyiFLtEcL7331iX/b3ZK6qxJbVWKAhB67kBmb7uE9E6XIGSSuRyfHSH X-Received: by 2002:ac2:4150:0:b0:441:39dd:922b with SMTP id c16-20020ac24150000000b0044139dd922bmr628002lfi.340.1647457685387; Wed, 16 Mar 2022 12:08:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647457685; cv=none; d=google.com; s=arc-20160816; b=x93zfYCJPh2UpNDSM7/xQcjBa2rzEq7nsMEyfJhWsqXwZO4fbeq3rQhK/zmNeVQgjP FN6vZTnzsNpP8EEJNcJlgKGqzaPK+/kLai8ecTQq5uDLC+jmwp0jOnMwSB5/7UlU64YV /oRjEWKbS6uFctnGVw6h3/TWDQ+PKas93KqOA3vuDCpelidbI0+8mwNw5sk9zGs/v5ed Ok62zdAUUiOPS1twm9uTAFp7IKMLebPUWYUW+bgoaOOZCyTNPdp8WmQHNKtM2dW/rS3e c769xCOHjPgyS5x4NM7N4PD3e71MHjeoC5wfJs1Eojm+00dlKTnE0hzcQnw6QAFq/2F5 94Hw== 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=d5266cx8ja0dqUBR25kefWNw6LzCQYLqxOpKFamNzFt4DROXcvfNx5H0n5qRIjE3/r aubwIrxW7yw3qWomIAmT2k5lBmR/ItSKUcjEiO/kUezILqdDqogcMMIAI8qR5BtZsb3V Ve9XkhwrbrVL/OG9SLGh4fU1aGIsOpL34ecdHIi1+fG9gGRbT4cP0Iv5EyaI2IPu5XeW HpIX2v3pTXTqrFv4IK72vz+5Tx1cO441//t+aCtZ8GeiCX4N6RGtqJFJnW2JcoditnPK jWW5xz+UM0l+eMT+LNLzVokljf5No++865z86anALXPTiXJPU/Fpa9NG+41cwfSS2D1R BljA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=OmGV0g5s; spf=pass (google.com: domain of mptcp+bounces-4238-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4238-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 bq16-20020a056512151000b0044860f9ae52si3023442lfb.541.2022.03.16.12.08.05 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 16 Mar 2022 12:08:05 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4238-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=OmGV0g5s; spf=pass (google.com: domain of mptcp+bounces-4238-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4238-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 4539E1C0B42 for ; Wed, 16 Mar 2022 19:08:04 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E69363B38; Wed, 16 Mar 2022 19:08:02 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (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 942EE3B39 for ; Wed, 16 Mar 2022 19:08:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647457681; x=1678993681; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=HrlYba3+geBltWVQiUd+2w/Aff7LNAiojSaD3N7snHg=; b=OmGV0g5s7T5/fgyl5QIC5P8cIuJgBS5hhEe3UnRyAQzrf2x0VigW7BLV 3zFGdlxXhQswIUGqNreCZCLJ+C5ZWfDaltz2KUwC2IMKOWsQ/99WwJXgQ 8x8JgLRJJ5iald4SvL/Qfhjy73JexOvmf9c5g/iZFQadxrrkuTLFTaGjW 8KD+xDjjxoM+G+4bWdUKX34RRaIyqZhAvp87eLdKmXP/mklNrtjtapsxB WGePQnlMiGjmBsjTB/90Sw2H8f4oe/75M4aMC2/sU/IYEceIGYv9fpzR3 aHsAiYgoB0Nd1KOSvfdK7eXwBvzYZcr6/E3kcKHRpHHd+htE7++H/xfvr g==; X-IronPort-AV: E=McAfee;i="6200,9189,10288"; a="255521708" X-IronPort-AV: E=Sophos;i="5.90,187,1643702400"; d="scan'208";a="255521708" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2022 12:07:58 -0700 X-IronPort-AV: E=Sophos;i="5.90,187,1643702400"; d="scan'208";a="644799808" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2022 12:07:58 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next 2/5] mptcp: store remote id from MP_JOIN SYN/ACK in local ctx Date: Wed, 16 Mar 2022 15:07:44 -0400 Message-Id: <20220316190747.634325-3-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220316190747.634325-1-kishen.maloor@intel.com> References: <20220316190747.634325-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 Sat May 4 12:05:09 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a50:bae3:0:0:0:0:0 with SMTP id x90csp411150ede; Wed, 16 Mar 2022 12:08:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx+huaX9mvNaSDNeufS0U8USEw16BUt2dAaXkmtCRM/QiUE6+uYzTgxzyDNaYBoUa1k7Hb9 X-Received: by 2002:ac2:5fc5:0:b0:448:b398:1d57 with SMTP id q5-20020ac25fc5000000b00448b3981d57mr615238lfg.81.1647457686166; Wed, 16 Mar 2022 12:08:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647457686; cv=none; d=google.com; s=arc-20160816; b=spVzBOPIkXT30m95qnSGVXb9k/NEggaaZ2sos/Tk/WcPIQsR4gdIyDy5HN7w7+SSLU ZLkHBPCXbmuadA0bg1+84CKV8KgT2x5szomYisC7TI+J1t7EIUeKQPhtrzumz7TF8QVR OYVLZlvDTLHtnd/+i/jWRvq7uJbZ6wn+kIf5bOgCzpv5KwW7QpNLA8CUmBFqM8KpExxT SW3UwsGCIoeQD3wPKVsvqOQrjthYYt4mGj5DaCMO8Kqb63lb5FzyR1S8Vp0+rVjG0zNA 5yAKSghBRJKcpZPiRcIQxdkXAtSOn1yEISDUkCW8DCnpKpFgPc8uMyrldgXY7Go6eChP gpww== 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=Ispe5M4si/m9SLxdzfQGqFDzKASR41H3TKM2AypTmXI=; b=QUWIMYOu2sSo3WAI+Xga4YydcYifOChzmQLTbuhoMAKvYp1gdzwJixOh1bf970hJwo VOpzI/BMaPd6xLPzVnaZqp+76RBh9A0uHI9YEs5uC1og4FzE0d51vXJxH6zbX0ENl71F K2O/8u18Xnp9Z+ISNTedmYAu3dRSsyGcpfVcWsBhv8QGKFlrLJBDkMrNX834NkGaBr/b ELWyJ0xvR7J8Y9UowNWt5f12EGxUCeAKQF2SryMOs9RH2xJ/OWg3S7Xem7kulo3Gwqll Q3jUXcdLuqvMSPbuz7Div8uCX91rQ/zhbWVsOzKZ37EGtxA+qXTP1Ar4DWzwuexDraMc vhaw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=UcmEELk5; spf=pass (google.com: domain of mptcp+bounces-4239-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4239-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 h16-20020a2e9010000000b00246357be952si2041158ljg.473.2022.03.16.12.08.05 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 16 Mar 2022 12:08:06 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4239-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=UcmEELk5; spf=pass (google.com: domain of mptcp+bounces-4239-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4239-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 A2D6D1C09AB for ; Wed, 16 Mar 2022 19:08:05 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8AC513B39; Wed, 16 Mar 2022 19:08:03 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (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 5532138F5 for ; Wed, 16 Mar 2022 19:08:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647457682; x=1678993682; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=4rzgiyjsRNZjnsz0tdhwvs1W07Pt9Oew4Wz1QZQ9D+Q=; b=UcmEELk5m/OuWktwxlmwobhHn4ma0HJtyDcHle5oFpVkfRr+RrJ5vcmQ FIrsot71AUPOQyGyMf4/R7PhmSZ/29jJYDtOHg+1kNH/fdMHqoE+IkIVH zCCCVLStGnKZlDhKFEUQZzOTwykmimwHUq89TL4fPRWQrS8QvSipNx7iM MJMAGvI9QpEUAYUXEW80+xgEtoEfavyQ1nvTLXA+NgmKYtTAyFXm2LvM3 VNJhneoRJQ96UBwBm6dt7L+gO1fwqkaVueU/2+bR83miaIKZ8iLfepSTN +eh9IcfGPPGlofqxmHjgSAD4rk7TcfGiUDHVbebLnzzogrenan2ecFNRs A==; X-IronPort-AV: E=McAfee;i="6200,9189,10288"; a="255521711" X-IronPort-AV: E=Sophos;i="5.90,187,1643702400"; d="scan'208";a="255521711" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2022 12:07:58 -0700 X-IronPort-AV: E=Sophos;i="5.90,187,1643702400"; d="scan'208";a="644799812" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2022 12:07:58 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next 3/5] mptcp: reflect remote port (not 0) in ANNOUNCED events Date: Wed, 16 Mar 2022 15:07:45 -0400 Message-Id: <20220316190747.634325-4-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220316190747.634325-1-kishen.maloor@intel.com> References: <20220316190747.634325-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 32a9bcc4b9be..4573dab87c9e 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 Sat May 4 12:05:09 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a50:bae3:0:0:0:0:0 with SMTP id x90csp411174ede; Wed, 16 Mar 2022 12:08:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyPCJVwZ8dc3GdfCwlATTUbz4xAryeXxyurVAT2+e+h1JWHtOmVw3SALS63r7c6bszTSpfL X-Received: by 2002:a05:6512:398a:b0:448:ba48:602f with SMTP id j10-20020a056512398a00b00448ba48602fmr620995lfu.613.1647457688850; Wed, 16 Mar 2022 12:08:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647457688; cv=none; d=google.com; s=arc-20160816; b=bCKKAKAOQGRLqLkHQOaBzCg5AOgbe9NSz9gAL7YeC/ZLw07qw+V57vE34+6KlGyXXR 3koQNQvem/uhymhi2Vv48PdMBkjuTXNIp94hHT8sb2V1OdkOfuA+ls9I4+90k18Jsvbd 1AETvT+QtuQ2iYCCUhS8KVacLyn7x1VP6LVq3lnR5VNCOfcLQ6xnO+SgruFFZj9hA80F QoQyKm9vpfeUfoiBFEwx5vFOeWCGIlezSpQNeRjrWCUAFZEBB1txNizEQuydD7P0wGyP jQlDCZl33pIPGuY/4zfgZy5Eo1dqoFTWqUKlxI21fHi4KOWqEfwNOa4MnqDuV0OND4hp NUmw== 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=Xy5Nt+I+ZtCOiWCrGnsuUiDM+VzqadMFRmToq7t/hE01dykwtblpXJNWMY6Ux76YKC EHDkYqLCVqr9mOmekcGb5jo3BE2iE2ds7LbEdSnw4zQwRhD2d+rANA3Vo51LQJaCw9NC QmsIwutVYEIq69NpVaeXqzNjVsw3TNGcINmB1akvujwgqD6A6tDY86SQhp+KZU4KSwl5 RVMSL5ksOWBRfKIRmzYVNnwGtvFCPOXEiJ7n1wOmwRwOXgXHFQiqpVSoMA1kHVwJx5er HVEbUkp5ihzqCaJ1hoE6h1OAStDUBub52MGnzSp8O5gjXtMxrkhmfU9jXubqBVPTPfeX Vfrg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=BfdyVDOX; spf=pass (google.com: domain of mptcp+bounces-4241-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4241-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 k3-20020a05651239c300b00449cb2f4531si492702lfu.13.2022.03.16.12.08.08 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 16 Mar 2022 12:08:08 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4241-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=BfdyVDOX; spf=pass (google.com: domain of mptcp+bounces-4241-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4241-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 480391C0CBA for ; Wed, 16 Mar 2022 19:08:08 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 015EE38F5; Wed, 16 Mar 2022 19:08:07 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (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 2E2833B3A for ; Wed, 16 Mar 2022 19:08: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=1647457684; x=1678993684; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=EgtX7OdoidfI0MVW/LMhtWa08zx5ZLwz3aDUcE5kC7U=; b=BfdyVDOX039xBJNsBDWDNvt8rT8+G9QXah7Hq4nkXSEheqVapgyTuGN/ //sQjof2wUngnIKOyQQjwu4biDZp2LqlreWaaVZ4U/6bMhq4DoD0KFoI8 x6MLata8dJ4J9MRMCNgYdIWFWO+92McX+MJJ9RZ9qfCPonI41xNL9n+gN OXyX5YUNB4DgM7BtKTGdQGV0Fyu50BeK0t/0smkcdSwg1Y+qsE5aIEZOD BsgQuvR3gE0GEnqYnJO606MoA6vpKJUgw4AJwODnlixFb62lLCG/BWfGI jWKRVMtvYnNR5umtbPjiQqUdDLGOdihm7LF98WVhRF1B946sS0bt4hU// g==; X-IronPort-AV: E=McAfee;i="6200,9189,10288"; a="255521714" X-IronPort-AV: E=Sophos;i="5.90,187,1643702400"; d="scan'208";a="255521714" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2022 12:07:58 -0700 X-IronPort-AV: E=Sophos;i="5.90,187,1643702400"; d="scan'208";a="644799815" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2022 12:07:58 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next 4/5] mptcp: establish subflows from either end of connection Date: Wed, 16 Mar 2022 15:07:46 -0400 Message-Id: <20220316190747.634325-5-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220316190747.634325-1-kishen.maloor@intel.com> References: <20220316190747.634325-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 Sat May 4 12:05:09 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a50:bae3:0:0:0:0:0 with SMTP id x90csp411163ede; Wed, 16 Mar 2022 12:08:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyWsSSkW10oE7Fgj2m/IF0HVF/jT4+bi130Vuu1xKcqpvTZycHV845YW8Xevr0viob1zYBJ X-Received: by 2002:a17:90b:4c43:b0:1bf:8585:9baa with SMTP id np3-20020a17090b4c4300b001bf85859baamr1269128pjb.60.1647457687507; Wed, 16 Mar 2022 12:08:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647457687; cv=none; d=google.com; s=arc-20160816; b=Bu322JwVJXahdTsPGfznCV8xZJPJlV0J3eEa/X2FOxL/uGzQ79eCLW0r4Fl/yU8sYD lx/kHnYz0lAnTN2GAYfza3xF5fIGTAUdNtnyBZHtnm7U8BWLPd36lvB/nT8tzDQyhUMf 4/x5u+aSJaN3oYdxxJJYEfQsQKf9ukyCYVjjqcO3OWSQOvl9Ezs71Gn/tS/axXUXchLl efWFdarWUQlQTSO3i5/1yox25yTdl+5H1kYMVu5aWHoNe5bKt4jIgjwPH7uv9X8cgbGT TSsiCkDwhKFjss4t8M2dUNnU144BZSWcC4aQ/hxDUpnyibAlzCnjuEW91mBAfiOH/E0f L4qg== 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=H80Pnok2eIQ00+uiY+Kg6h8zIkVVgs03+hzw6F0Y0D07LwxUHJcyis/dcKM+nH6qG5 SzOxXwWQD3N/4ORtR8kdaoP5E9Y+2Rd3HSwbtRpZv/ro4wUIShbwm5HMbSrcofut0z9T T++mguF+NDh0MlpENW4/FpK1m5a5DyRKc4265QTsnLN2aisAPJnv4y5aa9fKi0yyaRfY vCHPJ6zyJKp2yEm8uShSHmlmO/ayjGurnSTu4JqzT7GCmIum2NSLKuODNTErHYbiHCmz N7jT34lR7R1vvjanM/ZlLYW0qEY4oCldGlZSosSWK3BIe82Vg+YzFyBicEosO23j4k59 l6eA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=VDKA4kQP; spf=pass (google.com: domain of mptcp+bounces-4240-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4240-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 u6-20020a170902e80600b00153857e2324si2905205plg.195.2022.03.16.12.08.07 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 16 Mar 2022 12:08:07 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4240-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=VDKA4kQP; spf=pass (google.com: domain of mptcp+bounces-4240-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4240-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 97C153E1002 for ; Wed, 16 Mar 2022 19:08:06 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 271A23B38; Wed, 16 Mar 2022 19:08:06 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (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 2A00638F5 for ; Wed, 16 Mar 2022 19:08: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=1647457684; x=1678993684; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=Dfkdg5YKUEuC4T75Wfo2CDAcejWqGn3fTVKkOtLWEjo=; b=VDKA4kQPFJMQ63s5f08FVNZ/oAAa/kqqap8TXRmulQWpOIsqfPvt/ouM 01myDAqw6jCuyR0OCyrPELGykquwrxP/ysXmPkdYuaYdU076raCr8ZsKA V/BUZxxYamT9dchuhBZTXmW7d6yid1x0AhCk3U2VMw97vEsecpsT3INfl nvTgG64EFHTYxkGtwSAuWaTfGH+vCH8cUxQBdM3tSADGUU4GfsEs7Qh6E eFVVDgSEkVrFvNTm4XMRddcFLNJOGAGgypRl432HDi28GQIaQHDxYUYi6 7aGoToC8hp4caOFna0ZPDStHBF57ibOMe6syScHJKjNLfVzLhnF+EvW6W g==; X-IronPort-AV: E=McAfee;i="6200,9189,10288"; a="255521715" X-IronPort-AV: E=Sophos;i="5.90,187,1643702400"; d="scan'208";a="255521715" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2022 12:07:58 -0700 X-IronPort-AV: E=Sophos;i="5.90,187,1643702400"; d="scan'208";a="644799818" Received: from otc-tsn-4.jf.intel.com ([10.23.153.135]) by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2022 12:07:58 -0700 From: Kishen Maloor To: kishen.maloor@intel.com, mptcp@lists.linux.dev Subject: [PATCH mptcp-next 5/5] mptcp: expose server_side attribute in MPTCP netlink events Date: Wed, 16 Mar 2022 15:07:47 -0400 Message-Id: <20220316190747.634325-6-kishen.maloor@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220316190747.634325-1-kishen.maloor@intel.com> References: <20220316190747.634325-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