From nobody Thu May 16 03:22:32 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 36890168B1 for ; Fri, 16 Feb 2024 07:42:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708069345; cv=none; b=mJv2A39xPDdDPKYB2+SOgzBHVL45+n4lksfH3Q7BKbprfTh+wNvKOAhJKx3ZNb8ViulKCiILGMuf2pxKq2F4Z1m+3VMhTghmvLxsygiH4opb5OLOH9OSpIC/PBY10pRkGXRkTR61vvH0ZYrsuYx7iujfN4cBA5FgVw/uJKZc5Ss= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708069345; c=relaxed/simple; bh=8c1yyNExST0iOyTH4GSXbdVGozpOeodQucCFwVqh+4Q=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=hpxTMXccKtvuA5bR2jlxjEghgRhnPVdPLwxfLA/ky5t1bUFmqZy467nmVmn7D5XaUY0O+G/RqqplNXZuKJQRC4bofWhAItp0izuoRX7hyTmGfUtWMJKj8bvAanYqXOALJju/8WwCPrhKMbUQvTEp/q5EAfYVLCedLSV6yWTfLDk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=osftvc+Q; 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="osftvc+Q" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 90B2EC433F1; Fri, 16 Feb 2024 07:42:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708069344; bh=8c1yyNExST0iOyTH4GSXbdVGozpOeodQucCFwVqh+4Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=osftvc+QJiOfKOjQVBoTDpUHjzlLh6y5CHWFRihVNLpt2rRkgBBPK5vT6AmH5/U0O aeXoLyE4nPjzhHVV1mr/w13Sw07SQqc2MWYKATu4s/+S+tybTUdg8IJ0qTveAVzlKi SeXdX7P0iX1fs6n+ZUalYOrsMFKoqB3g66sMmkjpRMZXGpm/EjBli/eG9zPRbTfxhP HoOyYdOIEVG8v+gt4jVs+3UJRNMkN28kwi0wnN5/lZXODmoYdtvgkq/PLONSkh1sNI 2bKYLHEcmGW38ZDBma8N+84Ds5X23+qj/ItHPv8nCTDopCPjuNOsygwUVFhvwojSFu ooxr7KkcAF00g== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v13 01/14] mptcp: export mptcp_genl_family & mptcp_nl_fill_addr Date: Fri, 16 Feb 2024 15:42:03 +0800 Message-Id: <8aba4c3662d67dae7126324b96f1656a9c484875.1708069036.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 --- 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 Thu May 16 03:22:32 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 2BA0717753 for ; Fri, 16 Feb 2024 07:42:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708069347; cv=none; b=rb5voKMWHOhDE3J2pFvplvFtK9RJkLk6WLhad7ugKzEpdHM2XbigYx/jnJUNzRCqdRcH/PtgKespDUiRIjo9lcUWiG9d3Nd+6iE+Qtpa1+tp6Dxwbi8FS1dTFlNuM6kwk0FZYOZWU0v0wGs7GxBscAsUnKDN/N/WEVk08HyEqKo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708069347; c=relaxed/simple; bh=NnNcW5v6KIrnHIf30fLgb4sTxTeaPwJ6PDJdCChPznA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=K9fyKnNVKYDGZUVghb1uJmAaMFKz0ftu2mfXCrih+rZXgpPF+a7vW0gPKuSrshM8LDKn1bFX7PsMO9Hs+Jin71nChK0+MgE8om79exV1rEg3VbXcCi/2EuEP9vib0BamangfRFtojDPmqHpgOdqqPsxKSnMVcJNtAlgKAxvA11E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=nQ9sQrvj; 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="nQ9sQrvj" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 03B0CC43394; Fri, 16 Feb 2024 07:42:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708069347; bh=NnNcW5v6KIrnHIf30fLgb4sTxTeaPwJ6PDJdCChPznA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nQ9sQrvjoZgMJbu4PsNJlfuoljz86HpzOSaP/63fV5frvIx/6DZqrWmYtM6CpGK75 fK3p9tma5u+kxeqnOrK1NofSK4UConK4NU4tF0pAVfFIC9PDTfFBKT7naHVjK45Q6D F/KSkav3O6mW8Y/zsz0y3+lpKPJquuqoAcXxRwxql4YPHciZ/g4c8IajbkO1nTgHtV TY3fJUJKpDjrE0ZcC830KtuPMklYzMcFcgPI3SbqZiWMz898qqbDoUKeRS1q87rNzA Q0+CtTUVDF3SLv3vL0I9VyE3Z8QFUzmSaQCAOyeQU3JhtdnjcCj3HDH3T6YU8+u+jF /lAyw3KqzhyNQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v13 02/14] mptcp: implement mptcp_userspace_pm_dump_addr Date: Fri, 16 Feb 2024 15:42:04 +0800 Message-Id: <62aff7a01948d6edc7bd88bc831ba357e67fa87a.1708069036.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 Reviewed-by: Mat Martineau --- 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 Thu May 16 03:22:32 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 E5002179B2 for ; Fri, 16 Feb 2024 07:42:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708069349; cv=none; b=DNywUozXd2DorimoQbN3yrHj+motW5XlOvcO5wlwH6kOcNZ4b/03OaHOOO+HlSQUVcE/vMPWBsjNaSBygdzbp6YPjP30fdDYfltPTz/Ztv+2zq/9NzQdXqmcltdJqtsmmZMsvYP8rphupjN7Cs6EX30Jggb7ZxlML8sti45b3X0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708069349; c=relaxed/simple; bh=WXNJVLSDil1/0p973BkNOj6TasTWBdJpcU4wNM08Ar8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=OiMTngNIAPnqhHDUUJbYwmpbhSaVHXgDOwiTO0hF1/uGzCOoRsyHUq+TAeWFMiwcVfFn2jYAeonnzY645do2uaZPOx+rQx0+0W9HczcFJLwb/r0Npx2T4NoeIwTvM5CQtYg9PwzVKT5Mic/nEt4LQ+Fk4azKuJQoa0zVb7yUwVI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=XzSuWyLp; 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="XzSuWyLp" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A21BBC433F1; Fri, 16 Feb 2024 07:42:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708069348; bh=WXNJVLSDil1/0p973BkNOj6TasTWBdJpcU4wNM08Ar8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XzSuWyLpngcOTaDR5cBRGDZifeWlE7SXff0Bopt2R/mz9Ssq0eN22bykBJxQacTTx FXEL24xUx/R2sr0HUIqSE0krOgzZnHFly8xNzDznShYqUcQmSriQYOC8goqW+pYRIW a0iejNp6EywfFY1qzeuhv4DBLVPqhdjoZkLGPpCYXSKR8QTjlVhwrm6f0gkguklaFP 8iAUW5/BRATua+eOGaFxCE3N1YgXE9R5N4bOyAPydpIcvDYwv+XcQ7XfLO6a1Bcq6J Aj7KuOMYtnn3D4h9AKy6SjjaQ4uuVz6Njw3xafoOA4vuM7Ky0jiTGH22Iu96kyorQZ YVhIDjWgi2vEQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v13 03/14] mptcp: add token for get-addr in yaml Date: Fri, 16 Feb 2024 15:42:05 +0800 Message-Id: <19464bdd7ef79bab1b7c747d247060e9a63584c9.1708069036.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 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 --- 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 Thu May 16 03:22:32 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 6ECF917C6D for ; Fri, 16 Feb 2024 07:42:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708069351; cv=none; b=JyiLX06TMusf5xdmoi/C7dnbowdYV6uSXDd4WwwnFXU11eappBELuVME6Ds9I96wX/S+C/KLLGRLn5w/2rlqd6qrPbOfq3u7u5CH77z/O0RdhtouqisX12g/pQIhpKxKbGwLuhmLHNYkHx6NObIwwPiGiSu1t0kLNEPBHCYGeik= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708069351; c=relaxed/simple; bh=LHf+YgswIMLzbn0gjyexwJoCVmjLqy7HoSQZHKmmHkg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=QnIfapRbIc7iahsGDj49/XgIbku3WssxK7XGQEl1yuWad7eYMHPDPHiXglrylRwyCXCkO0YMyIfT03RwweiIW9DRCyfU9xoQNNtRgPpdaDD8Td+rbPtY0SNIHv6jGlVZbEksOeNRCwCiE/mmgDdOYe9rkX23Ssf3PXxWynpmZYg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=IAPtykp8; 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="IAPtykp8" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4409FC433C7; Fri, 16 Feb 2024 07:42:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708069350; bh=LHf+YgswIMLzbn0gjyexwJoCVmjLqy7HoSQZHKmmHkg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IAPtykp8WCPcq1AFmum2483M4hmZdcvTkFoQ/nNojxtCQsK/Q52lrLoHW+f+nO/YI ajFmcGmIxhf9Xp472zEOSvWRsUDiz4g9Zcz7P01hNVN9I3IpeTPx4bFJ5OxzK9xQzL eRF+cegKSYCPQ2D71lw0VmovTB+T+Ejqwsn8In013LcnEcj+buyU2pJBijECQkWJ7Y JOrTRjBChHERiobWpnUAibz2JFKivaSC+zHgKM+WORdLLTkKb3CpzJGRrzBBgErg+T vffU1DCZd80IBssAV1GJ/mox0DuuvHWW0HcePnvrFJyYBoVEI7XtGcPoNRk9mFyrJA lXXwst8aQjYPg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v13 04/14] mptcp: dump addrs in userspace pm list Date: Fri, 16 Feb 2024 15:42:06 +0800 Message-Id: <7495937e8a483bf1597ba11183b86d8ce3e4047e.1708069036.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 Reviewed-by: Mat Martineau --- 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 Thu May 16 03:22:32 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 2C1F917C7F for ; Fri, 16 Feb 2024 07:42:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708069353; cv=none; b=D+qETVli3VKddfwQsxs4y50S0ILhdceNcgr5BH5jezcCscmQSaB3UVbUoG/67KfBPL0HpKLDjVjPdTyApQwajJsJLE+UpK3Xm+AVJhySNXQqeDPg8QkLI4m4F3dDQNtvz8W/awLmVfbwkYMguvzy9wTitvtXJGm79e6WWC9ua5I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708069353; c=relaxed/simple; bh=tibaRUxbzkCdKyaYGOvM9dCcDxCnbZho5PwpmHnS4as=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=DaC3NVmIWHvuxKDwDTVwQh68nSkwxtDe67Mv9w1zoplLe0S/INKVXaiuEzXTUX6yvMvLTUC0SFdTAJtY1m0c22+CBYm3WEzmkgFlG+feW3/+nqKfoJUY+cldF5zcDAtbFha5OWP9dW+T0xg96Xqxwrh6U3hoWORHo3+LqJnhcN4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KrWJWoGE; 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="KrWJWoGE" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 69FC5C43390; Fri, 16 Feb 2024 07:42:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708069352; bh=tibaRUxbzkCdKyaYGOvM9dCcDxCnbZho5PwpmHnS4as=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KrWJWoGE07JaVkWYxH/R6bW0Euf2iWQRLIE5WHMhLHp2KrathVxC4jYgvaDwPq/fH cWtjtAiEQQFlcVz74ydM2WUJftPicyXJ5kX1uuhT6//0i7SHXfgolWedRRYMu4UsZe W/dGsL7AAOYZKTaxxPowTx6eCHSqjn7OIbANCEzX2k5EIRlspFkG2b/vN5RqcntWUD sidw3quQVFihvU0hibzQrzLG1/jxd71CVRENKvNHPwDvkjNadWvhQwkQBjxqBGrAoa pdzRiznClDTQcXGUP1c2hWWGkF0k2F9mn59wQi5hWgme855l2EvGO+WidA6AaM//mr 6igaOqeMmSf8w== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v13 05/14] mptcp: check userspace pm flags Date: Fri, 16 Feb 2024 15:42:07 +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 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 --- 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 Thu May 16 03:22:32 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 5731A179B5 for ; Fri, 16 Feb 2024 07:42: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=1708069355; cv=none; b=b/aEXa0nYt67b33ge2CqF1dsabGxdKPXbOUnPfbFGVqOg9QpCkXUzbJIFH4OWLIMZ65ZnmCc9jjQoiZ3oVfIbm5y3WEGiYUS+pGkoOWjBq4LzyMKzE3vkra/8+5ZK00tukZY1AjVOgANeiZkG66Ui8fLsT0M5I3yoD1bNOvxyso= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708069355; c=relaxed/simple; bh=JRMj/SLzyGIOFS6blXMUY3ImOv8wI4WGrPWCLtVXACs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TGWljDueGZTCKoFUEjMqzzFumxNirQw0Xbc0JMGWA9SY04jfyzujoW6GcFSsMG0RYbiCcs90M0IVJSOzuBA16QlWpxyQ21YnDuCe2MhNhCHMw1BJFf0j7kcIOJSVo50AJ7okIQ2zQTG/dJ31cShb2aA+fs6H/kEu8ngCG6z17fY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=tHxTBWUZ; 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="tHxTBWUZ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BE07CC433F1; Fri, 16 Feb 2024 07:42:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708069354; bh=JRMj/SLzyGIOFS6blXMUY3ImOv8wI4WGrPWCLtVXACs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tHxTBWUZ1408cexenHhGN1J5flR/yy3/EbNdvU4QBjk3Zg1h2/kyElEhuhTgFlA9x YUw/Z73LumrogjpM5n5nwZ3S+3DRp/So8mL5Nv47VDmNtgeeEKWs7FfMmVrkGatomG ooG5XHhb+vyp0IKPPdQMBvR7yHcC0h3+hWrpfuKwha9jZHzBeVFH88G+4lGPz2SNLM gWREKYQkvTNYHiMn3KYo1F3DUm5CweZ3yLzjiEpEmqBzJd7rXj/AtWTDeCRv7eEuVP RRYR8rV0uutbiaADGEAImFnFJC7MN6sSK4fKNs1GIhX9WY1lepuPOIfDOMarKgTqom SRDUarx07Z4vg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v13 06/14] selftests: mptcp: add userspace pm subflow flag Date: Fri, 16 Feb 2024 15:42:08 +0800 Message-Id: <3a0a77fbc321a19623844b3b63ad8ce3d641dacd.1708069036.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 --- 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 Thu May 16 03:22:32 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 D2982179B2 for ; Fri, 16 Feb 2024 07:42: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=1708069356; cv=none; b=SJCGZqqUhej+OsOiPbpjyFAkxCFtcEbetEkQOpLVCCY4jJWELAQ+TlybyPnhwNsIE32EQDtbxRamNje59LJdi5auTwz+T5AjM+rJsSVpnRrniyQCVlSB4JbfuxsRb9kN4RRKg6wc7x+aPpLmOiHt7RTqPYUScsVCv3nxuVZw0aI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708069356; c=relaxed/simple; bh=tERbG7TJiLpb8EzivoIRerccEx0mGGYaF5MyxCkw9Rk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=KVvNitPmzi95aUISuFS9Kk6SPrf6vWRcK8cREabEz6pGN3N9vlRnNQClQmAwFawfFIdQBJ7LEYsv6Bgs55kiQs1VCN2J8KuK6N2I52H3zcujwM0nKuRYH3l9gJpdJEq1MdX38Udhf1EfqeifBF+IxO0WdqSwzuZbDWw8uNqp2cU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PeJ/lNUW; 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="PeJ/lNUW" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7E66AC433C7; Fri, 16 Feb 2024 07:42:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708069356; bh=tERbG7TJiLpb8EzivoIRerccEx0mGGYaF5MyxCkw9Rk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PeJ/lNUWr1vVnhSeOKEwwThvfFjoerYCAmWDbzv3CGDWDfFjx4GW+msvclnrNsWAr xg4AFdEUmTeTqrA/8cGKm0qpAkop3ebXpK5AWukHFYLFGjiNH8KaeXLf0zRKLjhL7s mRjug7nqKJmD+6oEJ4feZi3zT8HzqL39N3Kr/byazCrgKwOhTFixNMDlmjSriq4oYA fo2IZb25oZRbpJ61igrgOEuc7wSZhUEWCSJjdDq0tVq0IxqNov8q6S6eFsLlQf6A4w BFOki+wpRKOSNkZShGlauuU6r0e50l+6vglTv0xg1P2DdxNHgeMhtwGks18g+RpFBB nZfNqtpsgCLRQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v13 07/14] selftests: mptcp: add token for dump_addr Date: Fri, 16 Feb 2024 15:42:09 +0800 Message-Id: <97886b23f6124409411e70f7a118b24edc8f6411.1708069036.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 Reviewed-by: Mat Martineau --- 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 Thu May 16 03:22:32 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 613B217C6D for ; Fri, 16 Feb 2024 07:42: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=1708069358; cv=none; b=kFTTTwoOFYbhxtKeQ2hiBY370zCEOmuyYbcUQg26CbToSfmoO8SVk8AVuK4ZWYK1ySnQ4fW5viRvKQEeMHXqwMDyg1RPOxjZsF9UzWru+RcNlX8sg253Wr+LQd+b/7lL0Ok0AIOjyXD47yFg2YVyQ8M3By7Lai2VC0E0r6MYi7U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708069358; c=relaxed/simple; bh=1CIpqj9s8cE27kK05kuEnNFqaioyDYscoQ7EB+FKFG0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Y0pm3HQOV0vmkGxC1HigbQgjjBADs0DlWbmRBIp1u0qRygwtcpWl9avZI67vy252VF50sXQYy2ZOoUwXbleoWOhtZBQ9E4dKdm9CbETtmrNAyKV7r280EbSGNuEb49C/dgIdvDrN1C/OfJkCMAjU45FfJC5FZCIsk58QXdPgzXs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dg/MP3gx; 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="dg/MP3gx" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3EDA1C433F1; Fri, 16 Feb 2024 07:42:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708069358; bh=1CIpqj9s8cE27kK05kuEnNFqaioyDYscoQ7EB+FKFG0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dg/MP3gxhMo9AJmac04oL4akOykqINAbARtyQjrPYSPbHfYFF/YUXv5wk04YCtdCy hliHJYedtuhY3G+c2Dt/EtvqUxX1SIIz4VyULxCYVu2bnQzZws7xvKCjCRO9MiPwri 7PvDDfwOH+8EkD0VRJzf0ahsIqRC+HMZAYDzE2kUOu0QY0iz9Z9dbMOIwmOHLzO5TM bu1XcaybHU/E+g+IxGJvIxLYkGD36bqq0VnVVTJtTmHhLnBLwiyKyUzxxzuvay6gPm 8K1y5fochEjhA4gQq9QHFrH7qUDWV8rugFgs/hGLiOTIs/bskROrpMsrWprSUvSdUo qm7BwzTY4gfVQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v13 08/14] selftests: mptcp: add check_output helper Date: Fri, 16 Feb 2024 15:42:10 +0800 Message-Id: <203718fd9b34ac092a198737bed0e36baa447d69.1708069036.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 Reviewed-by: Mat Martineau --- .../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 b807e2a42c61..6f7e83f61707 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"" @@ -182,6 +183,7 @@ init() { cout=3D$(mktemp) evts_ns1=3D$(mktemp) evts_ns2=3D$(mktemp) + check_output_err=3D$(mktemp) =20 trap cleanup EXIT =20 @@ -195,6 +197,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 @@ -3347,6 +3350,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 Thu May 16 03:22:32 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 8A23B179B2 for ; Fri, 16 Feb 2024 07:42: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=1708069360; cv=none; b=N7MZSyI4q1BKswJClO0c3j9J49GcRT1uRLu27XbI6kJb4Byllo1dq/eqLulf+ALLqVxhgPSY7lLAQgooSnTMaEDVONC32Tl/inypZ7jUHgO8klmL7Matvtiz357d7pMMvPXig5+n5SA1OQsHs+Ub9592MzK7e3eJv58Hze3s4eM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708069360; c=relaxed/simple; bh=z7UK3bIDS7fhuJsL4dODzujacM4xESfge8nGWxUA124=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ot2ju3HEKy9RY5K+ZiPLr+StoY0vzZtL6Ta+e6BCXbIE5W6rLpeeqkGPTAoaqt0CYoth20Urw1xWJNlfb4Xmsbwg3vxksNIozh9xy5j4RRD/VK4H4qnlWqxWF8/4NWFFcOWhT05T45FwPXq16wWp2PXyobMb9lO2w7vGCZWcF+g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qRFIV34E; 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="qRFIV34E" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C2D99C43390; Fri, 16 Feb 2024 07:42:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708069360; bh=z7UK3bIDS7fhuJsL4dODzujacM4xESfge8nGWxUA124=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qRFIV34EX1KXe8cIXeuEwBDtWA0X5pf4DjDUlh+mQ0vws9ghUGX0thAgvsV0QoYNM MrXllRO81IYZECx9vxaJxV4+AaffTINRPr0n2lfyC6KyaeCCagOIgCREo8eet0gIoe 4wVZKmj9YjNff9Vp99qrWvnCHmV5uuxM1a9P2Y6HKdL86g9k1UZzTEhdJ26FkNQxiJ gNCbLdTYsTH/p0l1hfAi/OJTkRCrUQ8m6HBlxYz2FxRobO06sW9UPQ25y2PrdKUYJH MeWBtgF1Z2MkMKros0WB3GLk8vJfcoQRnGkPJS64hVG9TyQPqpy7BxIJMBwVSEhma4 wvK3U17Jw1XOw== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v13 09/14] selftests: mptcp: dump userspace addrs list Date: Fri, 16 Feb 2024 15:42:11 +0800 Message-Id: <2ec5777c29d4e6e005c015db60432ef4ba734ed0.1708069036.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. 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 --- .../testing/selftests/net/mptcp/mptcp_join.sh | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index 6f7e83f61707..fb9b3ee9fee0 100755 --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh @@ -3350,6 +3350,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" @@ -3465,10 +3477,24 @@ 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 + if mptcp_lib_kallsyms_has "mptcp_userspace_pm_dump_addr$"; then + check_output "userspace_pm_dump $ns1" \ + $'id 10 flags signal 10.0.2.1\nid 20 flags signal 10.0.3.1' \ + " dump addrs signal" + fi userspace_pm_rm_addr $ns1 10 userspace_pm_rm_sf $ns1 "::ffff:10.0.2.1" $SUB_ESTABLISHED + if mptcp_lib_kallsyms_has "mptcp_userspace_pm_dump_addr$"; then + check_output "userspace_pm_dump $ns1" \ + "id 20 flags signal 10.0.3.1" \ + " dump addrs after rm_addr 10" + fi userspace_pm_rm_addr $ns1 20 userspace_pm_rm_sf $ns1 10.0.3.1 $SUB_ESTABLISHED + if mptcp_lib_kallsyms_has "mptcp_userspace_pm_dump_addr$"; then + check_output "userspace_pm_dump $ns1" \ + "" " dump addrs after rm_addr 20" + fi chk_rm_nr 2 2 invert chk_mptcp_info subflows 0 subflows 0 chk_subflows_total 1 1 @@ -3489,8 +3515,18 @@ userspace_tests() chk_join_nr 1 1 1 chk_mptcp_info subflows 1 subflows 1 chk_subflows_total 2 2 + if mptcp_lib_kallsyms_has "mptcp_userspace_pm_dump_addr$"; then + check_output "userspace_pm_dump $ns2" \ + "id 20 flags subflow 10.0.3.2" \ + " dump addrs subflow" + fi userspace_pm_rm_addr $ns2 20 userspace_pm_rm_sf $ns2 10.0.3.2 $SUB_ESTABLISHED + if mptcp_lib_kallsyms_has "mptcp_userspace_pm_dump_addr$"; then + check_output "userspace_pm_dump $ns2" \ + "" \ + " dump addrs after rm_addr 20" + fi chk_rm_nr 1 1 chk_mptcp_info subflows 0 subflows 0 chk_subflows_total 1 1 @@ -3510,6 +3546,11 @@ userspace_tests() chk_mptcp_info subflows 0 subflows 0 chk_subflows_total 1 1 userspace_pm_add_sf $ns2 10.0.3.2 0 + if mptcp_lib_kallsyms_has "mptcp_userspace_pm_dump_addr$"; then + check_output "userspace_pm_dump $ns2" \ + "id 0 flags subflow 10.0.3.2" \ + " dump addrs id 0 subflow" + fi chk_join_nr 1 1 1 chk_mptcp_info subflows 1 subflows 1 chk_subflows_total 2 2 --=20 2.40.1 From nobody Thu May 16 03:22:32 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 63B8E1758E for ; Fri, 16 Feb 2024 07:42: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=1708069362; cv=none; b=L80LlFNj/FPB/s7tJGWVMODhuZ+2bX0Wb/i0m7yuy3Hrn2iI5GPUrCAa10Grc2N54He6y7M2mPtGme6rK8bo5YaPxjDAcP9D4PDZUE0HJ9FEtQkfDNBku1hYOWaXN/qGxM1r5nCGzgzWCTzVfOXWDu1sALao9ssMyuCZ0NVNfdA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708069362; c=relaxed/simple; bh=3Dzyj8Auqc8MAQNrbY8jIm2roj4GjGiibpUK1X4uztM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=LrvCkQ0zjsFvQTfTWrUBKan/Bq+b/cGcrXOF6PnfuA+k2L25IHz7Ftaz1saAAXyTNfFrc75n75FgMmrjKO75WPwfOFGIM8t4Gb6+JrI8eRJ6s3eEoNmP9qWmtX51qOX/GnT2WOUFoW5elZVHqME+7FL5sLuu8vkt3EbZMnvcGvM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=CqnEyDmk; 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="CqnEyDmk" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B5290C433F1; Fri, 16 Feb 2024 07:42:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708069362; bh=3Dzyj8Auqc8MAQNrbY8jIm2roj4GjGiibpUK1X4uztM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CqnEyDmk3qtvhgZxl3SpEGGiU/DzLOmUulO/8ECiJWuAUmK5OkFk0Pw6ba5PV9alR Mu007e8XypnPK3yGDHEvMop1ZJRqoeyhKPq8y9AifB4TGpLdu2u4s6NrVO8SMTB3Yp VjiuADZmwqMNTnbJQ1mrpJHcbi7Td+WJJG4R4Qe0fAeAF6ntb5L2DFelHqJuA+eb+x XsTTdpZsLbakdveiqdm4QmG/Kg5ssaBQjczf9jk/nWgCn4aK7z3Ay+yCuuRoPWe1Uq mQPF9a52rZ7HGL31IVyerynZT0H9WDgkhkkPxhRvfM+3SwLrGd7D/muq9wLyKcBg3S ZBdvS1lVPdAOw== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v13 10/14] mptcp: add userspace_pm_lookup_addr_by_id helper Date: Fri, 16 Feb 2024 15:42:12 +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 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 --- 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 Thu May 16 03:22:32 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 082A9179A7 for ; Fri, 16 Feb 2024 07:42: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=1708069364; cv=none; b=kE5fhYpK0AzsEVpPPUa0n+wCmiwIcBVQ9+hSQZSmBN8qdKQIRRJF7Kk4rdZjWpYbEPbSZBc4OxFO38LaJZTsTK/xK4Bk1wbAOptnXBNISO17tyYjLuhfbm24a+oTxE5ZyUTn+uuhMlkrSgDALXpQce6/punEVqkvu97QZ/HwGQM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708069364; c=relaxed/simple; bh=IERezNVfTST4REruG09ph0HuCXEU7ftYxM1stPQKMDg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=aYIKjEQ0UZgua2aDBpHx0ecWoBadZ5bN99AHCr4QnCv4M467yLtc4syYCLQNZrGrwzcHNqvgyYiQkCVgu8v1q/niM6bZ65hK7U+jWEkoQbmUP//dXRcF3ksDGDHSH/CCxwHQ6j5qZlhCrbKcq75jlNlU6UVGv8Z/nSHFFVusu4U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=b/bWT4Xx; 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="b/bWT4Xx" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D9BF3C43390; Fri, 16 Feb 2024 07:42:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708069363; bh=IERezNVfTST4REruG09ph0HuCXEU7ftYxM1stPQKMDg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=b/bWT4Xx7A94c5KFX3puLxGdOKC1oQNa/slq+DDYxXi45CZj3h4clRxp4/7NqGhSg taizFxPt73uEhtybulMwleGocU9I9ngScYaoacOmkLRlfMqXJtwuDtlIVVQ53m9a2p gFs+IViiIEiUxp4udNHybiVOxfdE6LscWC1/4R3V+hroJk2n9f/MejeEfZE8GYCqhG vDnBOsKAltaotanyn58bKdsLABeuQRC5sCDMzKZ1mWdaPqALRymV3/jGfcz4fjUg0x oDAjsqTJYrqAO2Rllx4TXMxzLu0eJJkFtakeW/6l8dR9aAMrKv2yRezxSrDlsVuT/S UzQHRXVA/3iHQ== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v13 11/14] mptcp: implement mptcp_userspace_pm_get_addr Date: Fri, 16 Feb 2024 15:42:13 +0800 Message-Id: <3d7ce0c65227704a9338306ef30e77befd19db2c.1708069036.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 --- 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 Thu May 16 03:22:32 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 8D319168DE for ; Fri, 16 Feb 2024 07:42: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=1708069365; cv=none; b=mUs9P7n7izd0HAO0mL8UbFvfHprNFkbLBlS+lq2ja0PBhJBeyRtbHCBVpXzRMJo6YuW4A/M92RmBOlyxIaZwFUMvb+TWdvUyzeUfK5lmqhJCawERBXB9mFaHqRVqwjycgXG8JvrXk3QTlPzrAER8AWAq9RN5xMtSsUwl8kKwjaw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708069365; c=relaxed/simple; bh=UYlXxvMoWkZF081WLIoWdKVoOO4qA468ytMjPC6qLoQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TW/cuXI7nzK9c0Iqu8lZH3fJ6IwRJq0ZsBUtOJPNZLiGlqqGQqQhUwmInYLexu7mhbFuO1aFBY/g5VMZHT18q0LqpXZaQIOCwAZlDXofqW6Pm5ET4EBbrqoU3X6EeVY5zc6o0+E9a5dUq9pyFr7X2GXbLadL/cciXRnLvcHzna8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=YqGEDxFI; 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="YqGEDxFI" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 80F7FC43390; Fri, 16 Feb 2024 07:42:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708069365; bh=UYlXxvMoWkZF081WLIoWdKVoOO4qA468ytMjPC6qLoQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YqGEDxFI5cmSqSnY5kCQGiVSMiegYPpDVY9GIVj/qjKcPp+FepzbNKxaP0QhmmWpS Wzh1drqW4tGOWAmEv2ChDFvtiOk4mdD76bGF8rZAswV2clwxDkH/OS5bLGUjgT+WIG 14v8xVXIOaxtdFYZToiqd/+ej6+1wbRNW3qyyacjkkVXC7i1Uj4aYb9AFZT2PpbJzA tamkCHYOoBhsctWYdPZnzDinmb6s+lyhznSu6bY1UqXGdBlcgtQ3zJCpJKJ7t59lPe 8xXzuR/anJLEYXEAZbmyq1Bj2tEgpjdQRnTb0caG21O706IdZXFFIOpYO2IHgzW6Di xq5DZzQ8Mo+Dg== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v13 12/14] mptcp: get addr in userspace pm list Date: Fri, 16 Feb 2024 15:42:14 +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 Reviewed-by: Mat Martineau --- 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 Thu May 16 03:22:32 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 348A9168DE for ; Fri, 16 Feb 2024 07:42: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=1708069367; cv=none; b=AAeGMuez+HSlYnD6X6vHttyuMlsEX9dEG46ay/jsKNLnpI1ETyMEgQ2Mu/vDTLuTlD4gI0DbZfmdRgNBIJnW4ZFvnvF7M3bYtiTNd61QAWuK3sly9+J/Vbj9h3RDfUf/YFGO46rizfPdfnSaTH9LmNOU5sO/ebjSIB9AUDvtAUA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708069367; c=relaxed/simple; bh=DoYfkYOQ3ruXSwP0ssiLENI1sxoH9H/fyIQ9Gqc5OqU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=nd1yirqQlWqMuAOyzdRBpWi70pVAQ7mf9y99KOZne/Mi4HK17nqZ6P/L3sDWqBxuEJyWnxIqZYNTDJygojdJfPbBkXX/Jb5z8wDWuh+kHkXtqlsAir2CFoJUgpKp6PVUOJkRGe0LSo5m1Wbeq8p5CZ5ZymAmi6U3yGfePUnzpQc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=aPUbOPJR; 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="aPUbOPJR" Received: by smtp.kernel.org (Postfix) with ESMTPSA id EA6A9C43390; Fri, 16 Feb 2024 07:42:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708069367; bh=DoYfkYOQ3ruXSwP0ssiLENI1sxoH9H/fyIQ9Gqc5OqU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aPUbOPJRo/Nj9jRVAsda6ThdCdOG3/gneHBUFTtpaEnz2vGfdxi8/fy1bKyBS6trU nS2fy/Fop56bRZOJdfmxsRbu43689GTJDgssuTK4POsxPFXa5cEhzpvYmnBxkO6cSb oDhFFacja5YU/a++QyUTEwSOlB1dlr2DNWJYknSTzyzNUYPCt5NB6fXW6xxZ8vrpKS SX9FLoI/JXmVGFtPfSc62Bd/2J8OHNhPUbm6esA/I6k0BS3f59sWAPwjYFX5Lb6TY5 SrFgsHXdB5asEZ4+dQDLkPyuaZI8toJ/dn/ftsphaia2R4cI6kzOjOA98icT40KJSa s8ZwNv6TJFHsA== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v13 13/14] selftests: mptcp: add token for get_addr Date: Fri, 16 Feb 2024 15:42:15 +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 --- 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 Thu May 16 03:22:32 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 CF526168DE for ; Fri, 16 Feb 2024 07:42: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=1708069368; cv=none; b=pcPlYcD+XKMNyzNBapLFRKji5dvUHgDS8QJMDnStbQiD29cKPEP9hOgGsL6LIUwysg+oYyUY7tXYTUQWtKbgXPmlYv+iKmshzyFThAwEKQBEXiiv7z+jI5kbHwId2o8rjjxmsOog38DKknZLu15V/+V39+aewEs9tO+pfRe4HMs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708069368; c=relaxed/simple; bh=/egh2wvSp17UgjqFFrBf9fkYhBW6q+UJccwU01vH3GY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Hb++0KLIM5aUVIVxj9eaXKBKUQiBRUzcYKYMrv1lAJErlV9zTNAQDrBu7Rh5TYt59n6QIYaKI/oHt8yzPz/peo/9NXi4Q7Q7YwRTWKU/LFBXwvD539uNmCtCb/JzCnEAGxdy+EaddMyhRKaZ7qu6ksjZ7Sae22GcfXSXZQs/LLI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dfMKg6zb; 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="dfMKg6zb" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 93538C43390; Fri, 16 Feb 2024 07:42:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1708069368; bh=/egh2wvSp17UgjqFFrBf9fkYhBW6q+UJccwU01vH3GY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dfMKg6zbvQknBKSGS4AW5HqBdLb/ZU/eN6SrWXwzC78VsjSBdhhHXnZN+WlKqiMv8 pKasqMhcIOqC6LI6bxTU2w7rTQ1OfyiRvj2+yxulnVLxWxtSzNULMj8zai0IOMz2d8 8ovJ+bCKNvAiG+wzKw15o6kWoUD+CS8i8ui1602yQWlqVBlaMuUhZ4t0b8Y+RMhXjg Dgbi9rqt5TsdtaDKBUZQIcri/eYa5IcwOC6ApT09OquohF8MZhJaocz4PyzL1sQoIW LB6S7FYEIrTNuBhlkkXSyj3HxjtFdCW3VbpJhWQDqy+W4/UEZEiBrdYfu2HE+IiB+m +t24rHUBkxT6A== From: Geliang Tang To: mptcp@lists.linux.dev Cc: Geliang Tang Subject: [PATCH mptcp-next v13 14/14] selftests: mptcp: userspace pm get addr tests Date: Fri, 16 Feb 2024 15:42:16 +0800 Message-Id: <93caac2c12105bab2e5536906c1f65b42a29f14d.1708069036.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 --- .../testing/selftests/net/mptcp/mptcp_join.sh | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testin= g/selftests/net/mptcp/mptcp_join.sh index fb9b3ee9fee0..a4d121f9e467 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 +} + check_output() { local cmd=3D"$1" @@ -3482,6 +3494,14 @@ userspace_tests() $'id 10 flags signal 10.0.2.1\nid 20 flags signal 10.0.3.1' \ " dump addrs signal" fi + if mptcp_lib_kallsyms_has "mptcp_userspace_pm_get_addr$"; then + check_output "userspace_pm_get_addr $ns1 10" \ + "id 10 flags signal 10.0.2.1" \ + " get id 10 addr" + check_output "userspace_pm_get_addr $ns1 20" \ + "id 20 flags signal 10.0.3.1" \ + " get id 20 addr" + fi userspace_pm_rm_addr $ns1 10 userspace_pm_rm_sf $ns1 "::ffff:10.0.2.1" $SUB_ESTABLISHED if mptcp_lib_kallsyms_has "mptcp_userspace_pm_dump_addr$"; then @@ -3520,6 +3540,11 @@ userspace_tests() "id 20 flags subflow 10.0.3.2" \ " dump addrs subflow" fi + if mptcp_lib_kallsyms_has "mptcp_userspace_pm_get_addr$"; then + check_output "userspace_pm_get_addr $ns2 20" \ + "id 20 flags subflow 10.0.3.2" \ + " get id 20 addr" + fi userspace_pm_rm_addr $ns2 20 userspace_pm_rm_sf $ns2 10.0.3.2 $SUB_ESTABLISHED if mptcp_lib_kallsyms_has "mptcp_userspace_pm_dump_addr$"; then --=20 2.40.1