From nobody Tue May 14 20:29:13 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 812495FEF9 for ; Tue, 20 Feb 2024 09:58:35 +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=1708423115; cv=none; b=RQu+h+czY5KkHaRJK8FUabtsW3x0T2Ox46YhK3V5f0d9lJCYf39EbrvWKjJPHGSO6wf3qlIKNXy7dq9BjkBIYChRbavpQtDbqreAk7Km/bKxhEpHLOCISIoIWUSqAKuNxXXvIAen6jUXjqRXHZi27cHZg17Xbwrb55rM9tkYW4U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708423115; c=relaxed/simple; bh=YA13jGhC6upAe0bu1WkCSJyPoOXqRGk1yYi0XExMrMY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=JQNDWAaZ3cx38uGPx3Q2z8GCoPYnnfi7uuchCPwi4ysqY3D9EfXVQOAFWaNxFongUe1ydeZiguRaHQVLJL9dLVjH9wHETAgdq8PJDk9KUY+KkephzNE4EVP8pjdvyBXu4AR9P8h66518mCWFAe8w9x7lxOdioeyon5UGEFCpg80= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZDsePAv+; 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="ZDsePAv+" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 88ECAC433F1; Tue, 20 Feb 2024 09:58:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708423115; bh=YA13jGhC6upAe0bu1WkCSJyPoOXqRGk1yYi0XExMrMY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZDsePAv+juXxv0hGiEOsoLnFyLlsPuSJSuxHlyYetfpJaxQoHvp68fPqgEuufIQ97 U3W8lrXgqWHdJcQdbcQCkXtqWuceXZ5+iW0vfkddx2+ClRiW0hruQfwcpJXcAbG5Fg 7+vRoIRp4C+NJ17Mlw/uHWhpdDxuPwZP2RgNRtBlMwSEvd9YWFbyWHqHRJrt7lhXch 8cUMoewlXO1sSovz81X1qedc3xY7MPOGWqRISnsqnmPdn/Nlh8Bp79OADLPGZpAMoM d2HNmXuDR+lAqnchqkmtU33Edpf1EVAOQ0jDFctl1gdzA27X5YxhmB62DzERjj2IJD hTmODGEXW71+Q== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 01/14] mptcp: export mptcp_genl_family & mptcp_nl_fill_addr Date: Tue, 20 Feb 2024 17:58:15 +0800 Message-Id: <9c0e29c5657d10995f3caeefaef6160017ac496e.1708422758.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 Reviewed-by: Mat Martineau Reviewed-by: Matthieu Baerts (NGI0) --- 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 d5a942b9ab29..5cca84c6b87b 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 { @@ -1636,8 +1633,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; @@ -2281,7 +2278,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 6343d640ce8f..843c1e31de3f 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); @@ -1003,6 +1005,8 @@ void __mptcp_fastopen_gen_msk_ackseq(struct mptcp_soc= k *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 Tue May 14 20:29:13 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 1F6D360DFC for ; Tue, 20 Feb 2024 09:58:36 +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=1708423117; cv=none; b=PZdilMLw2O1B8cX7jMuvk9GZ+7JbKXV6Aivu2PkeWn43lhE5JyEWfnWuwl1bdVS3e5zQ31nEPchgJzKVizJREcceT2SlMQ9OBNLkKPRQ3RMe5bbFhuVCQbufB3oUoJe2EsVf7RZm+g04rw/qLK0b+lkgV8bXDbEKfL+bEnWC4N4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708423117; c=relaxed/simple; bh=20FOi1rILPNfj1P9lJvpuHkosfki300oiO+jR2JjoJU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=pYxpsXyyGJmShXLS+pnzhfOZtabTiZKcwWBHnGX4eIYxnFQka8VCaVS6TMPyihTHmBsj5nN666LUBCpVeSVoWazANMWTAwRrd2szznPo43I3dqm4JuudNH0Gb8bgZqN6cjCV0BE04CET1kSlb81RwqpLHUHMAWnvhWtcTeo1oDg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=op0Gh1Cw; 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="op0Gh1Cw" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D4C51C433C7; Tue, 20 Feb 2024 09:58:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708423116; bh=20FOi1rILPNfj1P9lJvpuHkosfki300oiO+jR2JjoJU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=op0Gh1CwWXZxHVld1uuIik3ekHLCbq1340LlaF3vTfHHo/V1mxAE7EAY4LQkgADua HS2GIfrrMJcCVcG4qzIZ8gtlSRiIh65EjuFg/vLLHrG2UOQ5x06og54v++Xjtqx6m3 SzP1EXCSyhp0g5aGWwTmn14h+MkeEBf+EsffwflLe967jTCkeXb3wkd2zHrVA2dnn0 jgSI/EtosTkGEZtEmuekbQQLyqsCotVI6rlDofuwXkUNi4rNplKR+3aKrKfFl/zVgD VkLCpDH92Y1e4/3js7V7v4utaPID6RDQRRVpv7MCSZUm4w9qFUp90uBBI6o0ECJewz emVenYdAU6xTw== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 02/14] mptcp: implement mptcp_userspace_pm_dump_addr Date: Tue, 20 Feb 2024 17:58:16 +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 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 Reviewed-by: Mat Martineau Reviewed-by: Matthieu Baerts (NGI0) --- 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 bc97cc30f013..d6b7be3afbe5 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 843c1e31de3f..0f6eee5496ad 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1071,6 +1071,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 static inline u8 subflow_get_local_id(const struct mptcp_subflow_context *= subflow) { --=20 2.40.1 From nobody Tue May 14 20:29:13 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 60C49604AA for ; Tue, 20 Feb 2024 09:58:38 +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=1708423118; cv=none; b=uGxhA68ZsrBY08kjA2JZvdShSsSVat7TpNSdnaJye/tc3od8VNgnk88Jks33onR+QDoQ/csstkY5OKscBb7lUomlf+FGHGWp978Eva+cklwnEZRw+tCF+lyvK7jL7CU641Favk44TMwPpBxs49GyBkeHK7JGDq465aJ7PRRLAIA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708423118; c=relaxed/simple; bh=WXNJVLSDil1/0p973BkNOj6TasTWBdJpcU4wNM08Ar8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=JousA6Qt+Pl/Tzqx0TV77LuaB2emqavm3XWMZ3UpUYYP0/VbRuvX+g82ls5jVEPqz/+YBGnZDLHUp9gzokT8tmKUwzIB4/paA/r1Ezvp5DMBbOxnjNjCfSO+Y4IqCZf83euA1ZxMyEpRjQKk/7NA4RZrAh5pAqJqX9H3Osnjw44= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=opmXO0So; 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="opmXO0So" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2AA68C43390; Tue, 20 Feb 2024 09:58:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708423118; bh=WXNJVLSDil1/0p973BkNOj6TasTWBdJpcU4wNM08Ar8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=opmXO0Soh71HZSCMABx5NM6hwsm1WQv0Y1ElLT+Asi/pFZTWRrhCU6gFVmQ2/dMUQ tUsCYRBA/Wh71tETeHDh0ChijPs/avwhGdsxmbntmPHC0MaXY+c3ANwxgq+ik01SRj dQtD+PuPxjka7yNHc6U7mc9kgK5Q4PJY+tYUSdnUOvKf4D3K6uJFY0XEKSV4rqUFu0 BJRQBgVDcpiAZmuRpdAj6KQBLLNMqDRcuz8f8CBYSnMlUkEcwhOE3gzSdsysLgTKOX BWTRhpB3njRPznTCLFut+xIHEEbPnxDaGkUSw4VHVsTDHUdWHJswbxpm3HPzopR8tB EKlaP8CzUU6CA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 03/14] mptcp: add token for get-addr in yaml Date: Tue, 20 Feb 2024 17:58:17 +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 token parameter 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 Reviewed-by: Mat Martineau Reviewed-by: Matthieu Baerts (NGI0) --- 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 Tue May 14 20:29:13 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 A1132605D8 for ; Tue, 20 Feb 2024 09:58:39 +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=1708423119; cv=none; b=cf2e/sW9k5GDia8uFcXuA1ESEgse1Qe21u2omkkllgDm98D1TciLCzJkFpxMUAmYuFs5AM0jfQB3eS/HY+ogESSZWPOX7RV0FPf+2ww58lang4Uso49zmABJi/Zq6iOjz7PDCWnDLcPtOWWdJbP8Pb3K1Og918OHge1iRM+7c5A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708423119; c=relaxed/simple; bh=vXORsSkjiEGHERfcCLl4bm3dWULv/6LtyQzNqLp1Wec=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UDLVLh5leBSaNU8SKkfeP22b2Nrc5t17BWzekyQp/j86kaJE+aG5Z4sLvy6kLO1/z3I3rob9/DpQ7wqSSdJx6fldPdkkvhpK/0+gh08ufVkkaPii6fhlNDEhp614iZpI9UCriuWgqlhfnj2VpJ9tKlx+KgWOgdeijKQoZdc86yk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AmHDWAaq; 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="AmHDWAaq" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 75CE2C433C7; Tue, 20 Feb 2024 09:58:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708423119; bh=vXORsSkjiEGHERfcCLl4bm3dWULv/6LtyQzNqLp1Wec=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AmHDWAaq+RpB69ggBoVj46osYWnA1DwISDHBt5Oz+zMWRGTYSKTOG30KdMqfzadzy kyh4QD0iC+reqRhAVj8gVg3bgAJ2VCBf0EHFh3FRNH8janKnWrBLS14DZeJARfL8kK pw6XlBPxhCLGwqr46laFsuG6wWiZkTQMAoPJePGMMRIA7aPs0s88TSw++t8Rx5wR/z XW9YrxX/JA+U7yDR0ySV7oiVeEuTFNe9w8y98LPrhN3yEuV2J84AftvF+8A/TpAzF+ JELyBdYNMmli6DfyWvKxfHYuOyxPhX5SZqVZ2HB2hl1XM3xPBGuJJ/dZ6EBsq4ti/W Eg20EXoDMFjSw== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 04/14] mptcp: dump addrs in userspace pm list Date: Tue, 20 Feb 2024 17:58:18 +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 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 Reviewed-by: Mat Martineau Reviewed-by: Matthieu Baerts (NGI0) --- 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 5cca84c6b87b..7b15bb4f12c1 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1722,8 +1722,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; @@ -1765,6 +1765,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 0f6eee5496ad..6501b0142794 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1071,6 +1071,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 Tue May 14 20:29:13 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 068B45FEF9 for ; Tue, 20 Feb 2024 09:58:40 +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=1708423121; cv=none; b=AWRf/a5Queiy+wkgqqrKI0+Ylz7yaFExxRPDOG+rem62EPHf1Ch4PFib1ecgV+MCtByYO9vI6i21xd7NQf8LWbmzcUvfyBeQEarjo3RR5iXYcZ+HMrDTYjWrwk1tYhYX3OPjy1Ft5BXhLFctFkLUsQJ7fNu5IfRbho/De2knMos= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708423121; c=relaxed/simple; bh=bxYncz3Oboan33g5M45Geo2f2eqtF0tn+Bs7CD6IdUY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Xgjn0cFi2KEjWxxeY8t2Dhg88StdMfaxaF3X6dVJdo59v0fyN6HqdrXDucO1+YBqNK+DN2vmU/qzY0UKr1KZeJkhqtBJbQXXXEvXVeC7ExzHcN9YlXN/XXbYM0yRt8iZqSLqvuCKPK3Odx4mIXqmsejHqDDcjP9LgCIMKa2a9EY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Jn7jln2f; 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="Jn7jln2f" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C1A0DC43399; Tue, 20 Feb 2024 09:58:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708423120; bh=bxYncz3Oboan33g5M45Geo2f2eqtF0tn+Bs7CD6IdUY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Jn7jln2fcmeTt1F+2FwKSybke7MFYevIa5p8WSYA+egz9kxssgnNqBO5VKEuxV3gZ QQFpb3BKMnDlXccSoyFc++qdRKm4gBijMXBDnx5UL4tpyAwTz4DvSJtrGuKAI98Ntu mJ5NQbvVZpflJXKliU+vIZcsW+TnGzLpWidlULnXHhAnUwz10u9d4NM+EU0Kccicbe knCM8799whpEpPBAAQ3Xeti7bdkLNXP+CUjoUWGQRAtO9MbAl0lbqxzUukSI2BxXBG CmQR1cc6MseiZnrlXh9tPAo+OSE2tHPSQHlArUWA3YXKdDutk3wn3p0GAHKfnAoRy6 QhTp0lUxUMR8w== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 05/14] mptcp: check userspace pm flags Date: Tue, 20 Feb 2024 17:58:19 +0800 Message-Id: <3c68f7b7bb0daae49055c9c3776656a3782733a5.1708422758.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 Reviewed-by: Mat Martineau Reviewed-by: Matthieu Baerts (NGI0) --- net/mptcp/pm_userspace.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c index d6b7be3afbe5..3bd13e94b568 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -334,7 +334,6 @@ int mptcp_pm_nl_subflow_create_doit(struct sk_buff *skb= , struct genl_info *info) struct nlattr *laddr =3D info->attrs[MPTCP_PM_ATTR_ADDR]; struct mptcp_pm_addr_entry local =3D { 0 }; struct mptcp_addr_info addr_r; - struct mptcp_addr_info addr_l; struct mptcp_sock *msk; int err =3D -EINVAL; struct sock *sk; @@ -360,25 +359,31 @@ 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; } =20 + if (local.flags & MPTCP_PM_ADDR_FLAG_SIGNAL) { + GENL_SET_ERR_MSG(info, "invalid addr flags"); + err =3D -EINVAL; + goto create_err; + } + local.flags |=3D MPTCP_PM_ADDR_FLAG_SUBFLOW; + err =3D mptcp_pm_parse_addr(raddr, info, &addr_r); if (err < 0) { NL_SET_ERR_MSG_ATTR(info->extack, raddr, "error parsing remote addr"); goto create_err; } =20 - if (!mptcp_pm_addr_families_match(sk, &addr_l, &addr_r)) { + if (!mptcp_pm_addr_families_match(sk, &local.addr, &addr_r)) { GENL_SET_ERR_MSG(info, "families mismatch"); err =3D -EINVAL; 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"); @@ -387,7 +392,7 @@ int mptcp_pm_nl_subflow_create_doit(struct sk_buff *skb= , struct genl_info *info) =20 lock_sock(sk); =20 - err =3D __mptcp_subflow_connect(sk, &addr_l, &addr_r); + err =3D __mptcp_subflow_connect(sk, &local.addr, &addr_r); =20 release_sock(sk); =20 --=20 2.40.1 From nobody Tue May 14 20:29:13 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 50EB760264 for ; Tue, 20 Feb 2024 09:58:42 +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=1708423122; cv=none; b=M+iI2yqcjPoAl4xs4/ljGvjWO7sa0yFmSoNZybceKRjTTMnFHUGqIEm7If8BK39H9LFXNeGIKv3H2zT8xJQekueSz5JUCnsBXOfpx1URpO3UbjlvJcV20X2W257EmiHZ1ZQuz0XoUmnmPqjq0cAwdzQhH3gb+y0tgv5BxsKXSqI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708423122; c=relaxed/simple; bh=JRMj/SLzyGIOFS6blXMUY3ImOv8wI4WGrPWCLtVXACs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=qv68YhuO1UdvLVFrxLNU0O467XXLPSyFT1BDkLwis4g66rbQ9e5KKJVvFS9OLrjWwr0SHuuLag2EZ1ZxLIAw9GXDG23EgnU4mlJrW2QHhABvrbp0Rh4j5ehCKkMpEfXRm+3OONaYXqZeBLzs9uKwp7sU7XjN/6SyYMjxjrzP2e8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dNvd8kzY; 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="dNvd8kzY" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 18C76C433C7; Tue, 20 Feb 2024 09:58:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708423121; bh=JRMj/SLzyGIOFS6blXMUY3ImOv8wI4WGrPWCLtVXACs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dNvd8kzYoiDvebWUWzY0v72pCFmZyGA8UBxbG3jn3pQqT7TZSjllOqokIGkLQXj6x wA9kzMcsN/Iecbs8M8LEYdSfCvV7hl59TQ2YpwJe3QeABrZDsiIu35TkkVPXVd2/hb V0Pd4rObK1Na7klPsz6/apUiXV7gfiFA6k5DPxm5mfyizIgcplBd0ZkQOiinRF+6Fd 6NXbMSQQ0MWCuT0VmRBhpteQFjRaytPpUs4JXVANITMlh7PHwteluog1imXYJFB367 YeR15E0iyuKmWDUeLD+BinJj+54OC8zuKfl0if7Vsrwv0cUQAzvff7UElRcuXOUb13 3SW5B5P6+ioig== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 06/14] selftests: mptcp: add userspace pm subflow flag Date: Tue, 20 Feb 2024 17:58:20 +0800 Message-Id: <4fc159a116a6a9c8c951c05b939aae82d9a76e89.1708422758.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 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 Reviewed-by: Mat Martineau Reviewed-by: Matthieu Baerts (NGI0) --- 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 Tue May 14 20:29:13 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 BB48F60244 for ; Tue, 20 Feb 2024 09:58:43 +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=1708423123; cv=none; b=T9yMyfbiTlXY8F5ylFGXyf9mW6w7OKRqEJ9yWJue7pamzK8rgSKqc9dcUfd1TO6ZuFrkgvrRqe1C6HclPnU2CKchgj5hM9jShk4kSE2+T8CBtuAwXIaVMgLTEjo/Y5EJnWF67tXupm4L8a6KvsSnm60yn9GusCKEZZLmX5hoszA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708423123; c=relaxed/simple; bh=tERbG7TJiLpb8EzivoIRerccEx0mGGYaF5MyxCkw9Rk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=CJW+qmgN/kIECUAMJrK7t5c/B5lsADF1nrZpIuChkO6k/cJa+syXmDcsz7tXXXahmwlSCo550Zr92St1MeRhUJEUVo7uU0Arky/4SM83nnbT7wWMcI+Oc0sIv1dz793vNJLI28OqrEzhr0BSxd3OJGaCVsecxf9W8RhWjscidrs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=LD22bedy; 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="LD22bedy" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 653EBC43399; Tue, 20 Feb 2024 09:58:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708423123; bh=tERbG7TJiLpb8EzivoIRerccEx0mGGYaF5MyxCkw9Rk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LD22bedySm/l67JXG0Q90D5UpFGBCVICfBV6U6DpZueEIHaoVC8qw9OoBvJvDydpf ir52hfuQKm2cXiaanMbU5mDtJTv9CH12P2ZAQhldsK31nb3S7zsEPZRqfsFb3z+sJA kExZOxviIj14NVbKDq4ai4IMWF1085wA8Wtz6lfhSqpCLwErPWMJjQjH6BzSWisdYG wjNR87GewOE9IKv24ico/pwbxbZhgB68au3AhGTsDWGoaavipTn9C2IwsTXdH5Bxvz DdvBbn2jNLHTBIuUnqHv/H9Fmw3d1SUWQymAq0H7H6mihwPI0+3bdeB7ZYjGw3mbCm KzN71/S+GI8PA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 07/14] selftests: mptcp: add token for dump_addr Date: Tue, 20 Feb 2024 17:58:21 +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 Reviewed-by: Mat Martineau Reviewed-by: Matthieu Baerts (NGI0) --- 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 Tue May 14 20:29:13 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 EC61A5FEF9 for ; Tue, 20 Feb 2024 09:58:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708423125; cv=none; b=X+/Gp23rysvLgpvMDtnLOwdOTEkvAbUXeqSu/EXQVa5Hhppkg9rRXMSksFa7T9occgi7oTRbSCBbUD1nKvyJamzBy9ji0uJnihqoMpGWs/EmlEq8/qkH50+FzfAfA5Hiv7oEN8YB6Xd7cQrlHaLyxWYZoh/HBmpPDb3t25JeZhQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708423125; c=relaxed/simple; bh=0CgG4IkiNx47pqID/6b2tO72Om8asP5GeTaPgH6uU3k=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=GU520Zk1cXm9TaaQTCXjcmA2JUaaP9P8hN4SzXdRzeDnK0fmU2ytqukBEX6TspV/sOX5H3iOyZRQAJlnNg3WFmi+RCNN74ismr223n538DfToE001BTdon3KNjlEXsM6m0N0VqoTV+Zme/5MbSrm0tIgyEdXyyzRRxKv4Ka/m+s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PaSQgiNe; 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="PaSQgiNe" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BA356C433F1; Tue, 20 Feb 2024 09:58:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708423124; bh=0CgG4IkiNx47pqID/6b2tO72Om8asP5GeTaPgH6uU3k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PaSQgiNe/PIhgDYO3KZzwr5bakYJ3NMd73JZEvbSs20v1ASKrNyU7flfxbJfjmkA4 L4m1WZiZTdPDbRGpAk/1PVoidBBmtoYEPEF7QprGLDuZ2aVQy0gDD856Bufyabpg49 xsc1UFSgI6g3wUtpV7jYsq1KyNxIo9ri7PXNHydatfTWuOVpVveKU+T3Xj1kEOFXj/ vgoNscABWG3M60QZRxC+x16Vu+86iwlS3OcL2Hau/Dh+S0e7+CF3PjN4LvMG6DZRry jypNeseAGjxUYZtKByvccHvEykQ10BFRkfQEmlrwN1m3lfpDZrAdB+GIxUDLOKoCnY 7kxtdDSpihpVg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 08/14] selftests: mptcp: add mptcp_lib_check_output helper Date: Tue, 20 Feb 2024 17:58:22 +0800 Message-Id: <33bd2ab5bf6cc62d94e618761dcc731338029b08.1708422758.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 Extract the main part of check() in pm_netlink.sh into a new helper named mptcp_lib_check_output in mptcp_lib.sh. This helper will be used for userspace dump addresses tests. Signed-off-by: Geliang Tang Reviewed-by: Mat Martineau Reviewed-by: Matthieu Baerts (NGI0) --- .../testing/selftests/net/mptcp/mptcp_lib.sh | 19 +++++++++++++++++++ .../testing/selftests/net/mptcp/pm_netlink.sh | 18 +++++++----------- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing= /selftests/net/mptcp/mptcp_lib.sh index 6d9a2af85a8d..aca35376006b 100644 --- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh @@ -350,3 +350,22 @@ mptcp_lib_check_tools() { esac done } + +mptcp_lib_check_output() { + local err=3D"$1" + local cmd=3D"$2" + local expected=3D"$3" + local cmd_ret=3D0 + local out=3D$(${cmd} 2>${err}) || cmd_ret=3D${?} + + if [ $cmd_ret -ne 0 ]; then + mptcp_lib_print_err "[FAIL] command execution '$cmd' stderr" + cat "${err}" + return 2 + elif [ "$out" =3D "$expected" ]; then + return 0 + else + mptcp_lib_print_err "[FAIL] expected '$expected' got '$out'" + return 1 + fi +} diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testin= g/selftests/net/mptcp/pm_netlink.sh index cb6ea67e688b..1ec9d8622fc9 100755 --- a/tools/testing/selftests/net/mptcp/pm_netlink.sh +++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh @@ -49,21 +49,17 @@ check() local cmd=3D"$1" local expected=3D"$2" local msg=3D"$3" - local out=3D`$cmd 2>$err` - local cmd_ret=3D$? + local rc=3D0 =20 printf "%-50s" "$msg" - if [ $cmd_ret -ne 0 ]; then - echo "[FAIL] command execution '$cmd' stderr " - cat $err - mptcp_lib_result_fail "${msg} # error ${cmd_ret}" + mptcp_lib_check_output "${err}" "${cmd}" "${expected}" || rc=3D${?} + if [ ${rc} -eq 2 ]; then + mptcp_lib_result_fail "${msg} # error ${rc}" ret=3D1 - elif [ "$out" =3D "$expected" ]; then - echo "[ OK ]" + elif [ ${rc} -eq 0 ]; then + mptcp_lib_print_ok "[ OK ]" mptcp_lib_result_pass "${msg}" - else - echo -n "[FAIL] " - echo "expected '$expected' got '$out'" + elif [ ${rc} -eq 1 ]; then mptcp_lib_result_fail "${msg} # different output" ret=3D1 fi --=20 2.40.1 From nobody Tue May 14 20:29:13 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 5556160244 for ; Tue, 20 Feb 2024 09:58:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708423126; cv=none; b=nd35oM62xZNtX6+QUQIMdkwa92OtMJNC6dBx36+4KX7SLNmIrBCChtymDg6Dy95UTvqDXiCCaZtI1VWDSWoaJxxBpPdoL40ehr7cCkY7f08O5oFa3+MoqfcL30YZ0thUUFHrkD7aeI02+I+Or3oxq7V96uO1iL+uGVAu5VAQXiM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708423126; c=relaxed/simple; bh=OCYHmGkNVsjeelHNXi4bZl08JeMepMy1AX07+sInQQI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ie3QHKLrTWBWC142D+g5rX3zM9xSD9N5Uvq9SBep+yu27QzY9EJXcPFJFB8+fc2U0x0htosvmEoHD14v6t23IlmA6cMQnbEeVMn12ckI4XR9vSgrZkzrTqzbMO7PV86F2ZBTMV/fHzk/EwpdIRyZBxm4CpTAagqVq1XV0+Jt350= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VJbqwa+h; 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="VJbqwa+h" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 11F95C43390; Tue, 20 Feb 2024 09:58:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708423125; bh=OCYHmGkNVsjeelHNXi4bZl08JeMepMy1AX07+sInQQI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VJbqwa+h6W42nHu6a+qAKWyq6sFbko5SQ4WAx893rgPMa+6kaq7QkwW2Zolzns9U9 EyCS38+s2ktec5xJ5DNmj7kaLVFbBu/w9WfvXnOHyTPuxwtKkyTTbXlr9/3dK3I8Jx 5BxRQE21g/sShtCA4zXdkgY/eX7kq3lfppotDAXSKYw5m5p5tMhk2c2uaVzalbAYV6 vqwKfIenAaljAtz++ZXm6nPlyRY4i5lvTdE6srvf0F9+dy+b2eb9gFUqQr3PMSRkpG 8IwGPE5H7Cz8Mi6AC7Uo3SzlSQLYcSusTgO+Yq/k58YO7rGaMG7l/+tor0r4AMFwua qLQJpuCzt9ITg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 09/14] selftests: mptcp: dump userspace addrs list Date: Tue, 20 Feb 2024 17:58:23 +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_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. Dump userspace PM addresses list in "userspace pm add & remove address" test and in "userspace pm create destroy subflow" test. Signed-off-by: Geliang Tang Reviewed-by: Mat Martineau Reviewed-by: Matthieu Baerts (NGI0) --- .../testing/selftests/net/mptcp/mptcp_join.sh | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 4a8217bcc008..9bdf2b535e87 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"" +err=3D"" capout=3D"" ns1=3D"" ns2=3D"" @@ -163,6 +164,7 @@ init() { cin=3D$(mktemp) cinsent=3D$(mktemp) cout=3D$(mktemp) + err=3D$(mktemp) evts_ns1=3D$(mktemp) evts_ns2=3D$(mktemp) =20 @@ -178,6 +180,7 @@ cleanup() rm -f "$sin" "$sout" "$cinsent" "$cinfail" rm -f "$tmpfile" rm -rf $evts_ns1 $evts_ns2 + rm -f "$err" cleanup_partial } =20 @@ -3330,6 +3333,50 @@ 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 rc=3D0 + + mptcp_lib_check_output "${err}" "${cmd}" "${expected}" || rc=3D${?} + if [ ${rc} -eq 2 ]; then + fail_test "fail to check output # error ${rc}" + elif [ ${rc} -eq 0 ]; then + print_ok + elif [ ${rc} -eq 1 ]; then + fail_test "fail to check output # different output" + fi +} + +# $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 +} + +userspace_pm_chk_dump_addr() +{ + local ns=3D"${1}" + local exp=3D"${2}" + local check=3D"${3}" + + print_check "dump addrs ${check}" + + if mptcp_lib_kallsyms_has "mptcp_userspace_pm_dump_addr$"; then + check_output "userspace_pm_dump ${ns}" "${exp}" + else + print_skip + fi +} + userspace_tests() { # userspace pm type prevents add_addr @@ -3421,10 +3468,16 @@ userspace_tests() chk_mptcp_info subflows 2 subflows 2 chk_subflows_total 3 3 chk_mptcp_info add_addr_signal 2 add_addr_accepted 2 + userspace_pm_chk_dump_addr "${ns1}" \ + $'id 10 flags signal 10.0.2.1\nid 20 flags signal 10.0.3.1' \ + "signal" userspace_pm_rm_addr $ns1 10 userspace_pm_rm_sf $ns1 "::ffff:10.0.2.1" $SUB_ESTABLISHED + userspace_pm_chk_dump_addr "${ns1}" \ + "id 20 flags signal 10.0.3.1" "after rm_addr 10" userspace_pm_rm_addr $ns1 20 userspace_pm_rm_sf $ns1 10.0.3.1 $SUB_ESTABLISHED + userspace_pm_chk_dump_addr "${ns1}" "" "after rm_addr 20" chk_rm_nr 2 2 invert chk_mptcp_info subflows 0 subflows 0 chk_subflows_total 1 1 @@ -3445,8 +3498,14 @@ userspace_tests() chk_join_nr 1 1 1 chk_mptcp_info subflows 1 subflows 1 chk_subflows_total 2 2 + userspace_pm_chk_dump_addr "${ns2}" \ + "id 20 flags subflow 10.0.3.2" \ + "subflow" userspace_pm_rm_addr $ns2 20 userspace_pm_rm_sf $ns2 10.0.3.2 $SUB_ESTABLISHED + userspace_pm_chk_dump_addr "${ns2}" \ + "" \ + "after rm_addr 20" chk_rm_nr 1 1 chk_mptcp_info subflows 0 subflows 0 chk_subflows_total 1 1 @@ -3466,6 +3525,8 @@ userspace_tests() chk_mptcp_info subflows 0 subflows 0 chk_subflows_total 1 1 userspace_pm_add_sf $ns2 10.0.3.2 0 + userspace_pm_chk_dump_addr "${ns2}" \ + "id 0 flags subflow 10.0.3.2" "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 Tue May 14 20:29:13 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 46ABF60881 for ; Tue, 20 Feb 2024 09:58:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708423127; cv=none; b=J+RyzT9Q5vmdnjkFWgm2BGQo+g93il4GnTOMLIBfTShkoq3bwI4Dm3pGbwrjkQ+IpQenTxdYjijl7SoFIHWM46P1Empahg6dQ3ubOEjD2H+f6NROxNGl6sVlrdti9sHoKoMdGOfp7jYx1MqpCJ5g9SOjdvjM8sq/FtOiJmYWr00= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708423127; c=relaxed/simple; bh=rCkzK1w01pi1hSJ4QbcUrIR1ioJhFbsheex9OtGa6Ds=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Tn4jHOutzI+JdH8QqOYjrkQdmKf7b730VRh2jRc+nErub4GAmetJl7b5OuZX6piOyB+IChWIUezExmVmQ79chTPtpNRpKip6ZZC+DCE8iB/dUqK7Obdjd0kDHJkKhwt2ToKJhTK5ci7heutHGjb5JYZKGTlcr91yWIlwMccsnwg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=aev0fNEE; 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="aev0fNEE" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5B46AC433F1; Tue, 20 Feb 2024 09:58:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708423127; bh=rCkzK1w01pi1hSJ4QbcUrIR1ioJhFbsheex9OtGa6Ds=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aev0fNEElANe+Pu7DRNOcv1BV2vb/9wgfWMvKPIGe07Wy1TsGeP9rJY/1HMmkIvYf ydBjjrfOOZSLji2C9MXVx3UUBGQRxIKw6DpqJsbOsOHGeVU3LiwQQFyE7vPr/02nAV A0SdDwh0OYc9SPltmTrQwSTA/McC3+NLxKF/kl3KU1NK1Es6E5+rR/Pp6nNZFTeAHA eZy7raU24g4ebJ2nPr6f9SvYDjnfC+5PoA2etN2qZqB0WtD7jJ+3lSgX4TReCCBmO+ oA2uIJfko9W3/UX4gmiz9hJ989FQ8c3kHlCRV34oaOScM4FsGqUq0jnoH0/qaWQtOB fZnZVcT8Moxzg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 10/14] mptcp: add userspace_pm_lookup_addr_by_id helper Date: Tue, 20 Feb 2024 17:58:24 +0800 Message-Id: <5c361b0bd150cb41f9c6a8fe0339be5cd022aa15.1708422758.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 Reviewed-by: Mat Martineau Reviewed-by: Matthieu Baerts (NGI0) --- 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 3bd13e94b568..20cbcb62cd8c 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 Tue May 14 20:29:13 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 D51C060244 for ; Tue, 20 Feb 2024 09:58:48 +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=1708423128; cv=none; b=JwwOCLMOeMSTW0uFA3oi5wwxHLksvktJc6xq9McYTBNHgGLT56oW09hIp8oHvZJoBnLaQNJnosQ3yqc9C6NGM6bJbNdGIZ0HToK9CTgAAuYKgNF156JDHpB2QejsBR2KSffj0VNnAM4cR/W9igf0C+uV77jJ4sryRNDfrGVUsaw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708423128; c=relaxed/simple; bh=CyDaMW7Didv7Ll0QiHJdSBrLpmkqGL/GMC441cme5GY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=BdvXBfcyEU/I9DN3J73mBlOnOV1U7dwWxRJD4vlUI4QZtg/bZTCSgylp2MZGqseBtS02yRSP+pgjr0nfsyHIogI9/51dKCmK3XsfNWn0Q2BEzT8OeoOIMtni2y+a/pHx+6O+cejKGnqbJ4wZHKgV2JpQeqKJPaBVRgpDWAjSeRY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QxPYMxp2; 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="QxPYMxp2" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A6BD3C43394; Tue, 20 Feb 2024 09:58:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708423128; bh=CyDaMW7Didv7Ll0QiHJdSBrLpmkqGL/GMC441cme5GY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QxPYMxp2KcCnxvin+Ks7oTJX40oMXLO1rG0leVrlQ07VUBckkh/tbWDpYiSTJ+un0 PRp6017/k/OvtrdtszPVuiorq3RIwUJbtjeev524LDntXKsh34cXiNpsVHZI51fnIi LSDEAzxY3inc78xadYfsrqupiqkZyZ73hlAGpxoEx1X9IXc20T2dXYKuxvzspVvwdG LcfKWbN/4jhhEk/pG/LYgMD5G/1aGB5okSHl0Do3vko406w2OS3awMxQEDxxtVuEts sRhtLRir83fyBWZwZ8MxczsfODOSFIRH0Cb4IrFjtVr4mL/D2BY/d3uqdh+EN8+Guf hcb/R91BuFyrQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 11/14] mptcp: implement mptcp_userspace_pm_get_addr Date: Tue, 20 Feb 2024 17:58:25 +0800 Message-Id: <6d6bf7d187828655854f7d01664fd11b9af4470f.1708422758.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 Reviewed-by: Mat Martineau Reviewed-by: Matthieu Baerts (NGI0) --- 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 20cbcb62cd8c..b9809d988693 100644 --- a/net/mptcp/pm_userspace.c +++ b/net/mptcp/pm_userspace.c @@ -638,3 +638,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 6501b0142794..a4fa66c14f7f 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1076,6 +1076,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 static inline u8 subflow_get_local_id(const struct mptcp_subflow_context *= subflow) { --=20 2.40.1 From nobody Tue May 14 20:29:13 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 4E07960244 for ; Tue, 20 Feb 2024 09:58:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708423130; cv=none; b=acLKwMVtFeya2EA/JKE8AD0c76R1FPA5z3lECxhEDo3nOQ1KsLQvQlYWr+iZg6YnQ6ekfEPJ6jbtNey5gKvPUF8mop4INOSXJmTVUA7dpfPPRh/gOhyVxI809ieWvJFW5jasMzLtnj3Qbu1ObD+N+JusMKczJoGoeBiv4yrhxZ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708423130; c=relaxed/simple; bh=Lh485gU/pRHBpb0ApxIFt936Y85aPsD6BUnfHhSMqqA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ej39tE4w5aRwMAjaRp/seaKFGkDJzNcx17e1BbHfTX64eSRCGMoj3jM0mWkJdr8czoPpYXxdQPsGOM3vtuMEEGqKzfuLrcwezP3CKGgCjQjJ8iFFuTRE5E4PnvJeM78MBHFKvWfpSWjcH2fHuiWaRZhAsbAYfrB27PbVufaae/c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QUTynqZz; 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="QUTynqZz" Received: by smtp.kernel.org (Postfix) with ESMTPSA id F15D5C433C7; Tue, 20 Feb 2024 09:58:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708423129; bh=Lh485gU/pRHBpb0ApxIFt936Y85aPsD6BUnfHhSMqqA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QUTynqZz0N5WyxiRlM7LO9oUJAryIvEHzLrh54WwD2DxaBg06Y/ViOBv9FMzW0NQ2 r7wDGG/nhC6wvdoTeAC6d8sjF5RBJDjU9G6DIdUYJfsvMYMokqSJ0YeXdAYoam23vG 4Wlsw3cn3qapMP+ZCLC/3NIirKKB7L/nx2yHOVCzHxOF0aM3qQV5VAyiZxv1lhbW9E IDcWbARG44oDLpNb7QE8rNvWgKKKMjIgXWUe3/rNl6ATU/vmAPsl0lmnm84P8Vpawn 1KIInFeeOVWd+a//HjMIjVgSHPlHG2aimpsk6TPHelwQGAy+8MI1di/m7RY/whAwhY iFCjZDnvb/J2w== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 12/14] mptcp: get addr in userspace pm list Date: Tue, 20 Feb 2024 17:58:26 +0800 Message-Id: <6f72a269e2aec84329be171db9464bf12736fc63.1708422758.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 Reviewed-by: Mat Martineau Reviewed-by: Matthieu Baerts (NGI0) --- 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 7b15bb4f12c1..f04e354b0c64 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -1672,7 +1672,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); @@ -1722,6 +1722,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 a4fa66c14f7f..d611968ae6a4 100644 --- a/net/mptcp/protocol.h +++ b/net/mptcp/protocol.h @@ -1076,6 +1076,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 Tue May 14 20:29:13 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 3439560244 for ; Tue, 20 Feb 2024 09:58:51 +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=1708423131; cv=none; b=VnFbdSpVq+WBEDvFAC54k3Ucm9rTkWzCB1jj4guayPFCV2lFMfDCWkgtnAN6tP+nRFrPQc54TUzoxn4X0Gyvcq9s+c9p2vBE9D+wmlYmPyEfCfP9Fm/dIktQUsI4Hs7KIjzTq2c5JEfX8LBYEflG585b/+8HfPZiIHLLdLVprzw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708423131; c=relaxed/simple; bh=DoYfkYOQ3ruXSwP0ssiLENI1sxoH9H/fyIQ9Gqc5OqU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=NKhKGRUaY2MPmbDEH18hcJQuTeHcAfXwd4MDEKfHwZ/lf6+qvFvQjzG5Kgpu79ES1pg1M1Pze5v2MEln5Oay95Z3T4lR6XPUIre5HNU7Tl72IWcaKixI9hhyfFd2bx/CwkjvIaZgZ+Vt/Y4gGbY8p6WJHqpZRcPhV53k3L7Is9k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SfN50wZ8; 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="SfN50wZ8" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 477CDC433F1; Tue, 20 Feb 2024 09:58:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708423131; bh=DoYfkYOQ3ruXSwP0ssiLENI1sxoH9H/fyIQ9Gqc5OqU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SfN50wZ8pNcosroje1YO56wTTgUq94eiZt/jm1zHh5JrGONgkZMrvC52MovtPRaQ8 1quijZKKcTkJjkG0LoxxNg98nvcjtZRY0S78k5hCKYLM7GQ/OdnenUG7L1geGy6vQO r/e6kw90KmwksKH/F1xJclIP30tVT7TpEhTyOKKeLG1ZqW3ghKRurBVU7QOBjnoO/N ZdjHf7TDQYD92IJ8vtmcJVcOcOVDoJuy5Iyu4DqJAizCC2MGLH+qvS9vwr4cNpGRtI DulnMwxUe14Ma+j73cKHj5atfLbwVvBxTduMbZNUHfROLOi2Tj9ufptmJdmYZb9DRX jHjbySFV/eBQg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 13/14] selftests: mptcp: add token for get_addr Date: Tue, 20 Feb 2024 17:58:27 +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 Reviewed-by: Mat Martineau Reviewed-by: Matthieu Baerts (NGI0) --- 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 Tue May 14 20:29:13 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 810225FEF9 for ; Tue, 20 Feb 2024 09:58:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708423132; cv=none; b=KAV0LNJjEGOat2VyUdkaEhUmwxJfaV/yeYi94usZr/VooWGNOoT9gWngsc+dn139DKHOxNnjV3jNvQqd4nZIIygWQ8As9HzohgjM1F6hHXUti7Ombj6gqgE/3ekv3vJl+etT6dcKh6J+631D+REs03w/B0pdwoL/I8q2Mlzxov0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708423132; c=relaxed/simple; bh=NW0lHymhhtRDVJzF4WOMpbUgljVvmUlQ/S3qcGjHyJU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=u1cAgaaA+OySyJtgq3Ndazp6NafNV9XTgUnOuT8FD+wEfyS2AY7LpXiQRJS/cnTwNeORKW6MlGWY/+QwMH4J4T5UfZPQ9ZkWKC0aEBGZtPd1KoNjrUJLkrPHblO47c9irHRD5m1b7o1Mkikf/9G/eCX3eBbGzmRhTMS/xFljglE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=n1+iEEFO; 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="n1+iEEFO" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 92A83C433F1; Tue, 20 Feb 2024 09:58:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708423132; bh=NW0lHymhhtRDVJzF4WOMpbUgljVvmUlQ/S3qcGjHyJU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=n1+iEEFOPK60lzC525C2r7MV9WSZtK4ytOQZEMZhB7ABFtlcji+W+Hv5m5bDZzkG8 dA+oEhMKx6ZnwiyspTpU84RdlxzQkBtf8IY9veq5EpAhn8JIkzLfVm0QkWGPOy12Lp lchn4t43PHaX7cc/z3g7hso6oxKu9cHsL6PuuojNo7ee0c56vHd42xtNbcGYueAXPa VeugfkP7q8h2Gw4QUeSQaB0jKad1/Q8wyThJD+f3QPkSn8G9kkmOipup9ip0IdaXU1 pOiMcpA4dH0xiSD3LAnLcY+mXdNFXuvWn3eIlWIpAihTVfq3+loEKAVKOZqd1EcF0i f7NCwdyagtTgg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v14 14/14] selftests: mptcp: userspace pm get addr tests Date: Tue, 20 Feb 2024 17:58:28 +0800 Message-Id: <1217349b8d341c11964bb2869d141565c4d355c6.1708422758.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_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 Reviewed-by: Mat Martineau Reviewed-by: Matthieu Baerts (NGI0) --- .../testing/selftests/net/mptcp/mptcp_join.sh | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 9bdf2b535e87..aedc5698f26a 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -3362,6 +3362,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 +} + userspace_pm_chk_dump_addr() { local ns=3D"${1}" @@ -3377,6 +3389,21 @@ userspace_pm_chk_dump_addr() fi } =20 +userspace_pm_chk_get_addr() +{ + local ns=3D"${1}" + local id=3D"${2}" + local exp=3D"${3}" + + print_check "get id ${id} addr" + + if mptcp_lib_kallsyms_has "mptcp_userspace_pm_get_addr$"; then + check_output "userspace_pm_get_addr ${ns} ${id}" "${exp}" + else + print_skip + fi +} + userspace_tests() { # userspace pm type prevents add_addr @@ -3471,6 +3498,8 @@ userspace_tests() userspace_pm_chk_dump_addr "${ns1}" \ $'id 10 flags signal 10.0.2.1\nid 20 flags signal 10.0.3.1' \ "signal" + userspace_pm_chk_get_addr "${ns1}" "10" "id 10 flags signal 10.0.2.1" + userspace_pm_chk_get_addr "${ns1}" "20" "id 20 flags signal 10.0.3.1" userspace_pm_rm_addr $ns1 10 userspace_pm_rm_sf $ns1 "::ffff:10.0.2.1" $SUB_ESTABLISHED userspace_pm_chk_dump_addr "${ns1}" \ @@ -3501,6 +3530,7 @@ userspace_tests() userspace_pm_chk_dump_addr "${ns2}" \ "id 20 flags subflow 10.0.3.2" \ "subflow" + 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}" \ --=20 2.40.1