From nobody Wed May 15 11:26:56 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 44E343C469 for ; Thu, 1 Feb 2024 05:19:13 +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=1706764754; cv=none; b=O0uHorpCS6FeeQFOgHbLlGyw0uk6fPpeZarEMijAVkWPnggVhdyBHRGPTNNECHOGcnQYEve3j0fkiz8BY5ThtadGAcgD4VAkH1uC5nsCVaJjAoQr+n6CL17+blldUquo+PsdJ0GQledD36jJylwjiTLwWrdSG9FG1BUitO0fbyM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706764754; c=relaxed/simple; bh=Hrg2bUtfefYcSiOtvay68csoP6XOzPk1fakYhM+R2Uc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=N04xkJgwpKURX9cHjTkSlgGLV2TinG2ScYcHb8KbOR4zzuGTbpk2MrJORo5PRgOdnElkt3JANS2ELD++HnNAXIDr5ecFRB5k0YjcTJpNf03Yry/wcEDwlnHeS+4A2O8xKzh1u/hQMDmYkm3SICGTvld+xh0/VVClzIy5Wh1INMg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=LE5+26wD; 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="LE5+26wD" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DB7DBC43390; Thu, 1 Feb 2024 05:19:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1706764753; bh=Hrg2bUtfefYcSiOtvay68csoP6XOzPk1fakYhM+R2Uc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LE5+26wDvOAPEzT89Qgo76C+WCrIUlTh0bjpvu3q8GzVXur+A1ZdO/Qf3aXrDa3Yv 3SxGk+02jZsWZLHKkbSbP4h1WcudLdRkTb2omuMEd+Rf0waC5tnV2ft+StJVkwWady UhECLXbVAfgAmZkZoW9T2t+6JwrOFy7WEUlZ39bYUeSwx4NpRu2fk3QVHjmh7jJywW 8ybISuuyeUmo90Zz0u0uceFotJX2mddsAcZIVQEKTkJY0ptqvpZfyLbQ2O9eHqkb1k ZZQdvCoDrK5+x/TOgErueFt+kOXT1juKYbwp+/q1fu2/qGvo3s+cPmN2kV5IXC1Szy Ixd9mZtIzViLQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v11 01/15] mptcp: export mptcp_genl_family & mptcp_nl_fill_addr Date: Thu, 1 Feb 2024 13:18:51 +0800 Message-Id: <03ae7973456dcb1f5a51c839dfccf4a7e3f3b509.1706764519.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 exports struct mptcp_genl_family and mptcp_nl_fill_addr() helper to allow them can be used in pm_userspace.c. Signed-off-by: Geliang Tang --- net/mptcp/pm_netlink.c | 9 +++------ net/mptcp/protocol.h | 4 ++++ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 9367ab506908..4d06a710aee6 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -18,9 +18,6 @@ #include "protocol.h" #include "mib.h" =20 -/* forward declaration */ -static struct genl_family mptcp_genl_family; - static int pm_nl_pernet_id; =20 struct mptcp_pm_add_entry { @@ -1633,8 +1630,8 @@ int mptcp_pm_nl_flush_addrs_doit(struct sk_buff *skb,= struct genl_info *info) return 0; } =20 -static int mptcp_nl_fill_addr(struct sk_buff *skb, - struct mptcp_pm_addr_entry *entry) +int mptcp_nl_fill_addr(struct sk_buff *skb, + struct mptcp_pm_addr_entry *entry) { struct mptcp_addr_info *addr =3D &entry->addr; struct nlattr *attr; @@ -2278,7 +2275,7 @@ void mptcp_event(enum mptcp_event_type type, const st= ruct mptcp_sock *msk, nlmsg_free(skb); } =20 -static struct genl_family mptcp_genl_family __ro_after_init =3D { +struct genl_family mptcp_genl_family __ro_after_init =3D { .name =3D MPTCP_PM_NAME, .version =3D MPTCP_PM_VER, .netnsok =3D true, diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index eefd1397106d..b6664f58e0ad 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -343,6 +343,8 @@ struct mptcp_sock { #define mptcp_for_each_subflow_safe(__msk, __subflow, __tmp) \ list_for_each_entry_safe(__subflow, __tmp, &((__msk)->conn_list), node) =20 +extern struct genl_family mptcp_genl_family; + static inline void msk_owned_by_me(const struct mptcp_sock *msk) { sock_owned_by_me((const struct sock *)msk); @@ -964,6 +966,8 @@ void __mptcp_fastopen_gen_msk_ackseq(struct mptcp_sock = *msk, struct mptcp_subflo const struct mptcp_options_received *mp_opt); void mptcp_fastopen_subflow_synack_set_params(struct mptcp_subflow_context= *subflow, struct request_sock *req); +int mptcp_nl_fill_addr(struct sk_buff *skb, + struct mptcp_pm_addr_entry *entry); =20 static inline bool mptcp_pm_should_add_signal(struct mptcp_sock *msk) { --=20 2.40.1 From nobody Wed May 15 11:26:56 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 9626839AF6 for ; Thu, 1 Feb 2024 05:19:15 +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=1706764755; cv=none; b=g/VcNxBiEsOnIiUVpV0sZc+XYIeksUzZ4ccD5XdAn06RhzAwafx8AxsCXnOnam8/0ugQuxCtv9iPWNSxeNEIuK9dxMrA/loqchMzN39mBP9peIGS1nOw8v8mOk3z7KUkSE4SSXgSf0VEPX823F9nrz0q8x1kTG67pt1oIaWQwok= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706764755; c=relaxed/simple; bh=1Fn5ag28f6/za2Tv0avjcu5uZO/3dltobaHC+sf189Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HB1ie9mnAu10Fy8NJ2rnTXg0dD2talDa+EjZbRNRFb9hMbDqK4r+BBLY6F+/mOjjY+mAdj0gtBDMfqhDRs5Mfn+FRUDPmEmXE2t718bxTlGBPP6FVMIHky3onLxi9GLXkBWtp1obDybenObMwT7UzApDysr83P/woc+DnBzC1TQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Qq1m1dYd; 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="Qq1m1dYd" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3A9DCC43394; Thu, 1 Feb 2024 05:19:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1706764755; bh=1Fn5ag28f6/za2Tv0avjcu5uZO/3dltobaHC+sf189Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Qq1m1dYdfSwIfyHNULSP4Z/gWueL5R3tU2g2l435Z7unLMjTUWjy3u05q1NbUJBg7 GnZLNB8rRB5EsTuJrswQ2i4v59+AyCLeJaeMALGZo1tpwIcq31O96GFK6j7o7YhZS9 VVNo3n26QwAAwYQ6cVofMWJSiqqFZQSCny6BOVRjL7ct6kU5A8jfr+1hr8+C8S0ahn aNQo8Uk9QAjDyLeGqJdPwWwOQOeSB5RhHsKOHm6lM8MW42BkDMKyRXOs1VUq1HtSs7 oXfGJOp/wdHFcx9WcnXAuk/PtA2Sh5DtbxCAVaMbZuwAgOqjrvQNW8bcG9d2gEIwnx x4/H7nA0UaEVA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v11 02/15] mptcp: implement mptcp_userspace_pm_dump_addr Date: Thu, 1 Feb 2024 13:18:52 +0800 Message-Id: <7c94999f19af487f2daabea3d6febfb6e304c36c.1706764519.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 implements mptcp_userspace_pm_dump_addr() to dump addresses from userspace pm address list. Use mptcp_token_get_sock() to get the msk from the given token, if userspace PM is enabled in it, traverse each address entry in address list, put every entry to userspace using mptcp_pm_nl_put_entry_msg(). Signed-off-by: Geliang Tang --- net/mptcp/pm_userspace.c | 60 ++++++++++++++++++++++++++++++++++++++++ net/mptcp/protocol.h | 2 ++ 2 files changed, 62 insertions(+) diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index b40a69649fe1..199fcc900219 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -572,3 +572,63 @@ int mptcp_userspace_pm_set_flags(struct net *net, stru= ct nlattr *token, sock_put(sk); return ret; } + +int mptcp_userspace_pm_dump_addr(struct sk_buff *msg, + struct netlink_callback *cb) +{ + struct id_bitmap { + DECLARE_BITMAP(map, MPTCP_PM_MAX_ADDR_ID + 1); + } *bitmap; + const struct genl_info *info =3D genl_info_dump(cb); + struct net *net =3D sock_net(msg->sk); + struct mptcp_pm_addr_entry *entry; + struct mptcp_sock *msk; + struct nlattr *token; + int ret =3D -EINVAL; + struct sock *sk; + void *hdr; + + bitmap =3D (struct id_bitmap *)cb->ctx; + token =3D info->attrs[MPTCP_PM_ATTR_TOKEN]; + + msk =3D mptcp_token_get_sock(net, nla_get_u32(token)); + if (!msk) { + NL_SET_ERR_MSG_ATTR(info->extack, token, "invalid token"); + return ret; + } + + sk =3D (struct sock *)msk; + + if (!mptcp_pm_is_userspace(msk)) { + GENL_SET_ERR_MSG(info, "invalid request; userspace PM not selected"); + goto out; + } + + lock_sock(sk); + spin_lock_bh(&msk->pm.lock); + list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) { + if (test_bit(entry->addr.id, bitmap->map)) + continue; + + hdr =3D genlmsg_put(msg, NETLINK_CB(cb->skb).portid, + cb->nlh->nlmsg_seq, &mptcp_genl_family, + NLM_F_MULTI, MPTCP_PM_CMD_GET_ADDR); + if (!hdr) + break; + + if (mptcp_nl_fill_addr(msg, entry) < 0) { + genlmsg_cancel(msg, hdr); + break; + } + + __set_bit(entry->addr.id, bitmap->map); + genlmsg_end(msg, hdr); + } + spin_unlock_bh(&msk->pm.lock); + release_sock(sk); + ret =3D msg->len; + +out: + sock_put(sk); + return ret; +} diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index b6664f58e0ad..5bf45f501dd0 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1032,6 +1032,8 @@ bool mptcp_pm_rm_addr_signal(struct mptcp_sock *msk, = unsigned int remaining, int mptcp_pm_get_local_id(struct mptcp_sock *msk, struct sock_common *skc); int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, struct mptcp_addr_inf= o *skc); int mptcp_userspace_pm_get_local_id(struct mptcp_sock *msk, struct mptcp_a= ddr_info *skc); +int mptcp_userspace_pm_dump_addr(struct sk_buff *msg, + struct netlink_callback *cb); =20 void __init mptcp_pm_nl_init(void); void mptcp_pm_nl_work(struct mptcp_sock *msk); --=20 2.40.1 From nobody Wed May 15 11:26:56 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 ECE7E3A8D2 for ; Thu, 1 Feb 2024 05:19:16 +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=1706764757; cv=none; b=J9uHNPgRLCrYsSjh0vfmm4zjwCMa6DJYRXtTgsMpev3nAzIIEdUYQMBfl37TTJeNDU0lDeMMhc7AbvQKR8esIkmGeiRTbyVn251LkVEJxwYke4tuGQJ81J/0GJAsnM7DTrLD6quZ3/lj/Ca4fwH1dOVCcfx8aYdvpR4iUwaAVvg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706764757; c=relaxed/simple; bh=aZ7hkh0awxFpyFz4tZITiwTCKprCqkdXtReB0vIBLZg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fNzhMGVfGwmWACGPBAQVGe84oGyO3xFP+mihtCFdtTQAYisGPG/tLS4wQ1rFKnyv4dqgohsEY83NJqo3qO5dCYhqnH3LySx2JDEXXICyt4Nh1vCYaBfnCEd2OwhNjnIqXiN5OS5vEe4CIkttwtHkPI5MPV8dfhHpWCLBWkMibgQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qic7RpEm; 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="qic7RpEm" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 90A00C433F1; Thu, 1 Feb 2024 05:19:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1706764756; bh=aZ7hkh0awxFpyFz4tZITiwTCKprCqkdXtReB0vIBLZg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qic7RpEmxGDwh+2qHCdJ2Clyr+bCO1QBZds1sCyZ5fRxnG+vKd4ttf2YLt2a3UtO1 aJNFzZbVrKq1gqkLJTvLkl6KguqjxSxwCzR1cNbe8hTvJLxt69JEUPUpkBcr2LdRlP F2G6/ekvs4181rF73nnxPdsOue4T69W2s6xcRSmezOVUBs5Ah7OwXzSKAEnGdCxC9p Uqw7/E33EjItih3jOsYgh+vLGaltNsKlO5mU11pb4pk4N24h6td5yIOpPX1aU4U5pS yySf7cT3AFzkm++eX2fyV8ce5iLXDE+DeTKzWwwZmm3ENJjeo9WGNZWYzv7WxFo3Dc bceJk4KeOmsAw== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v11 03/15] mptcp: add token for get-addr in yaml Date: Thu, 1 Feb 2024 13:18:53 +0800 Message-Id: <7d83b7cd1a83491f4dbe842f5cf2b73b7b60d15b.1706764519.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 token paramenter together with addr in get-addr section in mptcp_pm.yaml, then use the following commands to update mptcp_pm_gen.c and mptcp_pm_gen.h: ./tools/net/ynl/ynl-gen-c.py --mode kernel \ --spec Documentation/netlink/specs/mptcp_pm.yaml --source \ -o net/mptcp/mptcp_pm_gen.c ./tools/net/ynl/ynl-gen-c.py --mode kernel \ --spec Documentation/netlink/specs/mptcp_pm.yaml --header \ -o net/mptcp/mptcp_pm_gen.h Signed-off-by: Geliang Tang --- Documentation/netlink/specs/mptcp_pm.yaml | 3 ++- net/mptcp/mptcp_pm_gen.c | 7 ++++--- net/mptcp/mptcp_pm_gen.h | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Documentation/netlink/specs/mptcp_pm.yaml b/Documentation/netl= ink/specs/mptcp_pm.yaml index 49f90cfb4698..af525ed29792 100644 --- a/Documentation/netlink/specs/mptcp_pm.yaml +++ b/Documentation/netlink/specs/mptcp_pm.yaml @@ -292,13 +292,14 @@ operations: - name: get-addr doc: Get endpoint information - attribute-set: endpoint + attribute-set: attr dont-validate: [ strict ] flags: [ uns-admin-perm ] do: &get-addr-attrs request: attributes: - addr + - token reply: attributes: - addr diff --git a/net/mptcp/mptcp_pm_gen.c b/net/mptcp/mptcp_pm_gen.c index 670da7822e6c..c30a2a90a192 100644 --- a/net/mptcp/mptcp_pm_gen.c +++ b/net/mptcp/mptcp_pm_gen.c @@ -32,8 +32,9 @@ const struct nla_policy mptcp_pm_del_addr_nl_policy[MPTCP= _PM_ENDPOINT_ADDR + 1] }; =20 /* MPTCP_PM_CMD_GET_ADDR - do */ -const struct nla_policy mptcp_pm_get_addr_nl_policy[MPTCP_PM_ENDPOINT_ADDR= + 1] =3D { - [MPTCP_PM_ENDPOINT_ADDR] =3D NLA_POLICY_NESTED(mptcp_pm_address_nl_policy= ), +const struct nla_policy mptcp_pm_get_addr_nl_policy[MPTCP_PM_ATTR_TOKEN + = 1] =3D { + [MPTCP_PM_ATTR_ADDR] =3D NLA_POLICY_NESTED(mptcp_pm_address_nl_policy), + [MPTCP_PM_ATTR_TOKEN] =3D { .type =3D NLA_U32, }, }; =20 /* MPTCP_PM_CMD_FLUSH_ADDRS - do */ @@ -110,7 +111,7 @@ const struct genl_ops mptcp_pm_nl_ops[11] =3D { .doit =3D mptcp_pm_nl_get_addr_doit, .dumpit =3D mptcp_pm_nl_get_addr_dumpit, .policy =3D mptcp_pm_get_addr_nl_policy, - .maxattr =3D MPTCP_PM_ENDPOINT_ADDR, + .maxattr =3D MPTCP_PM_ATTR_TOKEN, .flags =3D GENL_UNS_ADMIN_PERM, }, { diff --git a/net/mptcp/mptcp_pm_gen.h b/net/mptcp/mptcp_pm_gen.h index ac9fc7225b6a..e24258f6f819 100644 --- a/net/mptcp/mptcp_pm_gen.h +++ b/net/mptcp/mptcp_pm_gen.h @@ -18,7 +18,7 @@ extern const struct nla_policy mptcp_pm_add_addr_nl_polic= y[MPTCP_PM_ENDPOINT_ADD =20 extern const struct nla_policy mptcp_pm_del_addr_nl_policy[MPTCP_PM_ENDPOI= NT_ADDR + 1]; =20 -extern const struct nla_policy mptcp_pm_get_addr_nl_policy[MPTCP_PM_ENDPOI= NT_ADDR + 1]; +extern const struct nla_policy mptcp_pm_get_addr_nl_policy[MPTCP_PM_ATTR_T= OKEN + 1]; =20 extern const struct nla_policy mptcp_pm_flush_addrs_nl_policy[MPTCP_PM_END= POINT_ADDR + 1]; =20 --=20 2.40.1 From nobody Wed May 15 11:26:56 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 4B0E039AF6 for ; Thu, 1 Feb 2024 05:19:17 +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=1706764758; cv=none; b=O7G8gNulj+EMLI9DXxPwVPeJDPD+DA7eFaUwftsutYXmHQiCx6jEVDjBc2nwLgFNLw3YL40GB/33jyC7I4QPwZuAcvk1nW8qa+puUkSfTaY/FeDoJhhE7+29+keeQejPqcAL5g7MRMLz8XYmV0eDFcdgU+wxgg6MC19jCGDHwsg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706764758; c=relaxed/simple; bh=sX1PAE+NTFtAGAS2ply7X3wdSpodeJrDzm/3oaFH6l4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=rOGReFoFSwJ85rtztvYF4a6MkDjuygK9aPcGiwSlJ5WszsQWlHMZp/4hPI7TdLcwftsaYZ5shxVqvU8MCvEpemTApUiD9yuzQ5J2ktnhZeKgDKThDLmlGuJcV3QN+/kHOI5uhE93N2/kXl860yy44PYzTciHIE86sqWjgNtk7wM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=aDG6kBfG; 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="aDG6kBfG" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E9EBDC433C7; Thu, 1 Feb 2024 05:19:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1706764757; bh=sX1PAE+NTFtAGAS2ply7X3wdSpodeJrDzm/3oaFH6l4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aDG6kBfGCzHLRI570KNbRVxn7Q1HVtisaypt7lW0KVb5lTkl62q5I7+CxRfSmuoS/ CKEQK6gD7ozJ0epZgeIzOL1PQ3HgwoYLCHhkIn9dtjPeT2NJ2sbieU9DAnPfK/jj5q Zv/VW1FZET8vlf8JRwR6z/WurUEmLBvu1Qk1PSIZe/zpReMPjvbaPWVjgN3uHdS/na edquq4zlJ9+Vy3SyDNAapUuWz7hZ2dVBosgt9sz9TMJctNe+vlmVm67H1Do7JrVcKo SM33lxif/inY0/0Bqw1MAX363mUL0KGkHza3XZEu7CTjrio9/Ramfz2nlTvmfBEOmh ExnsKOT23u3XQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v11 04/15] mptcp: dump addrs in userspace pm list Date: Thu, 1 Feb 2024 13:18:54 +0800 Message-Id: <91df97868a693605c6fecc210bbf6d699ba5e1ac.1706764519.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 renames mptcp_pm_nl_get_addr_dumpit() as a dedicated in-kernel netlink PM dump addrs function mptcp_pm_nl_dump_addr(), and invoke a newly added wrapper mptcp_pm_dump_addr() in mptcp_pm_nl_get_addr_dumpit(). Invoke in-kernel PM dump addrs function mptcp_pm_nl_dump_addr() or userspace PM dump addrs function mptcp_userspace_pm_dump_addr() based on whether the token parameter is passed in or not in the wrapper. Signed-off-by: Geliang Tang --- net/mptcp/pm.c | 9 +++++++++ net/mptcp/pm_netlink.c | 10 ++++++++-- net/mptcp/protocol.h | 3 +++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 53e0b08b1123..193198cec74a 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -441,6 +441,15 @@ int mptcp_pm_get_flags_and_ifindex_by_id(struct mptcp_= sock *msk, unsigned int id return mptcp_pm_nl_get_flags_and_ifindex_by_id(msk, id, flags, ifindex); } =20 +int mptcp_pm_dump_addr(struct sk_buff *msg, struct netlink_callback *cb) +{ + const struct genl_info *info =3D genl_info_dump(cb); + + if (info->attrs[MPTCP_PM_ATTR_TOKEN]) + return mptcp_userspace_pm_dump_addr(msg, cb); + return mptcp_pm_nl_dump_addr(msg, cb); +} + 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) diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 4d06a710aee6..876ac75a58e6 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1719,8 +1719,8 @@ int mptcp_pm_nl_get_addr_doit(struct sk_buff *skb, st= ruct genl_info *info) return ret; } =20 -int mptcp_pm_nl_get_addr_dumpit(struct sk_buff *msg, - struct netlink_callback *cb) +int mptcp_pm_nl_dump_addr(struct sk_buff *msg, + struct netlink_callback *cb) { struct net *net =3D sock_net(msg->sk); struct mptcp_pm_addr_entry *entry; @@ -1762,6 +1762,12 @@ int mptcp_pm_nl_get_addr_dumpit(struct sk_buff *msg, return msg->len; } =20 +int mptcp_pm_nl_get_addr_dumpit(struct sk_buff *msg, + struct netlink_callback *cb) +{ + return mptcp_pm_dump_addr(msg, cb); +} + static int parse_limit(struct genl_info *info, int id, unsigned int *limit) { struct nlattr *attr =3D info->attrs[id]; diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 5bf45f501dd0..df9bf83da99e 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1032,6 +1032,9 @@ bool mptcp_pm_rm_addr_signal(struct mptcp_sock *msk, = unsigned int remaining, int mptcp_pm_get_local_id(struct mptcp_sock *msk, struct sock_common *skc); int mptcp_pm_nl_get_local_id(struct mptcp_sock *msk, struct mptcp_addr_inf= o *skc); int mptcp_userspace_pm_get_local_id(struct mptcp_sock *msk, struct mptcp_a= ddr_info *skc); +int mptcp_pm_dump_addr(struct sk_buff *msg, struct netlink_callback *cb); +int mptcp_pm_nl_dump_addr(struct sk_buff *msg, + struct netlink_callback *cb); int mptcp_userspace_pm_dump_addr(struct sk_buff *msg, struct netlink_callback *cb); =20 --=20 2.40.1 From nobody Wed May 15 11:26:56 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 9772239AF6 for ; Thu, 1 Feb 2024 05:19:19 +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=1706764759; cv=none; b=GWHuOcsWxFerv1nh6TvqYuR2T1n364TuzjSNlA0AF1kZmNffmh9/vaae+PbMY61pZF/Ywbm5et6Url/qTdGS0huSwDmSiHoLhHPOPixVXLCiXKyY1z8IUhe5Toe6/NH+Itoqoh4AzO9MFNPAFT85aMEPIXlmmTnuObbBCCODi70= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706764759; c=relaxed/simple; bh=f9a5iLfxbWamrzwnX4LvWWFSGNyu+aEDxaCmTYiwYmU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=hb7QcjzNfV4XfNA9kk0I5rwOxM7JUvdpHOGguQuAoiWWsbtq3wK/RCVwb5dtsrPJQ1rPIC5QitvyW2RmnK0mGOjbtd5SrpFKOxtW172Wj+lFKWEdjRqV9vvVOMd1jb9CwTh+srBTV/6v3+CtUftujD4h4PgE32T3c1AjV+9gpPI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=sZW913SO; 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="sZW913SO" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 49944C43390; Thu, 1 Feb 2024 05:19:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1706764759; bh=f9a5iLfxbWamrzwnX4LvWWFSGNyu+aEDxaCmTYiwYmU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sZW913SODg9l0tmGBg2A5xcSAtVLXzlIXFLT+Sj3ZBe6eSV9IwFjsb0gYDOIsTrkn yfPTpUF7k+eh8RfsaXPRetSA51JGWRg50TuRMeRIxdmPCJgDcnD/jbNCLYAqzjBWRv UBE6STz0KopGJI6sn11EGDqGf4aFXEn0ko+BCyu1YCWgC94AXUGz4vJM7dJ5ruj/DJ ySSAvkMjuVlCWwLcwbbFxzHoV7EsAYDdiQGc+m2KZgrZrZpwkEB/MU9c57u28YwGMs zObN8jCWueEE6WujuaJleBBY+LNFSVkOhTSH6rGsowJkPynVJkZJA+muppFU4M21Uj m8SGOm1icYQ2g== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v11 05/15] mptcp: check userspace pm flags Date: Thu, 1 Feb 2024 13:18:55 +0800 Message-Id: <756a6593e59670bbf5a96270b91a01b941d1a21b.1706764519.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 Just like MPTCP_PM_ADDR_FLAG_SIGNAL flag is checked in userspace PM announce mptcp_pm_nl_announce_doit(), PM flags should be checked in mptcp_pm_nl_subflow_create_doit() too. If MPTCP_PM_ADDR_FLAG_SUBFLOW flag is not set, there's no flags field in the output of dump_addr. This looks a bit strange: id 10 flags 10.0.3.2 This patch uses mptcp_pm_parse_entry() instead of mptcp_pm_parse_addr() to get the PM flags of the entry and check it. MPTCP_PM_ADDR_FLAG_SIGNAL flag shouldn't be set here, and if MPTCP_PM_ADDR_FLAG_SUBFLOW flag is missing from the netlink attribute, always set this flag. Signed-off-by: Geliang Tang --- net/mptcp/pm_userspace.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index 199fcc900219..53fa19755b1e 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -360,11 +360,20 @@ int mptcp_pm_nl_subflow_create_doit(struct sk_buff *s= kb, struct genl_info *info) goto create_err; } =20 - err =3D mptcp_pm_parse_addr(laddr, info, &addr_l); + err =3D mptcp_pm_parse_entry(laddr, info, true, &local); if (err < 0) { NL_SET_ERR_MSG_ATTR(info->extack, laddr, "error parsing local addr"); goto create_err; } + addr_l =3D local.addr; + + if (local.flags & MPTCP_PM_ADDR_FLAG_SIGNAL) { + GENL_SET_ERR_MSG(info, "invalid addr flags"); + err =3D -EINVAL; + goto create_err; + } + if (!(local.flags & MPTCP_PM_ADDR_FLAG_SUBFLOW)) + local.flags |=3D MPTCP_PM_ADDR_FLAG_SUBFLOW; =20 err =3D mptcp_pm_parse_addr(raddr, info, &addr_r); if (err < 0) { @@ -378,7 +387,6 @@ int mptcp_pm_nl_subflow_create_doit(struct sk_buff *skb= , struct genl_info *info) goto create_err; } =20 - local.addr =3D addr_l; err =3D mptcp_userspace_pm_append_new_local_addr(msk, &local, false); if (err < 0) { GENL_SET_ERR_MSG(info, "did not match address and id"); --=20 2.40.1 From nobody Wed May 15 11:26:56 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 DD88B3C478 for ; Thu, 1 Feb 2024 05:19:20 +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=1706764761; cv=none; b=O/ACwYLBsk3Xd2iE/Kuvw1M2a6CIMqSOEE5SfweGXxT5zVpMDYoK1OQdL6OB7zSrfgX4ETUAYQewL3rg+zTf0gro6OJmjs/CkdxDDdTH0svNo4MAKKs9nbkqoBAf6mnLuoueZ5UCj8PdSIUYm47lrOREkdUlKAwbsWGm2yswvkM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706764761; c=relaxed/simple; bh=JRMj/SLzyGIOFS6blXMUY3ImOv8wI4WGrPWCLtVXACs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=YyMu80Cc7mcwO34qN2kNoed53AwV10waUPog/kbmmoSl/H/9JhMaXMtpbniYS9HYYFS9ibriahqnVrhYm9pXpwITPRPYP3oVtzFiXqe0oRy3+3Gu4e2yjpOWVu8higTNueK+nU5PaBO7hJbyE13vPcqixUAdXaizOv0h3JzXH6k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=d96AFAQF; 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="d96AFAQF" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9CF97C433F1; Thu, 1 Feb 2024 05:19:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1706764760; bh=JRMj/SLzyGIOFS6blXMUY3ImOv8wI4WGrPWCLtVXACs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=d96AFAQFAGKENL9VJTcG3XvSSNZUMuj7Sny4dPSo6dkv9ldRKcg4eSOaahd/pjjml /0fTrmQudneznJGRdzkHWjDmHrgPVsecsrMJjoTQTy1qvbWZAXkm3F2j+VwLLXNyh2 POcdIXBJlAlV51Xym31k6bqmbqK+UO6ICvADeXhbEY1+Wxhu5eDFUagcWCxqaOovje 4w+msvnjde3zuoLIVEsHQFyiUG/to3XLe+rFpkbi3M8PyCN0APt6Q0RSqdAL2DepRe lSAHTxApBelyfOyFqd+YOP78VzV4cm0dkHxZJtJhzl9RnfIJgJZ//tkU6lQ5oDz7Jz D1Q7eB8w13Utw== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v11 06/15] selftests: mptcp: add userspace pm subflow flag Date: Thu, 1 Feb 2024 13:18: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 This patch adds the address flag MPTCP_PM_ADDR_FLAG_SUBFLOW in csf() in pm_nl_ctl.c when subflow is created by a userspace PM. Signed-off-by: Geliang Tang --- tools/testing/selftests/net/mptcp/pm_nl_ctl.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c b/tools/testing/= selftests/net/mptcp/pm_nl_ctl.c index 49369c4a5f26..e97856323ec3 100644 --- a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c +++ b/tools/testing/selftests/net/mptcp/pm_nl_ctl.c @@ -453,6 +453,7 @@ int csf(int fd, int pm_family, int argc, char *argv[]) char data[NLMSG_ALIGN(sizeof(struct nlmsghdr)) + NLMSG_ALIGN(sizeof(struct genlmsghdr)) + 1024]; + u_int32_t flags =3D MPTCP_PM_ADDR_FLAG_SUBFLOW; const char *params[5]; struct nlmsghdr *nh; struct rtattr *addr; @@ -558,6 +559,13 @@ int csf(int fd, int pm_family, int argc, char *argv[]) off +=3D NLMSG_ALIGN(rta->rta_len); } =20 + /* addr flags */ + rta =3D (void *)(data + off); + rta->rta_type =3D MPTCP_PM_ADDR_ATTR_FLAGS; + rta->rta_len =3D RTA_LENGTH(4); + memcpy(RTA_DATA(rta), &flags, 4); + off +=3D NLMSG_ALIGN(rta->rta_len); + addr->rta_len =3D off - addr_start; } =20 --=20 2.40.1 From nobody Wed May 15 11:26:56 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 522C139AF6 for ; Thu, 1 Feb 2024 05:19:21 +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=1706764762; cv=none; b=QVANMcyPSbqsxJyzUG2QqEqZZz8SGOlBxTNRDbvLexotyaji1Go8TDgXjVUjKyz0E7HqNWwame0VEADITXuNXduylwyoo9z50mS/rb74YMlEfT6+FWPHaGqCPj6bd8khwO25Rlnist/jpPDkaexN42KEgpMK09TFSOSrsTOiGZQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706764762; c=relaxed/simple; bh=tERbG7TJiLpb8EzivoIRerccEx0mGGYaF5MyxCkw9Rk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=q5zh0+TZimTHX7AUsEIOD8f/hyc2z/hpdhuX8UqueKTniX2SCqGsXuML7g35afmPbW1/flVPxg4NXJq4+bCE5vGh9r8zJeoAMzybaj7OaSu9cidBI2DfLC65wOosm1JwLH+wj3FDUB0RE/OmqZAv422fSXcQB+qNWPZbWNNy36A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Q0yi092w; 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="Q0yi092w" Received: by smtp.kernel.org (Postfix) with ESMTPSA id F0384C43390; Thu, 1 Feb 2024 05:19:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1706764761; bh=tERbG7TJiLpb8EzivoIRerccEx0mGGYaF5MyxCkw9Rk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Q0yi092w6+ZHKU5CvUBylJkxYuYJNexRz8K6ugpTCozjRw8Dqn82tDgjYCGg9oTVM XIejzGuLsBYL4W/UvFN23C5InbiSw3200M84s1rFNMsdr1N/XpLNKlNQQ0FeBcl3io pbE+MExvKnnblFQ3r6LJde61CaGVpYLWM6KI7fWveRCQUTCCBychAzjPOuTp2VSphj neB7F/nyNzsgcucngHSLlSWKlwezpBu1JDo8JzFUPBV6NVuEPu9pl6UEmyLN7TyYHE l6ii1iO0tOBkufUP244MjczUyyCXZx/0TbHbrP8hIjpAhjHmdFRYW18mg2jpLDwI1T dXXb1f/R3FMVg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v11 07/15] selftests: mptcp: add token for dump_addr Date: Thu, 1 Feb 2024 13:18:57 +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 command dump_addr() of pm_nl_ctl can be used like this in in-kernel PM: pm_nl_ctl dump This patch adds token argument for it to support userspace PM: pm_nl_ctl dump token $token If 'token $token' is passed to dump_addr(), copy it into the kernel netlink. Signed-off-by: Geliang Tang --- tools/testing/selftests/net/mptcp/pm_nl_ctl.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c b/tools/testing/= selftests/net/mptcp/pm_nl_ctl.c index e97856323ec3..8d7d1b4ed28e 100644 --- a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c +++ b/tools/testing/selftests/net/mptcp/pm_nl_ctl.c @@ -1127,8 +1127,16 @@ int dump_addrs(int fd, int pm_family, int argc, char= *argv[]) 1024]; pid_t pid =3D getpid(); struct nlmsghdr *nh; + u_int32_t token =3D 0; + struct rtattr *rta; int off =3D 0; =20 + if (argc !=3D 2 && argc !=3D 4) + syntax(argv); + + if (argc =3D=3D 4 && !strcmp(argv[2], "token")) + token =3D strtoul(argv[3], NULL, 10); + memset(data, 0, sizeof(data)); nh =3D (void *)data; off =3D init_genl_req(data, pm_family, MPTCP_PM_CMD_GET_ADDR, @@ -1138,6 +1146,15 @@ int dump_addrs(int fd, int pm_family, int argc, char= *argv[]) nh->nlmsg_pid =3D pid; nh->nlmsg_len =3D off; =20 + /* token */ + if (token) { + rta =3D (void *)(data + off); + rta->rta_type =3D MPTCP_PM_ATTR_TOKEN; + rta->rta_len =3D RTA_LENGTH(4); + memcpy(RTA_DATA(rta), &token, 4); + off +=3D NLMSG_ALIGN(rta->rta_len); + } + print_addrs(nh, pm_family, do_nl_req(fd, nh, off, sizeof(data))); return 0; } --=20 2.40.1 From nobody Wed May 15 11:26:56 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 5FFD73C469 for ; Thu, 1 Feb 2024 05:19:23 +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=1706764763; cv=none; b=j6nYkhln4P7j0bdYMd0qtU/hQGQ7rCbtczlFJzZRv9muytTsGZOJBxZuRrjnujhwMIQv4s6eC3N2wwT+292EIzjlNuezaxw9/wm2Zd2KS/zj4LBTGm6Eq0t5BvcfqrZqY6e0BFhXyF1FllGseEfgbziujzxOQlMFLbBgAFfOD0Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706764763; c=relaxed/simple; bh=mtqs5IpuBANNDDSqQf3Qc6fOl3fb6zOnrAvLKiz/7HQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=OwiHPEDUJdvXL8NDw+4THaeayDK284s5PiSceBoHiDyOq2e/50TII7sx0cDPI5lrY+AmWcZv0Lt0MvGKx5/itIRnRzhg+0dwmlOqlSBBZ2MW5bIUaVGibFv8O0VM1g4Seb36k/t1EeXJFPK8vF1gRcesjDEDpIoBQOgmvEEuUMM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=csqRuH0t; 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="csqRuH0t" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 51004C433F1; Thu, 1 Feb 2024 05:19:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1706764763; bh=mtqs5IpuBANNDDSqQf3Qc6fOl3fb6zOnrAvLKiz/7HQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=csqRuH0teF1+4uw28SA/Y9PEDxsJkM4Qs1Dy55oBFIVAHXRlRj1rtR1UKlaLlj/+U TLBmydBd3vXX5NQbu9J7znG3nlHD3vuDrhvsbSWAA5+/8V6N1cfHRkC+lX/K8Xolck lKEDtVFHgdJiKa1lbcGMLlQXxVdbcFYYMVgxgdN5WsFT8JOnC7ucem5b9XdHFhefma C0jTJm63Q+Hssqyd0N5lZXaeU0xLDT7ywfrmisTmD9WVTbHfTg9TIpd9OlDxh8dCYc Vw1L8M26uutMSoYHkvcOi+aK2pve2RJ6m6eLEGhqveVnzorLXnS8sUPyosR+RGI52a LMPF0Zq8XOcYQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v11 08/15] selftests: mptcp: add check_output helper Date: Thu, 1 Feb 2024 13:18:58 +0800 Message-Id: <79e54d9e96ebea76e5ba8bb185ab0d75debdc28b.1706764519.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 Similar to check() in pm_netlink.sh, add a new helper check_output() in mptcp_join.sh to check the output of the given commands. Signed-off-by: Geliang Tang --- .../testing/selftests/net/mptcp/mptcp_join.sh | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index a3bdbc896c6f..fa5c4e3f7c23 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -21,6 +21,7 @@ cinfail=3D"" cinsent=3D"" tmpfile=3D"" cout=3D"" +check_output_err=3D"" capout=3D"" ns1=3D"" ns2=3D"" @@ -186,6 +187,7 @@ init() { cout=3D$(mktemp) evts_ns1=3D$(mktemp) evts_ns2=3D$(mktemp) + check_output_err=3D$(mktemp) =20 trap cleanup EXIT =20 @@ -199,6 +201,7 @@ cleanup() rm -f "$sin" "$sout" "$cinsent" "$cinfail" rm -f "$tmpfile" rm -rf $evts_ns1 $evts_ns2 + rm -f $check_output_err cleanup_partial } =20 @@ -3351,6 +3354,30 @@ userspace_pm_rm_sf() wait_rm_sf $1 "${cnt}" } =20 +check_output() +{ + local cmd=3D"$1" + local expected=3D"$2" + local msg=3D"$3" + local out=3D`$cmd 2>$check_output_err` + local cmd_ret=3D$? + + printf "%-42s" "$msg" + if [ $cmd_ret -ne 0 ]; then + mptcp_lib_print_err "[ FAIL ] command execution '$cmd' stderr " + cat $check_output_err + ret=3D${KSFT_FAIL} + return $cmd_ret + elif [ "$out" =3D "$expected" ]; then + mptcp_lib_print_ok "[ OK ]" + return 0 + else + mptcp_lib_print_err "[ FAIL ] expected '$expected' got '$out'" + ret=3D${KSFT_FAIL} + return 1 + fi +} + userspace_tests() { # userspace pm type prevents add_addr --=20 2.40.1 From nobody Wed May 15 11:26:56 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 1B3163A8D2 for ; Thu, 1 Feb 2024 05:19:24 +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=1706764765; cv=none; b=RQ0GqYfkHaVhqRewSVxfCX+cGSTqZXROcsWzgmZ/mSu4JyQ6Ffa8o0fOHsUw4RKHIhoxfi1w08gZte/dnINJkck2ZoUVNoifgonGq6v8uzyIdkU+yss/GT0MUSQuh4d13IYhMzB+OCqtyuBb13wxKpLGEhkxdCTkAVnrBv1lJKM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706764765; c=relaxed/simple; bh=qhbzNsHcvViIb5LJtBn9LRFim7+iKrU7WTRzdB8YuTQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=iSVn8GM5AAGTexjnO4iFpqB6ktBG5NLD7swrzMYz01086n7Ce2l8iIaR0dXLZiK7JAWIyGFwW7g+VBkpKd9wZDAD0QGtSFiyCuZOB7M9nLlUcfyohi4WCi6AADKAhzRmDq9DJSsSaVAeIzv1Rt+9DpO7QXwOGDg0Gt1Muqo447Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=YneEQeV8; 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="YneEQeV8" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C0906C433F1; Thu, 1 Feb 2024 05:19:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1706764764; bh=qhbzNsHcvViIb5LJtBn9LRFim7+iKrU7WTRzdB8YuTQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YneEQeV8K+jbDGJgIB1iaxnAFhJTz02dH5ZGsabGlvarPntt0AlFfdD28aNU2wOEo BpA6B3ltTYkbQtnSjOdZs7NUFP8M6W94eri+yn1WE5mWUKoiIF9SmDpi3nsaYd0Zaf ZUR7uieIs7QKyvCbOQKllRGbbNLl+0tbE2ynhY6xDr0es0FJdhABcWL5kLF4SPWAHD /n7lkOcywvs4Q9HOZQojrKOjwmlVCdyf5TP5dWz+KzEs2OZ0xeyfv3J5bSTTvCFVBC 5pa8Y2TNt51Knt0YzGJaNGIx+wYFKsYjVXLKV/CMPvQq56kM3sWNBUqZNVqD37z3kI kr44bTS4hx0YA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v11 09/15] selftests: mptcp: dump after creating id 0 subflow Date: Thu, 1 Feb 2024 13:18:59 +0800 Message-Id: <7302b5f005300c252965b8131f537b448b20a31d.1706764519.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_dump() to dump addresses for the userspace PM. Use this helper to check whether an ID 0 subflow is listed in the output of dump command after creating an ID 0 subflow in "userspace pm create id 0 subflow" test. Signed-off-by: Geliang Tang --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index fa5c4e3f7c23..d471cd4a9904 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -3354,6 +3354,18 @@ userspace_pm_rm_sf() wait_rm_sf $1 "${cnt}" } =20 +# $1: ns +userspace_pm_dump() +{ + local evts=3D$evts_ns1 + local tk + + [ "$1" =3D=3D "$ns2" ] && evts=3D$evts_ns2 + tk=3D$(mptcp_lib_evts_get_info token "$evts") + + ip netns exec $1 ./pm_nl_ctl dump token $tk +} + check_output() { local cmd=3D"$1" @@ -3515,6 +3527,9 @@ userspace_tests() chk_mptcp_info subflows 0 subflows 0 chk_subflows_total 1 1 userspace_pm_add_sf $ns2 10.0.3.2 0 + check_output "userspace_pm_dump $ns2" \ + "id 0 flags subflow 10.0.3.2" \ + " dump addrs id 0 subflow" chk_join_nr 1 1 1 chk_mptcp_info subflows 1 subflows 1 chk_subflows_total 2 2 --=20 2.40.1 From nobody Wed May 15 11:26:56 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 767F51EF19 for ; Thu, 1 Feb 2024 05:19:26 +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=1706764766; cv=none; b=WQWndux/OSuzTb0jc705eFx5NLVm+q7xR/PGaD2mlQWyy714T+nlXRtvxTPl7sx0l3eZcQuyOGFmg3PVbwPxe8ZC+GlIjKKQV0Kvv5M/RhiA1heZft8/CKgd9Qi/5W08rQgOp2D9UPpa7LZeLXEqlGaM1ojM99lPXtc/q0d0Pdw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706764766; c=relaxed/simple; bh=9V93nvgUtKhxEzCISXyyuABjVBtSH/H0zPedOnGgnRc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Xc6VEBURtozsAfm2ARPgGa2DCaFKFiQWo0yheG+qhBTWJ2O8TJCBRHXjS0TXY1PXj9EERpNeuPFs8ou0kbMeeaT6Si1xqKKzf9nnsq7WmBBH2UkDRflApKad+7xRKDGTfMBt7ODABdENKbZ1oZ5hhExqAfXfv3Zy3S53QqZB7pc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=b4U7NrAM; 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="b4U7NrAM" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2AEC9C43390; Thu, 1 Feb 2024 05:19:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1706764766; bh=9V93nvgUtKhxEzCISXyyuABjVBtSH/H0zPedOnGgnRc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=b4U7NrAMlfRl6XT7VImCZFlzehFLw+8HOn6RSQZ6uy8oxOmRSkJfbgCfeMVozKVM1 XvWKojvx1kqz3Gcdh0fsvoPjfyrJYyH8KmsXSKrXTC+5gK3LeRpupD/u7jE3k5Th/0 KvtJe5mtwcKL+DITmPLoa35d8xvbEgFb7rI6V0TAU6tqA53yJ20fXlMcO93QQvBZvy Yn4ZOA2/FoPhsYhwnF8zx95FvMDmIgQ0EKGDV9KIephToD2rZgL9smcxPmV1ArYxy8 j1X5ibr14RlD44S0Q6k8LkgesxZ28wpy8k+9eeyAm75K4verJnTPl01wp9jGsTDRTT yurjBlHimpOxA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v11 10/15] selftests: mptcp: dump userspace addrs list Date: Thu, 1 Feb 2024 13:19:00 +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 This patch adds two new tests for userspace pm dump address and subflow. Use userspace_pm_add_addr() and userspace_pm_add_sf() to add an address and a suflow. Signed-off-by: Geliang Tang --- .../testing/selftests/net/mptcp/mptcp_join.sh | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index d471cd4a9904..4ed0796410b9 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -3586,6 +3586,50 @@ userspace_tests() kill_events_pids mptcp_lib_kill_wait $tests_pid fi + + # userspace pm dump address + if reset_with_events "userspace pm dump address" && + continue_if mptcp_lib_has_file '/proc/sys/net/mptcp/pm_type'; then + set_userspace_pm $ns1 + pm_nl_set_limits $ns2 1 1 + speed=3D5 \ + run_tests $ns1 $ns2 10.0.1.1 & + local tests_pid=3D$! + wait_mpj $ns1 + userspace_pm_add_addr $ns1 10.0.2.1 10 + chk_join_nr 1 1 1 + chk_add_nr 1 1 + chk_mptcp_info subflows 1 subflows 1 + chk_subflows_total 2 2 + chk_mptcp_info add_addr_signal 1 add_addr_accepted 1 + local dump=3D"id 10 flags signal 10.0.2.1" + check_output "userspace_pm_dump $ns1" \ + "$dump" " dump addrs signal" + kill_events_pids + wait $tests_pid + fi + + # userspace pm dump subflow + if reset_with_events "userspace pm dump 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 + speed=3D5 \ + run_tests $ns1 $ns2 10.0.1.1 & + local tests_pid=3D$! + wait_mpj $ns2 + chk_mptcp_info subflows 0 subflows 0 + chk_subflows_total 1 1 + 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 + local dump=3D"id 20 flags subflow 10.0.3.2" + check_output "userspace_pm_dump $ns2" \ + "$dump" " dump addrs subflow" + kill_events_pids + wait $tests_pid + fi } =20 endpoint_tests() --=20 2.40.1 From nobody Wed May 15 11:26:56 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 7BB961EF19 for ; Thu, 1 Feb 2024 05:19:27 +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=1706764767; cv=none; b=dIhQo/Dz+STr57NfZvg8sNU+jsPMWamumLlNSGz74oNF+TjgwcDqDhxdKjrMSsn+2L+Kr/3xSbDFO1Khxa7/nRPbfpk+dwiIc7hlCNlhyOQdBHl/Z0hJNNAzqf1OjMx0m0QC9WF6m1QkPVgyYQ18GvxVYQ4gUpQf2vSDUEIoRRU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706764767; c=relaxed/simple; bh=qhnsgTotynodog63UQDsox5gGlqOKP33buOWIsDreHo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=EJiBx4EyIb/j0w/Q7X2AoWOxjxUvTgkvqUgSAbkaMH1Ret/MipH2dLCUCuJGTecN3oYd2dFaIsFH5wnDnXcg6SVK2MnQmKC+LerEPsJUoJA6nnvOmNM8mFnoEYGOU1iq4eICkbRGz3jYn/6xTPvmOdS2IirE0XBRS3XPBVDHSUs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jzGqU7Fh; 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="jzGqU7Fh" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7D8D4C433F1; Thu, 1 Feb 2024 05:19:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1706764767; bh=qhnsgTotynodog63UQDsox5gGlqOKP33buOWIsDreHo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jzGqU7FhR2A8q4RKCzMQp91ktAGKEmLP0PkrEPlTzDIaPR60ruzCLBspNHz7vgt7M EX62g2zmylyGuLV4rWT+Lz5rmwTQlsJ8X2/T4pUbwcKNk9XWuiFp2YS/4qxGdFXTpM OHJowyYCfdsu9e4NKlXhWqFNe+MtHGOryR1z70gg52mmta5lGrtUEFH6DeuY1DQU3R OW5tp7vrW7Um034L9dpgaJ/7U/+dsMAbjJT4vSQKwvUG6tRk9i0VlYaNxocyW34EYE rfyH36uTd2dnDejGSLMXA1VrnEYrBhP9zzPHmRTw+lXoPYK/5fP6mk/cPfrihC+Q0B QLwZ7ePaK7qtg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v11 11/15] mptcp: add userspace_pm_lookup_addr_by_id helper Date: Thu, 1 Feb 2024 13:19:01 +0800 Message-Id: <1e4bf8b514351aefabe722f29a392f72245589e5.1706764519.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 Corresponding __lookup_addr_by_id() helper in the in-kernel netlink PM, this patch adds a new helper mptcp_userspace_pm_lookup_addr_by_id() to lookup the address entry with the given id on the userspace pm local address list. Signed-off-by: Geliang Tang --- net/mptcp/pm_userspace.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index 53fa19755b1e..ca3bf83674b6 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -106,19 +106,26 @@ static int mptcp_userspace_pm_delete_local_addr(struc= t mptcp_sock *msk, return -EINVAL; } =20 +static struct mptcp_pm_addr_entry * +mptcp_userspace_pm_lookup_addr_by_id(struct mptcp_sock *msk, unsigned int = id) +{ + struct mptcp_pm_addr_entry *entry; + + list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) { + if (entry->addr.id =3D=3D id) + return entry; + } + return NULL; +} + int mptcp_userspace_pm_get_flags_and_ifindex_by_id(struct mptcp_sock *msk, unsigned int id, u8 *flags, int *ifindex) { - struct mptcp_pm_addr_entry *entry, *match =3D NULL; + struct mptcp_pm_addr_entry *match; =20 spin_lock_bh(&msk->pm.lock); - list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) { - if (id =3D=3D entry->addr.id) { - match =3D entry; - break; - } - } + match =3D mptcp_userspace_pm_lookup_addr_by_id(msk, id); spin_unlock_bh(&msk->pm.lock); if (match) { *flags =3D match->flags; @@ -261,7 +268,7 @@ int mptcp_pm_nl_remove_doit(struct sk_buff *skb, struct= genl_info *info) { struct nlattr *token =3D info->attrs[MPTCP_PM_ATTR_TOKEN]; struct nlattr *id =3D info->attrs[MPTCP_PM_ATTR_LOC_ID]; - struct mptcp_pm_addr_entry *match =3D NULL; + struct mptcp_pm_addr_entry *match; struct mptcp_pm_addr_entry *entry; struct mptcp_sock *msk; LIST_HEAD(free_list); @@ -298,13 +305,7 @@ int mptcp_pm_nl_remove_doit(struct sk_buff *skb, struc= t genl_info *info) =20 lock_sock(sk); =20 - list_for_each_entry(entry, &msk->pm.userspace_pm_local_addr_list, list) { - if (entry->addr.id =3D=3D id_val) { - match =3D entry; - break; - } - } - + match =3D mptcp_userspace_pm_lookup_addr_by_id(msk, id_val); if (!match) { GENL_SET_ERR_MSG(info, "address with specified id not found"); release_sock(sk); --=20 2.40.1 From nobody Wed May 15 11:26:56 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 1EA013C478 for ; Thu, 1 Feb 2024 05:19:28 +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=1706764769; cv=none; b=OsUrwjBYcNUzRZibDMHhkmBUkz/+/0VOMSC1AFuJHlAyWnNO10SYy8mbJ5CQLpFJm17hY0/FOzskJ1K35BtvJT276tmo+qusLjQCqJMh38s3Raxsc3g902uHo/KXk5WcH3dVfZQEgynBgS7GSDLdjIPCOfHiK68UFAEqMJ4uMDA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706764769; c=relaxed/simple; bh=8YoPG7aKIPrvVxb3N2y3HGDkI228MKxhEyEtwAMloAE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=WxtHc8SEKUifBi5BSJIdLBAzADFX4Zp4U8vqH2Itin2ZtRMLW7Luao6HQE8R8+YuyDz/p2e8vDqTtVcJ9vzJJ1k1ZewXoDxZbHLug/KnI/fFLnrqEmDUmEcsz1/unopWyoJNwjX2zt1K7aaeICI8gd4yHz3XYl7YsCXDbiNIlRM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=nGKMIQHr; 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="nGKMIQHr" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D16CEC43394; Thu, 1 Feb 2024 05:19:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1706764768; bh=8YoPG7aKIPrvVxb3N2y3HGDkI228MKxhEyEtwAMloAE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nGKMIQHr4Xlt/I7OPjSS6P2zs8yOagJxHfnVzyfC6c95QxA9tMmd41kCPNc5W5s4L 4SDAN9eQ8qJ6iU9LGcPlDh0IgIL6JosDTTKg8f1TkwqTcVI3Pw57rPlGTodSOvqhKo E/UjCKv3KLdxknLuT+LF2MEIkewwxv+UtmmZs6PvvoqDMhBMIIp2Ki4pHQVOKRA2bT cNBZfpil9+fnU8gY3tx522zD4ELBBU3WI2r0A3aZqxOmajklj1KrAQ3B6qEe3L0ZL/ r3Zay23Wgu1MWxpDqduH9m66dZlFboy1UdMkcljJdf2Bp8Gkn7MI6qPPMqZjbmEKoF OlbMWigWfav5Q== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v11 12/15] mptcp: implement mptcp_userspace_pm_get_addr Date: Thu, 1 Feb 2024 13:19:02 +0800 Message-Id: <608eccbd3b67469a9d2d1fea421e339edf1b98a2.1706764519.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 implements mptcp_userspace_pm_get_addr() to get an address from userspace pm address list according the given 'token' and 'id'. Use nla_get_u32() to get the u32 value of 'token', then pass it to mptcp_token_get_sock() to get the msk. Pass 'msk' and 'id' to the helper mptcp_userspace_pm_lookup_addr_by_id() to get the address entry. Put this entry to userspace using mptcp_pm_nl_put_entry_info(). Signed-off-by: Geliang Tang --- net/mptcp/pm_userspace.c | 74 ++++++++++++++++++++++++++++++++++++++++ net/mptcp/protocol.h | 2 ++ 2 files changed, 76 insertions(+) diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index ca3bf83674b6..7911928c529f 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -641,3 +641,77 @@ int mptcp_userspace_pm_dump_addr(struct sk_buff *msg, sock_put(sk); return ret; } + +int mptcp_userspace_pm_get_addr(struct sk_buff *skb, + struct genl_info *info) +{ + struct nlattr *attr =3D info->attrs[MPTCP_PM_ENDPOINT_ADDR]; + struct nlattr *token =3D info->attrs[MPTCP_PM_ATTR_TOKEN]; + struct mptcp_pm_addr_entry addr, *entry; + struct net *net =3D sock_net(skb->sk); + struct mptcp_sock *msk; + struct sk_buff *msg; + int ret =3D -EINVAL; + struct sock *sk; + void *reply; + + msk =3D mptcp_token_get_sock(net, nla_get_u32(token)); + if (!msk) { + NL_SET_ERR_MSG_ATTR(info->extack, token, "invalid token"); + return ret; + } + + sk =3D (struct sock *)msk; + + if (!mptcp_pm_is_userspace(msk)) { + GENL_SET_ERR_MSG(info, "invalid request; userspace PM not selected"); + goto out; + } + + ret =3D mptcp_pm_parse_entry(attr, info, false, &addr); + if (ret < 0) + goto out; + + msg =3D nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); + if (!msg) { + ret =3D -ENOMEM; + goto out; + } + + reply =3D genlmsg_put_reply(msg, info, &mptcp_genl_family, 0, + info->genlhdr->cmd); + if (!reply) { + GENL_SET_ERR_MSG(info, "not enough space in Netlink message"); + ret =3D -EMSGSIZE; + goto fail; + } + + lock_sock(sk); + spin_lock_bh(&msk->pm.lock); + entry =3D mptcp_userspace_pm_lookup_addr_by_id(msk, addr.addr.id); + if (!entry) { + GENL_SET_ERR_MSG(info, "address not found"); + ret =3D -EINVAL; + goto unlock_fail; + } + + ret =3D mptcp_nl_fill_addr(msg, entry); + if (ret) + goto unlock_fail; + + genlmsg_end(msg, reply); + ret =3D genlmsg_reply(msg, info); + spin_unlock_bh(&msk->pm.lock); + release_sock(sk); + sock_put(sk); + return ret; + +unlock_fail: + spin_unlock_bh(&msk->pm.lock); + release_sock(sk); +fail: + nlmsg_free(msg); +out: + sock_put(sk); + return ret; +} diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index df9bf83da99e..3dd7adc6b7fc 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1037,6 +1037,8 @@ int mptcp_pm_nl_dump_addr(struct sk_buff *msg, struct netlink_callback *cb); int mptcp_userspace_pm_dump_addr(struct sk_buff *msg, struct netlink_callback *cb); +int mptcp_userspace_pm_get_addr(struct sk_buff *skb, + struct genl_info *info); =20 void __init mptcp_pm_nl_init(void); void mptcp_pm_nl_work(struct mptcp_sock *msk); --=20 2.40.1 From nobody Wed May 15 11:26:56 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 2E9DE1EF19 for ; Thu, 1 Feb 2024 05:19:30 +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=1706764770; cv=none; b=LLVcnDUrf27z3sTccrAGFV3xfaAiTYtTcoP6+qYbSCWPT9lTtTKM/I0Umbo1EuNQmI944uaQ7o0kA8VHxPu44FSfjj/UGY0ekQWt55E/HhUu7R8B1yr6MbhVeKHVI1gDgGAOosPLbHg67K6Sej2+o07yH8RXg2U3Y77BmHt9ocY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706764770; c=relaxed/simple; bh=ruFJpPj36Lt4TuHPjKFfPxAxO6H05WcRviUcNM1+9lQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UoOsajQI7PdVp3C1dJ6lTPRyuu3bYZfqDINR/U49SllWD6pXn0vl1E8AJZVfUHLHzl+QtWmV5zuiZG5D84ybcsfBiYhPQDSYG00Zzq1IlfHzvTsmqKT7q4Rg8bPQw2UqO9aqZUtY8945OAvTXfMWmMW/8y+lJt6QohSorl9xWYg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GRjzvPfi; 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="GRjzvPfi" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 313D6C433C7; Thu, 1 Feb 2024 05:19:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1706764770; bh=ruFJpPj36Lt4TuHPjKFfPxAxO6H05WcRviUcNM1+9lQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GRjzvPfimi3hs5+cEZsP6br39NZG1B4DVwoSmNkWVHopDREKyhWt3HWffHHIS/Zkf qpTygU0zHpxxjmMfggzFOpBk3N0ja+gnW6Hvv5aAM35X0UpkPy6OyI//gBIBXtHgnZ rbPigU6D8dS59czubY1DTCYntQ9EIUglCvDo9qjZq+sLx1R6IdXCu0fBY1paJq39f7 W+09nuRVM9vVrniCf9l6wXN8jpWzSGhLzuMFsBlxNH1YY+IhDjZQ3NkbSw4S3imE+/ +TWd5kcAA2liUAbFmgX8oz1Of7epS+jwkpcaW2bSTuPJjDlkUNGZ8SfvVwZmzPZEH0 kBEOYT1r4Jl9A== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v11 13/15] mptcp: get addr in userspace pm list Date: Thu, 1 Feb 2024 13:19:03 +0800 Message-Id: <3abafddb569a0bfdd39966e7422a977f2b7b4b56.1706764519.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 renames mptcp_pm_nl_get_addr_doit() as a dedicated in-kernel netlink PM get addr function mptcp_pm_nl_get_addr(). and invoke a new wrapper mptcp_pm_get_addr() in mptcp_pm_nl_get_addr_doit. If a token is gotten in the wrapper, that means a userspace PM is used. So invoke mptcp_userspace_pm_get_addr() to get addr in userspace PM list. Otherwise, invoke mptcp_pm_nl_get_addr(). Signed-off-by: Geliang Tang --- net/mptcp/pm.c | 7 +++++++ net/mptcp/pm_netlink.c | 7 ++++++- net/mptcp/protocol.h | 2 ++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c index 193198cec74a..b4bdd92a5648 100644 --- a/net/mptcp/pm.c +++ b/net/mptcp/pm.c @@ -441,6 +441,13 @@ int mptcp_pm_get_flags_and_ifindex_by_id(struct mptcp_= sock *msk, unsigned int id return mptcp_pm_nl_get_flags_and_ifindex_by_id(msk, id, flags, ifindex); } =20 +int mptcp_pm_get_addr(struct sk_buff *skb, struct genl_info *info) +{ + if (info->attrs[MPTCP_PM_ATTR_TOKEN]) + return mptcp_userspace_pm_get_addr(skb, info); + return mptcp_pm_nl_get_addr(skb, info); +} + int mptcp_pm_dump_addr(struct sk_buff *msg, struct netlink_callback *cb) { const struct genl_info *info =3D genl_info_dump(cb); diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index 876ac75a58e6..da4e75c753ad 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1669,7 +1669,7 @@ int mptcp_nl_fill_addr(struct sk_buff *skb, return -EMSGSIZE; } =20 -int mptcp_pm_nl_get_addr_doit(struct sk_buff *skb, struct genl_info *info) +int mptcp_pm_nl_get_addr(struct sk_buff *skb, struct genl_info *info) { struct nlattr *attr =3D info->attrs[MPTCP_PM_ENDPOINT_ADDR]; struct pm_nl_pernet *pernet =3D genl_info_pm_nl(info); @@ -1719,6 +1719,11 @@ int mptcp_pm_nl_get_addr_doit(struct sk_buff *skb, s= truct genl_info *info) return ret; } =20 +int mptcp_pm_nl_get_addr_doit(struct sk_buff *skb, struct genl_info *info) +{ + return mptcp_pm_get_addr(skb, info); +} + int mptcp_pm_nl_dump_addr(struct sk_buff *msg, struct netlink_callback *cb) { diff --git a/net/mptcp/protocol.h b/net/mptcp/protocol.h index 3dd7adc6b7fc..49dd60a95c9c 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1037,6 +1037,8 @@ int mptcp_pm_nl_dump_addr(struct sk_buff *msg, struct netlink_callback *cb); int mptcp_userspace_pm_dump_addr(struct sk_buff *msg, struct netlink_callback *cb); +int mptcp_pm_get_addr(struct sk_buff *skb, struct genl_info *info); +int mptcp_pm_nl_get_addr(struct sk_buff *skb, struct genl_info *info); int mptcp_userspace_pm_get_addr(struct sk_buff *skb, struct genl_info *info); =20 --=20 2.40.1 From nobody Wed May 15 11:26:56 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 CB2103A8D2 for ; Thu, 1 Feb 2024 05:19:31 +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=1706764771; cv=none; b=cnvrbCCbn0YBafqT/metDfNq8CceRKbfD83HuQQ3FkzqEowwkw4/WkZPaJivw4vAEvet9WA+u8O6yZnHXI1KJzb1va5Y93oKVk3oajXSSfEhEzeth7ghlNsUcH4NDMXIzdkV31ZWgbe+YAJsfRYaPSuWk7C8tCUpiGsYpkID6JA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706764771; c=relaxed/simple; bh=DoYfkYOQ3ruXSwP0ssiLENI1sxoH9H/fyIQ9Gqc5OqU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mUNhupppvzBMCGBNePLHWyPtncrNft41mExNnPQm1CT/K1uP6j7yOQOVrCoj3O0aYSpLtOP3DaXG1ufMAEiInf1O5SlAKhM+f+XSvLy9pb/kJDQ0u88RgiddMy08IQQnCM5YP/XRiYRsagJ/FRt2jXt7/vH85kPQ8f0FMOa5gag= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=km80ovGE; 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="km80ovGE" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 84D3BC43390; Thu, 1 Feb 2024 05:19:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1706764771; bh=DoYfkYOQ3ruXSwP0ssiLENI1sxoH9H/fyIQ9Gqc5OqU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=km80ovGEcaNANfXa8iBcz/nYtJkI/Jr9PxPkabrkQVwhVhDmeOCB8RW/AoXTO2HfJ B5phWtkljua/QEkciNnzwn8GdUCLuW+S80IRQ42hTcNghH9za1ZzQ9bkInpeNBJEAX HOOIYtvs/g3VqSVrJGdRJBK4p2Je5k/3KvT5AawWC6vap7cvfvDa7DJ0r61m/FvV/c 1OLqXVSShFuBqbmJ1H+XQpDGkD4ilHZf8KYLmwAlC+HX/yk2JEzEPcW65k4ExXgqfg dAuji/m07ClEglghpVQYcrnEKXWivDVIUwgNHz+bI1Qv7OSk7qDPoFdSd5yKwiSyS9 5N67EXITU7b3Q== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v11 14/15] selftests: mptcp: add token for get_addr Date: Thu, 1 Feb 2024 13:19:04 +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 command get_addr() of pm_nl_ctl can be used like this in in-kernel PM: pm_nl_ctl get $id This patch adds token argument for it to support userspace PM: pm_nl_ctl get $id token $token If 'token $token' is passed to get_addr(), copy it into the kernel netlink. Signed-off-by: Geliang Tang --- tools/testing/selftests/net/mptcp/pm_nl_ctl.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c b/tools/testing/= selftests/net/mptcp/pm_nl_ctl.c index 8d7d1b4ed28e..7426a2cbd4a0 100644 --- a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c +++ b/tools/testing/selftests/net/mptcp/pm_nl_ctl.c @@ -1087,6 +1087,7 @@ int get_addr(int fd, int pm_family, int argc, char *a= rgv[]) 1024]; struct rtattr *rta, *nest; struct nlmsghdr *nh; + u_int32_t token =3D 0; int nest_start; u_int8_t id; int off =3D 0; @@ -1097,10 +1098,12 @@ int get_addr(int fd, int pm_family, int argc, char = *argv[]) MPTCP_PM_VER); =20 /* the only argument is the address id */ - if (argc !=3D 3) + if (argc !=3D 3 && argc !=3D 5) syntax(argv); =20 id =3D atoi(argv[2]); + if (argc =3D=3D 5 && !strcmp(argv[3], "token")) + token =3D strtoul(argv[4], NULL, 10); =20 nest_start =3D off; nest =3D (void *)(data + off); @@ -1116,6 +1119,15 @@ int get_addr(int fd, int pm_family, int argc, char *= argv[]) off +=3D NLMSG_ALIGN(rta->rta_len); nest->rta_len =3D off - nest_start; =20 + /* token */ + if (token) { + rta =3D (void *)(data + off); + rta->rta_type =3D MPTCP_PM_ATTR_TOKEN; + rta->rta_len =3D RTA_LENGTH(4); + memcpy(RTA_DATA(rta), &token, 4); + off +=3D NLMSG_ALIGN(rta->rta_len); + } + print_addrs(nh, pm_family, do_nl_req(fd, nh, off, sizeof(data))); return 0; } --=20 2.40.1 From nobody Wed May 15 11:26:56 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 4EFF81EF19 for ; Thu, 1 Feb 2024 05:19:32 +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=1706764773; cv=none; b=TyKZq3W8HC8pPkcDBGTPyl34JxHsyN5i7rlxx/dDzaf0w2iNZt6l5kAqToHmqOc/VBgtRy7UpXsxKwJVE3ADRPS4VgRSw2GUs0yo3NqwaI8GKpGyQGclmI4j16Y3+raUWL98abEK+hLEO2/vxZ7udOr4PyAvqHBZANQXFrYxkgc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706764773; c=relaxed/simple; bh=60ROJHfRntDedV6gOeO3zJcIjk31fGLtY5sWOApuFTs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UAuM8x2GjIqMKuxjdGnOJ7gt/fb6LbEM701X5B5P1D9ZWorg5Da/RDLKkbIYcn8t5N2bWJ/RhNo0syydeEX43x9XtO59a/JWZOcsYz/NajZE7YA6beaqjxQzJi9un2mcpRNYfvNR2pVvok5XfAzfBXtk/7VBljHJOWb6dVqvIa0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=brmCSPZy; 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="brmCSPZy" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D7F32C433F1; Thu, 1 Feb 2024 05:19:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1706764772; bh=60ROJHfRntDedV6gOeO3zJcIjk31fGLtY5sWOApuFTs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=brmCSPZyc4O7TN1f0mbz9tf4BDBlXxxzNlZQrVZ2uZgMV2o3zVoQHQ8NpqDBf0txq R0its2lo9gDqzPNfaIDgxXih2ARm8xvX6806hjMNlPVPYN2PTB3oETUOiDSBTw/lJp HxjRvitUNvC0vXYZ+Px3EXfIaL08MWiDHnjMhS39NSVO9UHtmBFUoJHPxKP842ZcuI GQtgDq/KRt8+tUWYrmiFAEq+G8NbZQx0caAh+D9Q5OSOtxz8RDap0ZdkaogRyepAOV eoRe4GAIJkRIEGonGCdgfUvF2td4J6xPXKMpXO0NAXBW/hOu/qB8/Eg3zxFugqTLzK cY0z8fZoqmy1g== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v11 15/15] selftests: mptcp: userspace pm get addr tests Date: Thu, 1 Feb 2024 13:19:05 +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 This patch adds a new helper userspace_pm_get_addr() in mptcp_join.sh. In it, parse the token value from the output of 'pm_nl_ctl events', then pass it to pm_nl_ctl get_addr command. Use this helper in userspace pm dump tests. Signed-off-by: Geliang Tang --- tools/testing/selftests/net/mptcp/mptcp_join.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 4ed0796410b9..dcbc22bb2fd6 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -3366,6 +3366,18 @@ userspace_pm_dump() ip netns exec $1 ./pm_nl_ctl dump token $tk } =20 +# $1: ns ; $2: id +userspace_pm_get_addr() +{ + local evts=3D$evts_ns1 + local tk + + [ "$1" =3D=3D "$ns2" ] && evts=3D$evts_ns2 + tk=3D$(mptcp_lib_evts_get_info token "$evts") + + ip netns exec $1 ./pm_nl_ctl get $2 token $tk +} + check_output() { local cmd=3D"$1" @@ -3603,6 +3615,8 @@ userspace_tests() chk_subflows_total 2 2 chk_mptcp_info add_addr_signal 1 add_addr_accepted 1 local dump=3D"id 10 flags signal 10.0.2.1" + check_output "userspace_pm_get_addr $ns1 10" \ + "$dump" " get id 10 addr" check_output "userspace_pm_dump $ns1" \ "$dump" " dump addrs signal" kill_events_pids @@ -3625,6 +3639,8 @@ userspace_tests() chk_mptcp_info subflows 1 subflows 1 chk_subflows_total 2 2 local dump=3D"id 20 flags subflow 10.0.3.2" + check_output "userspace_pm_get_addr $ns2 20" \ + "$dump" " get id 20 addr" check_output "userspace_pm_dump $ns2" \ "$dump" " dump addrs subflow" kill_events_pids --=20 2.40.1