From nobody Wed May 15 11:48:18 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 7E9F41A58E for ; Wed, 14 Feb 2024 11:40: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=1707910852; cv=none; b=qlM3LEokd7EtLjYHLUVKcdYMfLoUe4/Q5/WcpTiQPaLV0nz1RmgGJI2Os+bM44DpHFw3u5kG1bY8y/NWdNgTnnealB+wKQdfZweHL9d81fzE4/vZk11LvCaeIHXBTqANCtwIkkNHX15Tab3Mtht8Rm2sDpoQIeLEajewWxGOTgI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707910852; c=relaxed/simple; bh=8c1yyNExST0iOyTH4GSXbdVGozpOeodQucCFwVqh+4Q=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HYIAHDWpRew6+SbuJCzjPbXNujCzgsn53CcYANBnpMEPQpVZxKcSa1rUSuZRDhgI0ggp4/iL7WICN5uz5EFwHEmzNCfO+Q4uzmpT/QgUPwLGWe6wW5gNU1EuNTtbwSetDcI193DKwx2elnsmDvXRvl3YCVF3gzRCj++DK326Pxo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=n4MqnCqZ; 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="n4MqnCqZ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3A1FFC433F1; Wed, 14 Feb 2024 11:40:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707910852; bh=8c1yyNExST0iOyTH4GSXbdVGozpOeodQucCFwVqh+4Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=n4MqnCqZNRJkSenL6STo3sQ2SQj91GD85KSWSt+b+U0C77ncEfDlen6fDe6/16yqG VrK1bjxQaHUj/caAHG1KlNUj2NDxNw9amkq+P1YEIz1HMx7w/WiCU8Vvl1ENptOind BTXThYWZ7pZ7CziG/g1Df4GcEunvJFeU1nkuEKi+O89tNqsg7bE04IDinOWGx5dJwx sxbgl3PFb84Ks9LkDsSu1gFHOsgvupJDbupIRNwiUbxNQKPCthsJMVwu7R292QIC30 +gVZKwArkgWUHlPfGb67W3hvt7RuqKGhQIfKxS1ih05EiuXm1q25mcxo0gC7KcmIY6 TkyZIROpxm3Qg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v12 01/15] mptcp: export mptcp_genl_family & mptcp_nl_fill_addr Date: Wed, 14 Feb 2024 19:39:52 +0800 Message-Id: <944c18a030e9dcac7175d6c59006b7273eb866ff.1707910454.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 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 486fff865803..60de3f997de2 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:48:18 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 7D7C2199BA for ; Wed, 14 Feb 2024 11:40:53 +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=1707910853; cv=none; b=AitDmAQqegjOLyLg5Bt49J1CvqFD+B9l5CQiHj3bojvG9l6q2G5uWH7tM/mxVv/wj/S4pfM5o/a+B1eCkXK8RJ/DojKgfdfmV6PHYeo+Af5XdzyxfEsBFPXairflyvDWil3joHVzKsz6h58stMr40AvEn8XjuR4MOtxkzx4tSB0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707910853; c=relaxed/simple; bh=NnNcW5v6KIrnHIf30fLgb4sTxTeaPwJ6PDJdCChPznA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ue2aqDonCVfYaHukhbelrEnGLZ0kLUlDuroeQMDY2q4cGBNADoQDq2uBoGdpc/20p1bmHEwkhpKca25BIRKR90s+QV+weU2sAes5F9rL0NluNraEWgW+oneY+hME2MZ7EIcD4gwChoE0Xgy+zY6OvEnulS6sc7ohqbiu8vT5KrM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=H2UQUGWU; 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="H2UQUGWU" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8DFA1C43390; Wed, 14 Feb 2024 11:40:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707910853; bh=NnNcW5v6KIrnHIf30fLgb4sTxTeaPwJ6PDJdCChPznA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=H2UQUGWUrTn/874PwkAYI66E0nxS3uKzGaxfGuXSonWM2oX+JaXaeRit50SB4oqB+ EoRioOMPXFzfdi6TdBEsAcaWNR6Xvb53gM4jiSeTmmdZopQz4W+BR3fwtR471IAv1s 3yo5HbNlVEYc9ju734Tlszb2qhlFs22x799QCHDy9GQA+EKpL0IJ6P42SGOKVE4OqP zWvyS0Mo7YFao4HIYICFhBanTiA5o/w9v5nqY7ty+Mg+ZlNyb8xD+q+tMidxG3WY8y qlDoXZSCf+S0dXFwFpRt51lJi9bGcewRkglOjNz83Ev66sfwmUc+B5LOInuQoJ3IjY nfhT6tqX9lW3Q== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v12 02/15] mptcp: implement mptcp_userspace_pm_dump_addr Date: Wed, 14 Feb 2024 19:39:53 +0800 Message-Id: <6158e1ede3caac589181412df930bcc7155102e4.1707910454.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 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 60de3f997de2..af20833f3157 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 static inline u8 subflow_get_local_id(const struct mptcp_subflow_context *= subflow) { --=20 2.40.1 From nobody Wed May 15 11:48:18 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 CFA001A58E for ; Wed, 14 Feb 2024 11:40:54 +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=1707910854; cv=none; b=dIDVF2JICUdbA638CglPxt811azXbaF/sEtRome6Legfj6ap9xTVhVdYEEUM7CDi7IYYl6UBJydNcEq/o7mxLgtc7JG0mcSt1DCif49EilfnKrQTZWCGVTAo9vqYE7FBICy/MEmYhgidaYGwGxnHWIidaVvBZW/Tr5/cXXd7xXs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707910854; c=relaxed/simple; bh=aZ7hkh0awxFpyFz4tZITiwTCKprCqkdXtReB0vIBLZg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Ov0XY6VDkz6zOyrrwRo4OyXUbaf3uANF6VCzh7+mzNMV7EIp6L+T0xXFHHvb82JADJZDwNAM2GPQMOoFayrxxhHIzU6NATgC5ZFAnZo2hmn1JirMt6bfWjWjleaMlW+CuXM1A3PqbdAZS7aGW6pe37xFcC56PUHTo6wQJky6rZY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=t/+Sa2TE; 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="t/+Sa2TE" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DBDEBC433F1; Wed, 14 Feb 2024 11:40:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707910854; bh=aZ7hkh0awxFpyFz4tZITiwTCKprCqkdXtReB0vIBLZg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=t/+Sa2TEifQ8Jjrt/PWho716YCSczhQcQPwIwlFjitVuQMvt1HRl1aIlkVj1bwcF/ 0iKlCboVKEMjoEtQLvxt4PTycaXBC+UNJSNRQms7ZVvDYW3oLxSnkZdaz66/Eeof0N 6A2MFKviXtl+sZtQh2uSVN6FrtumjoEryZwyR3h2KN9iywouKmgBVj/ut13Bb4Cb2/ F0345JFLlFTGZGjy076ccYyzOMaZJDWUBivM7x6x+9e21ScKd7Yfri0ygSeXJBE3ZD caVUnPrlu2LXftKszXrnfDa/nxOKcCTODO2bBeyLkiGJIMEVhmjQ0lDvMA+M8XdjHJ Jfbdi+SkNa84g== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v12 03/15] mptcp: add token for get-addr in yaml Date: Wed, 14 Feb 2024 19:39:54 +0800 Message-Id: <4504a86fc813270a21893220297e712e89c4195d.1707910454.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:48:18 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 3CA7E199B9 for ; Wed, 14 Feb 2024 11:40:56 +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=1707910856; cv=none; b=vFDr5QvvGMsLCHyUy0LVCASFdvCxqz3SXCfGg3vi1lsf9RATmwK8WQxKJsXh05vC+zYE5idpWhI569GVi+Gp31l88QjiGAQLeZeuMjZIlUiiJ8SKShSDfY4Oc4tXGo3z1veuUR1u4MB162QBsiDVbJjZThEgNWjRuKcHD7RJawk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707910856; c=relaxed/simple; bh=LHf+YgswIMLzbn0gjyexwJoCVmjLqy7HoSQZHKmmHkg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=qzI11AEExO1WvL/ZBfSq7woMi5i4WPIpY5jIRPBIqqIwltj3WxSsIHGsYBSyq5cBHTQ+mZEwnEZgO9aNjC7E8cjjjyyWTjalaEcd9UyDvWjHVlujMn2so1uYRbdbPnMHsy6AJA3P+jvaEz7/D3qjmhV213d1BXXS1YT6wyOC7Qs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gkKCMpoN; 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="gkKCMpoN" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3D8C1C433B1; Wed, 14 Feb 2024 11:40:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707910856; bh=LHf+YgswIMLzbn0gjyexwJoCVmjLqy7HoSQZHKmmHkg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gkKCMpoN8nnPNItW5TxD2VOvfBErGTmJnKha3USthjHT+0WrcBN2YQq0WdQSaJL9M mgWaWs5DKglCRPSOiKp7yiBmrQMWjf1srCbmK9oRBB4UwgS8FSIamiFTjMBZgiYQAo i8JMxlldGvlW6BvF/hYELthkzT2Vk+J0xGXM9pBftzXAyfnpPW1ccS/C0kHuNVVu6E 9qbQt4bXEV8zLqMjArcbtkaBM2VihyUAPm6AGa4cRt77poLuQJD4yuDL9QbKlFPHPd DlkW5kg95vPb3hzKv5nTwRGqTavw5I/Jg9m1sL8whAaqJNAljh08+op4OLEY6BJ1JG CJWhgmp9SBCFQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v12 04/15] mptcp: dump addrs in userspace pm list Date: Wed, 14 Feb 2024 19:39:55 +0800 Message-Id: <264a3315dba8287a77eb3ec6b3ea21b2ffa2228f.1707910454.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 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 af20833f3157..657d23a9678c 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:48:18 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 1BA961AACE for ; Wed, 14 Feb 2024 11:40:58 +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=1707910858; cv=none; b=CTLyhrt3ZsMtrC+JMB5R62mgfC9VRubqOv45uD651h0qQwaeN/6Xvhj/ttEqMNJUIuONJU9BMqU/LgB0kFAUXCeC4U7avRVDZl7we3aqRjcxbw5ZVC37VTsxzywuwcWkAsBn70g94zrIlHjqRYnBEv1Nir1Q/3ACAgk6rFfOIAM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707910858; c=relaxed/simple; bh=tibaRUxbzkCdKyaYGOvM9dCcDxCnbZho5PwpmHnS4as=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Cpu6T/zdwmhWCqI66dDEJ+m3N7MjP9EoK4bMQgyceboJLzlZcTH3oeolXeCgnljbeSzDn5xMDMkmmKbFjS+gbDbIDizojDUrVH336Px4ysKKntrOKkg2gZ8s3pPE+dfwrrcRTYvpC6LtwBOKUB/tjjOVWGz+4zE6zue2ELF//24= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ja13gX5E; 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="ja13gX5E" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 97981C433C7; Wed, 14 Feb 2024 11:40:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707910857; bh=tibaRUxbzkCdKyaYGOvM9dCcDxCnbZho5PwpmHnS4as=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ja13gX5EPs34x0Yf+KrrFDgECnB8CXACRjXOn7Ntyg6Elxhf0twn4P54hhgYaorvS cMemVAWAjmQu8W7yzbupEd8IMy0L+16O3cPS16WZXpVFRJXEXA0XXRsrxFgK8+n+Gy XOatPtuQOQUhVpw/xwJfp4XGFPxkdu5zVW4nhYDteq8/Q68QAtL28ijFzuHrrIMdcB UagHql67jsNUEm5lTkqP50x5CJG9qQemsyoOSj6GtaSsWM1xARLPp6zHOmOnDw6eZp gpS/7Q4Jr6aUo4DCDlJMkeBdNhjrEp0FrAs+r0IuyYx5tdLmKqruIaPG1SvJ7v64jZ +hf28Dv35qv4A== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v12 05/15] mptcp: check userspace pm flags Date: Wed, 14 Feb 2024 19:39:56 +0800 Message-Id: <85601d20f7e071407d31681062d70b64fa455549.1707910454.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 d6b7be3afbe5..73ad286247f1 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:48:18 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 1367E1946C for ; Wed, 14 Feb 2024 11:40:59 +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=1707910860; cv=none; b=P7Q06P4yJ6hPIuAl5TD6AEKdF/fZ2kdesj6Qp/GR1HjkhT8O26MfI+sFBySdOqyb3pIHy2eDaKVvAW9w5QcYfUYlqnifgyRN3wwbLL9Jvch/tMkqM3nRxIV5DJbfIwMrIWXKj0HpmthfJxNDSglZH9IO4jl0CGMMuH0xL2glYLI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707910860; c=relaxed/simple; bh=JRMj/SLzyGIOFS6blXMUY3ImOv8wI4WGrPWCLtVXACs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=iXRNyI/U8VyUM150dK0WkxTvt+PGGvaVvJPixbmT2H1w5yH7VuRVAkTGR16o254zPpbn5zSVlZeTdbPRbT+qobadO9batZNEXCheTd5nEEuDpkXR79eoBLWAlUOzgE6o+45uSRr3+Y2g3gdb3IDW2mxuQiXrulSLpA492A8x8xo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BIkctLT3; 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="BIkctLT3" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 74ADBC433C7; Wed, 14 Feb 2024 11:40:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707910859; bh=JRMj/SLzyGIOFS6blXMUY3ImOv8wI4WGrPWCLtVXACs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BIkctLT3EtgvLJEivIkEIGzn9vF4ei5hBMH7PZy1fheZ0ojgVbvU8BGu4g8UMRjlX hdxRKlArTFBH/aOpJRkCY3AJfS8ueJz4TSsQzD023qzEOiujXB6eCscybCQVid8zUr CywtP92dfgUSFgYhc/1iiz0rcQ7zZ6RzLCNNGYyq8b/ie4FJKUzjmdp9cGOuNO+kG1 qkfUh0t0rRjDh2saHGxApYzJKBIUFDGVoE0veN5yMbsDDbBR6vg9dPZYWS6Tm7W6ev sRlfpam1pYh//LHzeGQ4NSRNjLKjVnv7oRvj8RzseyPdibS56+zk15nR5v+lF2fcPl LDeuJMixjLonw== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v12 06/15] selftests: mptcp: add userspace pm subflow flag Date: Wed, 14 Feb 2024 19:39: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 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:48:18 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 49D5F1946C for ; Wed, 14 Feb 2024 11:41:00 +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=1707910861; cv=none; b=JrVn22dg5Y6RhegE3gTgK6IgEyg18wBGb7OuTNbxcIk/VbV6dh6bw6Z3RMFwWcdn3KMRDm1+7mLkp5XywFkXhZWCqhwVjVaD0OVBrgeVlrwrjI/lIcT/mxzH/cLgGMGuEcY6qdOZViYZHhGvQM7+AGlEJO1H6pRTBT+ThKNzVM4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707910861; c=relaxed/simple; bh=tERbG7TJiLpb8EzivoIRerccEx0mGGYaF5MyxCkw9Rk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=eCb7wvV1iK3R1lmhim4m4tyv3rwwzqE9uYY0KHnRVkSAwtcMjYeVnIjxpWvGid+iYpE61bIrCbbr7dGwQFUjnc3DAyRcMq1hWu0g6Juff9HkhkByPJGY4QHBmF4GnKfx4OrwmIvDzDthlUVHO+cNLwgdGeYGLCqrbRBzZxC6bA8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FFnkSfk6; 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="FFnkSfk6" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0B142C433F1; Wed, 14 Feb 2024 11:40:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707910860; bh=tERbG7TJiLpb8EzivoIRerccEx0mGGYaF5MyxCkw9Rk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FFnkSfk6PTc3kAlIxfP84WSxpr/JdkAecWg8Z+50YUzZrZiZazAGwpgLxIIcUtTF+ lRTKTPxDDc1nC9ZDF0anZ2Hfox1COsv5Ku44ay9ThT0cXSfTmkYwQ6NZtlG1TUi5zA zA7csKRGYyUyw2MWxAOdiISz/xY3hp2pr5GWM3OnNwR21KqkOvubm5vRxxqBU+fMfI s0dXg7i5fa8agejEM7cZfdEXblIZon6fsYRAjbsKUflyyKQFq8HDcXv6lPOG1GhsWf EWE2J261KOdwFnPd7nUPbi8qk4IBO+xMCrgrPVCmv3XpS4U9WWPIa9FJ5KEMVSMkBr HZNzJmOdUkDsQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v12 07/15] selftests: mptcp: add token for dump_addr Date: Wed, 14 Feb 2024 19:39:58 +0800 Message-Id: <0afbc6fda84562b4e9d4b6ab430d3348e7c0eba5.1707910454.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 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:48:18 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 58F2C1946C for ; Wed, 14 Feb 2024 11:41:02 +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=1707910862; cv=none; b=pXUwyUAvot3Y2V54FZPIoghM7ezjzvkzxVYY02lulOlSluxm4zrmsJrLGQW1K2QKA9ZXUEtGf0tWKQezlNsp5HimewGuARdE+bWqCj+uuBoCurg1k9JyVXYaTDFgbbPja45Zj+B26Q2lirwZCV39Cwt2Wg+OKmLBCX7i24hNxXI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707910862; c=relaxed/simple; bh=Uil6XPcXZUO0oQhVf+9A/tKdEoaEyAMc3M3yo5i3Vgo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=bEsq/yli0cJ7VmNuUf9JaV87cdQfmXfe04J/h9UoMv2lqo37SR2P7RCLrPGBUxnByhxTv2ATuMrvcDyKMR4w7XaRFfHmE0TrsC0NLM0X+x01GB8ouiB65e1DGLHisz62ETB6p0bzMh63PO+i1K001CdTbjxxpGkKiooe0AretiI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AButSW+o; 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="AButSW+o" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5BD67C43390; Wed, 14 Feb 2024 11:41:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707910862; bh=Uil6XPcXZUO0oQhVf+9A/tKdEoaEyAMc3M3yo5i3Vgo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AButSW+o3R/eCKuxwa/tPKpLr+nDWGfUx8L0vI/ESpKkv9xndVz1ofjTGAHlFDOjO J/+Y6PeC/NdVhb9RFm+3nb2sWhU01/Gd3IE6+ByZauNBFsKcu4Yr9boQm5kt4MqSLX u8h6xwAy8cvLNb9fu4s7+IhJEibGA49pHDF/sQC2kyS/q+xl8SE6X3ixSqUSkrHO5L kV0X5XHq/zSJEK/0FG/UEcnXW7a1SwIvUjLgteyzBUnDMuJ3UetHUW5Qx4unVT2xDO FB9GVvTb4Dq/cjtbrMGh6Ur5Htixk5rn8QpqKoXSV+xeVgBUJpsHRo3yiOWlBFFE2n NTxvJa8etrQjg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v12 08/15] selftests: mptcp: add check_output helper Date: Wed, 14 Feb 2024 19:39:59 +0800 Message-Id: <6446092d53bd92ceb77405b5129f38606b901c02.1707910454.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 e68b1bc2c2e4..d92d233ddccf 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:48:18 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 3E34F1AAA9 for ; Wed, 14 Feb 2024 11:41:03 +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=1707910864; cv=none; b=ZZ2ybXypTkOJ2KQ/5+mit3PNS875sIsHoLk1OUNC5XXwF9bdRNHcPfeeZMHH0gYT7RwKbVQRBsnPscQU+dVKn9UKFKju9PfSGjvfisIK1Hrn0e951mYA5UzbJDnclgsav23ZM14a0LUcmSlwaq8GXCYj2GXlBT1FYLob5sAItSw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707910864; c=relaxed/simple; bh=7CQceAejj3W08wWdJklwKurfMvevtJGX5GQuyammQfc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UneiQ1iP7nJ1PBgBhVR9TjHJ3DaDN01Ph1iZVW8NfwiMfBHds3hWir9CgQ2x8dj+5sztECJk1CVoDYpuC+PFXCG/7iVJDfC+vnU5YrYGJ6iG1xlYtK/qJd9RkAyt4rEGtyWK1IjU7kUY9+PtrYJwsE29EIFpskaWOaBe6yYFPO8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=R3oFQWHm; 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="R3oFQWHm" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D0B15C433F1; Wed, 14 Feb 2024 11:41:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707910863; bh=7CQceAejj3W08wWdJklwKurfMvevtJGX5GQuyammQfc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=R3oFQWHmA4r5CZt7A1sAVBGUowovAnPoPy0MJJfHnIC1yrW83WtRiRCJ/MnjPObL3 NmhIv9LGuWlEJu0oWgQTdlNIhDFWPW2Oruvyn67Jf6aukjB/boLR1Gwu4ngfSw0iA9 nADMriho1y8j/boWgsxOkaZSwEune0ZvBrvRfyw7Qx4zoTfaHpnZLuPWxST78nT4kG txrHI7oHY31ceY08b501vS3dc9Lt517LjORWHHxE3TGPohfEdaCgqdN0qaeYu7XpIp Y59XNIASCIgl/fJSOuuY6A8KEGEKYlfk91BCkgYiDzJTacPwVvb8erz3X1k8J2U5Z3 fsxkstBkL4yJA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v12 09/15] selftests: mptcp: dump after creating id 0 subflow Date: Wed, 14 Feb 2024 19:40:00 +0800 Message-Id: <1da1277a5ecdf0f575932f483ed784a5663022d9.1707910454.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 d92d233ddccf..dcb146c426dd 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" @@ -3514,6 +3526,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:48:18 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 93DE51946C for ; Wed, 14 Feb 2024 11:41:05 +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=1707910865; cv=none; b=gKXbX+Nh7NlxL70iGyv3G2eDj72SZ0ayHXJcZwQUILGwjAUI4N13NKrgbsubzXVBa6i2o0YxsITcb/AWRm349lk5plZDUKNrKfTzKtlQHcOM+l+0oSh0U6Ai6MqV0wurt2Gr/4TWoTW1SpDvjs+P/TUfkBScVQhZww5vNJkFlug= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707910865; c=relaxed/simple; bh=cqN9Kjh0SMspUabkfXpdFluEf200wIs7Ec5YJpV9ebY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=E9wHaWhL3BbIiBv3xoEcS+aJ9GeRoiSaqU+4xJMoblGp9+aZjU1rDJsPeZ5DgZLbE2PgMl44JpkE7b3peW1QVL+kzOjwVLwQtFGF0SRQrdCk+rnesYHAvU7RI/ZTwhLj1aSBIGgF60HPEEDajcXeT9zNoVXKukqIp0VRPNc5tII= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bouSVeRc; 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="bouSVeRc" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 54754C433C7; Wed, 14 Feb 2024 11:41:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707910865; bh=cqN9Kjh0SMspUabkfXpdFluEf200wIs7Ec5YJpV9ebY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bouSVeRcguO+DaUB52FyAWWsIyxAzcw9ZVc6Zw5XdBxSBCYWcQ0MgVP33otyRN7lu CxQdm8XR5o6tepS6aI4qoKxKmdwpqiXMFCbD9/ZI/2Sp6m7O9mRIqekWionsolfh7X G9TyRrX5UK7PB+dvetnqyjbky7vmGPlAvtR9k7NSUG39gQ39BErDGQQOoq2ZTYbvtz iPUTuXv3BtN22DZGPlC3OSDsEDbTafss/WnZx/d2ylTtYJI0IWAKuQtrkVHKvTmSDf HuW6btF+hCACQGPS2exrCYgWpFfNDCWc69zsbsX2iLGzn7QYyug4PebbBzh52rbSxK /ofmCT9rkgLmg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v12 10/15] selftests: mptcp: dump userspace addrs list Date: Wed, 14 Feb 2024 19:40:01 +0800 Message-Id: <2acb96d2ed25df7fce8bfc0241dc920678510542.1707910454.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 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 dcb146c426dd..5f12bd1de383 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -3585,6 +3585,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:48:18 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 3A02E1AAD7 for ; Wed, 14 Feb 2024 11:41:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707910867; cv=none; b=SLf+l1fpaJBXlCsldm0TFNMFF4E92WMvji5CG6i90tKrns+fJJfE9BR7pzzfZgRLPqFTvp+M8zNlP1099vjYHQWPZS4vjLWKMrzNrjneaQp9H6dsdNCgeqS7+7FTt01YiGG8MmKNvBLp9TxZBBrlTP4MkAqy2njtbzm95myNOXg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707910867; c=relaxed/simple; bh=3Dzyj8Auqc8MAQNrbY8jIm2roj4GjGiibpUK1X4uztM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Yyf4oSsVnAgBVWLGmwlZPHw6wwPio0EYt46QNgoxzSV8LWdTVCXrzPY1CZnCS2Bw5e+/cJvMrX/rgJR4WlVkZykjb4qCYtXhvbUpW5HWT+kQQcLr7MW+eYv0/7tQ4w7ZwRs+1VkNnqYlDxCqodCKcKiJ2Vy9B9eionKqhYTADsQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PrTdIjch; 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="PrTdIjch" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A8722C43390; Wed, 14 Feb 2024 11:41:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707910866; bh=3Dzyj8Auqc8MAQNrbY8jIm2roj4GjGiibpUK1X4uztM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PrTdIjchfC05NdNrLaHbEbCM7kYcrbs7YypyDhTjUhHOvNSJg8BgrfHtvgwAzDtPt jzkqmXgx3jYMMXaPawISpHXOLOkrkNWCQ95uAQtn0PMEXUa+8aO74r2KC/NOFb2gIY +25JVipfaeEZ7L1/WdcUagkIMRAX1+OpCKKFgMPILhAiJyq7gaTSli4HbHBJyDf+kp TN/D0bEo+JZSP9Fy3N4TmzaerTvJ5DNA+vfKX8vVzxS+QHF3cyobfLBMu856Zm2C3c xnQTXpMGVukr4Et7al3RUJtn4m2rr8zh6XOohHTat78Ocvn+3zn6Gq9q4r6orpcrOj kr6xIizAT5I1A== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v12 11/15] mptcp: add userspace_pm_lookup_addr_by_id helper Date: Wed, 14 Feb 2024 19:40:02 +0800 Message-Id: <90df4afa0e7ba71cf04c67f8eff2ed231cea0e12.1707910454.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 73ad286247f1..a9328f41f74c 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:48:18 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 B47511AACE for ; Wed, 14 Feb 2024 11:41:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707910868; cv=none; b=NAa1oMlvXGh1xe9q+CZVo8FGa3hIYMVIajrk4jHfslaDGGhqkN1La7E/HwZ24xL6h8sGoDfi12UYY5QocG0/e0QrX8TAGyt2h4DfZqHBozvipNkKALttw4S0LWqdhQwrRgrPoJK13B1x9oHwjqkcRLHI4DN1rMSnptcM3DIrwMI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707910868; c=relaxed/simple; bh=IERezNVfTST4REruG09ph0HuCXEU7ftYxM1stPQKMDg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fzgyyFDuBWqmfONFTlnNXmeHuLrpkXTFfhoUtcqQSdiIbbv6H1jzap3+142LHXdQUu/wmixXK4j+xYcDU5IjIAs4c3D1iOWClImk7yQKh6XWZuVv1HZjIm2OVzUxZfnLx41I6Kofc8TWByt/RL8ZedR6LQJ8pWdCnxgUcQK9IFA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=C/RFq3RH; 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="C/RFq3RH" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 340B6C433F1; Wed, 14 Feb 2024 11:41:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707910868; bh=IERezNVfTST4REruG09ph0HuCXEU7ftYxM1stPQKMDg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=C/RFq3RH2OkKXlqArZ7+y5xvGVWt41rSU2NVWY1JubqyI94gp9ImkxzNYZ7Q6SrQh CunkTYzwsH1NQQFk796QtNuuSUyf3xluZJb7XRzj8NEQfGMuMBNfdvIfjxrCy4NB0e sVXDvWNglOkShbPSGKJz4I2rO+lHP/cdEIiOKJ00vjTcfOMwBVXgMOcDaq+4T4wIHs JcQL7P+pB6MQRql9dfStRRKSlQRpFg3ja5W/ey6Sv1fy1+c1XRqoi/3ZJTErkDFBMr PJxLU1rfAND9x8bSWSgJVgRspsL5DKQJBea7VUAfaZQxf8+zWTu9eIM4hXmIq23Yq3 q5ii8LTPH12Qw== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v12 12/15] mptcp: implement mptcp_userspace_pm_get_addr Date: Wed, 14 Feb 2024 19:40:03 +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_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 a9328f41f74c..a8571da70212 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 657d23a9678c..a86708996954 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 static inline u8 subflow_get_local_id(const struct mptcp_subflow_context *= subflow) { --=20 2.40.1 From nobody Wed May 15 11:48:18 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 E22E61B964 for ; Wed, 14 Feb 2024 11:41:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707910871; cv=none; b=k0KUoyyLldMpT7WCwphxq/KpgkpZCXOhBuWXFV4mQi8faySQOCQK2K7ATSAoKNh5kkDNY5s7e5Oz4VTGFc8W/DypZ1AZeL45yhOiw9R/zIY2qknHLXbsNWYMB4UVbmt8aj2oXv0M1Sa4dw5POJYSIeFlOqALgCKS9ZfLhUh6Ero= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707910871; c=relaxed/simple; bh=UYlXxvMoWkZF081WLIoWdKVoOO4qA468ytMjPC6qLoQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=X7cQzQdUNrUbzTl7GxyQdXkojq1YF9+uhdeUKz6isxuZA76bG1vmCHIc4CfzZHK6LpFxmP2jZWNsdfsDWnSCOvi7gW5irZuuQaK7DURNy+/RqObNxZkP6x1IcEeJ3mWh+unhliOCV+FtCPS8m+YuVJfpME7ew6BEftYVu28kIY0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qWhGDjpr; 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="qWhGDjpr" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9B50CC43390; Wed, 14 Feb 2024 11:41:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707910869; bh=UYlXxvMoWkZF081WLIoWdKVoOO4qA468ytMjPC6qLoQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qWhGDjpr0y/dwPL0fgXaqnYGvclqEHXQkSfgs+9hbArhT2V5s9ZWlBiXtEwRL3TKq 9IAa6AuOwSOGMBbDqj1QKkKYt/a8s/ft6kLnIchDkS8s8AeSEnEhwr1h6vq82bIXLa sImcvCObUyiKvuv0HRxtsvhRmm2T26lCRPSLGPmQgqTlX5F4yBXQFjDILRKdZKPaQL 3F/TlVKLXHjI2Wc9JkqS87B0vP1tvoNwzgcLYTsRkDUUp4jyk6v8UbEV6FQ/ksL7Bp qWRShMreNaoIS0z5IEKzI6DrhEo7yHTGLSXaENM8MIrsjStuaDs7ECjrjf2eZTR7aR qm5Y60U2ti1bg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v12 13/15] mptcp: get addr in userspace pm list Date: Wed, 14 Feb 2024 19:40: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 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 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 a86708996954..75d9184db7ff 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:48:18 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 B291D1B958 for ; Wed, 14 Feb 2024 11:41:10 +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=1707910871; cv=none; b=gSZqzbnal2r9KNWRkrLRvOgQkRZ+ECb5+xAbeRwTDd1+GPwlJhgMpXIYBFGBoT9K8PkQJVrjlqiPyovz0PsVT2AUuk/34aSy46NofAlEZp08OsarJ7zjnUz6I+07fYLIZbGCviM5U4BnHvIdbkZ1K3Ofmyd57RlekApPTbBDgHA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707910871; c=relaxed/simple; bh=DoYfkYOQ3ruXSwP0ssiLENI1sxoH9H/fyIQ9Gqc5OqU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=YvleiGkb95Ws7djEBly8tvey4zJ2ME0AiCizQcM6Z/zeOZy1EE4dCh9ypG73+bIHUQPXFP3NzntNY1JyPgyAYOAOgHscQo+LzbkaPTFzxZWai874wy0c48vfATPWSi1v3g7EslrnzynzRs+dq2tqsMfdaFQ2D7HVou1KiOtZYpA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=d5pJKCsS; 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="d5pJKCsS" Received: by smtp.kernel.org (Postfix) with ESMTPSA id EDF79C43394; Wed, 14 Feb 2024 11:41:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707910870; bh=DoYfkYOQ3ruXSwP0ssiLENI1sxoH9H/fyIQ9Gqc5OqU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=d5pJKCsSUhX30LRm7bDy8iJgXgVVNUt5E4f6IlQoeirVY7Q+kXd/WjV7qxLmdNp/5 fQU13k5+9nXGVdJDprjBWI+vdQzYvOp6GFWaPHsx56OK6XEMMvr2NtaqcMZ/1s3OdJ noIeDcsE1ifoaa/HviotfADOy8ikGqnb1J6L+nvnEzGbdAjTfco23m1VGgY0yUsMVa 7O5JVomWsO1bzi4O580uxsbyWObl/kCc+iYduXFMz1v9pBaiL9Kq9voovkAWkVHOg3 ezbiMXESG2BX7YIS//wdOI3550GyRmO2BrtXP1wR7bPNpyY+2hLinn1Lz3AqVX0tAb lYfj5KN9nr/7Q== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v12 14/15] selftests: mptcp: add token for get_addr Date: Wed, 14 Feb 2024 19:40:05 +0800 Message-Id: <0d8f288e99acead175eb1882ca3957133edfae89.1707910454.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 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:48:18 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 24D341B976 for ; Wed, 14 Feb 2024 11:41:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707910872; cv=none; b=CIaZkKGocJ46cq1w4TrQ3HzVW91vXne1gme7Z+w746TxHB0pdmZRHgK2BMbK79pabOywVO69va3Z9TvAwULCsO9AacTXa2GbgLR4XWQDbm4xjt9QRevqDQsJ2cfqVxgh0YiaLXUFsxMS7lDLhBLoJRzbqCTqnX3nWcK0tQ/dx78= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707910872; c=relaxed/simple; bh=pcas8o1Hov+9xVG4j0howEbP5BXoYZQSqtOSrwtgVAg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=uDyRXobsslYRdYJbYxtYXqCJnIT86CxilgC0QcV+iyv0D/svzIMdQ3ycQKyt5gePp2YUlGA86ISEoAJtHTPlAQY1SJBVlkok7cdwW1PgZRW0+evyR08dhffBCZX6g7/9oBY3QseqDgvQreTzqEy7CK0y6a23FaTd7qAhGkTJv78= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=URjmbFae; 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="URjmbFae" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 32708C433F1; Wed, 14 Feb 2024 11:41:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1707910872; bh=pcas8o1Hov+9xVG4j0howEbP5BXoYZQSqtOSrwtgVAg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=URjmbFae/Y+X89N+kP+gSH+7DVIxVfyAZr1v5ccYaxXOgiFH5zYklzZlzqNBci0C0 /CS2W7SZsDMYq0Arc/wp3NP3tfgkTQuKOZF+ZtJZUi8qkucK0T3/19KJN1WwaAwed0 jufAFR+yIPJKD0FMz91ObUampZ7v3aXRamntKLdRKLVFm4IBqnZwemGrozyIXJlP3D tYfRFjcasuY/iPvJzxr/I1FWl4d1njtGeaKgrfmRJD7fc99ltMY2Iva7DCzpdZJdfz wXia0Wm3PXi8EC3oaL0QEJYoIaEBB3rBbVXNVVeCpyt0uVooiXngtTU88YmYx3Wk/U P33T3feT1bxkA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v12 15/15] selftests: mptcp: userspace pm get addr tests Date: Wed, 14 Feb 2024 19:40:06 +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 5f12bd1de383..7cf55609b7d2 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" @@ -3602,6 +3614,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 @@ -3624,6 +3638,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