From nobody Mon Apr 29 13:01:42 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1f08:b0:4ab:e69e:bfc1 with SMTP id d8csp1769087pit; Sat, 26 Mar 2022 09:24:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwo5d6hvUm6obP5bobuh1O8BADVwyRiAlyK2c6WFXM3Lmu9DZEAi2HFtX4HHlZXlicI0nXC X-Received: by 2002:a17:90b:1d86:b0:1c7:85c9:96a6 with SMTP id pf6-20020a17090b1d8600b001c785c996a6mr19542624pjb.95.1648311884846; Sat, 26 Mar 2022 09:24:44 -0700 (PDT) Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id j4-20020a170902c3c400b00153b2d1660dsi5571271plj.533.2022.03.26.09.24.44 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 26 Mar 2022 09:24:44 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4458-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) client-ip=2604:1380:1000:8100::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=Dx5bTFiJ; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4458-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4458-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sjc.edge.kernel.org (Postfix) with ESMTPS id 698393E1004 for ; Sat, 26 Mar 2022 16:24:44 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 393F3322E; Sat, 26 Mar 2022 16:24:43 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (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 0B06B3235 for ; Sat, 26 Mar 2022 16:24:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648311879; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=u+bUmBMrGS448CsTMz0CjmsoKb9Rrs23jIRQj7JUA1w=; b=Dx5bTFiJJOnqfg744bhGEQEI2GRtvIi2bmS3Dw8aLdmAeREeqRLRp4ioNn1IBWLIyYu1AQ a/5ClHA0kDyo2zFURsuKlUw6VsAXW4edCsQx5Vv66LGC19FcCe6MpjSy3xEJstB8zIWbkU D5C+EM/p7ul70iTUaFrQ5Vn1ds174/w= Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04lp2058.outbound.protection.outlook.com [104.47.13.58]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-3-Eaw5U1hUOyir2iQdxWFFVw-2; Sat, 26 Mar 2022 17:24:37 +0100 X-MC-Unique: Eaw5U1hUOyir2iQdxWFFVw-2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E2gOOXFyJQQ7M6kSG2Udrrbbweml1JtCfEn607I4qUAnH8NceeqPY0kS2ipTqHNx4kecplTZh/jFPRkH7VWcj7dI/6UInk56Pa90H3FEiPp2jUX+WzLOAffuZrhsghH88uQezI2o0xctA+rBFI7YRIzlN2MKzbcQpmOU8E3q3yoSOqI+CF6cv746Mc8L6y8+fcyBK+7KxLe7i625W7J7r6oVYIuvNdwo+BYa9EzlLVfZNAiQYqVjqmKjGilIHQbui8B0yd8MHrcvS8h3jBYz1rNXtS52bH4KjkS7t8zMPyv5r60ncAZ3m+anmjsnh+0cAlKFpr/UHsQfYpyFP4x9wA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=850N0BKeViJLUF5vjbqOu99i07ZAUBZHvrlRedRUc34=; b=WGzz25KN25YJ5hBOj/D79StAYRvr9QAz8tebvqSeu80M/6qMMXZ7FQG4D5fo/McC3ztoPK0t3FaqbCL291D4dy58edIQhBFEt+UE/IaZlB4q0AhcmMwMhx3N1kH0Z7Saz0500JMiG0bPei/kDcTyqkBMha2RpD5XIqeki8HO6iZQMp4YYyz4wrPqoNdWTGNsL/w6OfEaeJa71JaXIU3aL5nUI3PRmhebhLq37jwdQru0J8eiKcmY3BL1AI6uB04eRNfOJUaG7l7YL6QQiNGNdRFyNKhkqcU1HEa4LpVlKKnTsXtNGiO/tPw9JGhQYp8VA6SCjbQN1tPOSOxRm0ygmg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) by HE1PR04MB3067.eurprd04.prod.outlook.com (2603:10a6:7:18::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.17; Sat, 26 Mar 2022 16:24:34 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05%6]) with mapi id 15.20.5102.022; Sat, 26 Mar 2022 16:24:34 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Nicolas Rybowski , Matthieu Baerts Subject: [PATCH mptcp-next v14 1/6] bpf: add bpf_skc_to_mptcp_sock_proto Date: Sun, 27 Mar 2022 00:24:28 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0176.apcprd02.prod.outlook.com (2603:1096:201:21::12) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 06903aab-9935-409c-e0ae-08da0f451d28 X-MS-TrafficTypeDiagnostic: HE1PR04MB3067:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jO3zVJ6VvU/OsRFHKrlr4YtO4DskZpsYIjwcrguXtTeB9mhBocJ0EChuJTHTONjEwP/C2soD2kTSPJj7csoxO6S/nFz31bA0MZcF08JUzSj/68MX1EQvWJWQp9kvhaMs7nz/q5lbzih43/ikyHx1t08DSZ+vdBwH+MsU1aPBlHh2/OfenZyyN7eL4rXIDYKNl7pdjGnfs+h4neBNWjNROnO17kaRPFHByb43syIsMOrO0pvHMKX6UeaeCu7w8/jXIe98mYC9+ygp/qZm5pzXi6BOVIiXobWa20xXn5Z1pvPkXt3j4AioROiJ/nUaeQjvXgLjhbeprh4t/KDSH+14mdh0qyNjHMvu63t17N1l46RIQ7PW2RudiZVRxfdC+4HFL0NewWyBmA0Q9uMwN9LrDF2xR25leOSjO27d1eTqLGjRGJ9/AM43kIhX4/rC3JtzTDJ9JEv9/f+wI9kAh/VJWMVtkyOecUuDvTtfrDmpSwUcToe7IUIrwpH+jODeNIES4jJj/V/yCPs4jbdCPA9HtFkkBfwSOPoWDErc6W/h8R0nRLqrQNoobYm7CYho8Y6ypLPqA0SY2oHsdfDk4oUggMc8fttKyjlujcJG3/BzgS1wPZKJ263h6YRsf2EM4C9aOtNTUtPcaRAIHlBOmJj/yFCMmPa+iBritkz3dyrC+lWlILtRBh1xBrX4q2n2xR9XgtdWLcO31ZBDerRDrUETMA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(66946007)(5660300002)(66476007)(186003)(6512007)(4326008)(8676002)(38100700002)(86362001)(26005)(6506007)(66556008)(8936002)(6916009)(54906003)(44832011)(36756003)(508600001)(6486002)(83380400001)(6666004)(2616005)(2906002)(316002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?3W0eh73ac5Ck9fOPoCRLK8M4VA4hOpTk9TBIqYHv7IPRfWQR95Q24DjDxBiE?= =?us-ascii?Q?5D4kMMQInHkKUeD6OEhyKRXqIpzqKLeO9JWXWhV0S3jk0IE2LR7uetU0MLv8?= =?us-ascii?Q?J9bSPv8tX+41LeE2C7r2ZQHxiri0QNYQ4zVdk3+njLybT4rg4Rw63ZgPhXhz?= =?us-ascii?Q?Yg9M+ay0+hO/gUUEUfSVqradWLEYksh587Vs+j7dTg15XMa+hhIH066uVH9P?= =?us-ascii?Q?GChwIJHA5e/d+Qc6vH/ve/f5A5uZM/6N7m3Q74auk53R5/YzN5MaiIlx4C50?= =?us-ascii?Q?tGFX6riIk9npSmSBoKeXZKUqay4TMdjTP5r4su3DStScZ0sdIrdwL58DtTvT?= =?us-ascii?Q?Yzb7VDJ2n4blF90eVVG8M2llo13nzzfzdJcmUEp3mImtLdkD8HvQqyFnZ0M8?= =?us-ascii?Q?o1kG8aNdjEtXaZ2dWDuYIBOjEt8rL28VssBaQLox5u1RaAaqR4p39W44c7r7?= =?us-ascii?Q?zhXgPfBl7xdaoFcVGusR6Wb2aP5TmFHwKIuEegkqAJd0o8iu9EHw7h8ho8Vo?= =?us-ascii?Q?OaWthrzLGjLfT1dmQGDr0UaVHrYIuj2H5lM8yb7IvqA0ws/qxz48YMw/IY7H?= =?us-ascii?Q?G0CJ6xDvtTHipw4Aqzhr4KNqNa6CbDfXk5LKI77ktRlj/5j7LZ852banY5p/?= =?us-ascii?Q?as55NWUEpU+ED5W98GV0af0IjbSFEEsBtQeY9SVAK849zZWVjdZlKUbUPP3J?= =?us-ascii?Q?bB6pLkn+SsXBm7kLFeJD+Lyv7XqTnj57by8w7phzHnLSd80NzYyX2/uvZA98?= =?us-ascii?Q?s/+AAlliRT5WzHZWnfWkLH3prTQL9MglcholTYT9FYrJuCbNF2p7FN5So5dN?= =?us-ascii?Q?p9YEtRjoWTDOTjBd33AUiAxreZUjcFekj1L74dkMdKJALJMeeOsarhJqGZs6?= =?us-ascii?Q?A0ClaH5w6scLhNCr41oC0K/KJYAi/au/nqVMedyp/b2EWJDUArHRlwAE2wdm?= =?us-ascii?Q?ScRkIih0Qnn3g0Ytf8mfzjmCGdWj2Kt3IIm9mYL8qO9xZ7a9mozQEXmcVQ8v?= =?us-ascii?Q?IcBOKls/I13ZjzYAS4uov3lUhhfgWhtVXUIIqslQzx7JN8kPXkMwYR8JfD+/?= =?us-ascii?Q?3LF/Q+09NsgzZDDbhSsUsdPOFOXrrsVUCVoHXgd0Adu0DNVKCkcp2DHCbXLK?= =?us-ascii?Q?lHvDqYvFbjCtUaLZCvwdBHgpoDw0mQ4si4OhzuW4uR9dfe9dyNfwPPzYOQuq?= =?us-ascii?Q?bzBXKZ0YuC1HpBxGdy3Ej0CTP6GPmhGJMox8U4iHwkrAZKDcXc0wBfP5hWIV?= =?us-ascii?Q?GfG2QHLEu4QQWtRTzcCElEWeDD5iM/GRLR/MiyUnpbTocn0xT/8GaC8EeszP?= =?us-ascii?Q?hM46AO7jGxeO7LJx1QOkob0BWDus1yTia0uty2Huv4eevSf5NTKYPUED8pAE?= =?us-ascii?Q?tLnAmUtwa8PvIAFDJuUSq9m0kz2zx1NJX6KzJRbrQHqAZEO2y5wD9GEYsCQF?= =?us-ascii?Q?uOoIKkO42vuu2vel9qAL6WOqLjQBcEkECrONu8xOAZExRPhCCBAIRA=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 06903aab-9935-409c-e0ae-08da0f451d28 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Mar 2022 16:24:34.5693 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: QwY4h3q88rJjX4rBxyLeqfsGtX9hQ2OCaH1wj+L9kCrVsD/YEjsRfGKryVuxDkz8HtpKnEc5xIm8dDX0EhobMw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR04MB3067 Content-Type: text/plain; charset="utf-8" This patch implements a new struct bpf_func_proto, named bpf_skc_to_mptcp_sock_proto. Define a new bpf_id BTF_SOCK_TYPE_MPTCP, and a new helper bpf_skc_to_mptcp_sock(), which invokes another new helper bpf_mptcp_sock_from_subflow() in net/mptcp/bpf.c to get struct mptcp_sock from a given subflow socket. Co-developed-by: Nicolas Rybowski Signed-off-by: Nicolas Rybowski Co-developed-by: Matthieu Baerts Signed-off-by: Matthieu Baerts Signed-off-by: Geliang Tang --- include/linux/bpf.h | 9 +++++++++ include/linux/btf_ids.h | 3 ++- include/uapi/linux/bpf.h | 7 +++++++ net/core/filter.c | 16 ++++++++++++++++ net/mptcp/Makefile | 4 ++++ net/mptcp/bpf.c | 22 ++++++++++++++++++++++ scripts/bpf_doc.py | 2 ++ tools/include/uapi/linux/bpf.h | 7 +++++++ 8 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 net/mptcp/bpf.c diff --git a/include/linux/bpf.h b/include/linux/bpf.h index bdb5298735ce..117ae3f9451e 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -2372,6 +2372,15 @@ static inline u32 bpf_xdp_sock_convert_ctx_access(en= um bpf_access_type type, } #endif /* CONFIG_INET */ =20 +#if defined(CONFIG_MPTCP) && defined(CONFIG_BPF_SYSCALL) +struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *sk); +#else +static inline struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *= sk) +{ + return NULL; +} +#endif /* defined(CONFIG_MPTCP) && defined(CONFIG_BPF_SYSCALL) */ + enum bpf_text_poke_type { BPF_MOD_CALL, BPF_MOD_JUMP, diff --git a/include/linux/btf_ids.h b/include/linux/btf_ids.h index bc5d9cc34e4c..335a19092368 100644 --- a/include/linux/btf_ids.h +++ b/include/linux/btf_ids.h @@ -178,7 +178,8 @@ extern struct btf_id_set name; BTF_SOCK_TYPE(BTF_SOCK_TYPE_TCP6, tcp6_sock) \ BTF_SOCK_TYPE(BTF_SOCK_TYPE_UDP, udp_sock) \ BTF_SOCK_TYPE(BTF_SOCK_TYPE_UDP6, udp6_sock) \ - BTF_SOCK_TYPE(BTF_SOCK_TYPE_UNIX, unix_sock) + BTF_SOCK_TYPE(BTF_SOCK_TYPE_UNIX, unix_sock) \ + BTF_SOCK_TYPE(BTF_SOCK_TYPE_MPTCP, mptcp_sock) =20 enum { #define BTF_SOCK_TYPE(name, str) name, diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index 9ef1f3e1c22f..785f2cb15495 100644 --- a/include/uapi/linux/bpf.h +++ b/include/uapi/linux/bpf.h @@ -5143,6 +5143,12 @@ union bpf_attr { * The **hash_algo** is returned on success, * **-EOPNOTSUP** if the hash calculation failed or **-EINVAL** if * invalid arguments are passed. + * + * struct mptcp_sock *bpf_skc_to_mptcp_sock(void *sk) + * Description + * Dynamically cast a *sk* pointer to a *mptcp_sock* pointer. + * Return + * *sk* if casting is valid, or **NULL** otherwise. */ #define __BPF_FUNC_MAPPER(FN) \ FN(unspec), \ @@ -5339,6 +5345,7 @@ union bpf_attr { FN(copy_from_user_task), \ FN(skb_set_tstamp), \ FN(ima_file_hash), \ + FN(skc_to_mptcp_sock), \ /* */ =20 /* integer value in 'imm' field of BPF_CALL instruction selects which help= er diff --git a/net/core/filter.c b/net/core/filter.c index 258821e58ec6..53f353b81a1f 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -11270,6 +11270,19 @@ const struct bpf_func_proto bpf_skc_to_unix_sock_p= roto =3D { .ret_btf_id =3D &btf_sock_ids[BTF_SOCK_TYPE_UNIX], }; =20 +BPF_CALL_1(bpf_skc_to_mptcp_sock, struct sock *, sk) +{ + return (unsigned long)bpf_mptcp_sock_from_subflow(sk); +} + +static const struct bpf_func_proto bpf_skc_to_mptcp_sock_proto =3D { + .func =3D bpf_skc_to_mptcp_sock, + .gpl_only =3D false, + .ret_type =3D RET_PTR_TO_BTF_ID_OR_NULL, + .arg1_type =3D ARG_PTR_TO_SOCK_COMMON, + .ret_btf_id =3D &btf_sock_ids[BTF_SOCK_TYPE_MPTCP], +}; + BPF_CALL_1(bpf_sock_from_file, struct file *, file) { return (unsigned long)sock_from_file(file); @@ -11312,6 +11325,9 @@ bpf_sk_base_func_proto(enum bpf_func_id func_id) case BPF_FUNC_skc_to_unix_sock: func =3D &bpf_skc_to_unix_sock_proto; break; + case BPF_FUNC_skc_to_mptcp_sock: + func =3D &bpf_skc_to_mptcp_sock_proto; + break; case BPF_FUNC_ktime_get_coarse_ns: return &bpf_ktime_get_coarse_ns_proto; default: diff --git a/net/mptcp/Makefile b/net/mptcp/Makefile index e54daceac58b..168c55d1c917 100644 --- a/net/mptcp/Makefile +++ b/net/mptcp/Makefile @@ -10,3 +10,7 @@ obj-$(CONFIG_INET_MPTCP_DIAG) +=3D mptcp_diag.o mptcp_crypto_test-objs :=3D crypto_test.o mptcp_token_test-objs :=3D token_test.o obj-$(CONFIG_MPTCP_KUNIT_TEST) +=3D mptcp_crypto_test.o mptcp_token_test.o + +ifeq ($(CONFIG_BPF_JIT),y) +obj-$(CONFIG_BPF_SYSCALL) +=3D bpf.o +endif diff --git a/net/mptcp/bpf.c b/net/mptcp/bpf.c new file mode 100644 index 000000000000..535602ba2582 --- /dev/null +++ b/net/mptcp/bpf.c @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Multipath TCP + * + * Copyright (c) 2020, Tessares SA. + * Copyright (c) 2022, SUSE. + * + * Author: Nicolas Rybowski + */ + +#define pr_fmt(fmt) "MPTCP: " fmt + +#include +#include "protocol.h" + +struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *sk) +{ + if (sk && sk_fullsock(sk) && sk->sk_protocol =3D=3D IPPROTO_TCP && sk_is_= mptcp(sk)) + return mptcp_sk(mptcp_subflow_ctx(sk)->conn); + + return NULL; +} +EXPORT_SYMBOL(bpf_mptcp_sock_from_subflow); diff --git a/scripts/bpf_doc.py b/scripts/bpf_doc.py index 096625242475..d5452f7eb996 100755 --- a/scripts/bpf_doc.py +++ b/scripts/bpf_doc.py @@ -633,6 +633,7 @@ class PrinterHelpers(Printer): 'struct socket', 'struct file', 'struct bpf_timer', + 'struct mptcp_sock', ] known_types =3D { '...', @@ -682,6 +683,7 @@ class PrinterHelpers(Printer): 'struct socket', 'struct file', 'struct bpf_timer', + 'struct mptcp_sock', } mapped_types =3D { 'u8': '__u8', diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h index 9ef1f3e1c22f..785f2cb15495 100644 --- a/tools/include/uapi/linux/bpf.h +++ b/tools/include/uapi/linux/bpf.h @@ -5143,6 +5143,12 @@ union bpf_attr { * The **hash_algo** is returned on success, * **-EOPNOTSUP** if the hash calculation failed or **-EINVAL** if * invalid arguments are passed. + * + * struct mptcp_sock *bpf_skc_to_mptcp_sock(void *sk) + * Description + * Dynamically cast a *sk* pointer to a *mptcp_sock* pointer. + * Return + * *sk* if casting is valid, or **NULL** otherwise. */ #define __BPF_FUNC_MAPPER(FN) \ FN(unspec), \ @@ -5339,6 +5345,7 @@ union bpf_attr { FN(copy_from_user_task), \ FN(skb_set_tstamp), \ FN(ima_file_hash), \ + FN(skc_to_mptcp_sock), \ /* */ =20 /* integer value in 'imm' field of BPF_CALL instruction selects which help= er --=20 2.34.1 From nobody Mon Apr 29 13:01:42 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1f08:b0:4ab:e69e:bfc1 with SMTP id d8csp1769102pit; Sat, 26 Mar 2022 09:24:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwIRo6P7KuJlK6+OP8CJ8WHDCwDLV04+xaUojbcC1cKvBeT6KuN6S8BY2Kc/kJvO7MjUJCw X-Received: by 2002:a17:90a:3e44:b0:1c9:8365:5753 with SMTP id t4-20020a17090a3e4400b001c983655753mr2038544pjm.60.1648311888585; Sat, 26 Mar 2022 09:24:48 -0700 (PDT) Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [147.75.69.165]) by mx.google.com with ESMTPS id b18-20020a170903229200b00151f8f6cce5si6341642plh.3.2022.03.26.09.24.48 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 26 Mar 2022 09:24:48 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4459-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) client-ip=147.75.69.165; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=cD5UZUhM; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4459-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4459-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sjc.edge.kernel.org (Postfix) with ESMTPS id C684C3E0FEE for ; Sat, 26 Mar 2022 16:24:47 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1FF7F322E; Sat, 26 Mar 2022 16:24:47 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (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 851583235 for ; Sat, 26 Mar 2022 16:24:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648311883; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9N+v7msnfEZRValIt5xjeVsE3e7nZL2aiPAZDHcuQdI=; b=cD5UZUhMRF5Op4zIXfzBdyiyEIGl0uoKatAGNSkzPqFL6KUf2nqMVHSvjlOReKcKq3XseX DCl2AXEjd6ahPBI4X7lrYjWd2sO2oG2ZSGHzZFOfrJbBjWsLr92/2Uq0o0xQAm11/+Zl26 U1W1d4IVdJ4LabGFCYbYoom6WNbWLSA= Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04lp2057.outbound.protection.outlook.com [104.47.13.57]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-5-3Avwh0kaPhW_JYZZt7f-Kw-1; Sat, 26 Mar 2022 17:24:42 +0100 X-MC-Unique: 3Avwh0kaPhW_JYZZt7f-Kw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hE+5ov2TI4xli3d4ksYAeoa8BnqKZW2FWXAROg0P3YZphvlG1EraNYHcuzIuzaXTzmosWbvT4Grv8QvAeHu6YouYSxI1e/AGMrlWCxBhN/Ux/UMJQdeYiQQmTfjQRp1euRjpfR80fSjzmUICC0D3J2J9DEg941NVaGL+Y8q9DmHk4YdakHP8NQIHY9doClUIsvJ28bnX/xBMTK9N0iFcC2NINNsIyuBpeqUNHlKacdKlfwJMifnHSj7lcSUh2xyLLJyiG0zzEmhdpBdliTfxYwd4pKrYJZItAiBHpUwzXBgMCQ/DbvtIYINqV9x/jUXltmMddYMgOhfObpQ+0ZX/LQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=N0SuNGvUJv57nXFpn4CbA51/t8xpdbuq4cki+JbTtjs=; b=l56vFCyXNzkhk2S7YeaMkrU3LGndCaY09RDBDlEHnHRF31EWAZhvTb6sTjCn4OM5oENlr9+WveEvNjnBPGmFyJnO+SOHa1qJo7i1A9/y29FNg15WX5uZS1cdUtkW1kLDlEh/acLLiK52J2tcQugfY0eCTdyMcCT4vn+Dt+nT9kNmoU6J21qp4v1yrxt39CRWiSzJT28tzbfogUWr9sN66Qa/FhJYRhfaKNYb38N0z6SO3A4V4ETnbKTiQcisYkmAft7Bz8AzkDOiO4zrEzJbQlwfqu7YXKI89C+yTQQSK6wHvC9uW0MfAgjqnkxs1QDLd2/2v7sMkT27nKCtiDJqEA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) by HE1PR04MB3067.eurprd04.prod.outlook.com (2603:10a6:7:18::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.17; Sat, 26 Mar 2022 16:24:41 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05%6]) with mapi id 15.20.5102.022; Sat, 26 Mar 2022 16:24:41 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v14 2/6] Squash to "selftests: bpf: add MPTCP test base" Date: Sun, 27 Mar 2022 00:24:29 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0198.apcprd02.prod.outlook.com (2603:1096:201:21::34) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 6fe1f5a9-45a2-4688-2361-08da0f452150 X-MS-TrafficTypeDiagnostic: HE1PR04MB3067:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jid5vSc+7zczvBaca6A/7p/FJnbDPWwq+JhjTNIBaK1QbzOn4+oA6VSeddPa9sFKVR6Xw2ehG1nt+4hFFnf2L+SLqvnu+r4FlE7wSoP1ogY5UaYWryZU7kXAsNJrTBv9njSdIwydv/UA3HZ0HguoWucceOnwmE+C2/uXq8+EfgxadDtrcNG4gwyFjTEDOt8qWzF1muaIcAonc8yiLAOruc8hozRQJe7wfEnhIvT95ZOeaz4k+s5vAJ5noY1m9cESv1VJXYyIGwx4JwRr+QANtE9VKDyXflxNaOt+jdbdA/r/POjhwqPkwZ9duUT16h0pcn+pPUv+H0AHP57KeXf3wXVCpHHCVqLBavffUVROLatc8TyEAt0wd5/WqZP/gsboNyrVxAZWO35oUBnOlhI1z1kEPoEizahaGP761J+eNPD0YzYK8o5Zywg09b/+I1Dr9wWrZvhhXMJ/8MQKWe9VUnduznrVoWBoVvkVSysN4OY7wocjSOpXO9OPN9I7TclQXOwraMAnIVfzNFo/BaVjge/VTpy0BgZ+a6or4SxkIt4lo2j7ZfAMVmdnANx4iU22MRa79SDm0luCHDlrmdq4nXHHli7Q8FRyH8t4Fm25Q1MjfdiWdIX9tKUQEEB+tjveVtxo0avlH11RkYAnEJ1BSKkAyaktkOA8AN0f0wxGqw8wqHfRyLUj4BDFLrIoHK+ZBc+/3I6I//iB+r/eawfngg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(66946007)(5660300002)(66476007)(186003)(107886003)(6512007)(4326008)(8676002)(38100700002)(86362001)(26005)(6506007)(66556008)(8936002)(6916009)(44832011)(36756003)(508600001)(6486002)(83380400001)(6666004)(2616005)(2906002)(316002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?VIGuyNlitSffcBJmdBy4278TLIGULF8cXx0PN3K9lpuZ8P8jo44RTpiJaeqx?= =?us-ascii?Q?VgsyO1LRbl3zpbbd5zC+lKWZM0oqEe47WvwP/aWnIp3KOMHfInDEqn6xhs2d?= =?us-ascii?Q?E2MqdNUeUZu5FiPenCGpGAhZgDqDivy0HiOggPk+8iYKDvbnhd10Y+Cwcn0u?= =?us-ascii?Q?HNDoAqfzxGMmfWgbTMQMR40PP2jb9SjG/Kierk/oVUrWs/GQeNrwpyc50Jj/?= =?us-ascii?Q?mzwTKTYYOc4L601VeeThBv0e1BSsis0nWWZo0o/7ql0fJqrlc7cE9Z4fALyF?= =?us-ascii?Q?OappBhYevlBgbKpjNRlBS1mzm8NItwb+h1cDPt8a2hHUl3gKi92GtBt5qFD2?= =?us-ascii?Q?BJG8GzmFHP8CYt/b/qQtGyWEafdxjWSzbl/ndRsIAuKL+zqCf0sMVmtI3lfp?= =?us-ascii?Q?cpVuhBmN2xtFPPOIV/LQDT29GwVxJM+A1oxcmtmscooScEMYbpdbIBzSeM0w?= =?us-ascii?Q?3qICX2Fs610D9ET2j0LmkSCp3AwCsmv1xubTn3LZPZhcH/LkbihHyNrSDcWp?= =?us-ascii?Q?E1ARHNpQBMe/op7UAc4tj9b7/hjgkWvCLgtlFtcvoEPcfGI6Hk2pG/pOlczw?= =?us-ascii?Q?RCxFCMws9OrTiCuvJw6I34M8hLlVw8mwKTcvXhK8hYeuSYFqlX5S6SS+u5jP?= =?us-ascii?Q?Odbu26+kRKapXSGys+LFsPi/d83nT8t5R4/8sdYajNHXuSXpeNs7I7v+bfxd?= =?us-ascii?Q?jxE/2TkwbsfYl1pTCzrfIG1M0z+wAD/gE6AUWHdu/cLYM4xBEu2aHAUGnYgW?= =?us-ascii?Q?mlWCNcXBTOf8zeEnkfRRB+JJbC89zvHZ9LtwhdEyby2ebDDAdGKzsRd4yj95?= =?us-ascii?Q?/yR6aCsmveNKoHwBMMPHESBtvZGCcI7E/zSxu5YZAE/OHGqUTvouW3HPfODl?= =?us-ascii?Q?RwUI1zD7vq59qSZvXgl1oclzbCfnm5HRUupswbiOCTCWHdsiC8bj2g9lGFhG?= =?us-ascii?Q?J7sj0Oqin+4BwcoMZhR7nueQCYsoJoMEyY+4bGZdY/7MIqOjhddhaYexfP95?= =?us-ascii?Q?va94X6lehsFrQWGtfIp2tnJXWTlsZh73Mxht1zEmi2oc/ctbA64J69H/cM4J?= =?us-ascii?Q?ksCd4w7q8fuI9lyllL73Ssf2d7v98wno3u5mpW/XyDW3FcWY1DwYZKV095lD?= =?us-ascii?Q?AAS/BZVffepBHm75/gfzGyOMzxUGmAhoCQC6vuPCogSNLAi4bT2b0yXDFp/4?= =?us-ascii?Q?/WFoD15upV29bw4UKU5V8kwWTnyQgq+jlybGZFt5OqX3suj5JSso7LyUExrr?= =?us-ascii?Q?rbMeuWyMu3UQxoKvsLRT6icilyStOyhgrpoSZkjNPzMrN+41F3uu4Die/ZCY?= =?us-ascii?Q?sswOPVfU/nRD+i59O2lviR2tlKoFtMcE+C7bECja8PCiKXqDLSTMkRbeDEi3?= =?us-ascii?Q?eU6UcnD5GVuvRla2/xkfZC+d80sp9nLi4RJO0pSeg9tidixh5UyRg1wtP3FV?= =?us-ascii?Q?qwYIVCY7IBfakbIpn/BoVJEXND117M39eT9X41xXdDuNO6HOgn5GfQ=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6fe1f5a9-45a2-4688-2361-08da0f452150 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Mar 2022 16:24:41.5062 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: VQWo1oOZ+qJXhM76UWkwin/JSv77AvVDDfKTasEojBCyotTzHzlU70a9kXVSQZ3jtTC5FEqSFS1xKRpKQ6wVaQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR04MB3067 Content-Type: text/plain; charset="utf-8" 1 fix libbpf 0.8 build break: prog_tests/mptcp.c:176:2: error: 'bpf_prog_load_xattr' is deprecated: libbp= f v0.8+: use bpf_object__open() and bpf_object__load() instead [-Werror=3Dd= eprecated-declarations] 2 do some cleanups. 3 rename progs/mptcp.c to progs/mptcp_sock.c Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 77 +++++++++++-------- .../bpf/progs/{mptcp.c =3D> mptcp_sock.c} | 16 ++-- 2 files changed, 56 insertions(+), 37 deletions(-) rename tools/testing/selftests/bpf/progs/{mptcp.c =3D> mptcp_sock.c} (95%) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 04aef0f147dc..cd548bb2828f 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -1,4 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2020, Tessares SA. */ + #include #include "cgroup_helpers.h" #include "network_helpers.h" @@ -13,12 +15,6 @@ static int verify_sk(int map_fd, int client_fd, const ch= ar *msg, __u32 is_mptcp) int err =3D 0, cfd =3D client_fd; struct mptcp_storage val; =20 - /* Currently there is no easy way to get back the subflow sk from the MPT= CP - * sk, thus we cannot access here the sk_storage associated to the subflow - * sk. Also, there is no sk_storage associated with the MPTCP sk since it - * does not trigger sockops events. - * We silently pass this situation at the moment. - */ if (is_mptcp =3D=3D 1) return 0; =20 @@ -28,14 +24,14 @@ static int verify_sk(int map_fd, int client_fd, const c= har *msg, __u32 is_mptcp) } =20 if (val.invoked !=3D 1) { - log_err("%s: unexpected invoked count %d !=3D %d", - msg, val.invoked, 1); + log_err("%s: unexpected invoked count %d !=3D 1", + msg, val.invoked); err++; } =20 - if (val.is_mptcp !=3D is_mptcp) { - log_err("%s: unexpected bpf_tcp_sock.is_mptcp %d !=3D %d", - msg, val.is_mptcp, is_mptcp); + if (val.is_mptcp !=3D 0) { + log_err("%s: unexpected bpf_tcp_sock.is_mptcp %d !=3D 0", + msg, val.is_mptcp); err++; } =20 @@ -45,49 +41,64 @@ static int verify_sk(int map_fd, int client_fd, const c= har *msg, __u32 is_mptcp) static int run_test(int cgroup_fd, int server_fd, bool is_mptcp) { int client_fd, prog_fd, map_fd, err; + struct bpf_program *prog; struct bpf_object *obj; struct bpf_map *map; =20 - struct bpf_prog_load_attr attr =3D { - .prog_type =3D BPF_PROG_TYPE_SOCK_OPS, - .file =3D "./mptcp.o", - .expected_attach_type =3D BPF_CGROUP_SOCK_OPS, - }; + obj =3D bpf_object__open("./mptcp_sock.o"); + if (libbpf_get_error(obj)) + return -EIO; =20 - err =3D bpf_prog_load_xattr(&attr, &obj, &prog_fd); - if (err) { - log_err("Failed to load BPF object"); - return -1; + err =3D bpf_object__load(obj); + if (CHECK_FAIL(err)) + goto out; + + prog =3D bpf_object__find_program_by_name(obj, "_sockops"); + if (CHECK_FAIL(!prog)) { + err =3D -EIO; + goto out; + } + + prog_fd =3D bpf_program__fd(prog); + if (CHECK_FAIL(prog_fd < 0)) { + err =3D -EIO; + goto out; + } + + map =3D bpf_object__find_map_by_name(obj, "socket_storage_map"); + if (CHECK_FAIL(!map)) { + err =3D -EIO; + goto out; } =20 - map =3D bpf_object__next_map(obj, NULL); map_fd =3D bpf_map__fd(map); + if (CHECK_FAIL(map_fd < 0)) { + err =3D -EIO; + goto out; + } =20 err =3D bpf_prog_attach(prog_fd, cgroup_fd, BPF_CGROUP_SOCK_OPS, 0); - if (err) { - log_err("Failed to attach BPF program"); - goto close_bpf_object; - } + if (CHECK_FAIL(err)) + goto out; =20 client_fd =3D is_mptcp ? connect_to_mptcp_fd(server_fd, 0) : connect_to_fd(server_fd, 0); if (client_fd < 0) { - err =3D -1; - goto close_client_fd; + err =3D -EIO; + goto out; } =20 err +=3D is_mptcp ? verify_sk(map_fd, client_fd, "MPTCP subflow socket", = 1) : verify_sk(map_fd, client_fd, "plain TCP socket", 0); =20 -close_client_fd: close(client_fd); =20 -close_bpf_object: +out: bpf_object__close(obj); return err; } =20 -void test_mptcp(void) +void test_base(void) { int server_fd, cgroup_fd; =20 @@ -117,3 +128,9 @@ void test_mptcp(void) close_cgroup_fd: close(cgroup_fd); } + +void test_mptcp(void) +{ + if (test__start_subtest("base")) + test_base(); +} diff --git a/tools/testing/selftests/bpf/progs/mptcp.c b/tools/testing/self= tests/bpf/progs/mptcp_sock.c similarity index 95% rename from tools/testing/selftests/bpf/progs/mptcp.c rename to tools/testing/selftests/bpf/progs/mptcp_sock.c index be5ee8dac2b3..0d65fb889d03 100644 --- a/tools/testing/selftests/bpf/progs/mptcp.c +++ b/tools/testing/selftests/bpf/progs/mptcp_sock.c @@ -1,4 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2020, Tessares SA. */ + #include #include =20 @@ -25,22 +27,22 @@ int _sockops(struct bpf_sock_ops *ctx) int op =3D (int)ctx->op; struct bpf_sock *sk; =20 + if (op !=3D BPF_SOCK_OPS_TCP_CONNECT_CB) + return 1; + sk =3D ctx->sk; if (!sk) return 1; =20 + tcp_sk =3D bpf_tcp_sock(sk); + if (!tcp_sk) + return 1; + storage =3D bpf_sk_storage_get(&socket_storage_map, sk, 0, BPF_SK_STORAGE_GET_F_CREATE); if (!storage) return 1; =20 - if (op !=3D BPF_SOCK_OPS_TCP_CONNECT_CB) - return 1; - - tcp_sk =3D bpf_tcp_sock(sk); - if (!tcp_sk) - return 1; - storage->invoked++; storage->is_mptcp =3D tcp_sk->is_mptcp; =20 --=20 2.34.1 From nobody Mon Apr 29 13:01:42 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1f08:b0:4ab:e69e:bfc1 with SMTP id d8csp1769126pit; Sat, 26 Mar 2022 09:24:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJysVi76i6NsImUfJ9z11+eNSPbBO99kwrB4tgXnuLl3cYiOd9Y4LqWZ0CLL0Tk1kvy5NRb4 X-Received: by 2002:a05:622a:1cb:b0:2e2:27da:74c4 with SMTP id t11-20020a05622a01cb00b002e227da74c4mr14522001qtw.462.1648311895479; Sat, 26 Mar 2022 09:24:55 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id j6-20020a05620a410600b0067e4be23902si3912412qko.327.2022.03.26.09.24.55 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 26 Mar 2022 09:24:55 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4460-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=kYuzdSOs; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4460-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4460-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id 15CA41C0E10 for ; Sat, 26 Mar 2022 16:24:55 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D8A3B3235; Sat, 26 Mar 2022 16:24:53 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (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 087CF322E for ; Sat, 26 Mar 2022 16:24:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648311890; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JmNMLvB/AmBh1m1vJWz/O0LPb4kAiSnk7k4m0enRKUQ=; b=kYuzdSOsamXzwKzRDY9BC0xQqNS0BySdO5QG3DXzVlJfHcN8tEGs3Ux/q0oLMQktvfBaMw EIKQBnDSAj76Xmozfa+OwdDtQ9Cpi0hqpfQfxYYwv5ghYXDZUPb61ygsbyZ+jxhL7M6zsX yYPL2zkmlNtT50RWx5E/DuEvMiphuR8= Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04lp2053.outbound.protection.outlook.com [104.47.13.53]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-9-N5sZOheHNoSjb3B5kPsISw-1; Sat, 26 Mar 2022 17:24:49 +0100 X-MC-Unique: N5sZOheHNoSjb3B5kPsISw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kTI5pjCrONsBxsuteFl2y0s3Ij1l7rf+s0T4WgkMFmKdrnKHFT4vqUN3cTgoXn0Qg1VPA+6RLWpuRA0UisiXx/Xqt9+Y1QLNSYkTYzN8y/T4CYRS0r/Cqak2kOCBYzO2jPaXeQD2YX5yFk7/DA4xeTTlM1jc/cz4qSA/4g18NIhR0S5eau5vqHI4W9tTQfrHt0TCuPygxqZ+oFsqUYaZksT+rZzQxtXSICtO1U3qTDGHQAuvnje4lVUBbn41amTLAH55Db4O/xLW3Yce8kpOxgWbWm5cI+vl/athcSL6ldDjScjoLPWOkwK3C2+4owWBVwWvlvzgzioHFyKpI+CPGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=uJ/YvUcSc5B7fLAa0vkYsyt4Uaito5sQUpIX1n9QaUI=; b=ZHD9a3hDtFeSSivPfWWDnwxADuLQ1SwawV3rikqgR9AHAEh/yFe2bXfSBvFwy+3SIwJhuoZyjBj1UoD/Cr9Q8wEjxlnWCOlQ7FE/0lkF+hkx7KeS2cbD3tzNSxDB9r6sm7mx7MI+Fx3HghkB2xQ51PHZ3l/kDSPrVPeOAodJjvTgUxQvgsJxJfgBoU2/68SBULoQkEwBWzxQRCgPwxVkZbawPZclDy9i2HA3sFTKmL4D4RozNNOQxDlBm9LTQ+MUICaZhvFB4qoOBm37UrGwMvmb6DSMmuq1Q4+Cthcec3vwr1/gwg3lng3aDyZnOxpwobUT4AJN99j9/i/1zRGs6w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) by HE1PR04MB3067.eurprd04.prod.outlook.com (2603:10a6:7:18::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.17; Sat, 26 Mar 2022 16:24:48 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05%6]) with mapi id 15.20.5102.022; Sat, 26 Mar 2022 16:24:48 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v14 3/6] selftests: bpf: test bpf_skc_to_mptcp_sock Date: Sun, 27 Mar 2022 00:24:30 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0184.apcprd02.prod.outlook.com (2603:1096:201:21::20) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2055ed79-734d-40d5-1a4a-08da0f45254a X-MS-TrafficTypeDiagnostic: HE1PR04MB3067:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Y2WGISKwZjhS2jVkrj4UXG4abvL7kOibMrTd8KhTvuUIS4bm8+0ux0w8ZVn6SwLnFaTf8+2SNcyk32nI13otk0xK7AT4K1XBHtDpuGvzcHL1An/SJqhgBj5vlHcN6eItF7b6RyfnbIuaFrvvbDY8Q3/IYrRwksSrltgQO1o9F6LSD9pNkeBvV0x16rlIZJCKhBWkMugJtQrNYKgZf20doh9jnce2OdhCwFSQJCXP8PTmDauqjyTCFh7rX1HrrTqoZUWuCIvDqgFJIdYNUQQlmTIAOFuoLVPqSW7HJWtuzSMhuw6eq0S2mkZ7mtq3cV1mogBSkKvGZh8b4A/UUygRFpcNjp8QGOTuhNG6QmbzotbN0QjjN+lsjr3kNER/BNB3ZYmHGfD/1Ek37jgAklpNHW1TELljUdbsUTw6/oiZ3QSzsSKp3u746tXycao+jaiNMbm3LJ29A3HU8PTIQWRAvcd+4Q3z0KVmMLO8o/iAD4DsQjGSyxN646nuKnhkEA3pXfb+hP6EJb+robqMzAk9F8FgFeMiJVuw4zbctKstFHImVN6x7RDmP6aXFQqoIbpFymNhZYJwEdDDTx7AbfDXisnOx0UkThCzED3SKJ5Bgx3ZV0XDSeWsiP3BkVr1T8VCT8cnwz9kajsyvQuk+rTtC+cCnUVuOLlr8gqeyGiibPCWMtz7Bw/F2wfLdkLp3way X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(66946007)(5660300002)(66476007)(186003)(107886003)(6512007)(4326008)(8676002)(38100700002)(86362001)(26005)(6506007)(66556008)(8936002)(6916009)(44832011)(36756003)(508600001)(6486002)(83380400001)(6666004)(2616005)(2906002)(316002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QYuAZYb7eclfcKPgvST7OH6vuRnKeca/1DOgUw8gWzwEd6Yr+P62nlnPcItC?= =?us-ascii?Q?ygVQ9Q45p4RPmDmk0AQ6xEHw14F6pTIMbcb7NbQqw7KELQXApmtnwfP+BS7H?= =?us-ascii?Q?wFjnKjaepYYwFRwLllBPqnKgGvuuwXUWWIZDobCNqrXwePIBer9+JiTOWyYs?= =?us-ascii?Q?RChOITYDOhVC9r5rUDkJXGriJsBGie03c+uqYNoBdViArINPbLTClCZOwBnY?= =?us-ascii?Q?Kc/EaZm2wtsYxqA1PVI+qQ/36OUljpiFP37LgURe38DPXtLhpj3ojDKOglot?= =?us-ascii?Q?H/HZM/DRbiVyaXZTLkspdQz3YycQ8puyUpCUsfh4lyMPZEuPwiPadKoO8DA3?= =?us-ascii?Q?7Hm+x3rw/RaowhJmAyvYtSD+DN5zXFhYnWE3yktjH7cPn235fpaA5CRvXiT2?= =?us-ascii?Q?DBcQScYyhTbdmIVBITSsP8EQqJojOldor7fDwi9D4ds1c4HH/I1hxv8TSI8K?= =?us-ascii?Q?Rw8U1XU2+qFSPE23z2ckIqBKlve2YowLMJBXgYPEWpkRBQrBSqRV9wN0jmRp?= =?us-ascii?Q?45Pe4u83kJyEEaKDKSeuB9QP9+snHw9SMH/t74xWT6vKmnFZ7FVwLQc67xR7?= =?us-ascii?Q?6+EdDIAykbKQSS3eps6I31fSXLa26JHK/4CFVy8UwbEEvdodeBKK8VTQSiym?= =?us-ascii?Q?ZAv80hkEShSFf0avbvhvXiQNguHWNdKKCXtg53UIQgPzeebmQnopRyp2XZrV?= =?us-ascii?Q?Kt1Uhk7ytUjeQGCZu9qDI+Yf/KTZtIAb4zTzdGSzPVQLF+9XtClV8BpSKY8v?= =?us-ascii?Q?m01GVdKsQMlSRTE69EDN+7nyhSjBGZ1baec05rJz5fGwaZ2uEZPQ8fPKqOQw?= =?us-ascii?Q?gl2mNh4/e2R43YNl4ZeWaYK/vbX9eAeR2lqBahYKlwQboNosTnTo0UfU6OG6?= =?us-ascii?Q?JGqRK5nJgcvSYUOkH6Wd9UBrMXA//rsBuESz43hK7Uui2Ujltl9zZ7bkGIKQ?= =?us-ascii?Q?wxgsBMLAx0wA9kS2VwRAUXSIdu/vo7MNZizm/26YDs3PQbkBYpPYSvLhZzCW?= =?us-ascii?Q?61/kczmsHfKGTwyaBFxcX/XhRq3awGnUJCg73FLKp1DXiio7uuqaTpntbzgk?= =?us-ascii?Q?7+CKGJ9KTSTz+V57zTOeHNxEzTcxpcWbflzfrwvcMJpCyl8E1VUDyFm1HkDg?= =?us-ascii?Q?HoE9F8K5j+kSvx2lhDewlRclX7ZgoNenyYGiQ5tH64KEC7IBbLpIRU1+HoC1?= =?us-ascii?Q?YcDSEG1S/x5P8hTykdJaiq0KIl9QEtWnK2WsfjKWT+SKU+pcBY+sPYmXB5tc?= =?us-ascii?Q?eKIqPM52qCUnQ9pR6kZakp+fByPGf0ozTeoVFwSj01ypyI4HsbSItkuc9U2i?= =?us-ascii?Q?9hswHdu3HBy6TmyIsk9MBsaBbRFlWaUGMd+ia8T6QVYaaTsGGRg1Gx1Y9Qhs?= =?us-ascii?Q?uPBSpNckowSl1EuSabX+r3oyvW2EHaTvjpB5TnKlYgILjkjJ3VzYCV0/Z7vk?= =?us-ascii?Q?tf0e9+KJUmUbRg/iz++yK16E+dDp7ZL5wBw/7p+DfGaLzLSSWOcHfA=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2055ed79-734d-40d5-1a4a-08da0f45254a X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Mar 2022 16:24:48.1463 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: oOTtU45GpmLzF0OCs9AOeCUGU3p0bIOOigW6SQeTxholH89Ly3UWPiVSg7dDzTXvRXZecrIkLxm9RX2w9c3w0Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR04MB3067 Content-Type: text/plain; charset="utf-8" This patch extends the MPTCP test base, to test the new helper bpf_skc_to_mptcp_sock(). Define struct mptcp_sock in bpf_tcp_helpers.h, use bpf_skc_to_mptcp_sock to get the msk socket in progs/mptcp_sock.c and store the infos in socket_storage_map. Get the infos from socket_storage_map in prog_tests/mptcp.c. Add a new function verify_msk() to verify the infos of MPTCP socket, and rename verify_sk() to verify_tsk() to verify TCP socket only. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/bpf_tcp_helpers.h | 5 +++ .../testing/selftests/bpf/prog_tests/mptcp.c | 36 +++++++++++++++---- .../testing/selftests/bpf/progs/mptcp_sock.c | 22 +++++++++--- 3 files changed, 52 insertions(+), 11 deletions(-) diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index b1ede6f0b821..d71616873a3c 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -83,6 +83,11 @@ struct tcp_sock { __u64 tcp_mstamp; /* most recent packet received/sent */ } __attribute__((preserve_access_index)); =20 +struct mptcp_sock { + struct inet_connection_sock sk; + +} __attribute__((preserve_access_index)); + static __always_inline struct inet_connection_sock *inet_csk(const struct = sock *sk) { return (struct inet_connection_sock *)sk; diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index cd548bb2828f..4b40bbdaf91f 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -10,14 +10,12 @@ struct mptcp_storage { __u32 is_mptcp; }; =20 -static int verify_sk(int map_fd, int client_fd, const char *msg, __u32 is_= mptcp) +static int verify_tsk(int map_fd, int client_fd) { + char *msg =3D "plain TCP socket"; int err =3D 0, cfd =3D client_fd; struct mptcp_storage val; =20 - if (is_mptcp =3D=3D 1) - return 0; - if (CHECK_FAIL(bpf_map_lookup_elem(map_fd, &cfd, &val) < 0)) { perror("Failed to read socket storage"); return -1; @@ -38,6 +36,32 @@ static int verify_sk(int map_fd, int client_fd, const ch= ar *msg, __u32 is_mptcp) return err; } =20 +static int verify_msk(int map_fd, int client_fd) +{ + char *msg =3D "MPTCP subflow socket"; + int err =3D 0, cfd =3D client_fd; + struct mptcp_storage val; + + if (CHECK_FAIL(bpf_map_lookup_elem(map_fd, &cfd, &val) < 0)) { + perror("Failed to read socket storage"); + return -1; + } + + if (val.invoked !=3D 1) { + log_err("%s: unexpected invoked count %d !=3D 1", + msg, val.invoked); + err++; + } + + if (val.is_mptcp !=3D 1) { + log_err("%s: unexpected bpf_tcp_sock.is_mptcp %d !=3D 1", + msg, val.is_mptcp); + err++; + } + + return err; +} + static int run_test(int cgroup_fd, int server_fd, bool is_mptcp) { int client_fd, prog_fd, map_fd, err; @@ -88,8 +112,8 @@ static int run_test(int cgroup_fd, int server_fd, bool i= s_mptcp) goto out; } =20 - err +=3D is_mptcp ? verify_sk(map_fd, client_fd, "MPTCP subflow socket", = 1) : - verify_sk(map_fd, client_fd, "plain TCP socket", 0); + err +=3D is_mptcp ? verify_msk(map_fd, client_fd) : + verify_tsk(map_fd, client_fd); =20 close(client_fd); =20 diff --git a/tools/testing/selftests/bpf/progs/mptcp_sock.c b/tools/testing= /selftests/bpf/progs/mptcp_sock.c index 0d65fb889d03..a58cd24da777 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_sock.c +++ b/tools/testing/selftests/bpf/progs/mptcp_sock.c @@ -3,6 +3,7 @@ =20 #include #include +#include "bpf_tcp_helpers.h" =20 char _license[] SEC("license") =3D "GPL"; __u32 _version SEC("version") =3D 1; @@ -24,6 +25,7 @@ int _sockops(struct bpf_sock_ops *ctx) { struct mptcp_storage *storage; struct bpf_tcp_sock *tcp_sk; + struct mptcp_sock *msk; int op =3D (int)ctx->op; struct bpf_sock *sk; =20 @@ -38,11 +40,21 @@ int _sockops(struct bpf_sock_ops *ctx) if (!tcp_sk) return 1; =20 - storage =3D bpf_sk_storage_get(&socket_storage_map, sk, 0, - BPF_SK_STORAGE_GET_F_CREATE); - if (!storage) - return 1; - + if (!tcp_sk->is_mptcp) { + storage =3D bpf_sk_storage_get(&socket_storage_map, sk, 0, + BPF_SK_STORAGE_GET_F_CREATE); + if (!storage) + return 1; + } else { + msk =3D bpf_skc_to_mptcp_sock(sk); + if (!msk) + return 1; + + storage =3D bpf_sk_storage_get(&socket_storage_map, msk, 0, + BPF_SK_STORAGE_GET_F_CREATE); + if (!storage) + return 1; + } storage->invoked++; storage->is_mptcp =3D tcp_sk->is_mptcp; =20 --=20 2.34.1 From nobody Mon Apr 29 13:01:42 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1f08:b0:4ab:e69e:bfc1 with SMTP id d8csp1769140pit; Sat, 26 Mar 2022 09:25:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxuz+iOUDm883oPqzswSpPlR27FZ+10KUn5TyavVlmniEehV5G7ovZuiinDy95eIx7786gg X-Received: by 2002:a17:902:854a:b0:14e:e053:c8b3 with SMTP id d10-20020a170902854a00b0014ee053c8b3mr17941431plo.8.1648311902926; Sat, 26 Mar 2022 09:25:02 -0700 (PDT) Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id n125-20020a632783000000b003816043f01asi5951825pgn.527.2022.03.26.09.25.02 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 26 Mar 2022 09:25:02 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4461-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) client-ip=2604:1380:1000:8100::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b="hygJ0/za"; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4461-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4461-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sjc.edge.kernel.org (Postfix) with ESMTPS id 3F7C83E0FFF for ; Sat, 26 Mar 2022 16:25:02 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 483D43235; Sat, 26 Mar 2022 16:25:01 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (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 7D1F4322E for ; Sat, 26 Mar 2022 16:24:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648311897; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/0eLDAKqcNcgdhHWAxbkxu2TREA58zR02q92QryspHk=; b=hygJ0/zaB8DSb8eh8vChlzq1V0zilRl7j+o45QkHoVjxKEIQzlpViuXOA/btZuse44JRlt WtB74ji1rAx/NSTNsEipQ42l7u688PZYlU1tfm0ZfMeNFoQq6mh/c+WASNW9z5E24Zi30b 5ZL+rSAwXmQjo3gisy+57kAK9EvpO30= Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04lp2059.outbound.protection.outlook.com [104.47.13.59]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-13-Chly5Sk4PY6O56aumfEzKQ-1; Sat, 26 Mar 2022 17:24:55 +0100 X-MC-Unique: Chly5Sk4PY6O56aumfEzKQ-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fUujxutEk/moUajvNiTmTAvK8GhqfEsQiEPqOcv+MjjcTF9F/6rAdNflcipSB9whP9yBsgYBPmUznID0x3oscrvWPQuK6L0PCMnBW52v6UYzCAbVQBUs1lVwfoefPP0Jk1v4RrRApUzjrs42kpAqq7nFMx1FXaIowWUtmfqSx/IRImWv3NGsxb1cygRV/XgzMHaq53/HL/n4eFKc/7BNomECURTyHiwxvUdVPjNCOfU3TEutW2UHxvLdsZi9ZuegaYNnP4nPnCZYu/H1AigdZ1aVEv/0EyfjgoMDpWn9I6rXclDLP1VnSKyZPWMmzVwQ9Ffe0MLmf9xJQQdyz5HGlA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=fW4X2bHq1l9C3gmE9lymDxT7IcazF1WzJES0GCoz0OA=; b=YXvoMiCTVxIN2eXlwwsD+e8s7Pok5oMsn/ptEJliGk+OstoI1IVx9F/hhvYzwoOoQ3Ym5ZON0zXYq87tw7YkoKgWZG+shrobqLz5uUoH/CkAsszdE6V0d8RVNVRr4q44BR6TAxUMOHoaSEkW1gR4strYQWUkriyOQ0LTNlYg8XCzNFpFzxNRqx7j2I3k1RvIoFAm0S1r8z9KaildsHbvOZq403uuyO9ZjQ0P1DBNOxtwprlf3wnoDg99kZ6vEGwB3slP7qvplomIWciNcx06MwSnkgOfQmGB/dIcYZqYmKD1+Z4MNbqRAgqCgkh1YMmEho8Jd27d7WRWzDznVfzGsQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) by HE1PR04MB3067.eurprd04.prod.outlook.com (2603:10a6:7:18::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.17; Sat, 26 Mar 2022 16:24:54 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05%6]) with mapi id 15.20.5102.022; Sat, 26 Mar 2022 16:24:54 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Matthieu Baerts Subject: [PATCH mptcp-next v14 4/6] selftests: bpf: verify token of struct mptcp_sock Date: Sun, 27 Mar 2022 00:24:31 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0178.apcprd02.prod.outlook.com (2603:1096:201:21::14) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 29ebcc75-e80f-4bfb-4eba-08da0f452920 X-MS-TrafficTypeDiagnostic: HE1PR04MB3067:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6/XIhCNcFo7VspsMDoP/yFDdDEC+pajwQR0mqphSHsBJ0V/JvvDdVkDdbQNWgYrfKO1R1fmJ2TlejrCAyVpmJ6Nye/RGwGrFESo7kUkxYuap6plh2VLx073Di+JP0YIfL2FfaUaTXdiK2i6vJ1hfS+sm/nPwO4mx8mgskXkfRRo3Yn+xrxIWVichAcyDJoYdOaPZPF4xBujc8u6YKe6eOGMNSEkV/7kNBXN+yul+pbWvhrry+nQ+KPCEzIfvvDN4NlucFWAIpwdTw6fLKXl5nIdoqJBx79ON4/cCeNr5OANxY1FOKgsco5SLjvdufRTH7Y5oPBsQnvFsp/Nb3R3BdiLGIoQFlwUs0zb/m5Ji/ptsom16IbqJ80+gcSMBBWNY8TXp1kg2Rh+JTlKT/O3N4j2/9yUvtAdLjyKQI622ieQ/l/1SBa33GiayPmvszt+T4rc5chLstmGi6fZdLTt7FH5q6HFOlDWib2SwTDFaZafeDIQ/TANKAoGPK0tNDoak/GatEXEfygktFSn8uLRKtXUAAN2U1h31jhVtpeLYuz0Ly9AdoZM0HD63qFmDUXjh6sVhx3Uy7qFRpWktatnnbjcHG8k1oi3xzjJB0f0UlgX9d+SeQX+JwXhqb6GaJAmu1miIZns0YDBdJrMdK1LOt4bmR9a1oMSItcZXVOs9+V9VH05FPXnGGQ4jLBHEiZmW5tp+YXPZmNN+XN1YVA4GcQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(66946007)(5660300002)(66476007)(186003)(15650500001)(6512007)(4326008)(8676002)(38100700002)(86362001)(26005)(6506007)(66556008)(8936002)(6916009)(54906003)(44832011)(36756003)(508600001)(6486002)(83380400001)(6666004)(2616005)(2906002)(316002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Eu9DGiFw6xeHaI41lCuSs5BDFkKFPD4IhIT/EovszDY0LozfHxnDEI7QHvsr?= =?us-ascii?Q?DbLcYmleg6QvG3eP/PJCqoiwa932hE9/Gp0nQ2KomjYA4tX3Y0aLS2I7JmuX?= =?us-ascii?Q?iRD5md6yDOPeUSA6Ph5fk+mWqzt9KIaBdnyPfPDpExJmLdAMy3g9sDJCeTBm?= =?us-ascii?Q?EA6wNaFchhB7t8wTGiKO7iFb6TnR6hij7c2mBq1BY7Q/aXwtA2NnYE8pkv3x?= =?us-ascii?Q?OEnvTtshX1lRKnTp9+FGR9oV+68qa4gNbg/UIJk0IZN3CSqtV6eUVdZ1KKi9?= =?us-ascii?Q?6Ly93H9QcEmOXX62LElLZ59V8MpOC4W31Hy4w1q3u457AcY0VuUppSjJDobo?= =?us-ascii?Q?emjRA9APM9UBK9/TO/k49pkZm038Df9n66uzUyaUK1tnUOZlhQVWcU23uPmU?= =?us-ascii?Q?vwYJgyS+a2yfHyddI6p18CX9TyV9ecyuFVoOoe1CCbUUzGhVFU5r0pxeezHe?= =?us-ascii?Q?7Lx+eeTLBv/N+9yn7wDlvGdWo/zkOq8RnlwQw2EezJBYEaEhnoJOBEV/2prs?= =?us-ascii?Q?TqlWYnbwV5tNgu65hc8ur6/BDzNqgktheH7GA86JyAga/gOof38BvDC8u5/p?= =?us-ascii?Q?YrlxGyRp4jDHF9rK1leTcPErxmHQTR6m2ZTnZsQ855cqDwA5mNEsHK9rQ3cZ?= =?us-ascii?Q?MEfJLo1Rvok2MAvLh8ukp/pIBW+aXuadGSAROWPRZ3rEzYh713QBlkT3y5e4?= =?us-ascii?Q?lVdFZUGVP8n7V4GQP6Eha3TklbGxCN6GL26195EdKec/97YzPhZnCVIdo78o?= =?us-ascii?Q?mqdx7oyovXoFYDzO3htwRPkxFRCRMRRHuTd99dqs0BDM5r/LpZGLBiUmC0Jd?= =?us-ascii?Q?Cej4ofJ5zRmTI9TRAFmVUGnm08XBxjrKi8iCSOXjF6Fzm9pj2CWc5CCqg75Y?= =?us-ascii?Q?USxZyArwwMT/xctRZpQ1Yjb0Xfy44Ru85Wklg8P10FxCF2VG13WbKBamxG4Y?= =?us-ascii?Q?3uKMmFGcRazQzaJERcWB6gL1sa4L8AE8Exia4VV8sE8g+aoZvBkz2MWihHyt?= =?us-ascii?Q?PQFSk2seVLva28bdgOC6dK32sYhzykGxcMI3F5vEhSSTNkz1KCN4qCGmp6GL?= =?us-ascii?Q?MZnNidcYF3g1YIT0AEEKKb8Gau2jVy3cxo0h8wT8YlhxzvkB0+uryW7YJBU3?= =?us-ascii?Q?2gkRp7xWrSWrmo7tvadu5qcil5O+m0MuEvOD6FIBGLy8iDauzKmUFK0Az6uW?= =?us-ascii?Q?EAGqJ7s2obpcVhONsp+lQ41AIMIjYiw/mra7jf8m8RhE+BJIqQNXUTddfru5?= =?us-ascii?Q?Nj3AEuvSzsNNVvGscFsCE7vnLwHlGWZd7lEoifkj/vq7xporul6YM4a+VW3x?= =?us-ascii?Q?d55yJeACkUjqn0WsQ5OdAVKZ5dDw0haeaxtottZ2IbiOUnbystQgTeGRHflG?= =?us-ascii?Q?FyyKAvaz/QMhSO09viuXwNRkjUTXGASeAjBRGjMwV+MHQkM0/D0jnKNuhdQ/?= =?us-ascii?Q?bDkuJKVoSzI8JZviGOyz2eE1k2wljxmFtSHixRiXQLLPt4YJ/KdyJQ=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 29ebcc75-e80f-4bfb-4eba-08da0f452920 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Mar 2022 16:24:54.4427 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: oUvDBQMiVd2kjFcXHo5UMI6ke8C82QmVdHCRFHGB05fGxfHxYTjaeAqdxjc0nuGUNVrOb3b8mAHcnxIsKUt9TQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR04MB3067 Content-Type: text/plain; charset="utf-8" This patch verifies the struct member token of struct mptcp_sock. Add a new function get_msk_token() to parse the msk token from the output of the command 'ip mptcp monitor', and verify it in verify_msk(). Acked-by: Matthieu Baerts Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/bpf_tcp_helpers.h | 1 + .../testing/selftests/bpf/prog_tests/mptcp.c | 66 +++++++++++++++++++ .../testing/selftests/bpf/progs/mptcp_sock.c | 5 ++ 3 files changed, 72 insertions(+) diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index d71616873a3c..9ea6687c8f4d 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -86,6 +86,7 @@ struct tcp_sock { struct mptcp_sock { struct inet_connection_sock sk; =20 + __u32 token; } __attribute__((preserve_access_index)); =20 static __always_inline struct inet_connection_sock *inet_csk(const struct = sock *sk) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 4b40bbdaf91f..c5d96ba81e04 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -8,8 +8,11 @@ struct mptcp_storage { __u32 invoked; __u32 is_mptcp; + __u32 token; }; =20 +static char monitor_log_path[64]; + static int verify_tsk(int map_fd, int client_fd) { char *msg =3D "plain TCP socket"; @@ -36,11 +39,58 @@ static int verify_tsk(int map_fd, int client_fd) return err; } =20 +/* + * Parse the token from the output of 'ip mptcp monitor': + * + * [ CREATED] token=3D3ca933d3 remid=3D0 locid=3D0 saddr4=3D127.0.0.= 1 ... + * [ CREATED] token=3D2ab57040 remid=3D0 locid=3D0 saddr4=3D127.0.0.= 1 ... + */ +static __u32 get_msk_token(void) +{ + char *prefix =3D "[ CREATED] token=3D"; + char buf[BUFSIZ] =3D {}; + __u32 token =3D 0; + ssize_t len; + int fd; + + sync(); + + fd =3D open(monitor_log_path, O_RDONLY); + if (CHECK_FAIL(fd < 0)) { + log_err("Failed to open %s", monitor_log_path); + return token; + } + + len =3D read(fd, buf, sizeof(buf)); + if (CHECK_FAIL(len < 0)) { + log_err("Failed to read %s", monitor_log_path); + goto err; + } + + if (strncmp(buf, prefix, strlen(prefix))) { + log_err("Invalid prefix %s", buf); + goto err; + } + + token =3D strtol(buf + strlen(prefix), NULL, 16); + +err: + close(fd); + return token; +} + static int verify_msk(int map_fd, int client_fd) { char *msg =3D "MPTCP subflow socket"; int err =3D 0, cfd =3D client_fd; struct mptcp_storage val; + __u32 token; + + token =3D get_msk_token(); + if (token <=3D 0) { + log_err("Unexpected token %x", token); + return -1; + } =20 if (CHECK_FAIL(bpf_map_lookup_elem(map_fd, &cfd, &val) < 0)) { perror("Failed to read socket storage"); @@ -59,6 +109,12 @@ static int verify_msk(int map_fd, int client_fd) err++; } =20 + if (val.token !=3D token) { + log_err("Unexpected mptcp_sock.token %x !=3D %x", + val.token, token); + err++; + } + return err; } =20 @@ -124,6 +180,7 @@ static int run_test(int cgroup_fd, int server_fd, bool = is_mptcp) =20 void test_base(void) { + char cmd[256], tmp_dir[] =3D "/tmp/XXXXXX"; int server_fd, cgroup_fd; =20 cgroup_fd =3D test__join_cgroup("/mptcp"); @@ -141,6 +198,13 @@ void test_base(void) =20 with_mptcp: /* with MPTCP */ + if (CHECK_FAIL(!mkdtemp(tmp_dir))) + goto close_cgroup_fd; + snprintf(monitor_log_path, sizeof(monitor_log_path), + "%s/ip_mptcp_monitor", tmp_dir); + snprintf(cmd, sizeof(cmd), "ip mptcp monitor > %s &", monitor_log_path); + if (CHECK_FAIL(system(cmd))) + goto close_cgroup_fd; server_fd =3D start_mptcp_server(AF_INET, NULL, 0, 0); if (CHECK_FAIL(server_fd < 0)) goto close_cgroup_fd; @@ -148,6 +212,8 @@ void test_base(void) CHECK_FAIL(run_test(cgroup_fd, server_fd, true)); =20 close(server_fd); + snprintf(cmd, sizeof(cmd), "rm -rf %s", tmp_dir); + system(cmd); =20 close_cgroup_fd: close(cgroup_fd); diff --git a/tools/testing/selftests/bpf/progs/mptcp_sock.c b/tools/testing= /selftests/bpf/progs/mptcp_sock.c index a58cd24da777..afacea5ad9ca 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_sock.c +++ b/tools/testing/selftests/bpf/progs/mptcp_sock.c @@ -11,6 +11,7 @@ __u32 _version SEC("version") =3D 1; struct mptcp_storage { __u32 invoked; __u32 is_mptcp; + __u32 token; }; =20 struct { @@ -45,6 +46,8 @@ int _sockops(struct bpf_sock_ops *ctx) BPF_SK_STORAGE_GET_F_CREATE); if (!storage) return 1; + + storage->token =3D 0; } else { msk =3D bpf_skc_to_mptcp_sock(sk); if (!msk) @@ -54,6 +57,8 @@ int _sockops(struct bpf_sock_ops *ctx) BPF_SK_STORAGE_GET_F_CREATE); if (!storage) return 1; + + storage->token =3D msk->token; } storage->invoked++; storage->is_mptcp =3D tcp_sk->is_mptcp; --=20 2.34.1 From nobody Mon Apr 29 13:01:42 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1f08:b0:4ab:e69e:bfc1 with SMTP id d8csp1769182pit; Sat, 26 Mar 2022 09:25:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyqVpI3Dlg/9l4SEJ79Th8PLzB2tz2/imiCv2pjEpn2mmcJe+v9/FcY/FRwpr2yc8RY/vNI X-Received: by 2002:a0c:d688:0:b0:42c:3cb0:3923 with SMTP id k8-20020a0cd688000000b0042c3cb03923mr13943734qvi.69.1648311910080; Sat, 26 Mar 2022 09:25:10 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [147.75.197.195]) by mx.google.com with ESMTPS id v62-20020a37dc41000000b0067e4be239aesi3246844qki.499.2022.03.26.09.25.09 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 26 Mar 2022 09:25:10 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4462-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) client-ip=147.75.197.195; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=jdXd4RFB; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4462-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4462-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ewr.edge.kernel.org (Postfix) with ESMTPS id A90341C0EF3 for ; Sat, 26 Mar 2022 16:25:09 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 433683235; Sat, 26 Mar 2022 16:25:08 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.111.102]) (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 788A1322E for ; Sat, 26 Mar 2022 16:25:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648311904; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=W1EaMLIu5lwEbnkHkNepVmgxpOOR5gMbW+DwPNUFRwA=; b=jdXd4RFB626thvKaCNV8lX1vebfuE0CpHAJdxtCHOigtqzioaDNgvpzn0TDMN73jqYQbQ0 6pYHRNKuHXkQvdYQTAzFLIndL15fBctKUopQOn2afs3aCeclC2fUwUMTtRZ4Ny5kzhqXRl gTC40draTh9MXv6uTdiRXf4lW44rOqY= Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04lp2053.outbound.protection.outlook.com [104.47.13.53]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-22-JqX4TTRXMUGXU5SH83qnNw-1; Sat, 26 Mar 2022 17:25:03 +0100 X-MC-Unique: JqX4TTRXMUGXU5SH83qnNw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=g7BNxcRSgNmL25maK4E6ImJx7M1VGFW320RoK8WYz/Cfd0ghPfdLGMdwBFYED1e8JG2uK/BQsHIq6vuw0BCsJCVGYnQyqARof9U1FcJs5qJi+5387M85o6cGwwXjBfZNkk2HtBkvRUisV6HUzZhry2682VKXi3g34cWJtcOu+3HRT/R7D+P1Lydi7LHynyTvho90jptuunGxBkU40kTaBAzZq8QhLdlwSnk7tRRRKKNTrYsrfjo2i8H0SfdK4dj5lVE4G0CCYDsT5T4NsVqMN2/krUw82GQUqS70WZzK4vaHdNQm7zOBrk3BVK+E1mB4OlD5QdPgX9BWvcohxB7Gkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=IMkoJakN9o4vWWLxjCeHTpRI4RPIUMsPrFR2xNf5yOc=; b=KQlgSKvHLFsTuXIcRzEHhAXdggOP564f/HS8+NZW4GQ+NzFKIrky9P/+3V1nzyylvrG2H5zgoVTfUbzr1l1S/2VNWHD6BZqPqB5So+2jHOjpqRZ9O1ECTsQoAZFPeHDGllHeHgNi2mlOdlT61s1Jd+92UtL2h3+I5qaNc6w7ji2NgDD2OPkkIDJnMZOm49p8QWtvUcSGcjXAX0BtS3yM1cqUOAhbmhLsyTwM2ck/LZS2fmXQ7XJWtRtFzJxoBztgwTLjq8WAAWYn2cJ8b2rzUxa9z8xj3h4Xv+ktUsO2Qz5C7HQdWKQDvTrlEIH/rypP8IeMfdIulcIlp4meww9+bw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) by HE1PR04MB3067.eurprd04.prod.outlook.com (2603:10a6:7:18::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.17; Sat, 26 Mar 2022 16:25:02 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05%6]) with mapi id 15.20.5102.022; Sat, 26 Mar 2022 16:25:02 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v14 5/6] selftests: bpf: verify ca_name of struct mptcp_sock Date: Sun, 27 Mar 2022 00:24:32 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0196.apcprd02.prod.outlook.com (2603:1096:201:21::32) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0ae5079e-9877-41f7-1049-08da0f452dec X-MS-TrafficTypeDiagnostic: HE1PR04MB3067:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: c8knFQ9ILpsR6F8b+9uIdoedz1OU7ICSFpwWqG5hiMFA5UQ/Od4AHrSBBA/WWou7QP2P5uYfOkHtyMHh89ooXvc8IbrC2HL6I4O2frOAdRagwi2cbrUwXbfnhrXxswRP3ENSRF8GJkoOhY6I0FLWP8nIqxKHWwtGsVR+hPReAZ5pIV09dh23UuR2wF6Hu77FyiaUU9QMaYRqu4dDgfYDC20ZzgR5+5jpJcF+D1ZCbjhqrx6aBrMYBpB71qVI1Rrjh6/aILhmKka6J8F0ntxll8SBzu/SVEzMAbRkaPGsHQZp7nsRLDN3mAs2fbj5Lh7nEn0mCrR2AXdPDLn3P28j4c7VnUpU9pJqXJvyFLwgV51Zla+8wexdn/FAfc6D6a+1TDaqQLuftJgLBUXTHBIyAcEyjbEsXDFHHeTw68qyXR+XBOSN7ROZ+6Vgq62GtEWZNslO/rsQ06OZqQerBxudZsTqdokVQh4W4dhe0S/TlnDJg31oDvWD49soLH0KNJYURccYem6CJVRxa6FUlavvvRKtI5QgRVGUt/LeeFuq1eH9WO7QiaRiww+IugX+1BtuEZBjKNKTOI7/GsnzXOWYp3SuPxtlAgS5/UM9aJ9olVgy7o7SCNXKjKwFAtgnYOb4j5O0nYMgUNjPbUhmTD8lLq+Bi3Qe8peAb5Eyezk3VfYIqkNTfhtc8FFpF18M7C8rHIAMm0ae4dGeYSI3BHSfDQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(66946007)(5660300002)(66476007)(186003)(107886003)(15650500001)(6512007)(4326008)(8676002)(38100700002)(86362001)(26005)(6506007)(66556008)(8936002)(6916009)(44832011)(36756003)(508600001)(6486002)(83380400001)(6666004)(2616005)(2906002)(316002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?6MmN/qqTGFlne8r0l/VJhcPwGzzrj89V84NkmsFOJYOtPBhyom15yGKupN6I?= =?us-ascii?Q?qEw6vCBU6GQp5gN/Y1ulLSo4j+8ihJQY109l7fu9l7epvdVR1dM30KcN9oqA?= =?us-ascii?Q?1hWMBZtlNhTkRZLNyQoa9i9JNOAdDpI7I5WRRU9u4Ck4oMkEgvG31/cK9tRR?= =?us-ascii?Q?WlwDOjaZp2k0BbAw+MJCJ0FCqg2fbf1/dUhjKDjZ8vfdcHXy3KNXkPunjQWi?= =?us-ascii?Q?a4psYiZYywE85rI7dojtdmDFotWNwpVfduKabK6MOjMh5TeyE5CStgzv0A+B?= =?us-ascii?Q?i/ktwfYlSKtxQozhJRZqOtmk+UdlyNVVlFKXgr4/Uz4z2vI9asLASSzWvqc9?= =?us-ascii?Q?KSyBMm2c6nDBfRkzcvWZjyUGkDxH5SCy5c/VpM/qxJKK83BKlNSdxjk+J16y?= =?us-ascii?Q?rI6LMRGr0AWsvmpagdC1A8Afkv2xlksWCzoGMUJ04CjHiY6fSTTVHcXLjIgm?= =?us-ascii?Q?ZlsCbiE3EKMMEMTDvs9on/BWQic7UFmIMw6KeyrjX1lXzSvt+09LP4oHz0Pv?= =?us-ascii?Q?dp1A3kXDsptKX5x8QSrm+nYx6cR+fsuP5tiqaqeA5a367f8iooPUSUBfJb7A?= =?us-ascii?Q?djY0+cEsziAC7ZpF3WEDgKVFY/39JjnPQz8kx36Celw3oSP50IhMr8kjDI1y?= =?us-ascii?Q?jiYCPmdyT4Rb8TmTlO/Ur6PvZ6+k+bfUp5nTEM7omTF512f9BbfO/1YhEAeT?= =?us-ascii?Q?DTVOCWo+G4RQ3Mg3igkxE9JMbIX08tNda+OrDCnJJnlqhT0IC3uok7z/7wOy?= =?us-ascii?Q?pLew2OKoi+LtmnOLyDDrunDnFJPQkEyQq8hrxdQf+se+UL9MFJ8Q3c2Ydy4w?= =?us-ascii?Q?A1Q2oBOsxOt0lnUVndYzZZxIrJsYb1WQSy4DhnjrgqhyY5wsO800RysjxbHf?= =?us-ascii?Q?3A70lTXn77+VMcnagaSQ8omV8iNb3wk6OJEk4ytOhqddJrtYVMjU4YON05vF?= =?us-ascii?Q?8lIlOdOdtnbOerOpXwrRzFBr/mbanj8eGPYw8aUCj1WSTAVjiuVyp6lmVqjd?= =?us-ascii?Q?drzaMESZrt5wbPT8WudVsrk5zgz37PWxdPyT+I02P36mBP+MTfmOfylFT1jk?= =?us-ascii?Q?3IXyIlW6XoXtwoW03hOGIV4BpKQjp1howUU4k/W/sbeGTb97/gp0eU9VlguK?= =?us-ascii?Q?TJdcQ8DpEsreFIjn77nNQP/OQaawKE5PDQQL5uJBsSJ8MX2eYY83Al6m2XyS?= =?us-ascii?Q?tEf+XlxkWzuZvJiSiCU3jXjDfONx4h4McM28hZ4b36fyYxzfxu6OPeV9DoQX?= =?us-ascii?Q?Yw34QCSgkzUgMgElzs8lkdDM6XnBu2Vl3fBMpDhTPgGG3lyrrSz+Use48HmK?= =?us-ascii?Q?OaFq0YHSSTcgbGpUAWlNcV+lCdH/6hOHY0hWPXpNfo6U70SKQY4j/olINIi4?= =?us-ascii?Q?Z5tnXNDtHurEF8KwxllBPgSjAPTivko7Z2HXAWmoFZ8ThbMmDx1nYh3FI8Zq?= =?us-ascii?Q?KHJk4dGkdnsY3CksReJ7g7ll2dM8QXmjJiZbMFNUfSFvTwneDUOcCg=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0ae5079e-9877-41f7-1049-08da0f452dec X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Mar 2022 16:25:02.4576 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /0+Aun0tI0GXVc6IaHUEOEusWYnUDaUnDBN8W5BBOB0B+JhD5pjRxacoCXURG2IbcBevH8XpNdjFddXEKxG4EQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR04MB3067 Content-Type: text/plain; charset="utf-8" This patch verifies another member of struct mptcp_sock, ca_name. Add a new function get_msk_ca_name() to read the sysctl tcp_congestion_control and verify it in verify_msk(). Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/bpf_tcp_helpers.h | 5 ++++ .../testing/selftests/bpf/prog_tests/mptcp.c | 24 +++++++++++++++++++ .../testing/selftests/bpf/progs/mptcp_sock.c | 4 ++++ 3 files changed, 33 insertions(+) diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index 9ea6687c8f4d..bebe382bcc7a 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -16,6 +16,10 @@ BPF_PROG(name, args) #define SOL_TCP 6 #endif =20 +#ifndef TCP_CA_NAME_MAX +#define TCP_CA_NAME_MAX 16 +#endif + #define tcp_jiffies32 ((__u32)bpf_jiffies64()) =20 struct sock_common { @@ -87,6 +91,7 @@ struct mptcp_sock { struct inet_connection_sock sk; =20 __u32 token; + char ca_name[TCP_CA_NAME_MAX]; } __attribute__((preserve_access_index)); =20 static __always_inline struct inet_connection_sock *inet_csk(const struct = sock *sk) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index c5d96ba81e04..c6bdd9c5f126 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -5,10 +5,15 @@ #include "cgroup_helpers.h" #include "network_helpers.h" =20 +#ifndef TCP_CA_NAME_MAX +#define TCP_CA_NAME_MAX 16 +#endif + struct mptcp_storage { __u32 invoked; __u32 is_mptcp; __u32 token; + char ca_name[TCP_CA_NAME_MAX]; }; =20 static char monitor_log_path[64]; @@ -79,11 +84,22 @@ static __u32 get_msk_token(void) return token; } =20 +void get_msk_ca_name(char ca_name[]) +{ + FILE *stream =3D popen("sysctl -b net.ipv4.tcp_congestion_control", "r"); + + if (fgets(ca_name, TCP_CA_NAME_MAX, stream) =3D=3D NULL) + log_err("Failed to read ca_name"); + + pclose(stream); +} + static int verify_msk(int map_fd, int client_fd) { char *msg =3D "MPTCP subflow socket"; int err =3D 0, cfd =3D client_fd; struct mptcp_storage val; + char ca_name[TCP_CA_NAME_MAX]; __u32 token; =20 token =3D get_msk_token(); @@ -92,6 +108,8 @@ static int verify_msk(int map_fd, int client_fd) return -1; } =20 + get_msk_ca_name(ca_name); + if (CHECK_FAIL(bpf_map_lookup_elem(map_fd, &cfd, &val) < 0)) { perror("Failed to read socket storage"); return -1; @@ -115,6 +133,12 @@ static int verify_msk(int map_fd, int client_fd) err++; } =20 + if (strncmp(val.ca_name, ca_name, TCP_CA_NAME_MAX)) { + log_err("Unexpected mptcp_sock.ca_name %s !=3D %s", + val.ca_name, ca_name); + err++; + } + return err; } =20 diff --git a/tools/testing/selftests/bpf/progs/mptcp_sock.c b/tools/testing= /selftests/bpf/progs/mptcp_sock.c index afacea5ad9ca..6e7d2abf6ce3 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_sock.c +++ b/tools/testing/selftests/bpf/progs/mptcp_sock.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 /* Copyright (c) 2020, Tessares SA. */ =20 +#include #include #include #include "bpf_tcp_helpers.h" @@ -12,6 +13,7 @@ struct mptcp_storage { __u32 invoked; __u32 is_mptcp; __u32 token; + char ca_name[TCP_CA_NAME_MAX]; }; =20 struct { @@ -48,6 +50,7 @@ int _sockops(struct bpf_sock_ops *ctx) return 1; =20 storage->token =3D 0; + bzero(storage->ca_name, TCP_CA_NAME_MAX); } else { msk =3D bpf_skc_to_mptcp_sock(sk); if (!msk) @@ -59,6 +62,7 @@ int _sockops(struct bpf_sock_ops *ctx) return 1; =20 storage->token =3D msk->token; + memcpy(storage->ca_name, msk->ca_name, TCP_CA_NAME_MAX); } storage->invoked++; storage->is_mptcp =3D tcp_sk->is_mptcp; --=20 2.34.1 From nobody Mon Apr 29 13:01:42 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a05:6a06:1f08:b0:4ab:e69e:bfc1 with SMTP id d8csp1769220pit; Sat, 26 Mar 2022 09:25:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJybYxoWStmWkXVTNJdsbhp4aj6BQkMPCCSzo8KNwj8/pQf4JdaU+IDJ/xPs9mCupaMCe8yw X-Received: by 2002:a17:902:f70b:b0:14d:643d:9c99 with SMTP id h11-20020a170902f70b00b0014d643d9c99mr18031377plo.18.1648311916067; Sat, 26 Mar 2022 09:25:16 -0700 (PDT) Return-Path: Received: from sjc.edge.kernel.org (sjc.edge.kernel.org. [2604:1380:1000:8100::1]) by mx.google.com with ESMTPS id d17-20020a170902aa9100b00153b2d16596si5739153plr.414.2022.03.26.09.25.15 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 26 Mar 2022 09:25:16 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4463-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) client-ip=2604:1380:1000:8100::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=EsgAHPE0; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4463-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4463-wpasupplicant.patchew=gmail.com@lists.linux.dev"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sjc.edge.kernel.org (Postfix) with ESMTPS id 7B1703E100F for ; Sat, 26 Mar 2022 16:25:15 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9A5413235; Sat, 26 Mar 2022 16:25:14 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (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 13434322E for ; Sat, 26 Mar 2022 16:25:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648311911; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BxecItEqaHRqPkSjaehv012GbF94O1r8zqUsIyHDLyE=; b=EsgAHPE0IkJL13Jzldf0qJgYnFBF696/heTM4UixoYx5Z9VfAOke0nbOAJxhEyZsTYASQH aw+hzge9/eI0TjsymFdIo32tokBhiQdGvSwV9ca/mhGa7/FiWJyDeectQtEtZ0MVj52kfp Lx29nm5YyKT5kvm/1/rI4VrFcEtRFZc= Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04lp2054.outbound.protection.outlook.com [104.47.13.54]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-15-_l25fbvbNniWqFjl7O1CxA-2; Sat, 26 Mar 2022 17:25:09 +0100 X-MC-Unique: _l25fbvbNniWqFjl7O1CxA-2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dgiEf3PP+GYzy8OTEOnB0Xsi+bST7HF1v/9uBH3uGY5QMdytaJL61rc5pa7NtxmsCyuKzgQZex8dnuT3ABunf2/D0cveiR80BbM3MzyWNTqvJ1pNYhwGd+OzOAKY7faqQGw+h/81ten8wyLzxmZQ67Oos+Y981cR1gTkQIh1CWBT4/QyZ7/9lOIQYBrWHy1PBpOKLx18unPGofvWsMgsERVtS/DLq0ll3oYq/6R+DpvLGBjCXqqAMHxo3Ml7WuhJuVGBs31uWclVF01JoER+rv/Ftw7OtkR2yqROe8/Ru2PCf1J7NwM0nh7v9cdYls1KcATEbEH8JHzwxEDdUOHJRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=CRIN6lj8uObzTcrzhwJczA2Xp6t2aDarhFeJe1tI99A=; b=MjKvQXRnj4yzPNjPZYXBYK1U4qMZ17D+J1Scnag3QPv+sd5IhZxoYRtMj5xmJfsHpmPsmy0wOxWZMGciSiSmcjyaMKMP9Gr+FJbJS8V9g93miughf4IOHAaEuebsW6p655lOZHfH5AiLpZ7Bs9ZJv8916z6Ka3V/ympCYqAJGhRdhdItiFhGyndzhkT2HfEYR6Ruqra2IbF0UXEUeoa8kVt3dJZmw+sgkFRSUp3Qltp9DRuPTuy5AeKFUYB9gmYwMQRINlFHj1LZyWTA1qyNp/lfs+crkHjeURjJVn+m/gRGEf+eFfKxcGFIJKP78dt6Y3tO+PjVwFc6A6eV7ReMaA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) by HE1PR04MB3067.eurprd04.prod.outlook.com (2603:10a6:7:18::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.17; Sat, 26 Mar 2022 16:25:09 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::b110:cb51:e09f:bb05%6]) with mapi id 15.20.5102.022; Sat, 26 Mar 2022 16:25:09 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v14 6/6] selftests: bpf: verify first of struct mptcp_sock Date: Sun, 27 Mar 2022 00:24:33 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR02CA0175.apcprd02.prod.outlook.com (2603:1096:201:21::11) To HE1PR0402MB3497.eurprd04.prod.outlook.com (2603:10a6:7:83::14) Precedence: bulk X-Mailing-List: mptcp@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fcafe986-9ed3-4195-94a6-08da0f4531b1 X-MS-TrafficTypeDiagnostic: HE1PR04MB3067:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NB24Uf28bYMKgqXP0qKLNrXvLMoQSu+H4GI4NUyGy6KaqXadOCVFUP5l/12ywjMoflJJlC16Md7V1bxlsimgH0T1GLplQDdy3VZCODZGnk27gbvDvbHBOi7CkunvTUMuKvPO9//6LFyO/Nj3gHFJgx15CCLU/GS7DYSWJi1M7ImZWKPiyxv8LYoftHatIZmgr7qGEqhCBqFeoZXv039o+iExxs7ADVxWh4UXr0BGwc/6i4ASStLj/jN93agbib0ftWqRyFXGi960ZsIF/hFzCzFgOWS8cHfWC9j3J8F4N/6RGdMyh49j2s+AR4i3nthtr/wyPv66Skfd4i/NTN//+nSuMVLGO4eYYv58MyJykXhTgKj0SxfgpklPbFYZxJchImauhXbAa3i1GbPlOGYO6Bh6FxXJUVo/KwfYB8RtV5mEmNReovn9SLybP/0v85srXpdZFxq6lak/opgt+lEYy0MEXqYWtzrkEuxHdNodhUMGLL58HOajb/oXfXasb6zs68/9jvGpt+phy4VVRYI2cUTqqne2y5OfdPG+84eA6ArnbFD5Qi00MnBzEVpesHTyf7fqnHuUcXHZKIb8q7R2zbgbLulIP2vbagF+PiXu7qF3U7BgHHhirbkqyvgHrNuITu0Fp1O/JybBDIlt+3lBO6zcE2VM9/X7wzSGzhA8qBVK434kMYmZBTeiN+iDcZxM6vpQpc8eN1o3cRvHKiDVIA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0402MB3497.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(66946007)(5660300002)(66476007)(186003)(107886003)(15650500001)(6512007)(4326008)(8676002)(38100700002)(86362001)(26005)(6506007)(66556008)(8936002)(6916009)(44832011)(36756003)(508600001)(6486002)(83380400001)(6666004)(2616005)(2906002)(316002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?VZiaJUznVmOM06e4XpkhwwGDWgn0LfaPcVPhIxJFQC/dEJzqqPR1OppQpRQB?= =?us-ascii?Q?SA8bSOkKERkk1B4p7MW9RN9bvBe2mj2Zbgq5Kv9i7eHWqvcnz8HdptG9lnkl?= =?us-ascii?Q?3sJdeAj8FXKfhCmlYJdAnFXpqCV4v/FyLWFG2FnSkWdlu1Gd6Y2+F4F1Jf3+?= =?us-ascii?Q?ibUcoVfIcPEqqGrRXMu7pjvauzzg1rjIfhCuTnzBf/lF8k5xY4/1OnpkEwf+?= =?us-ascii?Q?hPexrU8Wi5Dnk+RmWBJ5/xkXP5P+vjVf31Us6JGddBC5W03cRn2Y6QLliXYE?= =?us-ascii?Q?IgBBYhLRsNJwS3UWVXYYuMO8fB3dHzvDTAlDhjgWNbW+dFVFkyKYc68qaCo8?= =?us-ascii?Q?PCJhanVcPrkWZz+UzAmkXf0lOJAQSyT7v6gVeZeF/Ec12MB2alZeQR5NvbFK?= =?us-ascii?Q?hXRx1Kq0KOA9Uj00fHrHc4tD7DUJLtlDYEU00IliUiF/8x74rg8TkEzf23Y6?= =?us-ascii?Q?jg1i6jYCpb6rwBfLVG1A3EhT7i+NkxVOISoYDQ1HROuJvkNaLZUvdKdOV5lV?= =?us-ascii?Q?m/rhSzvjXmrHbbllC6MOE2vjqHW1fRmImNBo7GjtIIhLbV3WFINZW7azJoqZ?= =?us-ascii?Q?ykgs7brSJ1UnSAQlEC7HPiKnRHM/NlbMoyIi2HzfBSZ7mj9KneKisr/HGCIn?= =?us-ascii?Q?ozrLjDAlCqeGskcImxc0SE6Nd0g7xrZuPmXUoK4taUl5udtvkjCn4yW0NDSh?= =?us-ascii?Q?SBKJpa86VK+DAZ+R1DkGmSCa4WotKBvoi2k8D8agvwG4ZdRamLOWKZC9y7Z/?= =?us-ascii?Q?nqlatM+JUF+aivieI0pEon3Zf1efIOExz8EUWB6TzATcoGhWUgTH1PWSwKkX?= =?us-ascii?Q?Apg5B40TVmF+zU/lnF4790tD8y2ITKpMFq15BtJFPQWgEZpjC4ypzS6TwUP9?= =?us-ascii?Q?uOAs6JKonrfZhTSNj5bRyiPRBNmPYe3HxmdYfcsrE0Qgto9MxJCieTAcAWKy?= =?us-ascii?Q?BOWgIuc9/MccBAuui2dKLUEIwEh4GH/DNl2qggr55zY5yimvev5O3U0VuAzU?= =?us-ascii?Q?MfqRLTRir4624APftn9OT9s62H1wXQGbJy/Ka+/VAlIExjKjpShaklbIJo0X?= =?us-ascii?Q?65pB+94g4c2xxQHzms9K9VuACRqSzeDXbnL+M+W5QlAn0RDaEf0WTFlaVu52?= =?us-ascii?Q?ygYrxFItPq/P5Xm5qMeZzG4KWvz+W+6a9inZt9EgCcJlOvvGOdUKOf6g8FG8?= =?us-ascii?Q?aGwGlmdT0XpvsEdCWR4tPdUIq8bNzYUpm2AViav4/ZR1Y7BWQuXtAkz3940+?= =?us-ascii?Q?U3QsFG5MTSXRIil/mjo76arWKlITbkqt6f8zaHTkHu9vigPzgXtzluYhwjxg?= =?us-ascii?Q?kOgGW8+u5IFzLlzftkh7tPjN8QelwJGK0Dk43jd0c/FnRHELnzUDTUOEQeLN?= =?us-ascii?Q?16H2nfAZd82VN1GDcckbOMinzAR+/LoW7lRSTGuRKtJuG+G+BPNXq0MxnDHm?= =?us-ascii?Q?sUu5JoiyTXvI0RUgR3sFkjGYuHHTaE436rJU2aqP4iJCNYmCSgqaiA=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: fcafe986-9ed3-4195-94a6-08da0f4531b1 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Mar 2022 16:25:08.9884 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: r19ytDzGZx40QNuTbuBXQVAYZQ8SFXO62ldP5s/4sCGO7+mjYsyTPlM0p2WrV/JnXjd0sMfYhprcbRP4ElXXJg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR04MB3067 Content-Type: text/plain; charset="utf-8" This patch verifies the 'first' struct member of struct mptcp_sock, which points to the first subflow of msk. Save 'sk' in mptcp_storage, and verify it with 'first' in verify_msk(). Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/bpf_tcp_helpers.h | 1 + tools/testing/selftests/bpf/prog_tests/mptcp.c | 8 ++++++++ tools/testing/selftests/bpf/progs/mptcp_sock.c | 5 +++++ 3 files changed, 14 insertions(+) diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index bebe382bcc7a..f92357597e63 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -91,6 +91,7 @@ struct mptcp_sock { struct inet_connection_sock sk; =20 __u32 token; + struct sock *first; char ca_name[TCP_CA_NAME_MAX]; } __attribute__((preserve_access_index)); =20 diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index c6bdd9c5f126..9b73ef62ee74 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -12,7 +12,9 @@ struct mptcp_storage { __u32 invoked; __u32 is_mptcp; + struct sock *sk; __u32 token; + struct sock *first; char ca_name[TCP_CA_NAME_MAX]; }; =20 @@ -133,6 +135,12 @@ static int verify_msk(int map_fd, int client_fd) err++; } =20 + if (val.first !=3D val.sk) { + log_err("Unexpected mptcp_sock.first %p !=3D %p", + val.first, val.sk); + err++; + } + if (strncmp(val.ca_name, ca_name, TCP_CA_NAME_MAX)) { log_err("Unexpected mptcp_sock.ca_name %s !=3D %s", val.ca_name, ca_name); diff --git a/tools/testing/selftests/bpf/progs/mptcp_sock.c b/tools/testing= /selftests/bpf/progs/mptcp_sock.c index 6e7d2abf6ce3..16055f553f29 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_sock.c +++ b/tools/testing/selftests/bpf/progs/mptcp_sock.c @@ -12,7 +12,9 @@ __u32 _version SEC("version") =3D 1; struct mptcp_storage { __u32 invoked; __u32 is_mptcp; + struct sock *sk; __u32 token; + struct sock *first; char ca_name[TCP_CA_NAME_MAX]; }; =20 @@ -51,6 +53,7 @@ int _sockops(struct bpf_sock_ops *ctx) =20 storage->token =3D 0; bzero(storage->ca_name, TCP_CA_NAME_MAX); + storage->first =3D NULL; } else { msk =3D bpf_skc_to_mptcp_sock(sk); if (!msk) @@ -63,9 +66,11 @@ int _sockops(struct bpf_sock_ops *ctx) =20 storage->token =3D msk->token; memcpy(storage->ca_name, msk->ca_name, TCP_CA_NAME_MAX); + storage->first =3D msk->first; } storage->invoked++; storage->is_mptcp =3D tcp_sk->is_mptcp; + storage->sk =3D (struct sock *)sk; =20 return 1; } --=20 2.34.1