From nobody Thu May 9 02:17:12 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a17:907:7811:b0:6d8:2910:9a8 with SMTP id la17csp2175383ejc; Thu, 24 Mar 2022 06:28:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyhQ7tyZYTdWb+RD0Sle1C1khgDRVUT0Sp0HeEKvqptn6GfRgVEAE1WsvWuzX9D+g6kKRmi X-Received: by 2002:a17:90b:4a4b:b0:1c6:4398:523c with SMTP id lb11-20020a17090b4a4b00b001c64398523cmr6213071pjb.50.1648128524149; Thu, 24 Mar 2022 06:28:44 -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 r5-20020a6560c5000000b003816043ee60si20616011pgv.85.2022.03.24.06.28.43 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Mar 2022 06:28:44 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4392-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=bOL+V2YC; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4392-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4392-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 448FD3E0F77 for ; Thu, 24 Mar 2022 13:28:43 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4A2D31FC4; Thu, 24 Mar 2022 13:28:42 +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 6B7AA1FC0 for ; Thu, 24 Mar 2022 13:28:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648128518; 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=h4U6oLE7Vb/RNofjwKSYhcXqAYsVcSOsZFUN15CBcBQ=; b=bOL+V2YClZuxRRQeA0+jKjyFl5jyfFhmkq4hJ6pcUhf3JBY2SRuJkuWApYsKG+8rOK95Vv gAMCyKwSiBKXYj4A9Z4DGr3xjctf/pwoOWTIgbZp7q/qdfAhppuKty3fuoKbV8RGP61mnI C8eTYPODQ8WBEMr90RhY6e+6lOtOMTc= Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01lp2053.outbound.protection.outlook.com [104.47.1.53]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-31-cKYnCTHgMCyczfRK59neeg-1; Thu, 24 Mar 2022 14:28:37 +0100 X-MC-Unique: cKYnCTHgMCyczfRK59neeg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MHs1e3hR+BcVh3UvOpWmem8fMu+nJstMxsjcSdN1GNXxyhK+JAWYxcLR/Ags61tAo2MXeKhIbz27uWH5mgQy/jJObVlEzU+M+T8FaCTqYiQEnNmHOEtDhoufLHyJDSinzBlzVQaMRoPsB7bRmsoYHNZ8hRs9IgPiNJ+SyEQf5qfPYfwLuiTeUwi8EtHFpdyDcD1KZSf+JZjIYosO1qm88Ssi9XZPveWUpWWR28BZK8+GL70lNyZSMVPMgg6KDCosKEuMsn1ID8rN52dKH1q3tIEUAdRaVH99syXUSrMZ+QKLawKhz2sCQbxcLns/SPj1Jy7IaYd/qbw+gp2gMKIsYQ== 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=PpiTjAbWGd/bjBFWG5BSLENmZL86ej0t+eyXFjK6+yE=; b=BCM6QFdXxqUcthoXwQJnFL6QMX7ble4tSF4smyfqGtnPCEPrinatN+aV1BQoguMuEXKZmfIbq4pJcopwL321gFUukP0cENiSAx2M51NVEQUYmuGJPw+Db7lfGPI/ai8pzIhOqE6JHz1mHl2/HnFE6chy/YQywWDYtHaKyP+E2ZIt6iNwQJ4iD675AQauxyCZwBIxEVlVjBIVPQ9gpgilPszZe1uUyr4+yJumaNAmGDWDMO7Am/K980Ga0aTZSvJFXdMYwny70yl+2+9S1VXra+AtrZ9NerzU7EhfLE5qenmZOjPmkenou5W2+BTRjnKmsO4Jrzkl4uN0YOk9h5Oo9g== 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 DBBPR04MB7754.eurprd04.prod.outlook.com (2603:10a6:10:1ee::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.17; Thu, 24 Mar 2022 13:28:36 +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.016; Thu, 24 Mar 2022 13:28:36 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Nicolas Rybowski , Matthieu Baerts Subject: [PATCH mptcp-next v12 1/5] bpf: add bpf_skc_to_mptcp_sock_proto Date: Thu, 24 Mar 2022 21:28:28 +0800 Message-ID: <2faed80c68d4170a206bd8cea88c95a2038a747e.1648128255.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HKAPR04CA0002.apcprd04.prod.outlook.com (2603:1096:203:d0::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: f2c36866-3a4c-43fc-f178-08da0d9a3329 X-MS-TrafficTypeDiagnostic: DBBPR04MB7754: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: Ep/irnKmo6z+1A6XMH5jndlHYR4JJ2aUw7Num3TYdak1vxS9ibM4nWqX0VoJNEXUmMx/STisp5XxAnXSOqa/EtnxMu+DB9PaZ04zmgS2to6k7VKuELlZUi4ubNOeWxNGYFV62lC45FTWFe//Dz3g+ytnBav7gkeVPtefn3iOp7zd1lcNmA1XAfwHdfNhlWOTo0qJNgXkdPxlidvcj8VGkoLdeCXA/wlD6hNX0pRhSsA+1RgekfXuaVI4QE/1CYfEG+q7+oTJjxIEhe7fxK/seN0Y6YsBYBk1fnrUyg69YNiGdFV3fIM8zpDbvA0Q/taCb47KLqP9v37WKSY96ihRTfj2fuJ8wE62QEPRoJkQlwyz6gPVy5xCfwcESURjtXD/SCj21DnBwlUeulCBlYYmxrl3lq0M0YhKdrIRznjQtpRTMyuLn2AsA10GtnEVs5Yo3RM7JxhbUCI7+S5aJSjJlWtagT6siiZTBSZhuqpKaUBihniBUfFn6cu+h2MeSiIEOzirIF20/ZSMix7Kj8aapT9YS0lYgwDvG2iB9EyKwu5tez60i5sUDn51/xwyvhkaJK+eX9uz3YuZG2YAGZ4FDzndodq75Ej145UD8s5J4vCj0s+kU54Z0V8TuP7b+mFazKjV6ZB7yooQR4yknMu9X1WTKKcWC3HDGLG31wEg/ei1388rtRnNPs7zLRHaBhGHwLy3X1FA9bKvmO/uLeZtAw== 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)(86362001)(8676002)(508600001)(4326008)(66946007)(6486002)(6506007)(6512007)(54906003)(8936002)(6666004)(6916009)(316002)(5660300002)(26005)(186003)(66476007)(66556008)(2616005)(83380400001)(38100700002)(44832011)(36756003)(2906002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?DCLCZZrPcM3kK9fD80HI9Dfrt+d1hsxI4K3tGLkRcmpExLSrHPjcQM9Q8kW6?= =?us-ascii?Q?354cBqHl/+u4YlfScyTDdu7VSJ09LnJBoHRSN37MIO0nmXZb6Pe5kSAypHQs?= =?us-ascii?Q?1RQrtT74+uh/KFW6IEO5t+HjJnTsrxs0kSazzGa+/qsR+5LNq33ftHDgOOdq?= =?us-ascii?Q?aVdW1ttiQlr+TpjD3fr0FoE8bGwr5TfPHC4t6vHCijT5QikutJxEwxVj7wuX?= =?us-ascii?Q?BtfkByF9fLOSydYUw7pngB4hTH1NgHe8fEs4w4ORJnQ4A4d5IwtyDagqVDb7?= =?us-ascii?Q?wicI9PtSJo2Y6zO44zd+AbjBCVeV7RldDZzeBhFLM9IKEirBISszFoApf7oM?= =?us-ascii?Q?dH7r7bwRRcMR2SX7OL8jgoP+PfnXQy3Rs8e32bCQ1hlx1sYu288Hfqb79KnN?= =?us-ascii?Q?wsRG5EG2xY9jxjHPzA3FYZggBZa0J7LYnR5VO14dVGjjklwNm1nGbY56HLlW?= =?us-ascii?Q?UOZJCwqki5g8XhMpLh9RK9aZ+ei56zwr/GdrdDBMjOYhVsb+7B01KeYaSH0n?= =?us-ascii?Q?YzmAEFpxMn9nNa6dx/LQ7qCWjcsRpVcpuiRaXhYxf1vdEGklNEujiHJbVVNO?= =?us-ascii?Q?FmO8T0DkQ8uTjbtwtsJEIi9e6Nqfx47XLUcmX3e9z0QmY515FMjsfwLJHCUU?= =?us-ascii?Q?WY37LB1/0UlZgiFSwtYBE4zK4cCXHdi8QKm9N5NM5TvPgNxCfGeDXz9B8uOB?= =?us-ascii?Q?9PIyHuvIhBLMIl0iXsazsp0SA47YnYmnNcqMcMmxQP1tXvB2UmdEZ6KO2iel?= =?us-ascii?Q?ca91+6kWz8Fe1POC8OfLhhBBzryrCVUSf1arWom3zc57IGi+4SeREhBJfiMn?= =?us-ascii?Q?TDBCW5CgwIHXf35EPMDyaSLb3BgJ2195Jf1RqOBW0pQtKDzlOW0W4QVTaA5m?= =?us-ascii?Q?tkipmgH9DCbpA1JuXggfJ6Gnn2RoyJHxHMt0pDK5wVDVZ1KDxSfhD1+3WIRp?= =?us-ascii?Q?y92HYUbF00YeNXW0+EXRhY6OXqevtLtqYoGoEzFeFXsE0mrQ5qVFOEd3NWWh?= =?us-ascii?Q?TPHHIOfCAanosqv8Mc91L0ytPvjW8aIK+jNSefYpBQz6mLFgQGqxFr9/cvk2?= =?us-ascii?Q?GnpB7xqil374f8IGcQqnsUfkuAHtabl/PIp8NOZT7YrmQ4T14Jlu8Tvq31Px?= =?us-ascii?Q?gf2NND21FP1k8Ctl0+G+GgPMxe5jUzys9TWwCR8D5f/njUV4l4xZ5M+VmHqo?= =?us-ascii?Q?ChLb/zF1dxcZc4yxxpqA6IEWz6hUYu3hKwxPYFJw0yNunSd65ozXS5/XKcvK?= =?us-ascii?Q?WDRx4vZRfe9vRxsBZAnrxGb8P87BR3GZQhkMZqyHm7Qy9wczUV5aAmGoWNH+?= =?us-ascii?Q?HgoaW2ObWNg7j7v7g+xPuXwViWFPp1uQym7gU2TOKVTHWQBAKaWKHcQv2yGr?= =?us-ascii?Q?UiCm9zr4rxe+hRB/NKkyhvqJh1SWcGwliYF/l3M1bLP3zrq7wmMlO47HUSgs?= =?us-ascii?Q?NuGqbijhRnlp9wRPfuENrdVhUxb3IwkR2rMNRKW96iizzYpSFEBUtg=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: f2c36866-3a4c-43fc-f178-08da0d9a3329 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Mar 2022 13:28:36.2576 (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: +LAW3nvRaVb0iRB7K1ojjxEmaAn9gSWADFpPtF6tomyX+j625N8Ha+Gl+1NfGfSlYUxObeIKSDhpuJW/3U5cLw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB7754 Content-Type: text/plain; charset="utf-8" This patch implemented a new bpf_func_proto bpf_skc_to_mptcp_sock_proto. Defined a new bpf_id BTF_SOCK_TYPE_MPTCP, implemented the helper bpf_skc_to_mptcp_sock, and added a new helper bpf_mptcp_sock_from_subflow 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 | 18 ++++++++++++++++++ net/mptcp/Makefile | 2 ++ 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..9752445aa266 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 +#ifdef CONFIG_MPTCP +struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *sk); +#else /* CONFIG_MPTCP */ +static inline struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *= sk) +{ + return NULL; +} +#endif /* CONFIG_MPTCP */ + 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..171941772a2e 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,11 @@ 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; +#ifdef CONFIG_MPTCP + case BPF_FUNC_skc_to_mptcp_sock: + func =3D &bpf_skc_to_mptcp_sock_proto; + break; +#endif /* CONFIG_MPTCP */ 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 48a9d978aaeb..0a0608b6b4b4 100644 --- a/net/mptcp/Makefile +++ b/net/mptcp/Makefile @@ -11,3 +11,5 @@ 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 + +obj-$(CONFIG_BPF) +=3D bpf.o 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..0e5a9e69ae59 100755 --- a/scripts/bpf_doc.py +++ b/scripts/bpf_doc.py @@ -623,6 +623,7 @@ class PrinterHelpers(Printer): 'struct udp6_sock', 'struct unix_sock', 'struct task_struct', + 'struct mptcp_sock', =20 'struct __sk_buff', 'struct sk_msg_md', @@ -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 Thu May 9 02:17:12 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a17:907:7811:b0:6d8:2910:9a8 with SMTP id la17csp2175448ejc; Thu, 24 Mar 2022 06:28:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxelTfZo8hZWj+RlPSdtO1dYCusqc+VZE949M5uuqwf4ILn/PT71/u4bOVwFqOoY50CGSMF X-Received: by 2002:a17:902:d2d1:b0:154:45d2:a05d with SMTP id n17-20020a170902d2d100b0015445d2a05dmr5861184plc.74.1648128532281; Thu, 24 Mar 2022 06:28:52 -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 o12-20020a056a0015cc00b004fa771ab36asi11506302pfu.265.2022.03.24.06.28.52 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Mar 2022 06:28:52 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4393-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=mkXyhrFl; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4393-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4393-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 40B913E0FEA for ; Thu, 24 Mar 2022 13:28:51 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4C4CC1FC4; Thu, 24 Mar 2022 13:28:50 +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 87A441FC0 for ; Thu, 24 Mar 2022 13:28:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648128526; 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=57VG9dAwfZ/adB1vQjKrxyNSQm4WcZxAMpmmh/EPR8o=; b=mkXyhrFlvDWO8NYOLN5ZGXaj3Qflc+3ueqZr5WkEOy/N1J1IJWpAF44DPlv/jK+5BuQcyP JchU/j11C9jbJgroZlvh8kNo1m9bAqet7Ut4MoVbE5FfVsnYU+z489NHlW0mVcxWz8S66j ECucfrwZbvjtkdvjABzMVvo/RVckdts= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2107.outbound.protection.outlook.com [104.47.18.107]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-17-6j-s1QelPD2vik5POoP6Fw-1; Thu, 24 Mar 2022 14:28:45 +0100 X-MC-Unique: 6j-s1QelPD2vik5POoP6Fw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LSVPBjPvfCfq7VwHT1c23F/46eX7GqReChiG3Lxn7/s1VwizVOCS1XNQ6nHdcbXmeqFnQyieQx0oT7vRuykRgHfSVn7D4JWEnxt1kSPEWaYRabUUwzGv7NTHY5/qCLJZ8gm1SKzwk9xNmoQAd25Uy/8XDhobHk+ki0chpbAdwQyuTmMxJlyjbUK0zy+CL1GsGfbkxqdBJ8aAOWErEQYxBaMWucJGJhaZH5oXl+On/d1IyiOdw8iDGtiZm2+nzH+8GM/RS24Oiz5bjjqtEK6Jce2S6GGtXe55wXRVE+3n4F40vGyFjdbvIH2O2OfQU/+SFZirR7HL31blemuiUSFcGA== 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=zIb7W6hB1nDHNZ/asE+BLO1zd/Ih0gNjB8lc5WqRtOA=; b=dQ31mxJ4XztyrzgCFSyfR42FPaf3tuK27gXG6r4ivvW3s70IS0OxhC4zMQ+F2ucNqll11mHcTYem6J25EWCHPcXra5wLEK5Lwq/0tifAUuF+kZmd5Ny7jDUTxnL8f8ie2Eycy4xRXzsY+/hFDrzXv16roRK0agmdXVHWEmR/ai7AQuwJFRK+jel6xpTiXjyg+VZWxCAizHm+SZ4zloMupcUFFpMdo2FMuUPp97pLoVhZAoIAYZCUDey7OeMwY49X/Nu249Cm4O3LZiOTldkDLXe/mAYyE3qFFdcBaTgW3OC6kIjTOZUXZBIi0m36V8lzXMpYjnQu4drI5FHCOMy8TQ== 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 VI1PR0402MB2782.eurprd04.prod.outlook.com (2603:10a6:800:b8::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.18; Thu, 24 Mar 2022 13:28:43 +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.016; Thu, 24 Mar 2022 13:28:43 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v12 2/5] Squash to "selftests: bpf: add MPTCP test base" Date: Thu, 24 Mar 2022 21:28:29 +0800 Message-ID: <3fca1327933734f25222c16e4fb5c473630e91ec.1648128255.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HKAPR04CA0012.apcprd04.prod.outlook.com (2603:1096:203:d0::22) 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: 6629ed6c-c928-41a7-71d5-08da0d9a372d X-MS-TrafficTypeDiagnostic: VI1PR0402MB2782: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: K6e91rxYnyNB17dsuxE8BGrj7fmLo9lt0MPKmNu75ux1Rz2PBYjoxjUSfkNAV5iKTIMPtO+Cn66dbasQFrY11HOqOBU2Rr3JS/J53NweiXjkIxsTJ5cvE7FNTERjKrDBxLaH5OUF/fcs1NXtMMjQZ/lPlaMLqFsQdWpWagFcZb+8Ho4H6s3RdLljUbil6o8LYiFjj48WLaXlNzQdBUvHSKwK+QZTCGExkTTJc864B/7ByiTWJEAzH2b1qk1vgqnzmFkZh5jdsKIC2GV4kMlyLQIdTrFjuo5RdkfEE5AUY7U8wZqShhIxNdgoI2bOLa/7uNeoXUlLD1RTWowtvAFGwj9G/19uFyDfnzxRjsubQ5DijqMp2ToR4BNFbjkLugPPtQFX32WxNJD/Ji9DL/w9ETH4XDB00KTn0Z++usUABZSjlVWE4ZufOyMSe80by6H0oJrumaPxanYtjKhKZ3+fgidr3MGajblg0zaN4eVZkHUWHAhRVA0mKI8k+xJQBvRZ7xm9HqG+sH2RWNfJU4j6VT/USAfn3l3AenBuk9wVUxi/Yks2nc5ilwS+Rn49kdZZSp6lfvJbUZoE6YYLneQ/XVLz0dmwlfsP5er0NVf2tONSPmXX6+rCPBmxO6HcWBo17WU41kRKw6idd7J88NBQ8zmfewCFwBkaovEVEL29ZSOTZqmJgdLOU2NjXifxrZgw 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)(6666004)(6486002)(508600001)(2906002)(6506007)(44832011)(5660300002)(8936002)(83380400001)(26005)(2616005)(86362001)(186003)(6512007)(38100700002)(316002)(6916009)(107886003)(36756003)(4326008)(8676002)(66476007)(66556008)(66946007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?vmxBG7sbYskV42dkY+yCMCVJBXBFYriqTAJ5IGmorePaTUUSg2QzdAMn8/5i?= =?us-ascii?Q?RLQQeh4UFK1Tyo7UdAgRPhDpf0QhKaed7odRuxnFLpFNjhIUNM+NuJm+phy+?= =?us-ascii?Q?zNVJdYrsH1iw9a0uGl8W4ENPdJMM8UJHfniAZLWPfmbq0+kIac/WIVh+uiaT?= =?us-ascii?Q?QXQI7rTwRKFb1p9T3l0RFpNL83z0SMAg0aBQQSr+6Oup6QVU8gGcCv+GgAKr?= =?us-ascii?Q?IbdhDTM9DN25fMZ7jQ87OxYmTYwIuURQF3+EL0zMfwj8xxVdWQ4KdhgWX1e9?= =?us-ascii?Q?PDlyIimA6WSI2JlrJlp9DVyAcSDnXt0/NR22JR255FxhJD6pjE7yqqAWmAVm?= =?us-ascii?Q?5Ukp0RbgCcDTDaqXnQu9QTt9FgEH9kO10sQZQlhjzCvmzEMNCVhRU8SZXyKp?= =?us-ascii?Q?LYs85rMQi+Qw5TyTA5mikgGz/MgjIXrPDZJukzeRDfFkv9Szk8n0gT31miC9?= =?us-ascii?Q?xNMrfOtEtMa+7lMAkMWZMgAxEvVJMWoGkYm1k/CfS8qpkPvMhC9QgDJYU9Tz?= =?us-ascii?Q?RkJDT7aREUY6hf9J7lpLAW+BnWv3enExO1SMGkDPNz/QHUeiEIXrixB/ahLC?= =?us-ascii?Q?B5FU+Wnkx0dCHUUvRxcol3+j2uqKI+VpwdAShzs81bEsEfHFJj4eIpRxatoP?= =?us-ascii?Q?HjlFWLn81N8vPtLhbW5YZte1hvzYoGJ4CPf0Mk89Khjb0cSGhCkKYBBuOV9v?= =?us-ascii?Q?/aYFHUUKUO44FoQCTgD7UTlwXKVum7eW+y/UzZOeOACXCNPra9pPdrp9U0qj?= =?us-ascii?Q?xkk+ztA2BiTwttDDbu/VA8rkkQIfRbThNrSpJhEZya/d5EowpFw62iT0JZOg?= =?us-ascii?Q?XG7e84QZlgTFLj2HoqLWGubRINzu5o/U10k4w3pSNSJyU5ELGuTOtFk1wCkQ?= =?us-ascii?Q?w6tiI3hlLarFGbI8N61Nm5AdZ+XbYJ7JfSnC+MiVdnAzp/oKLtK0qHfnillt?= =?us-ascii?Q?kJNHueSk8M6alVe7vany1VuTg+F03Jz2KKjdBIaswycrDwFF77ILWptpvDLf?= =?us-ascii?Q?4ttu1JFA39OVJAe340ieuZyyuP3n3GQgfawxlbQ2oSRipZCYDtrTttgySAdL?= =?us-ascii?Q?yTztzaCQLrWIIDP+wwQbbbuiOVtv0qfiqIUF9TikQIkkw6hCIlB+gAfRGs8C?= =?us-ascii?Q?iTegGt8LM6OiEjgJmOG7n7ZJU8nvCOQt4zjZtZI3Tq//0fJNwOLq4aAhRfSb?= =?us-ascii?Q?8GQw1gZ66C31g4fNf1N5/QNJysuRcIhWBP6xZhOYNSju4dX0cDwQNa8QLaFv?= =?us-ascii?Q?F3GjrFX7azpFhZm0JhibDlX6Alc7BJXbRCGjJC5ehK2w8UjU+fu+TxTn/c6E?= =?us-ascii?Q?l+ltdC4WeyPqgJ6e4ZUG1ptpS/uxduTUKvVwdXFSdgBDfaXX44n+N+N/RHC3?= =?us-ascii?Q?Pa5k0DyAPyWTwJ6bgi51zL51pJVJRI/W9G/CIgtXbb0u39CdMx5wbld2uciS?= =?us-ascii?Q?vzlek/dGg6EFRHADqyFz/4Vpw7DYKQODvFTYiOSsbvvPofxQ4htkgjX3i467?= =?us-ascii?Q?U7PB7wsC5hnDxHUVnE1t23kC3vQmfNySchRsCPqkzSbqlKA2LNTNoZurx8Hg?= =?us-ascii?Q?/rButv1B5BGjzDGbjYmGZb7EfyguxxpilFAMubecRmHTheLux6ePq2oAyPXA?= =?us-ascii?Q?i+oBI+BPBr7DCwbuu4T2Yfs/Yo4+yrq8UlHo3h89nFqMlUvhi6SvdCywBtb/?= =?us-ascii?Q?4YQtq1gzB3kk5Ub2Ju+dF7ps7D+ANNJpPI6uxoMsyLzy94bbiuzPionnDIFI?= =?us-ascii?Q?hG4EVYPqXAQDG4kx1cF4fugRh3kWIss=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6629ed6c-c928-41a7-71d5-08da0d9a372d X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Mar 2022 13:28:43.0383 (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: m5XxUF6zY1mY2/6zU02IkTldb+4p7fqbkqzheaGukmnWDN3UHjSJ7J5uKUexrYCTpbr8auSeZmcxkhlITq2hzA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0402MB2782 Content-Type: text/plain; charset="utf-8" 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] Some cleanups. Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/mptcp.c | 60 ++++++++++++------- tools/testing/selftests/bpf/progs/mptcp.c | 16 ++--- 2 files changed, 49 insertions(+), 27 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 04aef0f147dc..5ec1cc4c2ef6 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 @@ -44,28 +40,46 @@ static int verify_sk(int map_fd, int client_fd, const c= har *msg, __u32 is_mptcp) =20 static int run_test(int cgroup_fd, int server_fd, bool is_mptcp) { - int client_fd, prog_fd, map_fd, err; + int client_fd, prog_fd, map_fd; + const char *file =3D "./mptcp.o"; + struct bpf_program *prog; struct bpf_object *obj; struct bpf_map *map; + int err =3D 0; =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(file); + if (libbpf_get_error(obj)) + return -1; =20 - err =3D bpf_prog_load_xattr(&attr, &obj, &prog_fd); + err =3D bpf_object__load(obj); if (err) { log_err("Failed to load BPF object"); - return -1; + err =3D -1; + goto close_bpf_object; } =20 + prog =3D bpf_object__next_program(obj, NULL); + if (!prog) { + log_err("Failed to get BPF program"); + err =3D -1; + goto close_bpf_object; + } + + prog_fd =3D bpf_program__fd(prog); + map =3D bpf_object__next_map(obj, NULL); + if (!map) { + log_err("Failed to get BPF map"); + err =3D -1; + goto close_bpf_object; + } + map_fd =3D bpf_map__fd(map); =20 err =3D bpf_prog_attach(prog_fd, cgroup_fd, BPF_CGROUP_SOCK_OPS, 0); if (err) { log_err("Failed to attach BPF program"); + err =3D -1; goto close_bpf_object; } =20 @@ -87,7 +101,7 @@ static int run_test(int cgroup_fd, int server_fd, bool i= s_mptcp) return err; } =20 -void test_mptcp(void) +void test_base(void) { int server_fd, cgroup_fd; =20 @@ -117,3 +131,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.c index be5ee8dac2b3..0d65fb889d03 100644 --- a/tools/testing/selftests/bpf/progs/mptcp.c +++ b/tools/testing/selftests/bpf/progs/mptcp.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 Thu May 9 02:17:12 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a17:907:7811:b0:6d8:2910:9a8 with SMTP id la17csp2175507ejc; Thu, 24 Mar 2022 06:29:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy0QTm5tsjvybSEnoVSf+MnJ+TwWAJsiTUSsg1o+dgDSAXcQhSFVO8UuWd+Hf4YQlkfRK5r X-Received: by 2002:a63:6c01:0:b0:37c:73a0:a175 with SMTP id h1-20020a636c01000000b0037c73a0a175mr3970123pgc.415.1648128542114; Thu, 24 Mar 2022 06:29:02 -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 j24-20020a63e758000000b003816043f0f2si21873656pgk.743.2022.03.24.06.29.01 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Mar 2022 06:29:02 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4394-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=icX02x87; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4394-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4394-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 6BB501C0CC4 for ; Thu, 24 Mar 2022 13:28:57 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id DCD6B1FC4; Thu, 24 Mar 2022 13:28:55 +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 277121FC0 for ; Thu, 24 Mar 2022 13:28:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648128532; 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=P1qptPduzbOgvw2prXFerI8UO72ZgQcmHcM+SWjpjn8=; b=icX02x87MoCNCRtSc9oRNL8cILrX59AOOSkyXV2lNxYjtl9mJMDwGKVnaaUHQu3oU2moYU R+2zmqReJZ5tx4T5QHG6NQbLWHQ0+exswqu5YByKG52e2QoHW6NGYzUJp2dw7zAky+pwjk k2IxauHxrb6nXl5IE7wDm+r6qWdROWI= Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04lp2057.outbound.protection.outlook.com [104.47.12.57]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-35-yY7Ms8jEOxmKPZAToZ28Ag-1; Thu, 24 Mar 2022 14:28:51 +0100 X-MC-Unique: yY7Ms8jEOxmKPZAToZ28Ag-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Uen0k/AwuCRv3xtPN2QkEscUuvrZetmRSHzAriWK6wey8xeyPOnlADkmxhJGcUjBCX7M9/LP86nwT5Vnmv3Muv1aecqL4VkyLIpsg97nUnrVFTKuX+BBbP9kzB8LuJ3jHk6UaAGEvzfVbBvra5D5MgdKztqFkOPx3wT5A/mMIFTXazNQvPsMUoBLUN96Qdh9bvOi0m6j8QluuuARIszZq772ZQE3QxTBA4yfUynktUXB5e6rtl8IVnT/qM7jDu9SB5kk14M2JewA+5pzroIkUeHJH5gxdjoYBKPFLMH8hn+WNdXDQXfpeTQYE0OJBNwS1wOHSh0AMlMPjdQTlJvfwQ== 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=yBWPNQH9XYcAkak2fKKijYMljuGx39K1D3CdBfeYV5A=; b=Z9tvQNK4RMffGCRff0YArzcwGeqHfGAiNSQ8h/RzxeWxQkGbQP5QryxjFAB8evja2mUkIX1bpRQGZ27MeEcHlNtk/SJ00jeV7CUK72MjtYBmVOlyoJaedOaWW2VNxd0psORRnoopYZo/by/NFc5aV+mVlbatMz1PCIVPa8/SMdCy5rg4CovOFtuNvJRGlYTovN3Kq821+PNP8zr52p1Acny7LcdGP4mjWIqKcQiJZ91em52nSUAl94yvfNU8lM3fWPOdlIrCXt80VsYcpvveVszXUUU+5K+py+UN8sstVGA63/9X56R+SM7lWsPgZAkiMxJ5pvl+rCJJ8pG8Kxcx8Q== 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 GV1PR04MB9133.eurprd04.prod.outlook.com (2603:10a6:150:24::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.17; Thu, 24 Mar 2022 13:28:50 +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.016; Thu, 24 Mar 2022 13:28:50 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Matthieu Baerts Subject: [PATCH mptcp-next v12 3/5] selftests: bpf: test bpf_skc_to_mptcp_sock Date: Thu, 24 Mar 2022 21:28:30 +0800 Message-ID: <917e5a331f69ac896547ac45e2008c962b0e990a.1648128255.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HKAPR04CA0012.apcprd04.prod.outlook.com (2603:1096:203:d0::22) 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: 9bd03a07-80ff-4417-04a2-08da0d9a3b44 X-MS-TrafficTypeDiagnostic: GV1PR04MB9133: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: AJ27hYTBkvO/u5TyfMlck+Oub6EUjLf8zrzehgRnDWi1Qv5bAoYst5JhNxk3dNrujgXl/hhFLj/krkLaBVPu7MgBjtp3YMm8rC19CUS6AzEVfWm4AtWrqZRyfL+tWlLjjb/FKFgbTspK2zMyGttY9KcDTniqBtV3/ZQFdkeKmJREcbB+7X1TTxwx/wvWFhbaq0MhsfK9e8AuIdr3e0VEa4czYiRyyovPentj2os9rxEPBDL9up4KOm64jSxzzGpol+bbvwZ+OzfZ92a7w7qdtfFTuOkRVZevSJnzIGlz7WJ33jUKWzA8lKgTDAbwtVeUgnEZX7QusuUwxHGs89l3jjZkLD35sBwDr+L2kvO3An61tmGe1KvU3bzptyWHpeVEaAsRkDbvxIMnM7z/XGvRv77WvsJ7HJcdJIRWAFY0gBLnCd9+59okhHAUBDJpEcyqzGKAOpuIY+5tMPIMS0HHrk0hpU4A3mvUSqRZ52aeyU4os0U51ZQb6qkIAThf3ONd10dSn9okNDmWqWmuWF5GY0MeYXHRKouPJnU4HqibRr6a8jbkI7Y8FsBLcEaM824jVL/zlV+SAp4NhyzVtnn31HRHOSw7ERPN7oN/hHLjZirxe7adg6ieqJ+/1gkKizYiyDuOp86IZzVT73Y/FF2is6+MDXaYn5szveqy8nvFXq+8qFh10rYRsIX6sT/XSGOpVpwUA8k1iwg7lqF48BsLIA== 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)(54906003)(316002)(6916009)(6666004)(26005)(186003)(6512007)(6506007)(83380400001)(6486002)(2616005)(36756003)(508600001)(8936002)(44832011)(86362001)(66946007)(66556008)(66476007)(38100700002)(4326008)(5660300002)(8676002)(2906002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?5Z/GSNB4pKX0sVXHxMTA8b5wHZt7IHBOC/h3Qxt5+luJ+1qtLqZc73cZMGkP?= =?us-ascii?Q?qevdOMwA83fcmEP9+Jz3uHqQ7njgsOli5Zo4vYKm0Swe3kPPjs+Sqvdd/OG/?= =?us-ascii?Q?KTW7T16DTFS6PAzCU1jaUeLgK0Y5ANT9rfp58SJ/rXPVZPWaF7r3PEVvl/kq?= =?us-ascii?Q?X2FDmjWAwNtimyR3XPe4NVJ2TpVpLPI3K8oIj+9Ua1rMgjZmC6AB9DkIiPdP?= =?us-ascii?Q?NERVOqUfRaNY3VCdpGqdt5UnZh8rg532zbGeXu4xoT00/DZWxwBzL4cg4FvP?= =?us-ascii?Q?VRg5m8W/KnbC+N2oWftffvvJ5JRgAm3hQxlIOznapBn9fFnraegS8hcYU3Ew?= =?us-ascii?Q?PN57A2JtwRqupJ1dC6N15kNdg0EDZ2O8O2UfZaXrjM0RPhF7fBcuKsrD6em7?= =?us-ascii?Q?iISZVRcbUIlQ12GTstHxYBpaN2ElD/kPQUH5yTh9xcjMyYLO8vOnfQDoLPAq?= =?us-ascii?Q?LsKcoE4FPE9G6Ykzo7h8F3tFEiIC3yUrIUPJLX63YR8JLtDdRoiS2VH7/CnB?= =?us-ascii?Q?pbA6INs+pouA+tkYivwO3TpZS+5DIWg+97ui+EQKHug0FB8bva2KyCMoAXRZ?= =?us-ascii?Q?NMi60EYbrBjNATmP8WIASyvnxU153HPMUkn0xQnZcZMu5OVhGzu3GSw0D97d?= =?us-ascii?Q?9b2HzmNmeoQnx2Em1GE0rAry31o+JyNBh4H7C3dxU5TgCJWsq6fckgkeeMOC?= =?us-ascii?Q?dfFu9rbF8sMMMXO2qRZ1wyrQJPr8sVAMEVhGmYm/UmfrBmTNpHb+tx28RqqB?= =?us-ascii?Q?YwyGtHNHcg57dC+H48McdUUsUFBG3gJYJZtzGgy98Y75KQpvckv22tkp6OXW?= =?us-ascii?Q?CuEP+LBriohnAx9NIBZ2urvp2sqJ+zSvWvM9jmc7ufpLMoAKz+puEzHr+oV0?= =?us-ascii?Q?aG00jToTk3uSMBeo0PoRaOdQ8OR/OJgWPqQw9MyGZ4xQktwLhD3NY6R1egk0?= =?us-ascii?Q?NKi6HciUxsOkOBjn68ifzhMnBE1EEDP+IyBnbT6JjOMIdsDQAG6eQYxMdgBJ?= =?us-ascii?Q?CpVsVp9IRWgtMylUpzJUjsu5jD0K8Sw0QPEQt9Yh5W4fbMDZFQOk7RFwBPPf?= =?us-ascii?Q?4A6jY88zJgryU6G7GNiRxzJfDkDTb+NOStITkYXLGSIG+qnVxqSEyT3xBiED?= =?us-ascii?Q?uHApt06Omh9LtgVUrVr8tTUUuMqMx75JwqTxqxgzqqnkyNZuxeXF7TW2329D?= =?us-ascii?Q?kvOhW7oIubqnjfjWCbAKmDOHoeZmoz3MuuBEStdigwLdQbEqpe38SsUXfdmJ?= =?us-ascii?Q?JwlRPuSLDleRsxot3Njs5QqZNALQsxm4+lwCcFLhOp6d9IkeZIkfAJ5i5e08?= =?us-ascii?Q?CHzcxABtXpudGMoiYtWoSXpRbofDtE+FIUS+9EHjhHDrU1DsuL44tixK7yO+?= =?us-ascii?Q?bPp5Mmo8vac3tz51xmX0iK5ObzuTMJEh+qsx5axDD7nOMuauVz1kpCs4Bprm?= =?us-ascii?Q?asV25s13isWPwBHuQMGsK5MlL3ISG+Ql4G/EC6+DAwYLMzovMX/zTA=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9bd03a07-80ff-4417-04a2-08da0d9a3b44 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Mar 2022 13:28:49.9596 (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: E0gErY1d6uJReIvImt/RGcy23eVvJANbsaQEUliZn+O3BlDHRwxwbWpNDb/CYPg1Cd2ScRGxX1UIGU8WpSOU/Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9133 Content-Type: text/plain; charset="utf-8" This patch extended the MPTCP test base, to test the new helper bpf_skc_to_mptcp_sock(). Added a new function verify_msk() to verify the msk token, and a new function get_msk_token() to parse the msk token from the output of the command 'ip mptcp monitor'. Acked-by: Matthieu Baerts Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/bpf_tcp_helpers.h | 6 ++ .../testing/selftests/bpf/prog_tests/mptcp.c | 102 ++++++++++++++++-- tools/testing/selftests/bpf/progs/mptcp.c | 25 ++++- 3 files changed, 123 insertions(+), 10 deletions(-) diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index b1ede6f0b821..9ea6687c8f4d 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -83,6 +83,12 @@ struct tcp_sock { __u64 tcp_mstamp; /* most recent packet received/sent */ } __attribute__((preserve_access_index)); =20 +struct mptcp_sock { + struct inet_connection_sock sk; + + __u32 token; +} __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 5ec1cc4c2ef6..770104dc5448 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -8,16 +8,17 @@ struct mptcp_storage { __u32 invoked; __u32 is_mptcp; + __u32 token; }; =20 -static int verify_sk(int map_fd, int client_fd, const char *msg, __u32 is_= mptcp) +static char monitor_log_path[64]; + +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 +39,85 @@ static int verify_sk(int map_fd, int client_fd, const ch= ar *msg, __u32 is_mptcp) 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; + } + + 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++; + } + + if (val.token !=3D token) { + log_err("Unexpected mptcp_sock.token %x !=3D %x", + val.token, token); + err++; + } + + return err; +} + static int run_test(int cgroup_fd, int server_fd, bool is_mptcp) { int client_fd, prog_fd, map_fd; @@ -90,8 +170,8 @@ static int run_test(int cgroup_fd, int server_fd, bool i= s_mptcp) goto close_client_fd; } =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: close(client_fd); @@ -103,6 +183,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"); @@ -120,6 +201,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; @@ -127,6 +215,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.c b/tools/testing/self= tests/bpf/progs/mptcp.c index 0d65fb889d03..afacea5ad9ca 100644 --- a/tools/testing/selftests/bpf/progs/mptcp.c +++ b/tools/testing/selftests/bpf/progs/mptcp.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; @@ -10,6 +11,7 @@ __u32 _version SEC("version") =3D 1; struct mptcp_storage { __u32 invoked; __u32 is_mptcp; + __u32 token; }; =20 struct { @@ -24,6 +26,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 +41,25 @@ 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; + + storage->token =3D 0; + } 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; =20 + storage->token =3D msk->token; + } storage->invoked++; storage->is_mptcp =3D tcp_sk->is_mptcp; =20 --=20 2.34.1 From nobody Thu May 9 02:17:12 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a17:907:7811:b0:6d8:2910:9a8 with SMTP id la17csp2175546ejc; Thu, 24 Mar 2022 06:29:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyrrc+Ko3t58Diu9QiUJoK6j68uswG7D6fhgK12Fm8kGiBf0qvOE0/A0Y8C51a0YsZT3ZQI X-Received: by 2002:a17:902:b602:b0:14f:e42b:d547 with SMTP id b2-20020a170902b60200b0014fe42bd547mr5792344pls.91.1648128547929; Thu, 24 Mar 2022 06:29:07 -0700 (PDT) Return-Path: Received: from ewr.edge.kernel.org (ewr.edge.kernel.org. [2604:1380:1:3600::1]) by mx.google.com with ESMTPS id m66-20020a633f45000000b003816043f056si22971453pga.587.2022.03.24.06.29.07 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Mar 2022 06:29:07 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4395-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) client-ip=2604:1380:1:3600::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=fopgujWE; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4395-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1:3600::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4395-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 14A2B1C0CC3 for ; Thu, 24 Mar 2022 13:29:03 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BC3A91FC0; Thu, 24 Mar 2022 13:29: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.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 213E81FC4 for ; Thu, 24 Mar 2022 13:28:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648128538; 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=iI8Hpsh5XV4NBkVhBeuNdGNvSfNghF/2YNDO0mDFlcs=; b=fopgujWECXBQM9ENs5kIOxwEYc4a06lyezzjpAoHsiwNIqtuh3pgVn4Fsp9ortQplhZzoW JEVqy0xdYXdq5XjiV3ay9XX0pZ89PRTD8YvdXTUloXH7TpPcsKq9ZbL/u1XTMKZn2m2iJL j/HRSV8bPRjIGIZhU0jJ2q7TQ7Z3SIo= Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04lp2051.outbound.protection.outlook.com [104.47.12.51]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-38-dGhdkktLNKmdg1JiFCQk0g-1; Thu, 24 Mar 2022 14:28:57 +0100 X-MC-Unique: dGhdkktLNKmdg1JiFCQk0g-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KvosWITc/BLxJ2AGWdx+moBqCkHPn7P4fB3vFH59WW/8DyyuqbISyIVzwP9eVQIbIJ+GwfQiTq/E0+4DFgY5o/pwF0/X7mzxf4/shUbUPsqjqb0gg5qU/XMzMeesoDh+iMh074tQVDc/RNQIcJnsWLaX2xlTdv3jmcOTVy0o6q1vZn+Y26m4ObXU7eT1Vsim/dFVybzodxzuIBwAls6FwiH/fQqWGweIND40fWiAyuUTK2rV/eoAubbma8T7NvAI42uA2UhDwRo7fCT+zjexxVBnIAN1EOhM7jVSKDgzPT527+x+TpOiEYlE7zrdpTItsx5Unteoq4XYkVui24QtQQ== 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=5NLZTysU2QelzO4/FydM6dQs96O/rYn5QB7PvAVroCQ=; b=HlNuuFLfCn2kwwEKV/OnkacJB0grKiJr8CHmW6qSvK3QjY7Z1KXxGYFEuBFxSTb8WaiWlfCxPd6sj1jRJFFoBL2VboG2Jkk203EyHttr0s1RH+Gj4Rq/ARMO4MAtAmqcr4ZJUZeuYWf1mrxUo2BZ16D3odGtlCqTAdjHl5tGc37e35+7WkCsf51NqQW2LKNB2KFuQ82g+cehUIh+gfycaJzURIhXsqIvlbge+5wEBTY31U6rXAUfkUC3HO6yShV2HWpAKfPkRHemhTgKM6uTxz4zL3TvoimgosDDxo8CXstnHyqDebtqEP+T0f2hTG+ModtNKTztu3+oxICorsZEoA== 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 GV1PR04MB9133.eurprd04.prod.outlook.com (2603:10a6:150:24::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.17; Thu, 24 Mar 2022 13:28:56 +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.016; Thu, 24 Mar 2022 13:28:56 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v12 4/5] selftests: bpf: verify ca_name of struct mptcp_sock Date: Thu, 24 Mar 2022 21:28:31 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HKAPR04CA0002.apcprd04.prod.outlook.com (2603:1096:203:d0::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: f100dbab-b12e-4533-9b89-08da0d9a3f1c X-MS-TrafficTypeDiagnostic: GV1PR04MB9133: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: v3fK/0mvNjBS+DFjIMYEL9WsOf76P3VnbY9UJ6vvs3smjXJgCVwp4rBNdhpr4GWULcSuYlTRO/QORvg9CA1v9XsBxVkmuYuGKSyNom823UbWQCM29RHnq2hEPKhueWLFZRMT4CbFUV3QGTRoAfFHJfpV3JtxtDko4yrw+fW6HDZnD1/DQGmG8jXrUq3aH3Rl4MKL2DNRG7O6Zk0ThUsIMrXvArZUt3lSshbko4exdBCRHOtCldtz5u3ymn6D49CST2ra1goH7XyiQ8JgYKb3y+cm9uFQCaVt1Fg2meDLWTbh+KAMucPq/DlCwmUIUp8xpFcYstbS18SP7aa19lkPfFOL74cPhHG6oNhFgHRSfB+vC7J8MHXzyy4U0hZXykdShMS74q2bw7QiF8HqFDWQLpj+4a7pBEukJJgxhHnnhj5z/4cCi2AbM3LmGQpHR8Kp8l11EOXT5y/s3sf5IpgZ/xqcY8bdiLVvbOsDWHbtuqwqHle11f2gXsHxUDnUzmblVdM8sDD+Fo0AJ3uP6ATeVhuMePao8nnBek0/oUxJLCKCWI68i5FXh4DtSSzzqVGEVX6QymNxvhjjDFaZjO6ooBixzvUcfCA2FYUMAfggKQ/ShVdCQsfLTIHbMJvwt/lCTBUnqRB0sGCBp5Ki1fEvFCRzlIPmfDFt9CFDff172/eEVxLwAovInvqHoukRLFV4kd0fGJl+negbr5HMcX4KeA== 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)(316002)(6916009)(107886003)(6666004)(26005)(186003)(6512007)(6506007)(83380400001)(6486002)(2616005)(36756003)(15650500001)(508600001)(8936002)(44832011)(86362001)(66946007)(66556008)(66476007)(38100700002)(4326008)(5660300002)(8676002)(2906002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?v0XWGKMp5E12HdPETd4888e++bWS8S3n8oMtLwWq6FY/t2geHcMLnLKYZDId?= =?us-ascii?Q?ByPhkDAsHYPiBlKLRg8ygLk1kLxrkuBzlH+pAHwRHe+jq2sV3pfw00AobWOE?= =?us-ascii?Q?XOI+ER6wOvfsBT449OxlJerokkaMDoPpZjr1lOHfv2nAutQeBPzqPXkCqhFh?= =?us-ascii?Q?AsaFFZdhKYfnNI+o61xAEdN8DWIloq6rg5fjyKxTg0V9Ue4IJhrZ04BinsWq?= =?us-ascii?Q?FrIbBc9yTyoZTLYPQTDszuyFZ5qtMbQNZ1+n3iUyxjqxR7+cHwgz3AlHvFCQ?= =?us-ascii?Q?E7okMfyqc5rZEeg++jchHVnGo2NSs4JoK8DDCsjtgJhKQn8svHGQFiXYG2wK?= =?us-ascii?Q?oJifHE4hKGHVriIEcQpn4wvofOxXThDhqhswNNQNDvLTkaEE6dzqDs4UZAwD?= =?us-ascii?Q?e+bvmHsDQtxtfdy2Sv6z7LNDeLtJO8aqxuuhjKci2yVnGgJrcMypvi5IRPMm?= =?us-ascii?Q?VYfchb9NDHMi1dRS6VQZ1rz8+SILjSGrD2uU+vi+tccLL8TQbL74m9vCKW3d?= =?us-ascii?Q?AFn+XXI/8oFHDvF1jNYnHaWiILAEPCr4yj27oGBKJtDNRKQTlMOfq/o+pnLD?= =?us-ascii?Q?h3+Pu4QoT3MBvO3iaRFs16sPxH8yJzuFTPhkUEbIURnfk1BuKgUfokiaeMYF?= =?us-ascii?Q?m/mF/TUVVQVf4FpwthfpNgnEmZeter15Qp0VZcf4tbLguJJ5aiKjK//NiE8Q?= =?us-ascii?Q?H4kHOkwYU8QZU2GqY6EgU8rkXvHQukC4W44AwNwnKVNWYC4k4EcOI+13ZoiB?= =?us-ascii?Q?gGx8fb9aMcHSH0gJDlKfBpqB0vo3t7HGqsccUh4m1VINimJ+5u7x/GXJzIlS?= =?us-ascii?Q?x6GqRr3kFcEU3J+jFlKBxXwzKP8BnbRUufA2WqqS+ng2OjPpLMl93d8N3cBM?= =?us-ascii?Q?T/BfydIKipUyHlexJqSvm/2JAFbRnmPn9NxTbboJg80FH6L3fvg+45Ahbw+0?= =?us-ascii?Q?kx5tNt9mjftcg4dmUgImxHoNHOWUpD8yjRt47RlMyiPYdb3RqfrslptgQTNh?= =?us-ascii?Q?1cVKUwrPU+jWmd5dAIoUXDa5Np3yfEY8cgIYyyhBgoBDfQ8Nwy4xEtAijxZs?= =?us-ascii?Q?5mqHo4BnxnNsdAQZk9rZCA1EG80eCeeJzU/XxiF5NpzLl3vIRYVmG3tALDL3?= =?us-ascii?Q?QDEusujHulSXShFmGBlOaURQFUNpJsnynZnQfMrnBbVgn0m1hQKG+9+eYhpd?= =?us-ascii?Q?VaBCXWLFSNTc4zKx4YZNruR+ZToDe914PH3DN9DMKVh8C1hNpwjKqj1w8qsP?= =?us-ascii?Q?RYDQ030lahipRlh1I52nZdQ7sc5mGqtXfrs7rMXTHkOvkaroFOF7gqCYsxPE?= =?us-ascii?Q?CqicpjespFmSTGxXQdmhojvXlJC+Gk4ZpeP60kC6sjkT6ih4NYS2FMwQPsEq?= =?us-ascii?Q?R3dZ0ipX7NfDFBsIucWFyWh7NLCozC9G+Du5YF9skyHi2W8MCIxNoQI3UH05?= =?us-ascii?Q?aS4pye4rD10MFi7pnBMWZ1ZgSWLmQXZXHKZzhOP406XbC7L1C3Fohw=3D=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: f100dbab-b12e-4533-9b89-08da0d9a3f1c X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Mar 2022 13:28:56.2872 (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: hpIE0ijR+UdStR/nrdZ7OgATrg1EtHuThuggM6jqDGmdZ+FP2ZaOwx1k4AyO4Z/Fwy/gkrezNL3cNd7+SQJ+kQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9133 Content-Type: text/plain; charset="utf-8" This patch verified another member of struct mptcp_sock, ca_name. Added a new function get_msk_ca_name() to read the sysctl tcp_congestion_control and verified 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 +++++++++++++++++++ tools/testing/selftests/bpf/progs/mptcp.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 770104dc5448..32425f9cd76c 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.c b/tools/testing/self= tests/bpf/progs/mptcp.c index afacea5ad9ca..6e7d2abf6ce3 100644 --- a/tools/testing/selftests/bpf/progs/mptcp.c +++ b/tools/testing/selftests/bpf/progs/mptcp.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 Thu May 9 02:17:12 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a17:907:7811:b0:6d8:2910:9a8 with SMTP id la17csp2175563ejc; Thu, 24 Mar 2022 06:29:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy+wCdrfYg1xaYweRA9ne0wor+PB8dkNbDK9ZBIYBSOVVZIyAF9T2fJYtLa4XYxglg+I3oQ X-Received: by 2002:a17:90a:f011:b0:1c7:1800:a86d with SMTP id bt17-20020a17090af01100b001c71800a86dmr6300368pjb.175.1648128550717; Thu, 24 Mar 2022 06:29:10 -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 bg11-20020a056a02010b00b00382043bc921si21794371pgb.623.2022.03.24.06.29.10 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Mar 2022 06:29:10 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4396-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=hVDS0JOx; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4396-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4396-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 B774B3E1014 for ; Thu, 24 Mar 2022 13:29:09 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D07C51FC4; Thu, 24 Mar 2022 13:29: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 710BB1FC0 for ; Thu, 24 Mar 2022 13:29:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648128545; 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=/iaE+Hkk6uf05n+lA7uOg3Uo1CA+/SZV2VvXmRmo1ns=; b=hVDS0JOxUjpE/fYz+rI+6bjU7WMUVi/feMSZOase2WrtHMzbZf9CsNP7/7m91N1IH/qChH 4obrBxFOcWLBUkxxcd5LtUNfEAQSQU50a7k4ImYBeWzWwpBRtZLox7P/iccEUomZ8IBz2h GAB3+UsUSQmo9xHlR/HJVtIv6ItmsKI= Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-ve1eur02lp2050.outbound.protection.outlook.com [104.47.6.50]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-20-bZSEmwxOP7eIfP5nABblNg-1; Thu, 24 Mar 2022 14:29:04 +0100 X-MC-Unique: bZSEmwxOP7eIfP5nABblNg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=njCaRk9GFbRADv/A7BKkh80svA9oUJYuNoZNhg6/aX1CleQ66mfPNM8pnWbkKo4o9AED4xyNv6Mdu+50sJ+2yUsWVVrgmpaGi5q3etSOHqNhTbqVVvI1Ge43HhQuXanK29kBqPeh1nii3FOxcIRG7MyKQhkzb0hp3GlQATWr4mUMprvj6D4o9X07kkBXlg4PoeUHvU4QchVqUuxaFszctB+AMOcZjiGcIKIcwRRHAsuVpRMHHPdeivQg9QNPusE8BlO2I/EiOmw0fZrnDodKynJShZnenvJ3yf4/8Zh1aHiuY1LZHYBpxa7yNUo8kpMoVBnF5Ayo6CEcsY4L2fs67A== 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=JG/vG7Drw/ofwsLs5xrO2V/XZXBe64laK4TIdczXt8A=; b=E+6TlgdZx07gKQdSEI11jsQbtwx7JgVo3Mb3GrDuOm6HBbER2eDkLX8a71aO7zwrCJ/JxZiRwg3sinqdBl1RjtFfnYjkS7Z4LtfkBNwNM4WhQPUJv8VQf+lVoUbyOKZntgvR2Xly3ZX2Cdwc+wjNFqfjOqhV6HCYl65Pme/ZeQPavsJy18cdWxncVTmuH+AB5emTXsSaO+L1OTwngKAM1BGIGLgE5rnG/+/yb3I8dVQNDjUKqbRyDYlx5IgVXMYN1MJuSFKXRQPlwdulPuRBDTQoIx812DNCAYBSstog7pP/RikNQ7DMx3jCpp9alGKjNIsgBrr2pkFMjq40PzRhUQ== 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 VI1PR0402MB2782.eurprd04.prod.outlook.com (2603:10a6:800:b8::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.18; Thu, 24 Mar 2022 13:29:03 +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.016; Thu, 24 Mar 2022 13:29:02 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v12 5/5] selftests: bpf: verify first subflow of mptcp_sock Date: Thu, 24 Mar 2022 21:28:32 +0800 Message-ID: <873b153faa28f724668185f9c3aea2c2e4bdc442.1648128255.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HKAPR04CA0015.apcprd04.prod.outlook.com (2603:1096:203:d0::25) 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: aa372de8-d871-4e13-306b-08da0d9a4314 X-MS-TrafficTypeDiagnostic: VI1PR0402MB2782: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: wiyTK7F+g1jkIYA7oEWi+iRf+IKCQjjt0D16tyOwVEcyx17eXa3gl/oxhOLsqZ6sFebnNqv2FWoF9AfaJWBS6guaEY8G+/5g6ZJQoJar2avSqwrlBB4W1e1cEdsbA3GR6Hg732nie5YCF2ywUe7oBR5NsZ6CZdvPIa1QcB5YywPmBfNUId5Axju7s9kPMuHeZ+8LkIlI2CDrU1nJux+TbZ2WvvwBcsWwXpSc+Gg5ld8/NPxVyshx6PBFK+mnbaLeKGbJNgqiNw1CBi0mAyNZ5nd7gPCTtF2/a/qPYxGprPIqJNacbeRPFCs7t7CPzYxiBP6G+9A3+CUi2uvLFYMLBI2kzgxJ1/vM1RxHeLaQfcd1pUC5rpAC4K+Te8QGYmBMtVIOSImptv6S9FaEmaHr5BGY8NdV1HVNNnn3VWI0LHLf9sxAuzyskpbZgyo2nrXphoUzn9WbVqeX3MufpVMTv4bOcd4fpLuDB3rjkDNrLQuDvPNVcf/WbHmIDp1Xq9l/Ns3IpH1e4zBGe6Hw8stba9suwFjoYUrRCjlVzYtRd4CTLDDdPop+XcJnzxr/b6dBVV9QOZ0sVVXrCe10xcho+vq2LjS9eyxkvJXTTgI/bek0uuqtaVHF9fZALGz2yIFfjeFHM6SXv87h40sXU/IYKLSWUSuUMiUgSCBK86YY2dwcnAAFon+YqCM9wIP5+150a0qrGiWCWeMjIuylbmNQXw== 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)(6666004)(15650500001)(6486002)(508600001)(2906002)(6506007)(44832011)(5660300002)(8936002)(83380400001)(26005)(2616005)(86362001)(186003)(6512007)(38100700002)(316002)(6916009)(107886003)(36756003)(4326008)(8676002)(66476007)(66556008)(66946007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?8oUqTFZQJxuCSh1XxWlo/0aCnCbxxGLoWZDcGeSEI3lB/2t1PXjXgdEhYll0?= =?us-ascii?Q?xVhBKWNZbLj9ZOnRmtvCrswRldUKXYEwmLkWeBy5ZmpYnRh9Kr+53/8Hw424?= =?us-ascii?Q?9BTOGNURwGevAyqmdvujD1A5FRzb3Vy979RnW6Ah4q1MHIR984tCcKAf2iz2?= =?us-ascii?Q?ZFBaFJ0YVafADZfGHH0EEPxDn5l/r8s+IusFduSZMJRUbQgFxc80Z34H+Qv9?= =?us-ascii?Q?uuZFGXrksKtxeUwasJtyapa6vcIy+8rCJ8b5s70xrsOdoqHjpSBzp/o9XbHL?= =?us-ascii?Q?1HacQS4Mz0WBDD80Q69LARei2F79alsA51za2+QHIiGihOuaqdQ0MA4Xc7WK?= =?us-ascii?Q?Ttl0KyHjj+0pxHuiuejEroVbeHlPWt7u8LOFFYcIlcAXYVMG7IAIQIRm9rly?= =?us-ascii?Q?m9mQ4tV0pbuell7dwq/M7k9lWLH2dw5yuBCPr0RMglAJN+zJqtYExahWFkyN?= =?us-ascii?Q?sSsL4tWgGk+k2jYLpC/ugYUUGf6iOp65O3djh8RbfLT7X3L8s6NZgZWD/NgL?= =?us-ascii?Q?tG1ATQvpCcmX0pjo0OVdCutrwTpElisEIvPEhlTdd0O/VpvKLdGYc8DysY5p?= =?us-ascii?Q?lYLh0WylAfnhFPvpCkRtvXSNGmT5F8Ojiw+468eQmIFoJKb2nWZ4poeQIBnJ?= =?us-ascii?Q?RWtcW2hcz/j6v2J7a3dRYfriFyJdawhtPvxF+vHqIRoy9V9VuA0Us+8TjHDf?= =?us-ascii?Q?PiJia+0wMoHSAry8DRppfplIO19ypbDAF1IpTkTyH1YFA/ZOomgu0y3OQsDO?= =?us-ascii?Q?pNGPPmVK7PjPfLwEJx3xfZEmVUf7HzxJFXTqDr9XOhEE6aIW3yL4ER8kiZgu?= =?us-ascii?Q?ycCOicIi1PvOMba8netDINJ9312Ck3wxCC41CywH36H7I4vSc0oRl1CwNkO9?= =?us-ascii?Q?JJr1kV7sKlSzpQlxuzHseKphSjXN4Woj23YkaUqhr1RQNsLZbFHITqK9e0ZW?= =?us-ascii?Q?zhD3QEkyIqergYhn/fJDD6P9uqI8Y7zmjMh2Y67fF6h8oVc3Bp7kkECBeS/F?= =?us-ascii?Q?uZKs1nGRWKlZwXPS2AAt5lGEGuY4mVsUfcEJUcsvRffHvecmmUCpve5aqkFf?= =?us-ascii?Q?TUL/u4TkIRvssDImx84mneFaPHKy2b+aYloTrfPg37eyl6pltoGefJUHMAeF?= =?us-ascii?Q?+mK/WNf6TITDXskdsnv79PBlEAJ8YS//BISgF8ff27WyIjnkiHlyyVGN84J5?= =?us-ascii?Q?ej4xUgi7jYke4TKkVCgLhNNB+gz2DueuL77G5J1mkR7vssgmIUcHmtVctWyV?= =?us-ascii?Q?9piluhPMVwlvhtSl9ZDrsctQUMARwUDsci09HMeEiv/OQA2MvCJLy7bJN5OR?= =?us-ascii?Q?Z7/SyzPA4T7IYgNRftrij9DaWxd/bF2gglTRWXm5wwUUAgdMbeLhqgpR4CYU?= =?us-ascii?Q?df39T5e/WVumS397V6tWiCs6xt2vPSgCDtzigTVRFESiCpK3e0TObc8HBAE5?= =?us-ascii?Q?qUEpKtuTI5YJWjsgC/P5f5aCgCIv24LnAjpTPx7jRBX/wXF/LY0A/AuwBMaL?= =?us-ascii?Q?eePr01R5R6m3mCZ+iQfZQTiNrjfjwaq9vh3gWTs2a661oGhNWXg4GU+zlryI?= =?us-ascii?Q?4KXclzNfCJ6eXhPyZsn/WFDVhDleKdISAqa0Qlt7gM/QSQJZqSsTw0Y2+VcA?= =?us-ascii?Q?NZ30D2JikJ9rPMoW2CRa9IyjSlBX1Q9J6ctmj5VOWqHFi48UxAqOy25BKkx+?= =?us-ascii?Q?uZQsw1KOu6NC/FF0BxNOzmO+aORD6AYZ5x58DLsKO8MV3/QMurSMxNckTXM+?= =?us-ascii?Q?Yw+IKAN84Uda2z4yWhO4rZwvLPUdhNE=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: aa372de8-d871-4e13-306b-08da0d9a4314 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Mar 2022 13:29:02.9273 (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: RLxNmeR+X2yc/BrsORZNhoI0Y3mNp5GHAbJu+y8vQRb7PgSRjZccsHV8l9vxWtQ16o9LPzpKtSOqUCbbHSqZeQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0402MB2782 Content-Type: text/plain; charset="utf-8" This patch verified the 'first' struct member of struct mptcp_sock, which pointed to the first subflow of msk. Saved 'sk' in mptcp_storage, and verified 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.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 32425f9cd76c..b7c230c4efef 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.c b/tools/testing/self= tests/bpf/progs/mptcp.c index 6e7d2abf6ce3..16055f553f29 100644 --- a/tools/testing/selftests/bpf/progs/mptcp.c +++ b/tools/testing/selftests/bpf/progs/mptcp.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