From nobody Wed May 15 10:14:38 2024 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 1799017BC1 for ; Thu, 22 Feb 2024 08:04:04 +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=1708589045; cv=none; b=GuBDn72pTFg5JkDBxoo1MaqoFsvJNwaeRSAUmXCc+nKSfp4PbzxGvWKqopK73IXe3FMfvc7h2ohLErj2PR5G39p3GDgN33/LDxlsmZBnQu/wAQXe4gxvJWRVWQpju83yve/rOUW4fc/C0nvVO2L4fB70kMRgpOjY+7WbUFySGuc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708589045; c=relaxed/simple; bh=MQH2DyIEuqM8zxy/9qZ9uOZnuvNFpDxYAdujiAjV4A0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=PyydF2sDyYeqRR4lYwLqHQgls77QihVzToetMAVFjnDW1BWDBacxs1sMXdW0/6gJKmkk76dDsuIvZKmGQXdGyVtAExX7wbSVL2xAmUSJhSIbMP/KIvqPsYUIVM7Hfr0IWw+oXc0eh0pqvqAkbx+e8trijbeft5qNtpAmcElEJ0M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Tbw0+Wzu; 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="Tbw0+Wzu" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BC5E3C433C7; Thu, 22 Feb 2024 08:04:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708589044; bh=MQH2DyIEuqM8zxy/9qZ9uOZnuvNFpDxYAdujiAjV4A0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Tbw0+WzuseEiYOksoWYTiIsuoZa6/f5MULuNu2xXZHCEjUy+2kr5j71oR4lM3MzHe DAIKFFWtyvVlrg+Ek/k22NjvNDkUpPPKMaZMXndYD0VI0TFOgjgWgmRvje1GK5mqW+ RYo/KEdJIS9tf6L7loLxqcwveBug9JpmWicXGUMn0pUxd3l7S6Lanp1I3Ynfi68RZa /BWCgnKog/WU9la/O1ixA5QPfFRLZeSp8cuvyp+TAZZdvX46e1YeHv9CVBcGchJxw5 bvYc40QiRL5gAhZqiA4UPQgXtib2PikamiN1sLDbdkncwF0k+0OqydBB72QgTjtbIq xuHRywcGEqS2A== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 1/7] mptcp: make pm_remove_addrs_and_subflows static Date: Thu, 22 Feb 2024 16:03:52 +0800 Message-Id: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: 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" From: Geliang Tang mptcp_pm_remove_addrs_and_subflows() is only used in pm_netlink.c, it's no longer used in pm_userspace.c any more since the commit 8b1c94da1e48 ("mptcp: only send RM_ADDR in nl_cmd_remove"). So this patch changes it to a static function. Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_netlink.c | 4 ++-- net/mptcp/protocol.h | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index f04e354b0c64..16f8bd47f4b8 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1547,8 +1547,8 @@ void mptcp_pm_remove_addrs(struct mptcp_sock *msk, st= ruct list_head *rm_list) } } =20 -void mptcp_pm_remove_addrs_and_subflows(struct mptcp_sock *msk, - struct list_head *rm_list) +static void mptcp_pm_remove_addrs_and_subflows(struct mptcp_sock *msk, + struct list_head *rm_list) { struct mptcp_rm_list alist =3D { .nr =3D 0 }, slist =3D { .nr =3D 0 }; struct mptcp_pm_addr_entry *entry; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index d611968ae6a4..746d0d1f94ec 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -988,8 +988,6 @@ int mptcp_pm_announce_addr(struct mptcp_sock *msk, int mptcp_pm_remove_addr(struct mptcp_sock *msk, const struct mptcp_rm_lis= t *rm_list); int mptcp_pm_remove_subflow(struct mptcp_sock *msk, const struct mptcp_rm_= list *rm_list); void mptcp_pm_remove_addrs(struct mptcp_sock *msk, struct list_head *rm_li= st); -void mptcp_pm_remove_addrs_and_subflows(struct mptcp_sock *msk, - struct list_head *rm_list); =20 void mptcp_free_local_addr_list(struct mptcp_sock *msk); =20 --=20 2.40.1 From nobody Wed May 15 10:14:38 2024 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 13BD617BC2 for ; Thu, 22 Feb 2024 08:04:06 +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=1708589046; cv=none; b=Zm0RI9zGuyGfelf8qZnq/onxAdbJ8lY+uJDf+dn3VWwCpsFkvKVSWLGbF5cI4Ea6sR7KFWMuLeso75b9s5sAvX2Duy3eU9iBhG66BWMnS5AC/fmx3xUUJL5z7LdgbHgFqlS6p9RoteQ56Ct3rnnreGCQGA/+W2zgS34ju0RaO1g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708589046; c=relaxed/simple; bh=V+LVlg96JbbxV9/NAT+eYZJ9otqIxXDrJP/t59ex8bQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ns4XoQ8li/0E0J0H2AXBAXrskS1B31uwsbgUJx/HdInehQyYsTf8teiRa0Huu9hLWQmAxODBGHppGi5FHaN7I7ZFrIDak6tqZfduFpxoCaYmm2pJwRr0i8dx8cEvigh2pOddtSrlUqZN24UL+AXcf1fZ6NkJUvUZVWooltGc2yI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=WUV8CQbk; 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="WUV8CQbk" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 16661C433F1; Thu, 22 Feb 2024 08:04:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708589045; bh=V+LVlg96JbbxV9/NAT+eYZJ9otqIxXDrJP/t59ex8bQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WUV8CQbkfFxDwmIRqKQieZZHmI1kYxrk56JaALC/meyovTvm4lkImnUz7EZlFeQpP rlksJXPuWu01cZnTV6UwFiyBfha+5ovsAgSrSyspnKDVLUDwnsW2TtlA9FXMdixi28 Cw1qC1T4HgTEpsmeVHJXToRldE8jxDk1kTaVk+8dS5QROnQcpM1lwVtEONbzAN1pfD I6p+hGX0Uze9sDSKvy+hSE5ak4Voh+f8kz4xcR+JEIxP147c1GOaCnzSt+DTJ5KX4K 8bnv2LsrSp44BJGC1XlODg4yYlQarjFc75AnCr8t7pYtOW67aBZ1ucKhiEHh0vl6vO UHFXb7IBmjzRQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 2/7] mptcp: drop duplicate header inclusions Date: Thu, 22 Feb 2024 16:03:53 +0800 Message-Id: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: 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" From: Geliang Tang The headers net/tcp.h, net/genetlink.h and uapi/linux/mptcp.h are included in protocol.h already, no need to include them again directly. This patch removes these duplicate header inclusions. Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) --- net/mptcp/diag.c | 1 - net/mptcp/mptcp_diag.c | 1 - net/mptcp/pm.c | 1 - net/mptcp/pm_netlink.c | 3 --- net/mptcp/protocol.c | 1 - net/mptcp/subflow.c | 2 -- 6 files changed, 9 deletions(-) diff --git a/net/mptcp/diag.c b/net/mptcp/diag.c index 6ff6f14674aa..aefe26e5ae72 100644 --- a/net/mptcp/diag.c +++ b/net/mptcp/diag.c @@ -10,7 +10,6 @@ #include #include #include -#include #include "protocol.h" =20 static int subflow_get_info(struct sock *sk, struct sk_buff *skb) diff --git a/net/mptcp/mptcp_diag.c b/net/mptcp/mptcp_diag.c index bd8ff5950c8d..0566dd793810 100644 --- a/net/mptcp/mptcp_diag.c +++ b/net/mptcp/mptcp_diag.c @@ -10,7 +10,6 @@ #include #include #include -#include #include "protocol.h" =20 static int sk_diag_dump(struct sock *sk, struct sk_buff *skb, diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index b4bdd92a5648..28e5d514bf20 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -6,7 +6,6 @@ #define pr_fmt(fmt) "MPTCP: " fmt =20 #include -#include #include #include "protocol.h" =20 diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 16f8bd47f4b8..a900df9f173d 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -8,12 +8,9 @@ =20 #include #include -#include #include #include #include -#include -#include =20 #include "protocol.h" #include "mib.h" diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 50dcba41b6ef..b2c4eecf86c4 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -15,7 +15,6 @@ #include #include #include -#include #include #if IS_ENABLED(CONFIG_MPTCP_IPV6) #include diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c index 6403c56f2902..1626dd20c68f 100644 --- a/net/mptcp/subflow.c +++ b/net/mptcp/subflow.c @@ -15,13 +15,11 @@ #include #include #include -#include #if IS_ENABLED(CONFIG_MPTCP_IPV6) #include #include #endif #include -#include #include "protocol.h" #include "mib.h" =20 --=20 2.40.1 From nobody Wed May 15 10:14:38 2024 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 9F4ED17BD3 for ; Thu, 22 Feb 2024 08:04:07 +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=1708589047; cv=none; b=UKqACwIrPug4xqiIVOuMfRpsxyWMGvLVft2CxfCyvyhqs6fG3tcmTcKwMzxiDkcaaY6YQW2EvnnoA+B+C1Xp32JA/nRQpXAW0Quu2fxMaarFCwPubpcg4mx0bJYWPKPREGetHkwA73AhOv2HYRHBmX3vc5AF1ZsQZcmKAKVuNn0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708589047; c=relaxed/simple; bh=fAy7vYN6t5YdsccNbCCfIufVORVxTGBp+1/VDFrXN3A=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=cVhTR2SQV9CBtuTa/qmz1jgNznI33NiI6Punw+1fiqoy7FoEwEbXKNVpf+uHtnTS+KuVQiWmtd8h9wg9JA449/GYAYD2L7SKD+GKPLIB5dD69QtNVjQXsAd7EJy1XTTGH42tU3Odu5MoSSrye+ef9KVkqtRTDgYirRgXTiPFKCQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fcNtZJ/n; 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="fcNtZJ/n" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 689A2C43390; Thu, 22 Feb 2024 08:04:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708589047; bh=fAy7vYN6t5YdsccNbCCfIufVORVxTGBp+1/VDFrXN3A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fcNtZJ/nb19qL7x6haoNmcnEwqs8wEqd13S3zXMQW8HiPEPluNelDSUAcBYFtf3OX WuD1NLEP21GlxkEJ0nVQGM6CF5B0BHfqEjwVNb61J6U0WupMUrhBFzeKyDC0+xKV4B k/PqLV8tWQab9li28XHHKVMExSHmT4Z2annzNI2h/5VMHVPiz4DwDqWkE/FgCh2ukw phtn6TKVJHRCTjx66MdRSOBA4dmnGVs4veOqTkMjzkQ4t3yna6jSFBT68wJJOP0pb8 owSkYUnHb+cvvUQgY3zYukaOUnQQkSC3jRw/V6EBsM3JhqSaxA5LKWZJw2yVVHJJ30 WgPAUziAM04zg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 3/7] mptcp: update set_flags interfaces Date: Thu, 22 Feb 2024 16:03:54 +0800 Message-Id: <79caf5e28b53cf570ceb4cfec579d470a6eb030b.1708588977.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: 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" From: Geliang Tang This patch updates set_flags interfaces, make it more similar to the interfaces of dump_addr and get_addr: mptcp_pm_set_flags(struct sk_buff *skb, struct genl_info *info) mptcp_pm_nl_set_flags(struct sk_buff *skb, struct genl_info *info) mptcp_userspace_pm_set_flags(struct sk_buff *skb, struct genl_info *info) Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 10 +++---- net/mptcp/pm_netlink.c | 58 +++++++++++++++++----------------------- net/mptcp/pm_userspace.c | 32 +++++++++++++++++----- net/mptcp/protocol.h | 10 +++---- 4 files changed, 58 insertions(+), 52 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 28e5d514bf20..55406720c607 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -456,13 +456,11 @@ int mptcp_pm_dump_addr(struct sk_buff *msg, struct ne= tlink_callback *cb) return mptcp_pm_nl_dump_addr(msg, cb); } =20 -int mptcp_pm_set_flags(struct net *net, struct nlattr *token, - struct mptcp_pm_addr_entry *loc, - struct mptcp_pm_addr_entry *rem, u8 bkup) +int mptcp_pm_set_flags(struct sk_buff *skb, struct genl_info *info) { - if (token) - return mptcp_userspace_pm_set_flags(net, token, loc, rem, bkup); - return mptcp_pm_nl_set_flags(net, loc, bkup); + if (info->attrs[MPTCP_PM_ATTR_TOKEN]) + return mptcp_userspace_pm_set_flags(skb, info); + return mptcp_pm_nl_set_flags(skb, info); } =20 void mptcp_pm_subflow_chk_stale(const struct mptcp_sock *msk, struct sock = *ssk) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index a900df9f173d..c799fe84dfd3 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1887,66 +1887,58 @@ static int mptcp_nl_set_flags(struct net *net, return ret; } =20 -int mptcp_pm_nl_set_flags(struct net *net, struct mptcp_pm_addr_entry *add= r, u8 bkup) +int mptcp_pm_nl_set_flags(struct sk_buff *skb, struct genl_info *info) { - struct pm_nl_pernet *pernet =3D pm_nl_get_pernet(net); + struct mptcp_pm_addr_entry addr =3D { .addr =3D { .family =3D AF_UNSPEC }= , }; + struct nlattr *attr =3D info->attrs[MPTCP_PM_ATTR_ADDR]; u8 changed, mask =3D MPTCP_PM_ADDR_FLAG_BACKUP | MPTCP_PM_ADDR_FLAG_FULLMESH; + struct net *net =3D sock_net(skb->sk); struct mptcp_pm_addr_entry *entry; + struct pm_nl_pernet *pernet; u8 lookup_by_id =3D 0; + u8 bkup =3D 0; + int ret; + + pernet =3D pm_nl_get_pernet(net); + + ret =3D mptcp_pm_parse_entry(attr, info, false, &addr); + if (ret < 0) + return ret; =20 - if (addr->addr.family =3D=3D AF_UNSPEC) { + if (addr.addr.family =3D=3D AF_UNSPEC) { lookup_by_id =3D 1; - if (!addr->addr.id) + if (!addr.addr.id) return -EOPNOTSUPP; } =20 + if (addr.flags & MPTCP_PM_ADDR_FLAG_BACKUP) + bkup =3D 1; + spin_lock_bh(&pernet->lock); - entry =3D __lookup_addr(pernet, &addr->addr, lookup_by_id); + entry =3D __lookup_addr(pernet, &addr.addr, lookup_by_id); if (!entry) { spin_unlock_bh(&pernet->lock); return -EINVAL; } - if ((addr->flags & MPTCP_PM_ADDR_FLAG_FULLMESH) && + if ((addr.flags & MPTCP_PM_ADDR_FLAG_FULLMESH) && (entry->flags & MPTCP_PM_ADDR_FLAG_SIGNAL)) { spin_unlock_bh(&pernet->lock); return -EINVAL; } =20 - changed =3D (addr->flags ^ entry->flags) & mask; - entry->flags =3D (entry->flags & ~mask) | (addr->flags & mask); - *addr =3D *entry; + changed =3D (addr.flags ^ entry->flags) & mask; + entry->flags =3D (entry->flags & ~mask) | (addr.flags & mask); + addr =3D *entry; spin_unlock_bh(&pernet->lock); =20 - mptcp_nl_set_flags(net, &addr->addr, bkup, changed); + mptcp_nl_set_flags(net, &addr.addr, bkup, changed); return 0; } =20 int mptcp_pm_nl_set_flags_doit(struct sk_buff *skb, struct genl_info *info) { - struct mptcp_pm_addr_entry remote =3D { .addr =3D { .family =3D AF_UNSPEC= }, }; - struct mptcp_pm_addr_entry addr =3D { .addr =3D { .family =3D AF_UNSPEC }= , }; - struct nlattr *attr_rem =3D info->attrs[MPTCP_PM_ATTR_ADDR_REMOTE]; - struct nlattr *token =3D info->attrs[MPTCP_PM_ATTR_TOKEN]; - struct nlattr *attr =3D info->attrs[MPTCP_PM_ATTR_ADDR]; - struct net *net =3D sock_net(skb->sk); - u8 bkup =3D 0; - int ret; - - ret =3D mptcp_pm_parse_entry(attr, info, false, &addr); - if (ret < 0) - return ret; - - if (attr_rem) { - ret =3D mptcp_pm_parse_entry(attr_rem, info, false, &remote); - if (ret < 0) - return ret; - } - - if (addr.flags & MPTCP_PM_ADDR_FLAG_BACKUP) - bkup =3D 1; - - return mptcp_pm_set_flags(net, token, &addr, &remote, bkup); + return mptcp_pm_set_flags(skb, info); } =20 static void mptcp_nl_mcast_send(struct net *net, struct sk_buff *nlskb, gf= p_t gfp) diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index b9809d988693..7ef3b69852f0 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -546,14 +546,19 @@ int mptcp_pm_nl_subflow_destroy_doit(struct sk_buff *= skb, struct genl_info *info return err; } =20 -int mptcp_userspace_pm_set_flags(struct net *net, struct nlattr *token, - struct mptcp_pm_addr_entry *loc, - struct mptcp_pm_addr_entry *rem, u8 bkup) +int mptcp_userspace_pm_set_flags(struct sk_buff *skb, struct genl_info *in= fo) { + struct mptcp_pm_addr_entry loc =3D { .addr =3D { .family =3D AF_UNSPEC },= }; + struct mptcp_pm_addr_entry rem =3D { .addr =3D { .family =3D AF_UNSPEC },= }; + struct nlattr *attr_rem =3D info->attrs[MPTCP_PM_ATTR_ADDR_REMOTE]; + struct nlattr *token =3D info->attrs[MPTCP_PM_ATTR_TOKEN]; + struct nlattr *attr =3D info->attrs[MPTCP_PM_ATTR_ADDR]; + struct net *net =3D sock_net(skb->sk); struct mptcp_sock *msk; int ret =3D -EINVAL; struct sock *sk; u32 token_val; + u8 bkup =3D 0; =20 token_val =3D nla_get_u32(token); =20 @@ -566,12 +571,27 @@ int mptcp_userspace_pm_set_flags(struct net *net, str= uct nlattr *token, if (!mptcp_pm_is_userspace(msk)) goto set_flags_err; =20 - if (loc->addr.family =3D=3D AF_UNSPEC || - rem->addr.family =3D=3D AF_UNSPEC) + ret =3D mptcp_pm_parse_entry(attr, info, false, &loc); + if (ret < 0) + goto set_flags_err; + + if (attr_rem) { + ret =3D mptcp_pm_parse_entry(attr_rem, info, false, &rem); + if (ret < 0) + goto set_flags_err; + } + + if (loc.addr.family =3D=3D AF_UNSPEC || + rem.addr.family =3D=3D AF_UNSPEC) { + ret =3D -EINVAL; goto set_flags_err; + } + + if (loc.flags & MPTCP_PM_ADDR_FLAG_BACKUP) + bkup =3D 1; =20 lock_sock(sk); - ret =3D mptcp_pm_nl_mp_prio_send_ack(msk, &loc->addr, &rem->addr, bkup); + ret =3D mptcp_pm_nl_mp_prio_send_ack(msk, &loc.addr, &rem.addr, bkup); release_sock(sk); =20 set_flags_err: diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 746d0d1f94ec..7905783c95e4 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -975,13 +975,9 @@ int mptcp_pm_nl_get_flags_and_ifindex_by_id(struct mpt= cp_sock *msk, unsigned int int mptcp_userspace_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, unsigned int id, u8 *flags, int *ifindex); -int mptcp_pm_set_flags(struct net *net, struct nlattr *token, - struct mptcp_pm_addr_entry *loc, - struct mptcp_pm_addr_entry *rem, u8 bkup); -int mptcp_pm_nl_set_flags(struct net *net, struct mptcp_pm_addr_entry *add= r, u8 bkup); -int mptcp_userspace_pm_set_flags(struct net *net, struct nlattr *token, - struct mptcp_pm_addr_entry *loc, - struct mptcp_pm_addr_entry *rem, u8 bkup); +int mptcp_pm_set_flags(struct sk_buff *skb, struct genl_info *info); +int mptcp_pm_nl_set_flags(struct sk_buff *skb, struct genl_info *info); +int mptcp_userspace_pm_set_flags(struct sk_buff *skb, struct genl_info *in= fo); int mptcp_pm_announce_addr(struct mptcp_sock *msk, const struct mptcp_addr_info *addr, bool echo); --=20 2.40.1 From nobody Wed May 15 10:14:38 2024 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 EA88317BD9 for ; Thu, 22 Feb 2024 08:04:08 +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=1708589049; cv=none; b=dhYC/EwOzmm5E03QxDpqqmXAUpyH4kndiG3lOu2W4kGn23V1rZcVYwgp33Togc4NmYzbkloS9LQK4tBO4OAD28Vhh7uto2UQjPbB1kYufotf375YDPD5WeYNONUXrA6fJM3SRhBV1zHy52ere+ndTAtm1SliiBguFPM/UcjSk+g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708589049; c=relaxed/simple; bh=QBkh2Zicsocn0K0m92k5uZN4Jw86khcAHLTfalFjZqU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=EZaws4aaBtBusx4Nk9D+uZx6lPo97Ds/3bWgdbseXMKpI/nulT6asyZye/I51fxfa3Ood2UA1+RjPHDGy45FDY6oWuKMNS/wBK+oQV0lgnTa0QbALmzcnHlUDjuCvf3xjRESIA248xmqHx7eWXakfzjCVSXf9P3t9roWDqNLFyE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ViVj4vqs; 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="ViVj4vqs" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B50CFC433F1; Thu, 22 Feb 2024 08:04:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708589048; bh=QBkh2Zicsocn0K0m92k5uZN4Jw86khcAHLTfalFjZqU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ViVj4vqsQ1S3SLqF86XhP6IbNjGlrdTLFuxJaxTlbPOCsIP2L6ny3f5JwhEjoodf0 FRctSIGLSkDuQ+pmi4j2oTOHlGLq3ttb4DiSlaCwCa5qL9Ih4y0YhfK4jcbzWCbA5e b4h5TG39r7lutE9QggGLa5DiQiT3LwSoIkgaESXgwGpQUZkBjU1+sauU5fDOWOss+m 9aXCqGTUTAaOptcurEdrejHbQIaztQmT7nehoVPON/iusqzeqg1wWwSOqnKQhFLUpC 7pcin0B25ygidofuDOh4K723KLpUK3+PpuOqP6hvr/PTbjXw2b3lnODL5n0PlnEVZb lIzXH9hoVn13g== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 4/7] mptcp: set error messages for set_flags Date: Thu, 22 Feb 2024 16:03:55 +0800 Message-Id: <8d81f9269356ffaf710daef741ae9c155c63efdc.1708588977.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: 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" From: Geliang Tang In addition to returning the error value, this patch also sets an error messages with GENL_SET_ERR_MSG or NL_SET_ERR_MSG_ATTR both for pm_netlink.c and pm_userspace.c. It will help the userspace to identify the issue. Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_netlink.c | 6 +++++- net/mptcp/pm_userspace.c | 9 +++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index c799fe84dfd3..354083b8386f 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1908,8 +1908,10 @@ int mptcp_pm_nl_set_flags(struct sk_buff *skb, struc= t genl_info *info) =20 if (addr.addr.family =3D=3D AF_UNSPEC) { lookup_by_id =3D 1; - if (!addr.addr.id) + if (!addr.addr.id) { + GENL_SET_ERR_MSG(info, "missing required inputs"); return -EOPNOTSUPP; + } } =20 if (addr.flags & MPTCP_PM_ADDR_FLAG_BACKUP) @@ -1919,11 +1921,13 @@ int mptcp_pm_nl_set_flags(struct sk_buff *skb, stru= ct genl_info *info) entry =3D __lookup_addr(pernet, &addr.addr, lookup_by_id); if (!entry) { spin_unlock_bh(&pernet->lock); + GENL_SET_ERR_MSG(info, "address not found"); return -EINVAL; } if ((addr.flags & MPTCP_PM_ADDR_FLAG_FULLMESH) && (entry->flags & MPTCP_PM_ADDR_FLAG_SIGNAL)) { spin_unlock_bh(&pernet->lock); + GENL_SET_ERR_MSG(info, "invalid addr flags"); return -EINVAL; } =20 diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index 7ef3b69852f0..9f5d422d5ef6 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -563,13 +563,17 @@ int mptcp_userspace_pm_set_flags(struct sk_buff *skb,= struct genl_info *info) token_val =3D nla_get_u32(token); =20 msk =3D mptcp_token_get_sock(net, token_val); - if (!msk) + if (!msk) { + NL_SET_ERR_MSG_ATTR(info->extack, token, "invalid token"); return ret; + } =20 sk =3D (struct sock *)msk; =20 - if (!mptcp_pm_is_userspace(msk)) + if (!mptcp_pm_is_userspace(msk)) { + GENL_SET_ERR_MSG(info, "userspace PM not selected"); goto set_flags_err; + } =20 ret =3D mptcp_pm_parse_entry(attr, info, false, &loc); if (ret < 0) @@ -583,6 +587,7 @@ int mptcp_userspace_pm_set_flags(struct sk_buff *skb, s= truct genl_info *info) =20 if (loc.addr.family =3D=3D AF_UNSPEC || rem.addr.family =3D=3D AF_UNSPEC) { + GENL_SET_ERR_MSG(info, "invalid address families"); ret =3D -EINVAL; goto set_flags_err; } --=20 2.40.1 From nobody Wed May 15 10:14:38 2024 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 504B117BD3 for ; Thu, 22 Feb 2024 08:04:09 +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=1708589050; cv=none; b=UkHWYYJtia2WXtVWkaIvdRNjdBzOpvjiPhkcjowBdJcZNHEwJKo0DPYUKxQaHOyfT+dK+ZOvDf6V7NjnGulf7KJrEHlD9S449bw+vnMrmOIl1RUcoGw67OTvMqD8At/5Uf9k9sM7uFza7ddXBFDY81zUZvNIukJEBLP1pdLk7SE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708589050; c=relaxed/simple; bh=ancl2DzBmhfqqS8OZ5ING8p/4YGbuu8z+XpjU1I6DB8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=WRrtaS64WDbEkUsXgRRUFieUD7fp1ZXXdCPEXlQaMXLbBWqcG8+1oM5od2Tu65bv05C9Gq59o81d+qAUZbof0Tz9vDp1fprglXjQGFqzjiUItLmnWvuXTCKE4ZZZN/uA94Zw1cNofl36sTZdo6b/vXUNVf3GiZleurAuFUoLBfI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QLHuXj6y; 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="QLHuXj6y" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0B09BC433C7; Thu, 22 Feb 2024 08:04:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708589049; bh=ancl2DzBmhfqqS8OZ5ING8p/4YGbuu8z+XpjU1I6DB8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QLHuXj6yQ7QsRNx62JYJHDufLDI8gb14Ko0ervtSm5yZF6TMk13tlRyiIqFRe0ljW hAnNzNhaPT+j37xlcKEgpcZBxOfteAuy7OozhT/HBlE0IGrcBpl4r3DF29yg44n1XV o6GGzHQOMkFoUo9p6ZS+w1UypmHP1HWRP2up/mQdR77vv86/hjkR0UUWF4VxgRIhAN meNJZlrU6CkZ9pBJRjVf4U4JQWbzRxvwSTSx75M7PMMwAufgXUBKTdk6VlqWS5u+SN 7ZF98KWKGSyLEkUwdBFBFbZqOCrNb3R32lBfATarbnP5tkCgedcJUWZ1ojykIP8xFk 23Su2VOYEKwSQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 5/7] mptcp: drop lookup_by_id in lookup_addr Date: Thu, 22 Feb 2024 16:03:56 +0800 Message-Id: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: 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" From: Geliang Tang When the lookup_by_id parameter of __lookup_addr() is true, it's the same as __lookup_addr_by_id(), it can be replaced by __lookup_addr_by_id() directly. So drop this parameter, let __lookup_addr() only looks up address on the local address list by comparing addresses in it, not address ids. Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_netlink.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 354083b8386f..5c17d39146ea 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -499,15 +499,12 @@ __lookup_addr_by_id(struct pm_nl_pernet *pernet, unsi= gned int id) } =20 static struct mptcp_pm_addr_entry * -__lookup_addr(struct pm_nl_pernet *pernet, const struct mptcp_addr_info *i= nfo, - bool lookup_by_id) +__lookup_addr(struct pm_nl_pernet *pernet, const struct mptcp_addr_info *i= nfo) { struct mptcp_pm_addr_entry *entry; =20 list_for_each_entry(entry, &pernet->local_addr_list, list) { - if ((!lookup_by_id && - mptcp_addresses_equal(&entry->addr, info, entry->addr.port)) || - (lookup_by_id && entry->addr.id =3D=3D info->id)) + if (mptcp_addresses_equal(&entry->addr, info, entry->addr.port)) return entry; } return NULL; @@ -537,7 +534,7 @@ static void mptcp_pm_create_subflow_or_signal_addr(stru= ct mptcp_sock *msk) =20 mptcp_local_address((struct sock_common *)msk->first, &mpc_addr); rcu_read_lock(); - entry =3D __lookup_addr(pernet, &mpc_addr, false); + entry =3D __lookup_addr(pernet, &mpc_addr); if (entry) { __clear_bit(entry->addr.id, msk->pm.id_avail_bitmap); msk->mpc_endpoint_id =3D entry->addr.id; @@ -1918,7 +1915,8 @@ int mptcp_pm_nl_set_flags(struct sk_buff *skb, struct= genl_info *info) bkup =3D 1; =20 spin_lock_bh(&pernet->lock); - entry =3D __lookup_addr(pernet, &addr.addr, lookup_by_id); + entry =3D lookup_by_id ? __lookup_addr_by_id(pernet, addr.addr.id) : + __lookup_addr(pernet, &addr.addr); if (!entry) { spin_unlock_bh(&pernet->lock); GENL_SET_ERR_MSG(info, "address not found"); --=20 2.40.1 From nobody Wed May 15 10:14:38 2024 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 A76E917BD3 for ; Thu, 22 Feb 2024 08:04:11 +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=1708589051; cv=none; b=cGwMOX9hdfjH09+XhBPryDFRabG9RvDvOlwntABqhoK5g7WmeUaO2a+l48d/wSrNoF+WIilRkqp6kooiWJ37JCY7U1TvE9amkaB3TM8JLX+luzagDQ6hehjWPaf9pZ2TkobJpPlqOrv4Ym5QfP6uIy3IMkGP5uiLJ8NdbdrnA1Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708589051; c=relaxed/simple; bh=f0e6F+ivXNWcy5LLkAIgtf0gsblVOmqzNopG+jGxoZE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=AKSmPU2+T9buTAi/C4imYytKvqU79rAh4K14qcSyYVJ8ySMI0CfrkhRGdn4hrxMCRFs2jDOeH07k8oxY6UK1y6EESAv/QgW4Oc+RqbAoHWzAiwV3FS+Ef4nZFvnfSmNd3/Y/rx1w/LJdlaCD4rHaBLoqkBOyLS0iHnq4MK+ou3w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Cb4FM8fn; 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="Cb4FM8fn" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 584E8C433F1; Thu, 22 Feb 2024 08:04:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708589051; bh=f0e6F+ivXNWcy5LLkAIgtf0gsblVOmqzNopG+jGxoZE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Cb4FM8fnqkP3RRPBbTKL1jY+ZpQo2H6B5m/yGPBWt7Lx9psj6RzlvJt2G4ebKh0xC V0Gqkczmu9CrRxRh0jeVFwftt6WyJBoNRwdxBxB2bZnMAiAHslXh4aBRaHvCgLyvRh Q05v1ih/luaMfRxCZDUp7mw6gsebReIZodA86Y0ljR4rxa9wbxvmMf4Z0IWuPTlf3Y ZI0EQyyVqaxsIdc183jVFNEOg3dBFn01+ST19Wl6YsSuZyHBnZwBnJrvIerkyF/l8t 7Ypnz9uGdETavGrnH90I0v2486+JM02e6NBkg8jJF6hy6D5hZUWJ+ASigSlpdfUr2/ cEQlHE5i5rXKg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 6/7] mptcp: add check_id for lookup_anno_list_by_saddr Date: Thu, 22 Feb 2024 16:03:57 +0800 Message-Id: <608dcc5649b212dc1a37c72fa7b465d3e8619316.1708588977.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: 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" From: Geliang Tang This patch adds a new helper mptcp_addresses_equal_check_id() to test the address ids, as well as the address. This can be used to test if the two given addresses are identically equal, they have both the same address and the same address id. Add a new parameter check_id for mptcp_lookup_anno_list_by_saddr(), pass it to mptcp_addresses_equal_check_id(). Then in mptcp_pm_del_add_timer(), the input parameter check_id can be passed as the new parameter into mptcp_lookup_anno_list_by_saddr(). After this, this condition: (!check_id || entry->addr.id =3D=3D addr->id) can be dropped, only test if 'entry' is NULL is enough. Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) --- net/mptcp/pm.c | 2 +- net/mptcp/pm_netlink.c | 13 +++++++------ net/mptcp/protocol.h | 10 +++++++++- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 55406720c607..2f5ccafe7e34 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -257,7 +257,7 @@ void mptcp_pm_add_addr_echoed(struct mptcp_sock *msk, =20 spin_lock_bh(&pm->lock); =20 - if (mptcp_lookup_anno_list_by_saddr(msk, addr) && READ_ONCE(pm->work_pend= ing)) + if (mptcp_lookup_anno_list_by_saddr(msk, addr, false) && READ_ONCE(pm->wo= rk_pending)) mptcp_pm_schedule_work(msk, MPTCP_PM_SUBFLOW_ESTABLISHED); =20 spin_unlock_bh(&pm->lock); diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 5c17d39146ea..7d755c0a32bb 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -237,14 +237,15 @@ bool mptcp_pm_nl_check_work_pending(struct mptcp_sock= *msk) =20 struct mptcp_pm_add_entry * mptcp_lookup_anno_list_by_saddr(const struct mptcp_sock *msk, - const struct mptcp_addr_info *addr) + const struct mptcp_addr_info *addr, + bool check_id) { struct mptcp_pm_add_entry *entry; =20 lockdep_assert_held(&msk->pm.lock); =20 list_for_each_entry(entry, &msk->pm.anno_list, list) { - if (mptcp_addresses_equal(&entry->addr, addr, true)) + if (mptcp_addresses_equal_check_id(&entry->addr, addr, true, check_id)) return entry; } =20 @@ -324,12 +325,12 @@ mptcp_pm_del_add_timer(struct mptcp_sock *msk, struct sock *sk =3D (struct sock *)msk; =20 spin_lock_bh(&msk->pm.lock); - entry =3D mptcp_lookup_anno_list_by_saddr(msk, addr); - if (entry && (!check_id || entry->addr.id =3D=3D addr->id)) + entry =3D mptcp_lookup_anno_list_by_saddr(msk, addr, check_id); + if (entry) entry->retrans_times =3D ADD_ADDR_RETRANS_MAX; spin_unlock_bh(&msk->pm.lock); =20 - if (entry && (!check_id || entry->addr.id =3D=3D addr->id)) + if (entry) sk_stop_timer_sync(sk, &entry->add_timer); =20 return entry; @@ -344,7 +345,7 @@ bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk, =20 lockdep_assert_held(&msk->pm.lock); =20 - add_entry =3D mptcp_lookup_anno_list_by_saddr(msk, addr); + add_entry =3D mptcp_lookup_anno_list_by_saddr(msk, addr, false); =20 if (add_entry) { if (mptcp_pm_is_kernel(msk)) diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 7905783c95e4..130d4c55e10a 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -673,6 +673,13 @@ bool mptcp_addresses_equal(const struct mptcp_addr_inf= o *a, const struct mptcp_addr_info *b, bool use_port); void mptcp_local_address(const struct sock_common *skc, struct mptcp_addr_= info *addr); =20 +static inline bool mptcp_addresses_equal_check_id(const struct mptcp_addr_= info *a, + const struct mptcp_addr_info *b, + bool use_port, bool check_id) +{ + return mptcp_addresses_equal(a, b, use_port) ? a->id =3D=3D b->id : false; +} + /* called with sk socket lock held */ int __mptcp_subflow_connect(struct sock *sk, const struct mptcp_addr_info = *loc, const struct mptcp_addr_info *remote); @@ -966,7 +973,8 @@ mptcp_pm_del_add_timer(struct mptcp_sock *msk, const struct mptcp_addr_info *addr, bool check_id); struct mptcp_pm_add_entry * mptcp_lookup_anno_list_by_saddr(const struct mptcp_sock *msk, - const struct mptcp_addr_info *addr); + const struct mptcp_addr_info *addr, + bool check_id); int mptcp_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, unsigned int id, u8 *flags, int *ifindex); --=20 2.40.1 From nobody Wed May 15 10:14:38 2024 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 F087317C62 for ; Thu, 22 Feb 2024 08:04:12 +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=1708589053; cv=none; b=XVaLjIBXmCShViT8kEX0nKziF/oa4gfw1tFjyp9IYwGm3T8cbbnKB1Ll2AaFrTXvZMNkqOumxv11L+QL2PduBp4jOSf2wzfVosND4P4DMsMyqbgMa44CoSjKKNWcFmI5w8DA2VBUWGGGpbNfIXJ+jyJGhla5M6dQuRazhIwjxIY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708589053; c=relaxed/simple; bh=ATCTVAieJLmgW4Gyo/eDCk/g6pDUtWhemFOfGV3JkCo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=lrE0Z042W4BapdA3ND5pYywXmxNTL35vvxGAY2k7Cz/71azjkREG09GdAKYzyWv1iWuwjQ1oiOJKiC0kDrmCFH0B5h02UZtIj7em1O4Pn6GAyNNkCeeHaaDADUZ98nsz6P2oQBb+JWyoDTq9muTQApZdeb/rtr9DG0XCojhuqpk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=DC9JL61G; 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="DC9JL61G" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A7FD5C433C7; Thu, 22 Feb 2024 08:04:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708589052; bh=ATCTVAieJLmgW4Gyo/eDCk/g6pDUtWhemFOfGV3JkCo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=DC9JL61Gex8A1uRfXKL5zPpbu7VeMabnJltHEr0smjD2NACpSChZBP85+9oUVKeU0 y51WsC3VsaT/piIOcFdX28oGRZ0g1NXc2QyGlebBdOxVbep6g8O5ryYzUpGvZAKt0S skzwP0RGrKi04W567efqnoBxoI+IAqs4mmetmoiBOZ9Aih6Q95xyIt8484QV/vKzT9 pguGFPSm6uclyh7J4htCnEzk7smv6/iHtB2fnbXZFDgFuL2Olpriy4cfuhC6VQoR/6 7WiIT+2xfgSkCzaEK5MvFZrjommJ7Y84ZA3Qhu5sYY2W3CqqfODH7AoRKEPWPtmKNN SAkGLY8w0XPKQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v2 7/7] selftests: mptcp: flush userspace addrs list Date: Thu, 22 Feb 2024 16:03:58 +0800 Message-Id: <2a89f983d02141661c2f7cf0bfb4109ee74db60e.1708588977.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: 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" From: Geliang Tang This patch adds a new helper userspace_pm_flush() to flush all addresses for the userspace PM. Invoke it in userspace pm dump address and subflow tests. And use dump commands to check if the userspace pm local address list is empty after addresses flushing. Signed-off-by: Geliang Tang Reviewed-by: Matthieu Baerts (NGI0) --- .../testing/selftests/net/mptcp/mptcp_join.sh | 41 +++++++++++++++---- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 292fccb1f7f4..be1d2005c4fe 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -3356,6 +3356,19 @@ userspace_pm_get_addr() ip netns exec $1 ./pm_nl_ctl get $2 token $tk } =20 +# $1: ns +userspace_pm_flush() +{ + local ns=3D"${1}" + local id + local addr + + while read -r _ id _ _ addr; do + userspace_pm_rm_addr "${ns}" "${id}" + userspace_pm_rm_sf "${ns}" "${addr}" $SUB_ESTABLISHED + done <<< $(userspace_pm_dump "${ns}") +} + userspace_pm_chk_dump_addr() { local ns=3D"${1}" @@ -3500,27 +3513,37 @@ userspace_tests() if reset_with_events "userspace pm create destroy subflow" && continue_if mptcp_lib_has_file '/proc/sys/net/mptcp/pm_type'; then set_userspace_pm $ns2 - pm_nl_set_limits $ns1 0 1 + pm_nl_set_limits $ns1 0 2 speed=3D5 \ run_tests $ns1 $ns2 10.0.1.1 & local tests_pid=3D$! wait_mpj $ns2 + userspace_pm_add_sf $ns2 10.0.2.2 10 userspace_pm_add_sf $ns2 10.0.3.2 20 - chk_join_nr 1 1 1 - chk_mptcp_info subflows 1 subflows 1 - chk_subflows_total 2 2 + chk_join_nr 2 2 2 + chk_mptcp_info subflows 2 subflows 2 + chk_subflows_total 3 3 userspace_pm_chk_dump_addr "${ns2}" \ - "id 20 flags subflow 10.0.3.2" \ + $'id 10 flags subflow 10.0.2.2\nid 20 flags subflow 10.0.3.2' \ "subflow" + userspace_pm_chk_get_addr "${ns2}" "10" "id 10 flags subflow 10.0.2.2" userspace_pm_chk_get_addr "${ns2}" "20" "id 20 flags subflow 10.0.3.2" userspace_pm_rm_addr $ns2 20 userspace_pm_rm_sf $ns2 10.0.3.2 $SUB_ESTABLISHED userspace_pm_chk_dump_addr "${ns2}" \ - "" \ + "id 10 flags subflow 10.0.2.2" \ "after rm_addr 20" - chk_rm_nr 1 1 - chk_mptcp_info subflows 0 subflows 0 - chk_subflows_total 1 1 + if mptcp_lib_kallsyms_has "mptcp_userspace_pm_dump_addr$"; then + userspace_pm_flush $ns2 + userspace_pm_chk_dump_addr "${ns2}" "" "after flush" + chk_rm_nr 2 2 + chk_mptcp_info subflows 0 subflows 0 + chk_subflows_total 1 1 + else + chk_rm_nr 1 1 + chk_mptcp_info subflows 1 subflows 1 + chk_subflows_total 2 2 + fi kill_events_pids mptcp_lib_kill_wait $tests_pid fi --=20 2.40.1