From nobody Mon Apr 29 15:41:51 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a17:907:7811:b0:6d8:2910:9a8 with SMTP id la17csp2543692ejc; Fri, 25 Mar 2022 03:11:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyWcQ5Gsjk3pVm6YqR+dF7UkZBV0MUFdHkJ6zwmAwXlZNGtjOxeRU6PKpu61r/4/wJnM18y X-Received: by 2002:a17:902:cf05:b0:14d:5249:3b1f with SMTP id i5-20020a170902cf0500b0014d52493b1fmr10572887plg.135.1648203081417; Fri, 25 Mar 2022 03:11:21 -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 k19-20020a634b53000000b003816043efb3si1902215pgl.424.2022.03.25.03.11.21 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Mar 2022 03:11:21 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4433-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=Qq9Hb10Q; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4433-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4433-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 F162C3E0F65 for ; Fri, 25 Mar 2022 10:11:20 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CC16223B2; Fri, 25 Mar 2022 10:11:19 +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 B6DF423AD for ; Fri, 25 Mar 2022 10:11:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648203075; 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=ScCEfU2Kxyv0jolY4vow+/zrk7K2bGTroEeiaV10LQY=; b=Qq9Hb10Q+K4I6ICSxHTOkCtOHhE9FCcsMWwNI8B+UfAG3B8BkbIyrLKYPCzm/nsYBRg5vt D3FlaHppYH4KSbeqYuyTpsQeQLwsuf/w91dSXdXiosZ46uInQs5xKgptIVp54sbSqDXd+0 kRAsjv89jMpD88xUJzyFx7Y8NMrNpmQ= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2113.outbound.protection.outlook.com [104.47.18.113]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-9-X1b7yEk7NF2w6wo1TIK2sA-1; Fri, 25 Mar 2022 11:11:14 +0100 X-MC-Unique: X1b7yEk7NF2w6wo1TIK2sA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fkaT+RaqNrPiBPoVGy769XOiPXOe+mNcO6okGDADjquvK82HF61m+TfCrAPEeKBjNhPka6ZyFAkoYbAzn4bWUqErw57mQGvCY8cYqurovqOx8p1vXLwEQ3G0nWgczgyP/Rl3n1vJBmEHGfT/SGhz42q20TuFg7I2HzTkezonqRWNClh5I5JBguGx6OAK5aKPnTcekfosPlk7Fv3MsDTC2zWoefTMWzzLfPS67S5ruranPKVQvR8b2zMpcwO7wdGPa/ZAIpQ/les3TFayeZRLKv0N6j43nbOdhjXZSFFp+GdrX6OftjlRf6bcLTpBYmF6yFOJQkbH9PfkVSW+5/zpSA== 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=jdk0wjz9o9t+jJnCq7e9kw1RsfGJIwd3IKfW/XU95o4=; b=OoXmDNtSJQeqLB/pzFFxrNICNIxTJg59Hxi1zW+vuND71tI/ZqClkImndyrW6oa8xF4SFlpZh2FMEH6oQPs4vXeonXcjFouWMHq/P643RnFyPdMbHF+cT3sNCSeqM6PmyjHENKG0vsWNQlHpAFB4EZHrTVNZd67Y6BOYY/vCcGL/A1+QAeJ710hN3o8UYZ9mvHjXNjR+3qr14DC3v0k2I39sPxvbmyORiLUpTwMFj6xUDQRbFS6wVvlsH1kMY/27m6AfLS6RC+aSIaPHnidoF0aYbqto3jqef5n3VmC43xuFVyZj5uGkhO/8w/VLaIeNG3h10ts2CZ7Eoh6EF+FsHQ== 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 DU2PR04MB8726.eurprd04.prod.outlook.com (2603:10a6:10:2dd::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.19; Fri, 25 Mar 2022 10:11:13 +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; Fri, 25 Mar 2022 10:11:12 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Nicolas Rybowski , Matthieu Baerts Subject: [PATCH mptcp-next v13 1/5] bpf: add bpf_skc_to_mptcp_sock_proto Date: Fri, 25 Mar 2022 18:10:52 +0800 Message-ID: <22e7ba644f5943834b2a979de3847ec2c88e0c00.1648202310.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR03CA0118.apcprd03.prod.outlook.com (2603:1096:203:b0::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: 32518c55-43cc-4f1e-c957-08da0e47ca5f X-MS-TrafficTypeDiagnostic: DU2PR04MB8726: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: i6wn6tfd9z835N3/l9U8qgJN9q6RReLo+OcFcBxfWBuDyj3G1kU6KJ/1hG3tRS/ZCQaCKG8a+mKGSrAdCD/3f5iD13fkMUXAXzw0u1wSFCJzpzuU3MiET0qCeZjGa5vTdSdvaDhLJzNe4degkAX1hSwQ5omTJmN6CJt5443ubhv2TXBO9xnNrBoYye6NZkDGrW13VKykGPb1rQ05HPIaRuvw8NaIsIVmKOkG38dL0KCNwl8AB2AYjmbQymNYFzxPWv01G07/xhqQ5s0UYv8qRofek0gCsFT6uWRsBn/ockpLUQqWUkUX4y+wB3kzz+Lmii4B6KG2fupykBWl1jN1EkdWat8kMU5JN/V4k1ZjGQBZeJojUO6vECvKcIxob3UOFCpu0wgwQOi2O2cPudyshmKV5eX98+SlWoXXO0b8UbyzQnwaM1PZzxllcwXpkeKb8JSEsk9kVpWrfy2v6M/TDyFVgsWrHfYWgkpYgHyVDAKNsJfPPzXl+p2eUcU2l9ShTf4mNoJhA+myTb/7JkEBEdtVbLJMvN0mq4navhwIgAvu6tsQsRTNk47BpeSGo9sk0HWGuxZrOIFPGZ/PZZvQNvCb0kjErwba3CbZDYvpcpTEWDZUONZRppSnbKBg9BDUTdOgUvTWmEdBuWStmrWZnhJv6uE+FYQhw2k7o7fuw6epGU/AVEH14/Mq3GsFDTOYDgSf9F2/b2/p8km17RQCMA== 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)(6512007)(6506007)(6666004)(8936002)(316002)(6916009)(36756003)(54906003)(66556008)(8676002)(83380400001)(186003)(2906002)(2616005)(44832011)(66476007)(38100700002)(66946007)(508600001)(4326008)(26005)(5660300002)(86362001)(6486002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rGGqmGFkUgmAi8rQm6qSXutGaPD9J/Lgpx17Xt2uK5TDF0tlHo5og7B1gsXv?= =?us-ascii?Q?0CZ+lEg2hivdRnHr0wlN9Q/YU5B4gtS4pfzC6XocYOOYRPD314TK6S6LAQCq?= =?us-ascii?Q?JgFa7yuiH/9n/QwFIpuqMHCn6gfxoA8WuqwSqjTKWDppzuuVAq0kcrGN1BSe?= =?us-ascii?Q?bs2qJSTvQDl8rNpWy5mDRC0zKZ8Vw7yBfzYg7i/7Ju3Iea3mVtBvYdCmru1k?= =?us-ascii?Q?n1g1YWEmOiq82zWpNPTco8zcRmmCqJ/rltkGQpw9Qokb6Pn9ghEIhFWpnZnk?= =?us-ascii?Q?ZyVH9E6oQL0L9QRMnPViu8+vpku0mDsgwWHZaE7p+4BFU3rRsF32koPEaoD5?= =?us-ascii?Q?Do4bTbceXVx3e6PbYjajlS2NxehZ4DeLyfeNVUBuTvswy5FDQPMPqNuo09QG?= =?us-ascii?Q?dO3B2BcohPe9R1m6nRyux+QG/EbJJpS3bEcPM9WmDIqRFVoqf45gj0/kUjaw?= =?us-ascii?Q?KlBONI5Av4HhDRkPJm0ksB9ngQwoHmNGG9VaL/hGptcTXPfxKGBApfii7CuM?= =?us-ascii?Q?HXuxXPrQu2ok4z3K0xdSzP02pcvMghB3dcwPA+th7b3M18SH9aOHt0/kfk1T?= =?us-ascii?Q?zCsfianDGrj/ztCkGbHwkalv1cDXu8WUbL/eMaGmTQqPzk8NrU1Ysj4BDNHg?= =?us-ascii?Q?OJi9/BLN4FrmqIOSN2Qk5tCoKnUD1IwzYvLbq4uCHctGdBPoBWBSazpy8Ebs?= =?us-ascii?Q?IipH2zILE9YuytWixJcdEGoSGKLiIf8+TK57JVTW6v95K2BaNzEYPyl2cwvI?= =?us-ascii?Q?DVMRIyOTiblZx+UslbjzooqreZJlUX89jFCLiY+QLlv8Hkm3Xns5+rhxJ3FV?= =?us-ascii?Q?Nd5e2r7N032C10ErEj+1gRSsEfyB7GyB0gMsaV6F+u/X8NMIQsmVqzNUbPNE?= =?us-ascii?Q?o+gDJhmA//0ROlJ0qUtJhoBrebtFsBnbK4T8CiHIVqLkv6Moh4ILWU/Zt49/?= =?us-ascii?Q?qzPpqIlrKMqOqN2cZrCJseHJypOT4fmHwAN1nKy1AfIqwIsakrK8I/m3uEsa?= =?us-ascii?Q?Rf0kkzWoMvB396CIAgrsYWucb9Xgr8zNG757gHdy9CdjowuqwUquX0b34nRZ?= =?us-ascii?Q?11dSszDZMzfg8VLLzp2JSHWYcP6A48O3NOTwv+gsNpOyy3oRlAmGT7NBaJjG?= =?us-ascii?Q?DMi6tq6aHnn0vkd/DRWmvfxcolEckn4ua6gYDCpjdwpMM8Ej0nREG4hhFwG0?= =?us-ascii?Q?GmN+hIIE/8P1ifrWYP6LFQ4Qe8IRiKw7X3lqYz92XBtoqzyiRzMEdVxji5zH?= =?us-ascii?Q?2I/bjJRS+VgrnCdQwarlQntFnq73BNqVaYJ5x8Lumrp7l76qD2yVoXA1rKlF?= =?us-ascii?Q?qLCc60G6VlkcYfKrRV0VSPYKSBS8IRCQ+sBeVKjy+zPiuvEVfIbZV737J1jU?= =?us-ascii?Q?qXYnLxA6g9pvcilv5A2/Gj4jYNyy06xYRJmV3H5+6/YbegvGc0zK3ViYCmab?= =?us-ascii?Q?I63AUqwtITRclNLZREbSaKoRzrE8E+jL9+CbtomZYFrozhNaNR9o79LfbJHH?= =?us-ascii?Q?d6k6jQOQqLgm/7aydL4H+bIAFT2cTfsY/XVarhs7iMKpEgIF30kSUHfoSYFV?= =?us-ascii?Q?331483Kej5K0l+u9dbSap8+Fh8GwBqGVm56zTfSoG36XyxRBFuhgxJZ/KyiB?= =?us-ascii?Q?tAz8jQM30QGAWIoWRdRUNAi7rwr2reEZu7Q/M5SZYc9PyywUBZesFJlVOFBy?= =?us-ascii?Q?TRht38068VCSX6CqkvQ6eFPoDkmokUov01JPqoPCd6dwjOfPIHnZxEen1zsp?= =?us-ascii?Q?TBPeo1bPdayE9ll++WloQpkUiwn8qtQ=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 32518c55-43cc-4f1e-c957-08da0e47ca5f X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2022 10:11:12.8807 (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: aD0wLYgUZPeInmqy12TIlqVVR49gvNw/m4YDWIYoW4gy/daHbam6/e+w81UmYL5o5j+Kup10724xYihSDYCTyA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8726 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 | 16 ++++++++++++++++ net/mptcp/Makefile | 2 ++ net/mptcp/bpf.c | 22 ++++++++++++++++++++++ scripts/bpf_doc.py | 2 ++ tools/include/uapi/linux/bpf.h | 7 +++++++ 8 files changed, 67 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..99dddf08ca73 100644 --- a/net/mptcp/Makefile +++ b/net/mptcp/Makefile @@ -10,3 +10,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_SYSCALL) +=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 Mon Apr 29 15:41:51 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a17:907:7811:b0:6d8:2910:9a8 with SMTP id la17csp2543718ejc; Fri, 25 Mar 2022 03:11:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJynvobqDNdBbSEVmJU3C7b9nNPtE6plbpR02zm8i+GhirKizLVhmSlUNQVNjR2aFsjnmTKH X-Received: by 2002:a17:90b:350e:b0:1c6:cd4e:303a with SMTP id ls14-20020a17090b350e00b001c6cd4e303amr11689192pjb.141.1648203087087; Fri, 25 Mar 2022 03:11:27 -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 v17-20020a62a511000000b004fa895878afsi2119036pfm.254.2022.03.25.03.11.26 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Mar 2022 03:11:27 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4434-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=k1WXLob8; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4434-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4434-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 621C63E0F6F for ; Fri, 25 Mar 2022 10:11:26 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2ED3C23B2; Fri, 25 Mar 2022 10:11:25 +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 3660623AD for ; Fri, 25 Mar 2022 10:11:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648203081; 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=vzyjNLcDObpv5jLoWkJWRKSEVHToUjOmCF4XDxaTuQQ=; b=k1WXLob87hPgkJbU0DXwH+FGpyxahp+aCblpMtnysFIiazurAsYP0xxMhHE5zOnx/qjCzk LBplrbnxHKnanPSM9k2QPmjMkoUhXFwOKLcEvs1TgvTmSFKLw0T/HCGjT8XwoauQg5AVMb dh1yNTlEsVzdR6xoYDY3dnrWJd30xmE= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2105.outbound.protection.outlook.com [104.47.18.105]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-18-SsGfQNMRO1SudIEq5mEVDg-1; Fri, 25 Mar 2022 11:11:20 +0100 X-MC-Unique: SsGfQNMRO1SudIEq5mEVDg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cqr6j/EJBPJsfxiiEYxk5GCzVrHMKAxTEQ7a833HRUSaezZEYp8XaH5xh6/PrZ1UBdJiCINHbdI3Q87mgHlu3L+VmzMe9uaBF4W5i1IYXE8t7Vyt3+qaZ/qOhvZcxwES1UtgaBZFSkywkxdJPSvu7nNyQ0zYSutp+5n/fYXyN4hoS1LhImxpedgKyCnsQc9fi9Si2IeEmUmj2H146IwcTYIT8VFpjQg6ng/YUcnS83uuM2ABcMPXAxNXouRYJL9HcQBokVCafASJxujQAB8/xrE8LD+bIRRuT8JfFyuCXeC0yQCRXm95T6/d4H/BRsQ8h4Q0cvpTw+AhKe2MkVma/A== 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=4+R3mXoj7/H/g9cgoZKWvYyVDWFS1soENavrgXPvK7M=; b=EBCWRQYgcfZ2uzx6X6Wk9sEkUWgNAi2+M/K2vfeH6T8cerrNZ6HI8pVAA8tmt2QG8CudQpJAftTERhUiBNt15UNDKEMWlbTOtphElwvZPKViapwsf2f6UUKag035vCRmdn/TR7YJyHrGvpptq6vAucALhy2fNvmWRLtzahAOPVM8MXUcHl3J/sqQ63QRxL6rluhI4LKeymGt3bJlUBapB6Ur1zJZ4qu3O4M9rNNEq9GSLJclNe3T/ZoXmUzCe8gidbj/tP4OBsXapONVGihZm60g8Ix5DlcekG8oFWrLzveqrs9z8/o60xcs74eKk6jHIMevc/ngdDA+St3m6FS9Ww== 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 DU2PR04MB8726.eurprd04.prod.outlook.com (2603:10a6:10:2dd::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.19; Fri, 25 Mar 2022 10:11:19 +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; Fri, 25 Mar 2022 10:11:19 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v13 2/5] Squash to "selftests: bpf: add MPTCP test base" Date: Fri, 25 Mar 2022 18:10:53 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR03CA0105.apcprd03.prod.outlook.com (2603:1096:203:b0::21) 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: d0e60bbb-6306-4f7b-604e-08da0e47ce38 X-MS-TrafficTypeDiagnostic: DU2PR04MB8726: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: taEoctJNHWLI8eTRVBUat625468Ud5SxAEXZ4WlofcGhCLitso5A4041WciPhphN8Uq3zoOk/4f5D1fmCaghH2ftm/DFO0dgC/wtpwLHPieqj4UkgTblQuXwJ7ZpRcuH+0xZ69J5w59RB6uDFt+Atk2WvyX5ZjAv5nzzgTnCAiozGUGiVg4/q7E9Di9nnjSzuR7fmVMScqO4o2SWM7WR43NoBBortDbYnN1X4EJ8LOVI7agC4PdO+iOQ3x5omRTCt/K5ZH6ddn/bVBAmd/nzL2FgSuoU80Y69tCM9lKg2xIRWqr6ZRjsLFB3xVqKTjPByL0qpnoiQSBQ26D2rQBI9VN8GtEOTrR4HjIUBtHwiQiyhVf4XOZ4ET2XQdy4gbYovwM1HUjDEAINuizjyg3dVJJCs7YTVE//Zp3RbVtQy2kIUdNLS85JFcHh17mSeVFWgBLMICOSDuE3jhr/45qg1YjcNrXi6BQ+HVUzznmbW2kchhKLjWLaL5xDZXcjSphUEFG9A2A8ixNMPKr2QNA7l1X96UuQ/gWT/Lc3zovVivBR/nwXGov4iHS+g/C3EYSAJf+bseRPQGmNDKoKVOA0sNeTCXnWQEE/KmkCXOuVvRHvgnxiGycObcnChsq57nk8V7zkuk7xleWBq7ybAO9yH/Htc+mPmuuyOkiojHNy7E7039Q3PckRCToUwIH+uRGljbleWpYoU18ylHo1jnyYwg== 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)(6512007)(6506007)(6666004)(8936002)(316002)(6916009)(36756003)(66556008)(8676002)(83380400001)(186003)(2906002)(2616005)(44832011)(66476007)(38100700002)(66946007)(508600001)(4326008)(26005)(5660300002)(107886003)(86362001)(6486002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?AczoPNMTS1bxb01bNq1kjrMZdp4CP6Ah8XVGuGJFpRHlMZwgIX3YsovMhowv?= =?us-ascii?Q?uDG8k/SsBgFn44HZbY5Rb5XFzyQZWNwr7wD+PhCzpE6l7L00JYFareeC4jJN?= =?us-ascii?Q?V0BncLBfWmuSkrsO6bPErNRHfVZDWeLH0GfIEJ45XEAQ3xF6i+6n+NVPmB/S?= =?us-ascii?Q?2OncXkhMkMoZi51r8EIHx5Pa0ILii6aps6XNXPEWSVoGPzIeozZsyWeRqPZk?= =?us-ascii?Q?dAFGKI9hpoEhezqzFAC101d3qq1eQpROoZ//VTtQbyVw47mMYkqjSmzoueGm?= =?us-ascii?Q?wNnYUxMVAIQnJPHCTZwgUa3r9Stif9IZlwbmfYqwHyzFetHwmGT3WgsnMJ5y?= =?us-ascii?Q?udOhAECiImNLFspS9+encv1Lye61LjKurVliOdaFfHh2u1lAq+XhRQ7PJQOU?= =?us-ascii?Q?6O0D1MHFkcxLxnf25JVd0IJddxnrc2vnhQxjB01uDfz6NLFytRxE8OmisIWK?= =?us-ascii?Q?wpeDNrO2ctatsgo3gZxTTKekAny+vRaXRaQBLkuQwVQ+IDidE/8084XbHvNp?= =?us-ascii?Q?btdn96izAav4CGZXMo4R9XryW51CZoraVIm8zLnUofi/+vSj6QudUyEEiVZk?= =?us-ascii?Q?AodDfnmVEtSQJFHETKRGMOE3AIHFXoLDMd/qCnw/XnkpHUTwrCyRcUTBwVQM?= =?us-ascii?Q?wP8mNc5YEQ7rGToFwqQRqTQ8qxI0x5uhC0aHRes1iC09SzT+XyMTi9P7NiTI?= =?us-ascii?Q?YHLtPV/UXPbdamfl5mXyUZlYtu9mBC61vIRc1ovNatyLWIqTpIgHv8gecAXb?= =?us-ascii?Q?uo+vF6a1aTpTnJlwnqOIV7KM0QB1WzYnk2Cu5c1xtdC4lc5c0yy+Tz3+ZDZL?= =?us-ascii?Q?LP7MbB2mCMr7tx74LteToB6GCgkKOO+96cXrILzg2JIoH5MSj4wCgkxsSHVU?= =?us-ascii?Q?ZIBhKMTvxkzgOB0KyStWDlLNHBqUKxG8p0Y4VbMirJWsQJWDT1K3m2In5brO?= =?us-ascii?Q?wry7ucRNkvEQw8RM179V6d2pYHKkgA0i2h3DqELsMPt7CPQU+bj7gJ8O82EB?= =?us-ascii?Q?nQNUHXZXSLeaEonVFPjXkOxb4ASDgCFCK1m4wVSfofuXaaULgk6lr00BOrYH?= =?us-ascii?Q?aGxW4AyoEWb2a5vNDbe7tSi82M85bxO/Zfegv7bVnrgd1hYald4Qx1H0Pgr8?= =?us-ascii?Q?a93z9nvb+UGpgZbZ2Ais+Pzjbnp/G3eKePeuYKxMhi34Z4MX29H2mrUJQaFO?= =?us-ascii?Q?Cy33yMVLrcOJWCyHJKWCMSxwQQL2x8kNGztChYglzsZrP7/l7QA+fVtLnSgH?= =?us-ascii?Q?d4kW50M5yM1Xw5v1c0u8krufymzSF54uSNfWMS+QJIKNV/veFRxY2JS5gII8?= =?us-ascii?Q?dnMtkZ35jyVOAl9bmHNhmmqPSoelo+bKeTuv++Z/cY/cdMiFBolbhrDvdV9y?= =?us-ascii?Q?S4HGUKEOjBYKz5BgMlSXDRV5WrSS1SEZ/zt34spimimzmr/Xn0UJYG3c4P7G?= =?us-ascii?Q?2dccsdJwFvmWye+HEOKbKcMELjs3N6XkEAzn05PGa3BDuV8qW82XS7XbBSCY?= =?us-ascii?Q?jRJxotkyCAYgjJNqVNKwUxhvFg+gaHy30WvCiOa8+Z9G2gVqy8v8qkwInXHN?= =?us-ascii?Q?FoNxtjjB+yQ4hygyOJK+oPFlH0i6NTxZ9iJIcjVuqkxaM3I74awM1RFG2MPJ?= =?us-ascii?Q?+3TfGyCy9DSkYPzTwqiF8cq+QGFR+yOA4uD8u1gaTO62uGtXJv0Kabjz6Jdu?= =?us-ascii?Q?ZeswNu1hKC09OsNUNftFbMVfegOqFm23pQHwgrWErgwkggOofZu8/LUwJvUQ?= =?us-ascii?Q?DxCwZpM5oxV/d17DFeTmYth34oG6LGw=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: d0e60bbb-6306-4f7b-604e-08da0e47ce38 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2022 10:11:19.4583 (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: gKttMMbIXeBSf1Vj2LmJIr1X1UoaCvPip/jYP2ZLv4kMbLfPi9iI+Ote/bd1xd9Mbdi9QWU6nnMmLcOn1mjZUg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8726 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 Acked-by: Matthieu Baerts --- .../testing/selftests/bpf/prog_tests/mptcp.c | 77 +++++++++++-------- tools/testing/selftests/bpf/progs/mptcp.c | 16 ++-- 2 files changed, 56 insertions(+), 37 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 04aef0f147dc..bfd521e17711 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.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.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 Mon Apr 29 15:41:51 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a17:907:7811:b0:6d8:2910:9a8 with SMTP id la17csp2543757ejc; Fri, 25 Mar 2022 03:11:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyGbo1J8k/i7QbqLJ1WkJ3iS7WyNkOUvNArAfzqupeB3y1EaK000wmmuXvPWwM6uhWDMsNq X-Received: by 2002:a17:902:eb8f:b0:154:c7a4:937c with SMTP id q15-20020a170902eb8f00b00154c7a4937cmr8566894plg.111.1648203094965; Fri, 25 Mar 2022 03:11:34 -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 w9-20020a170902e88900b00154a965e488si2123611plg.237.2022.03.25.03.11.34 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Mar 2022 03:11:34 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4435-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=MX44AxU7; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4435-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:1000:8100::1 as permitted sender) smtp.mailfrom="mptcp+bounces-4435-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 8463B3E0F79 for ; Fri, 25 Mar 2022 10:11:34 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9072D23B2; Fri, 25 Mar 2022 10:11:33 +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 7A96223AD for ; Fri, 25 Mar 2022 10:11:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648203089; 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=hEsLF83H6+rDx3kwe5teq8fGJlziLMMZDyanSFadu/0=; b=MX44AxU7CwBNBc8ri2QPcga9EaSBJnuZqr9YSveQzI9zaSlyYJXLUEHAOJSmzDwq3tkeBa v4zpS3JAnBi6QDtcduFKchaBE9Wqp3vglhMBpt3PQefik6OTXU5ZyHu12BkSfh4WTndXn1 ZrdNnw2b3PqMpKN3h7g4i0aAyV5jyOQ= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2110.outbound.protection.outlook.com [104.47.18.110]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-5-SY6MMVKrN0C8RH0VOnnf_A-1; Fri, 25 Mar 2022 11:11:27 +0100 X-MC-Unique: SY6MMVKrN0C8RH0VOnnf_A-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SKKhAMFCWHLuydpzsL8SwNDgbsObMY2ngL1vDTrOE4UZBcywb+Piuqpd1N7t7cAbPRSntLdPKy+nBylxr/38RzfacVIe1a0Olm+Y7sOGpSTSi2z2yNEg249JcCm/imvHIz2L/Nlc/p3ppls/7Ksad0q/uOF3adfz4dzHLY3CuCgrVF4kBpibkShHRpUG16mSUOD6urCc0AvGX+GV4BnsPzv/RFe45kTsdY7i4AKCbykM8Kh22/ZQehr0S/PSy/Po4xO19j+9WA7S3SL9hwsmlYTsnJxv/CcACE94s/rj/VU/1Qd/9L1uoVE5Y7k0VV/SOWFrFEH9I6YX5sOB+u/ywQ== 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=8ERdJv3P7gAxP1DQnPoqDvEPGB1ZMKnKomArTGuEwgs=; b=gY/zERujvFd1PFI69xnWRdmYkd5/yQQBUvohEfHJYv34pYoNgpNGCVPSg52I1jTBOCGfF+LdbkCtKMsx3F24HL4+7U3cPtOh4/DccYOx0qXYsi+Oy/DdYsOUwSFeq5bFQoyIUySvjfEPi9Eg469dXxHXb3ET26uBOLN5jZt8Wbwnr1NlQk3nFwIcHxkK43hH66mZzkTutj/CMttd6VRL7dpiq7b9QuMU/Xzgiz02BndAgZEfNoX2R2CvSnAcNMVLH/8oi1f3NCmTf8e9nfrdsxHlVf/5tzVMwvIovjhNKSs7y56NRHuZj+MNnyDhvsP2lScNaKp3sqntqZetKnPiIA== 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 DU2PR04MB8726.eurprd04.prod.outlook.com (2603:10a6:10:2dd::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.19; Fri, 25 Mar 2022 10:11:26 +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; Fri, 25 Mar 2022 10:11:26 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Matthieu Baerts Subject: [PATCH mptcp-next v13 3/5] selftests: bpf: test bpf_skc_to_mptcp_sock Date: Fri, 25 Mar 2022 18:10:54 +0800 Message-ID: <7dece35e50a19add02d10e243b6f28e382c4e1bd.1648202310.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR03CA0108.apcprd03.prod.outlook.com (2603:1096:203:b0::24) 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: bea32d49-19cc-4fbf-a339-08da0e47d25f X-MS-TrafficTypeDiagnostic: DU2PR04MB8726: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: xlkybvWkxR3gN5FcgDv1GT2x+WaOBoorEWtB6A/imIWXEBw4koKF+n3WSGxKAyqeNG2RJBE0BQ0zos5itI9EXvzDGX+M+5qX+AA4js9t72v63e2OD8TgaxI7Ks87LRACo+RmsHnUUoKTcNh36D1S2m3cXG9rC/bggr+CdK+Hy7Q1OoA2SEFuSMlJ9mf4/2j65w0AhYQHQ3fd1rD60woVhRb42M++wh+c9837E4BPiwVCprXRNZ9P4qPruIuo7M2wGOdd+/0rzQnojrUBotXZ23Wm6CAPu2ObbEA6SuLVsaTwI+qCuBPQHIeN3+PQnxnjPB4PHrtn7B2ibP5S6reZ/5o4p9e/q5JDRD3mcB9BIlOKJNMYFwXz3SDuJoxY+LdN+cdlBg0eb7n3SD2doJ4Km5SXYRyy7czI6MiNfUSIcneqgKxjbNc7FW1VMpXkqiXB0nzGDPWvr3Yb0ywt3iEeCdwsv5eV+RlVreMDZ5SGqfBiTZVvwCRfm3//B7Et1xu+e1kSltsmhzPDwLsw0bhxLeDVavQ+ADBhKq3bTfFxxMYU9KF720lxQZwE5xfrnXZ/kRKO6bG/epXKFFQiEuzqP5WhJQnq2z84AXPOIlXqVBEChFdajNF9wNZObOI3wc54QeghO76SdPOgXpCzZMN6+1Z1Tmm+UvdNh14tgzU0fZBaCOCJpgpCV4Xw7k19rhcJ+1kDe7X6JNkLD0ti6m3gAw== 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)(6512007)(6506007)(6666004)(8936002)(316002)(6916009)(36756003)(54906003)(66556008)(8676002)(83380400001)(186003)(2906002)(2616005)(44832011)(66476007)(38100700002)(66946007)(508600001)(4326008)(26005)(5660300002)(86362001)(6486002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?oBSPaIi2B0crfgWCuBB/uzwiwX8iiittXrpsG0Cv8GTWKyIS/p3/F5NpJUMD?= =?us-ascii?Q?s9AujHDT7W1A6mVuHBzFztRVA4TkYWxMkjCzx9f+y1F91GXD3sNXBWplT9tK?= =?us-ascii?Q?w6xiKMXam8HzOIIozslv2nx7d0W1abxwZIb+leRuuZoCteeR51tOA9YRZ7ld?= =?us-ascii?Q?Q7MqoJQhFyIxILUYBn5E4aI4I8EtCYptv6TdnkL1jvrplPeG16T1VLWBd7IA?= =?us-ascii?Q?eoaXgS1B64om+kXZhUxfS8GTQL2YQLbhp917QH7chb4vC4SxgBSqaTgvY8qQ?= =?us-ascii?Q?Cs466iQ9BnSlCUPkg3RywF4LF1beY+0El4twl+S2obkrHByPht+DxZG0+qJO?= =?us-ascii?Q?CAFDZAv7keGReIAEfe+DErmctR6Pvz8qNbuwLOaA/1XcU8mmlJ8ROLv52wBv?= =?us-ascii?Q?EkpeMuC7VBC/Yo45WDll52nAe1FR0BkXyT6KCoyhKHEc9P9yHCrHEEZgd1uU?= =?us-ascii?Q?Oi+Ttt7/3SNaVpO11rKXxxZsMmx8DUa6PZLq/SAxZmUcKV7ude/3HOqQB/hg?= =?us-ascii?Q?wGmeKpc752mdl712Ez+wltGwHZWaJxygpjL0/nkLhu+IqK8Krc2WTJUr30yM?= =?us-ascii?Q?GLQA8nx89auT82dFFJ+dHQtaqabTQpFV09nbDnKv+05WQOidSnCXMwWgUgQH?= =?us-ascii?Q?/+GuSB6SdExr60x3j8SDWIlJMPjaJQowPZTtGDtcJKzatIgGhTNDvbTGgzq4?= =?us-ascii?Q?HaMONvzMoLMfhPC+bZW8psOC6gxr/RiE4vShydy95JosXNSzkroZSlmV6KfK?= =?us-ascii?Q?ZxiYB8rcFtS7B1k5EZRJMr777wciCOFDxcDEPa98JcT61l/W6INXhVwuCBGo?= =?us-ascii?Q?kU1BOrqCs+2/SKAd3r2Av23H/EFOqcPAuTtgywhgHrLRMKrAtkGNvlD7IYi2?= =?us-ascii?Q?Yc00oG6oEBeOMwnQYMq8u0wE6AIaeannXgMfwUf/5U/RJ+Bofdr5eOdz3Y9b?= =?us-ascii?Q?fIA29mhUM/QZtbYutMUeqV7zGyalQLaGga8Y6X0pf07neRRIMzcupY6R041w?= =?us-ascii?Q?Y5/JgFjcms4BN2ah6gYiOdD8WFZ+/C2BzoHlr6mMBDm9kseNIcLt+tPQboIH?= =?us-ascii?Q?eiOCUxpDLlBZVCjQVkrWbp9cxy3jZa0QzGXgPMEmBgU/N5gghBp3Ro0KV3pO?= =?us-ascii?Q?b4oT7WItRxdbJVfVkRfLdG0J7aJXiUrFdAQY2eBPRsTFdDn/rz8SdTes0ULt?= =?us-ascii?Q?hiOWmhkzZrRKaPpBuG5h7MKNgDy7W4+0tjAzt6dTEU31SIhtas0xIF8pkQkw?= =?us-ascii?Q?0dyrCYToP+Cqd/Gq475votHngjWwlAuebZJ5fI8QBwf04zxYAKJJWEp8tRys?= =?us-ascii?Q?VHFmdURty6Q6T1vaaynA4nOzHldyJaZ5C7Ne9dEBvEJWeBllTMQpkUW9GiKn?= =?us-ascii?Q?7fkHMeXT4nb5+26V8gTJvGShX6TPs1cXccCLhyyyLEG8WGB13Jv7f2wEiaUV?= =?us-ascii?Q?TpXJxH2ua5fHm5Dg8D7iLmgM/+KfEeo3Y6ua749Z77jSVWBQ7NiTYzCbxhqC?= =?us-ascii?Q?6rwxm1U7yGCWl1/updFaqNi+uf49haSdY3LkYlsEF42guCgIpY6jOmoMH7DK?= =?us-ascii?Q?YQqLwMvXIns3Oc0VRMH0Ha/XqtskcvFqwF4GsEvOmU+mQw8oiYMOhkJuAKUt?= =?us-ascii?Q?ej5+bgNysv1seyqsb3WEDFm1DYV579GkY99WXbg1kI4uiAfH2wgzv1I07cWu?= =?us-ascii?Q?AJk/MqgTc/8GcJs1iYpZT6FgWV7ekQyv3QMkxjojQr6bInxJVxYO43Vy0swB?= =?us-ascii?Q?dzHxmUunb5/QNdnkw4lsz2ZhbVRPcIM=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: bea32d49-19cc-4fbf-a339-08da0e47d25f X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2022 10:11:26.4733 (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: J4jJpTjRvFBF/5xEyPCvWYKGbZraCkKTX4PxcXrMlkn2xIM3dlxPuQAIiQZSqzV579wVjPEA1ey+elS1d7Tc2w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8726 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 bfd521e17711..3232ace122c9 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, err; @@ -88,8 +168,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 @@ -100,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"); @@ -117,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; @@ -124,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.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 Mon Apr 29 15:41:51 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a17:907:7811:b0:6d8:2910:9a8 with SMTP id la17csp2543792ejc; Fri, 25 Mar 2022 03:11:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz8NqDYDpEVtPyp+BEiBRYdpYUhGOHq4i6WdY9Ojd303oSXj4h8zMa9ysoqz471aRAYOEQZ X-Received: by 2002:a17:90b:1b4e:b0:1c6:fff4:34dc with SMTP id nv14-20020a17090b1b4e00b001c6fff434dcmr23693050pjb.76.1648203102985; Fri, 25 Mar 2022 03:11:42 -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 q22-20020a170902789600b00153b2d165f1si1673276pll.505.2022.03.25.03.11.42 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Mar 2022 03:11:42 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4436-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=EZAnsrfm; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4436-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.197.195 as permitted sender) smtp.mailfrom="mptcp+bounces-4436-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 555F61C0E6C for ; Fri, 25 Mar 2022 10:11:40 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 020A023B2; Fri, 25 Mar 2022 10:11:39 +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 3DF8423AD for ; Fri, 25 Mar 2022 10:11:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648203095; 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=YfU3NlHtmKC4wD/Jq/Fxwmyknni61zS/G1XNJI2tGUo=; b=EZAnsrfmuGEkHVK4n6bwwybvhBud21YAA+270zrlfwkPe98BnpdEtlHpYtKd2CsnSlLvGo G7Q/4sBAi0YtAQinqpYctWq2HaOT4IuOmtGCPMBw4PMcaqemu2mYMlOOhQMrAtF2bTZqZg 7wZ+sT5RN+pvVyYq2nfhUjs+IR/EMdM= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2104.outbound.protection.outlook.com [104.47.18.104]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-20-2tHKMfuvNH2sXfGvNqSu1A-1; Fri, 25 Mar 2022 11:11:34 +0100 X-MC-Unique: 2tHKMfuvNH2sXfGvNqSu1A-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HNd0nnfNRTieUjjn/5/9HyKzK3EpGT+wMiS3Hq6BvD9HsAMIP4+9xzPYlom7I2r9SxcOBSa7Nr+SfjLaPXgmHqjHESjdvIqwJu8fyADX6bDf0WtuzvwC/44FJMrDxiadfm1AOOKV78pUn2oV/Fb6NE5YnQn30y5yFizrKmpN5anZFynS41cNC4yVY+1PExV4zTuk9n9hIzUxzeED+uEX0XwBfVu1dOSwkNxeO8DdoqMQH2g7U6n/fIT3v3xILfMmqzRyXKik7/PRgj7JmjU77oVIHBy7/gXI0WPIgtUsARiCbwcoT9sWbrwiTSMZyjQVEHf8A1m6yyM/hkIn3m8UjA== 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=Ci/75E5wzoA0muwZ6d/TDPhr4YYB/SVkUQsgPco6p2U=; b=ffmDBh7Xt+IbKRSNeBmyEuWQrt68DRF4/a3eE1PgLhbKsvMvk1/tndAjk4RXNVLiIP14pBqdK0w2RIuLGLfiJOOcu5dodZy9gqUescgJqk9yvdogIYQwti2hKbmup0xZ1Nd8uDK2sdKp+ysUeaTirV0MNND5RdyJJ0PG6+OD1csQJhyja5EpUvxa//TxlqVMZAwxk7qgFOunywuLxS1qoTjhkJzcDgld5va4SJ1haN/S4UZYXlk0qBxJd5GgwlgmILDtunFlohJe2MgbEi376qWJ+QV4TRn3KRVF4fS7Rq3D9QCBZIM+9ViOpWGFmKNG5ivCsq13zL9FxNQ1oXjBHg== 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 DU2PR04MB8726.eurprd04.prod.outlook.com (2603:10a6:10:2dd::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.19; Fri, 25 Mar 2022 10:11:33 +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; Fri, 25 Mar 2022 10:11:33 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v13 4/5] selftests: bpf: verify ca_name of struct mptcp_sock Date: Fri, 25 Mar 2022 18:10:55 +0800 Message-ID: <5cb6e05c8cff43ea887bcaaa428c131654f08c1e.1648202310.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR03CA0097.apcprd03.prod.outlook.com (2603:1096:203:b0::13) 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: 6cf627ec-d306-45d7-bf36-08da0e47d67f X-MS-TrafficTypeDiagnostic: DU2PR04MB8726: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: B8aN+ooiai3GgI3/YJrqXFpOt2v8zgckXRjB6FYYccQkoVoo/B9onloU5LJmMX/pXJzghs8E3j1gI09Zd8hfnkSKcsQSFpOevyhBpiu/6tyRRzONvJmX9EcZvV46/uuzOoTVO1QjilZ6I/LFmxcna86yWPNzF0VLxjI2lChOgQeYeXcwlGBJeKRgk8CKuCmIR9vXh+J8PvdalonE4MbnRm6QvjrtRX8BEOOOOH7Z1HNP9hC0AsFac2C/m4XV0NFOzkkzhAGzbb3sAqFzsXigJ4hvPJxcyXf1FiiajdGkQNOsh3jJcddgPf180n/W+llXKZdSzqvv5+h+bHYToFms6UndomQwUsTIm58BIA+cZ0V0qRtGAjAGgYWREAmrAHhUAF2KInZEqlW6G3tdXUoIDCDTROVwvx1YMPO2sggqAvKYdcg4smeyxiv+ZzseBLYJp07xPUMXgI+uU/6pp15yrvicNH08Y/DuBXaLnLRrzQAKLfREZJ2SqAxxAyuRAibSE5/RYXWdzLxeWZnhNmv5RxHQunuX6+ZC1Ze2vxKnN8wat5MtFs0innFQixB9iO6nwRy/qoQodAqyTYjgNcJ03yMWdhXcuGqMUuapc8uE2f+Lda+3iHqsb4jvUPMyzgi6kv/mB/Zrd85XgjUcn/XMsBA/6AXr02oHXUJ+rpU0+2599nWURZ4FwKNvvOzXkc3mIWZ783g+zyR34YJ86bPrNw== 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)(6512007)(6506007)(6666004)(8936002)(316002)(6916009)(36756003)(66556008)(8676002)(83380400001)(186003)(2906002)(2616005)(44832011)(66476007)(38100700002)(66946007)(508600001)(4326008)(26005)(5660300002)(107886003)(15650500001)(86362001)(6486002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?PDGW2g38CoxWItNugisSzPRGTeoRWFyaDRW/iNcbNXVu+Dvbgv/EOsJ+WKfH?= =?us-ascii?Q?BYI7tGsL0XGKHtXNVAoBVC6ABPsQoWS6fW1fETpelbejVItlL63bKxhZ1kzl?= =?us-ascii?Q?49AHFo6D1iqIdhYqZPgzq4I1UKHWYfDBJzJlmr32vEqDiQP9hP4XlapBZAIV?= =?us-ascii?Q?f/wPi3bX4MZTKQDyxQJwfcoRW0cUZXQU1HHsIv/IHwRVptPQgnOryoCLAdvN?= =?us-ascii?Q?lvL2XNM48kCvFagjEmzBbMnsSRjGK6+Cu4o2bYc8qrUgqLUecH/V0qmA8Y3Z?= =?us-ascii?Q?y1Gg+98fBSIYcpGBeIOh6p05RYWFBSyFM4+t+PqG5q0iIkNyXDhIWUSKhkBp?= =?us-ascii?Q?J4Pi35GOLLjD4IozkSBhFV96BnLRAkoSs9Ryg0LAMFGwTgtHjuc7sESZc35v?= =?us-ascii?Q?aSC9C8yjK7Ix2IBmBCoyTi1rGHMD+oz3GW7IdjVt0+bQT/AQpo48W85vF/3a?= =?us-ascii?Q?Mt3k/3AZ1imcTnyQr1aB5K6Dl+ou7jWkHYUi4pzhFNJva/RMhHMO1hiS13Hn?= =?us-ascii?Q?9e0nQot2o/xy+oWP6ZqycrZ0QwzbdkM5f6iJA65pZbsRLP08X3umeB1xYqem?= =?us-ascii?Q?wDcuYWKxdHXlJ4HPGpZSs7fUeobJFe7g8pE39/SZ8gjdcsUNJnX9QxQakrT8?= =?us-ascii?Q?3ib509yb3+dLExFeDwWYFxyVqYvzuqZhQuKzkqzYP53MgZ20rpclGb/cfdal?= =?us-ascii?Q?mc0K09hBay3R+zxe6wtl/6KYNoD0JFtDNqqFhIBGoshXJy5A73jbQphOI8PO?= =?us-ascii?Q?ABya05N2KchR/bzInTNzQX+I8HqLkcUM8yVJHaiwbwHLW+tTvXMWmWf9HUCM?= =?us-ascii?Q?+MaU2FJkiBp7h9uFYUXTOXpB9HHzom1iEUdR5lIDB5jbJwnZHAenBUNqQtuS?= =?us-ascii?Q?M0ywJqzmyvsDHv1wRZGKe5fzEyMOOdyCF1FMCTpetELC0U45X+PQs8N3gnup?= =?us-ascii?Q?a9ELkOclOMhx3rVJ6HI+t+Jr9weHi18FGQZ4VcJRBbTZdaK+tflnzrM0AgVL?= =?us-ascii?Q?7AnlxQOQZVZ83o97BHveZhiG4IdFL2RLJh+gJBlnFzilk6d9dR3bZmGcBxWZ?= =?us-ascii?Q?RnziPUONIwAb54Mt/PHFu3PeOrOcYXViVK8FJQKorSu51kVt1/YrKkvVznI+?= =?us-ascii?Q?3iJLezKFpzY94TG1nx7pRuu4fcAb3jOpBWhM1aPecWNJ//OjECptd14zSthf?= =?us-ascii?Q?z+0XElMB1Uy325L7JHUTH2z7JkKgNemNOK1KBfGj1Ne8S2rOFGn1YD0eUnLN?= =?us-ascii?Q?sZjVfk0EvS9///XDagYN4+gJD3+YKFTfCr26jddZIKTaNG55ANPrJuY1/Fwf?= =?us-ascii?Q?8N55yXhi6CvoLhTHXesNCzg7RbOohQG7ubBlvhVZtxwwUne5KrARqs3wx5Zf?= =?us-ascii?Q?1aooEnxAbxrjqFSdBtf14IJSgnQ3dkF5fyZeaFXKzkJ04EteffoS/dSboAso?= =?us-ascii?Q?AdB30E40PHqDKoLBCFbzuaG073UEUG+FJs6bx+rCU+UHAr4ged83WlhTYP4k?= =?us-ascii?Q?uIY364/ec4HB38MpXuYR2lR9XotzvwvKd8VXG1RS/alxRqvVFfw9lMjVR+1V?= =?us-ascii?Q?PG1NJDAazKtIvs1dwQiPpKkX0DO7nITWSDtugbtnymi956O8Fa+z0//IfRwB?= =?us-ascii?Q?235H6GhrEbGmuEewJdYCXdUZMg03ndaiNpl5yg7k5yDXJ5G7rM86/UP3PyTd?= =?us-ascii?Q?hal0CoKlm+KwsmBhms/jyFuE6+OEsC7cF+L3PfxyRizdDrO5A/yHxJsAKzYG?= =?us-ascii?Q?KPba0NPEFl2Ac2xCkt6spcagafmc4ZA=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6cf627ec-d306-45d7-bf36-08da0e47d67f X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2022 10:11:33.4103 (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: po8SqAAFT03T2ciOjf1/LVmcWzLvfSk9SEdDhkl70C759MUMPfTwcZzdBB4pb1aBoGzMcrVCf6unyA04T++5cA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8726 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 3232ace122c9..ea8dfcdb230e 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 Mon Apr 29 15:41:51 2024 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:a17:907:7811:b0:6d8:2910:9a8 with SMTP id la17csp2543813ejc; Fri, 25 Mar 2022 03:11:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJymBQEWE2x0s5M+ntokULHrYS6VAChIp83BwsKBRAC9t/Rct/Mvd9FAHoYYSoaXNTg4WekC X-Received: by 2002:a17:902:9007:b0:14f:3680:66d1 with SMTP id a7-20020a170902900700b0014f368066d1mr10402359plp.91.1648203106606; Fri, 25 Mar 2022 03:11:46 -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 u6-20020a170902e80600b00153b662501dsi1961641plg.369.2022.03.25.03.11.46 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Mar 2022 03:11:46 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-4437-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=Gon+uU0e; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-4437-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 147.75.69.165 as permitted sender) smtp.mailfrom="mptcp+bounces-4437-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 1366F3E0F79 for ; Fri, 25 Mar 2022 10:11:46 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1BA4A23B2; Fri, 25 Mar 2022 10:11:45 +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 A2D8F23AD for ; Fri, 25 Mar 2022 10:11:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1648203102; 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=k5sO8uSF51RAvce2HnMhBCWduQaAMikYatKY0TPpHP4=; b=Gon+uU0eA4M30p41vyY3wRIxPwhwkkHNBWHEzHQPmRaM32w5BhxhErqa4zu0fTSvs0g/uO t58jBY18vkPAgdAlNVLdorujasTcAI9F3dtoW5ptNuoMnSVbz5B36oyoXaOlr3rsmiJA6l XSXKkBdGjAPC+ZXBKdbtb8H0G+r5FO8= Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05lp2106.outbound.protection.outlook.com [104.47.18.106]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-41-vlh-XmdeNpmBIy53Gl4C4A-1; Fri, 25 Mar 2022 11:11:40 +0100 X-MC-Unique: vlh-XmdeNpmBIy53Gl4C4A-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ze0TMAzeVnRpR7/kzj2NK7+UvKAj5VO5PQZueyh3IQYHm0zfa37WBxtYgEAZWB+VXInIW1Fo5gPvQ1DF9GYmtf4ZZ4Wpp+Y5PP/H5kyb5tVn2Q1ONIpwZyScxYtPIbP0JGw3CHeQZSqW0jYHCg5U/xZs1t0ENhYrG9D9HPpGISJ//ADykit4nGLrzyvMcuqlOVmymzX4+ZRbHN6fHp5R55at9p2msCLNX7qWMTRhNuAOPKCLAkDEuDV7zR9XH8v+4n+tag8Hd+kVNrVRDfjW1jGBV6ijCVO+NVha5MV/q2uiGotdmOIoxybNvpdeSgImdC1qMTKHQr2d2tgzfiNvjw== 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=U6k+FlABiSKKzhP0R2JpmiSPAa2NJuDqdV6liuSLhps=; b=Ptdjwj/EgL/E5GQchiX9s973MLwsQNnDMZvk1H1Z97QQlN+tFWpo+RzbEyoNYsM6MT/6gzF5UwWCjtKLzStSOg3zNWtLLB1f76BcL7EERL6oikmrJYpBaHGwpAFL7JhSLODGuZjrI85/HdODDVWh0o8xa/7Dk0urWLnWHooxJWLX9fzv3lnyVrO2Vq5U8fz96BhQxucU9GN4ifZqbf/G2geDuV+Ufu3v/5zqiZjahjO97lOzf89IY7hkmE+XZEO2TlpzhDId5AwKhULv5rb+r5ksj1XG7eI09yVNToISaxKrnUFXjqL+4ery1vfyKgL5ulphXB9KkHYxc9eAXFqGtA== 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 DU2PR04MB8726.eurprd04.prod.outlook.com (2603:10a6:10:2dd::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.19; Fri, 25 Mar 2022 10:11:40 +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; Fri, 25 Mar 2022 10:11:40 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v13 5/5] selftests: bpf: verify first subflow of mptcp_sock Date: Fri, 25 Mar 2022 18:10:56 +0800 Message-ID: <29cb864996911bc7990c17f9b8501f1a3451d158.1648202310.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR03CA0116.apcprd03.prod.outlook.com (2603:1096:203:b0::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: c4566c58-9a29-4b6c-6689-08da0e47da8a X-MS-TrafficTypeDiagnostic: DU2PR04MB8726: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: YzWV0iHwrRhyTefwBkD74Z1eut+ik43SEnxot85xDCmcPI28+jYQxp/Yal/jpzO7OFz4Q3KZeBOqwNrp2u0p5KgqIWFB0e0Mp5U5vO3N6RyDhKDnbEs3ljeAG6NJUVyvd1kqBb6IfAaTSt+DVCxjYq7LouXQaoLDtV6uBBMRz48/jaTEXm6pXpBUEYd5PG9ooaEMW/ugnUpjOYZh07BLsZW5QIQsToSf6J89rb5zSz+qwNL9C23Rewcq9pV9c6F1dIWDYkiyirEco82fP9BU2X2fS/6fy/606oytUtHjBPsJmTAzspgf45VTjOqe5Wt0oTaQmZ06cofqHooiDOoNukiGrvrQYIKBwZWF1YJqi1MotSeb/8REqAe5x1LYdMtVFYkjiMMt3QP2WruymoU0ddH8M+xxNZhrcoX3oiO30BSi9SSKQa/abZuVALxs6yMUoKqMiW2tc+Ok42zH5hLxuOZ6t1Vho0ecrJfl4hFKn+N8gILg1o1eCc1pUAUiq5/LjNWDed/faxRY640kvkkgaMaSVquuFl4Bg8t1+fF7DGNE+ye5Bx+BnCNftEkxTqTj+g6v+oZhP+/QZ8MIbD2gi0isg/o6oB6qBO84WsDsMr9wfYUyprn3QvcZpGgRNZNGpVJUP8hIvHV8vOMvN5ejxG7m9A3sMFrfPmFzAbZeme2vJs+LtzSNmTTqc4402NS1KT/Z/hkJ8c811X+efhUVbw== 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)(6512007)(6506007)(6666004)(8936002)(316002)(6916009)(36756003)(66556008)(8676002)(83380400001)(186003)(2906002)(2616005)(44832011)(66476007)(38100700002)(66946007)(508600001)(4326008)(26005)(5660300002)(107886003)(15650500001)(86362001)(6486002)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Oasvbo26T1nMXam/kRESXrxCV1pmVZXFQWjcmAQPHaRnITtmmZUtGg7m7eKG?= =?us-ascii?Q?wgOvmb0ppEpvBXUZ/zkGZneFLu3l2J0dhBWooXAhKP6vey4A6Mt60j0+8iUh?= =?us-ascii?Q?t0toW5Ig54Dze2LC4oJgk3DlaXvm0NxdOEJ56MFSt+iCnBQHMz1YtuvQjWJM?= =?us-ascii?Q?AyZHpGxxj8pQgHZkYQDH7zHaJd0C7y/gvxsOMBZy3U/KTlpK7ojh2P2MLRAc?= =?us-ascii?Q?oQwK1UGJEEhYKXnw4URfLI5jmbf4/qYRD6aPvAEGZdIrgjaIms1XHkMYkpPS?= =?us-ascii?Q?KNRpS07HYfXJhhX7Bc219Qlqkj39ZoQzV/GJ0nu0hW0hAlHEY/PRjU8vavYg?= =?us-ascii?Q?xT6Ikee5CJkUwtdo8KEjamwHTz0X5P9g72LHUa8/imzSKRB2iVrOAb0+dvKy?= =?us-ascii?Q?ypquUWL7veA9pY0QmyyU2SCiaGTi+Y/kBxEw0uw0XPn8OcSXYOfh/blK56Y2?= =?us-ascii?Q?hj1Ywk7mGlw7lmw5iMHT6qn3K+hO+zD2CzeihHHwe/SpmOZKaiyp+WYD2RAj?= =?us-ascii?Q?gN5H9n5/ASjyAUhuM+KA/f75NC2svF+++0dUJKIfziMcOOjr11Z+oZvdm3er?= =?us-ascii?Q?9BrKwQgKecBYzldaoqWcY4bPvoApBcHC++byoNp/RTPqzg9KDz7q342jalDc?= =?us-ascii?Q?ufrbdU/T4wQXr3C6o1kVlgnUOHckFg8gTRle9v1PwRnjNMmoBCCFPr3gbR2N?= =?us-ascii?Q?jCnH+RYpQVr8cZ2kVmoSO/BPDrFMEkuN4/BEEapD8xQQte7gAPfl0G+LgXby?= =?us-ascii?Q?v851a90NS9wtiYvwh+1M2S0/xVSLukNRrigXhFShaEEGxDWCHuq54yz5wUUu?= =?us-ascii?Q?NjK2vqaNSWHJQHu/msY7hesa4+6on2CjrWa+1+/IF+T5x8YYGI6FV8ZLAzRF?= =?us-ascii?Q?qtd1wG0yikbU9j7LfQ9PK1PVigRQg+b9hIsF0clTwGTtVnXl6Kj8How5XA2z?= =?us-ascii?Q?LzUxv59y/PmIGIXnJ5xxdeRMmI6z1JVE/W3lcdMRvRpI3g3YwpjwIltY0egf?= =?us-ascii?Q?2DGArnCbmmoHlVlKRAo8RZOaSfTnAutb5rjYgUM18lh0JPfyL232VuZguOxH?= =?us-ascii?Q?C9tZdmy3j1nF1v2fzN/1ShmcHZzOlanOpWunvAmXf4H2MvSX1b+7Ec7Q6IB/?= =?us-ascii?Q?tQZ4ompgsydNeGbm5R6zBbaH7zFVgLDUvxBUUlw5L7ceAavTLZr5J8lLgreo?= =?us-ascii?Q?3M1818JzrwBaoYORyWaPltIsmMHbE7RAQL5MVPwNx7fwAtPWuztQ2+kw70V+?= =?us-ascii?Q?4ijXWOTgSnCotmpoOsJGuIj8GHFp1DaQuqWYDbUk5fHqBXtkpZQap8oSaG5l?= =?us-ascii?Q?F/Jx2Nff7immGbegvgzhNfvgS1aavXiH12VXUac9ex4PMw/YwnioEYcDmfGx?= =?us-ascii?Q?qa8KzbqCQBQJliLwgWoKIjeNh3uzXXJHoFRwBup+LpkqHOTBOxu1l94MA+L2?= =?us-ascii?Q?V2qebSWRoIM+hNwSrs7ID/OfuOnnFyjPVguKveFiXS2vrH/14wRjtZ5TqAHf?= =?us-ascii?Q?Z4XcjgtmgIfKl+0kVRAhkpn9q/NGwwh0MPM68vdwzBFjZYzEjHULVXZFB6FK?= =?us-ascii?Q?pHMDtkaFHN5fLPAksP5e9tmYVg9fM0w04SER9xuiBO6/rYeRh775mpH8QMHH?= =?us-ascii?Q?0KEmfSLeSY//1nCCSsVMLfwn+izInDLRwpNYLpZmrJNkhu6iTujMW7Zhc9lL?= =?us-ascii?Q?i1QB9bSld+RZFI0bWN4oJPmPjdL1jQKivLBS/8RdPdIPwFtc98KbTTTSFbAq?= =?us-ascii?Q?4qzgeWK3VPo+dKWMCf5+hFCZvyXOo5U=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: c4566c58-9a29-4b6c-6689-08da0e47da8a X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Mar 2022 10:11:39.9566 (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: Gxys1z5MPWMAiCFUeXW8n2jhoEBfT7HSECg93k9UBLN7F0NZeQoTFpbiL8KkG4M22a2cvrwhhk4CWsH+YzbEgQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8726 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 ea8dfcdb230e..888d9e9b8870 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