From nobody Thu Sep 18 06:42:57 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:ad0f:0:b0:4cb:58ce:be2f with SMTP id s15csp6796pih; Thu, 19 May 2022 01:25:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxX2h6haypCFN3qmvJlah18Q6oKIl/B0zopa+jYZsuRqs96HQFzQiVf4Hecj3rkQY2Rh+31 X-Received: by 2002:a05:6808:1250:b0:2da:39df:1f92 with SMTP id o16-20020a056808125000b002da39df1f92mr2076157oiv.27.1652948735307; Thu, 19 May 2022 01:25:35 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id s42-20020a05680820aa00b003229a102afbsi4400917oiw.235.2022.05.19.01.25.35 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 19 May 2022 01:25:35 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5381-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) client-ip=139.178.84.19; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=WQ6EUqVi; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5381-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5381-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 da.mirrors.kernel.org (Postfix) with ESMTPS id D15C72E09D0 for ; Thu, 19 May 2022 08:25:34 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7FC9D23C9; Thu, 19 May 2022 08:25: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.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 E195B7A for ; Thu, 19 May 2022 08:25:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652948729; 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=EicMjzMKXLKeLr1ZK/Z417d48fEFP45eGOnRQNY3JLE=; b=WQ6EUqViI8CwMfB9TUQxQBWnguvV+lx/cB2oY36r4ERln3JBbl95fZVvgdDsD9ZdhmZhWU uVLid4lhnFp1ov6168guH/tG+sR2Rntsg2OZyXy7uG7bxh/qp8h2AZTsT6wgpCB+TFZKe0 81VJ79Dh6Qgwv6wh3l2QMXP5+YwvPmU= Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05lp2109.outbound.protection.outlook.com [104.47.17.109]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-32-jTuayB5bMsa3RzXQGM6SBA-1; Thu, 19 May 2022 10:25:26 +0200 X-MC-Unique: jTuayB5bMsa3RzXQGM6SBA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QcpSnPw6rCflU8EFudhH158jPfdyNn3yvAPg4o1DHVkLFn1Ge4YPLkY0N1RsLfGYQ5qIXvx/6lAjq1TF1Le0Y8i82kZS4Pk3og5UKzsHvq9EWYLpBT1/+IWxYBiR+B2H0XD/ahlu6km1g+ZgWcLMA6PJXcCZ5+TWpD3oIWwVTm6I+J/nI0IwQu7aKHOhZwzpPjXt4rMp47swm0qqoTlYHqaRwfkbclAeev+co+XL58MA8NDjF2eRENKuHhIs6dJMVWjQqS3093s4rQBxxPKIEB/piW8bENqpyfcgL8FmXuFSl/YT4frMbPl1t3wp4NICcjo3i9g0O/hu6YgNOzI5XA== 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=msA2bjzTNSqodiZppHXl3qmzTBuJMov3KAfIA+L3yCs=; b=QFDfgSpPtopSn6WHEsljWuIfHZAD+GZPAJcm8JylTPsXwmOvr1ochLKCc9Fl5f41SM6kf773wBsGXFIPrHcQKnICShp7Q99gRQJ86mXtRSS2LO8Hl39+jvXvcmrfjwqqxRe194sF6Wxk/jeULX6rHaE5L7fnYc1Cbw53xjOOvRTZzGsyoaLSYlV8tQwjXMfxSSYYR+25Jdos2kLU4TD/n+A0fo8nNSWNW8qHuZ8gDgBZRbDWlgoBrLhXGZDnJ6h8orEzzL5Zv0sphVMnn2oWdGcq9XF8KMoywkB+YHlTrKiqXSHxBCPN9lKFkd9Y+x/wd1Hlj7cKyXG+dHgDTs/1+Q== 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 PAXPR04MB8752.eurprd04.prod.outlook.com (2603:10a6:102:20e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.16; Thu, 19 May 2022 08:25:25 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Thu, 19 May 2022 08:25:25 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Nicolas Rybowski , Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next v2 1/7] bpf: add bpf_skc_to_mptcp_sock_proto Date: Thu, 19 May 2022 16:25:12 +0800 Message-ID: <6fb80cd069c660b3f86b8d283f58fb12a7af0bf1.1652948238.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR02CA0093.apcprd02.prod.outlook.com (2603:1096:4:90::33) 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: 5f93bf63-a7a0-4f3f-f8ac-08da39711fc1 X-MS-TrafficTypeDiagnostic: PAXPR04MB8752: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: TfXq5UWhFHSjhbr9RtBYIQIzyn9uIoGCvBjNcbbL2hf/BMqSHQSCf3DjmLfsqLkzmtYVFC/fvfOh3Zz2xF6uK50NHs489TLCzA0t5xDzmUYexeYCm1/9oSv2uspvJhJXpb/qBtcozPxeSBhtMqN15UpbmNwjw7a1TR831019QsiPs07THfaOx6Pq+oUuDJ+EURKEv6U2D5kp4rScxK3a+ePmTh4bz+sOvxbILpMXTjhusipbBhVL+QFWEDh7uGMwMAVjYvDzegiTt3b7BuTgnIqb3TMh4vlxhZwnXLRZAYaByPTeuzRKetd8ASAIKll6Ay6S/SlyfUKfTMp6sJSLzmjPrSwYSZiNZoMFyZeKNodUneBscQEw4exdN8Z7kp35jchEVAdPsHPywlPwHPPBC/yPsfxTwMgjn2BisUlysVX3opix8kpBDYKmlMy3Mi3qAhgu2kg6zw0uJre8MauLb7755Q9uCwlrW7bc91LJBm5nk5ej4/jLWa7Gkl/hSbdRGhON+uK4c10U/IRP45KYgS5jX8CaXaq4kp7pai9UKl9YPZEKe8HKmQq0yInpONYE92OB8va0aqY4GozfnqV1+DCcifJhgHzEjfHNJJGaNRcUH59UrbuBF1zjVgNvLP1rf1F3i1XXo5fsHwdXgN146Gp+B8vtdEP+HYTBeBwBBzhoydUaaJfRJJq4RWub1FTQuO+C7hCUM7Vh/V+bXKeKhQ== 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)(36756003)(54906003)(186003)(38100700002)(2616005)(8676002)(66476007)(6916009)(4326008)(66946007)(66556008)(8936002)(44832011)(5660300002)(86362001)(26005)(6506007)(83380400001)(2906002)(508600001)(6486002)(6512007)(6666004)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2AHHDL1VDp+P1tmhuc6PLhuTyIgM16t4j9frwDm0HIocziLpBtUaTD4yn5FY?= =?us-ascii?Q?MX4F2HQCS7QkzFfG+ADg5pjQvonqqqoI7zwJ7VA1oK9GwcM7kjDy25kp2B2h?= =?us-ascii?Q?sFYkSgDIBgsr0QiCc3cbmxT/dvO9794y8oQDHHZo6vUa6gBDa4ASRTCJoAAz?= =?us-ascii?Q?MS1ZdsMOHrvvCljE/hTWLjsI0eYWVbr+O5EgFrpYXfrM7z8lpdiG91W2VUCe?= =?us-ascii?Q?dAnHZfIcZpbkmYmcHd7CwX7A4Pl5W6sgPuR0eD/ZwP0fgQ5m5gJ69iDDFQZp?= =?us-ascii?Q?JxPm8DvSoc9a7/leUmh86R/4+Ej7PfFTPOI17jk3WSwaw+YbI76AiKuDB0jP?= =?us-ascii?Q?BrVM/RmTLtJ5fmWXFdUqySN19ItUnpgNXlbpRcB3/R/emzd39eJ3SdAMJ3Np?= =?us-ascii?Q?pXGIIrcoEXm3rtoFG/+3dLBADb9I0VcKDsmE3uccPjAEAfpK6QqVKynupAZA?= =?us-ascii?Q?C9iXZ0uUMFT2VZ5RbkP/+kmmHt6IXK+qi3GoTiYaxu+iaNuW3XoxX6H6+Zv5?= =?us-ascii?Q?kV8ou+qazndPyvwb8hJyCn85n0vhA5HkqIXugmUUz4OJ1B1I4jphvIOc2IIc?= =?us-ascii?Q?l1joz6CQwXLqCyD2h9FbWVwgWD6K2SGwp3GrZFh57HCJfoBeyxwl0P1Qmjvn?= =?us-ascii?Q?BqFB6OtdnYbgfPsjMv9rj85kAb1cIcL6lfyOeSbdsCPi3gOysGNRfI4nIfQv?= =?us-ascii?Q?PmNoZjTh9Ua+WywPAbqjcuvzSls+pZ/0Uy1NwJmgCNGliKok8jtHZh9fCZ2p?= =?us-ascii?Q?i0Vbkjb+Df22hHueh3McTrmRYYbP89C+KbpdzELyU11uB1DFf58QfPiCXRq3?= =?us-ascii?Q?UDDsuYsZqk/jp+gvU7UUI9A31yI37MyJDz3A1wzHlPIikI9k8dUhfatEHKeJ?= =?us-ascii?Q?DgFft+KpvMIgRxQ0seo4WGvNaTAYmKjMVrtKYisrvz0S5R/MQHt1UfJVXUnw?= =?us-ascii?Q?cXTg0m3ChGa2BTJ7mVWlw3uoV0P61+R1zlPGDSRHmBCpirnoc9/mWnAC67aa?= =?us-ascii?Q?DHrJmgd5aWVGDQ/Py8sETrqS+fq7wC0MW02/953uAc+7/nGFVC2W0XmhRPhM?= =?us-ascii?Q?5hxrjU+NfS8it4GcLgSTnlcB4qLUN3TwaXNZJ/iuRbGjVelCluu0B+4J5mBj?= =?us-ascii?Q?01w22eLSX/v7CmrjGKRuZPZUKP1DWoGy0cNTX9SVlhYe5EjKRgvFkuPI6kM6?= =?us-ascii?Q?DPy1Pq8S5GbzVbYmLot159ddPEn3l3zn0R/uq/dga4sPzidqZjS14ydFHh4b?= =?us-ascii?Q?UGptj7eJI7qfcLSma67bE1vYmYZXvZ5xSSKLj0oDWvTPsZDpa9Wd/pt5lvaQ?= =?us-ascii?Q?ksq4CgWgFTqRVjm+VveRXr5QaV8HjhIHaQxbbv9mlvSBEfHZR7B7ZAgFf8I4?= =?us-ascii?Q?GvUXBMLEZiWz0Rf+ARo7NsfO1uhBBe4fxtEgzTa2F6JZL919UkIfLdEwFTzQ?= =?us-ascii?Q?YukIHOQDl4G/VC5vABhsGtnEnwNVtlbrYAPzF+uQYXAteMAPlfhPmEjHemC+?= =?us-ascii?Q?6or95EVZAUkUn0EVoQp1Hl1oTPwy9uBUWi8FIXKlFFt/EqvPhElM0Mth7Cww?= =?us-ascii?Q?hVXc/ql9hNKAS7NjpBzamjvrkuNtAEHXfPdqRJKm5mFtqp11QVkaOdJDAqBs?= =?us-ascii?Q?yHOuF0ig4CFkJ7tr0zBRRtnmKKimc2OOdU0cEciHsyFOvUd1DmUmRJuDS9EM?= =?us-ascii?Q?aFN5pMm0hq1XZrbtFRNNDp4aEWIgAsV+dpUwRwbnPZVxYS+/gnL/MRGvp6VZ?= =?us-ascii?Q?pPUHKQfTFYR087ySTUSkjA1ndxmX+fg=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5f93bf63-a7a0-4f3f-f8ac-08da39711fc1 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2022 08:25:25.5896 (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: JC6PnKA9uPlEUVUdApt1eFu86WEeyJ8vKt6f9jALwnIylUJYBa12NagZT5ZyOwVm68WraNX3nj5UduN1BzTaVQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB8752 Content-Type: text/plain; charset="utf-8" This patch implements a new struct bpf_func_proto, named bpf_skc_to_mptcp_sock_proto. Define a new bpf_id BTF_SOCK_TYPE_MPTCP, and a new helper bpf_skc_to_mptcp_sock(), which invokes another new helper bpf_mptcp_sock_from_subflow() in net/mptcp/bpf.c to get struct mptcp_sock from a given subflow socket. v2: Emit BTF type, add func_id checks in verifier.c and bpf_trace.c, remove build check for CONFIG_BPF_JIT v3: Drop EXPORT_SYMBOL (Martin) Co-developed-by: Nicolas Rybowski Signed-off-by: Nicolas Rybowski Co-developed-by: Matthieu Baerts Signed-off-by: Matthieu Baerts Acked-by: Mat Martineau Signed-off-by: Geliang Tang --- include/linux/bpf.h | 1 + include/linux/btf_ids.h | 3 ++- include/net/mptcp.h | 6 ++++++ include/uapi/linux/bpf.h | 7 +++++++ kernel/bpf/verifier.c | 1 + kernel/trace/bpf_trace.c | 2 ++ net/core/filter.c | 18 ++++++++++++++++++ net/mptcp/Makefile | 2 ++ net/mptcp/bpf.c | 21 +++++++++++++++++++++ scripts/bpf_doc.py | 2 ++ tools/include/uapi/linux/bpf.h | 7 +++++++ 11 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 be94833d390a..f53e39065a6e 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -2204,6 +2204,7 @@ extern const struct bpf_func_proto bpf_skc_to_tcp_tim= ewait_sock_proto; extern const struct bpf_func_proto bpf_skc_to_tcp_request_sock_proto; extern const struct bpf_func_proto bpf_skc_to_udp6_sock_proto; extern const struct bpf_func_proto bpf_skc_to_unix_sock_proto; +extern const struct bpf_func_proto bpf_skc_to_mptcp_sock_proto; extern const struct bpf_func_proto bpf_copy_from_user_proto; extern const struct bpf_func_proto bpf_snprintf_btf_proto; extern const struct bpf_func_proto bpf_snprintf_proto; 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/net/mptcp.h b/include/net/mptcp.h index d4ec894ce67b..4d761ad530c9 100644 --- a/include/net/mptcp.h +++ b/include/net/mptcp.h @@ -284,4 +284,10 @@ static inline int mptcpv6_init(void) { return 0; } static inline void mptcpv6_handle_mapped(struct sock *sk, bool mapped) { } #endif =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 + #endif /* __NET_MPTCP_H */ diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index 444fe6f1cf35..3e996e097084 100644 --- a/include/uapi/linux/bpf.h +++ b/include/uapi/linux/bpf.h @@ -5154,6 +5154,12 @@ union bpf_attr { * if not NULL, is a reference which must be released using its * corresponding release function, or moved into a BPF map before * program exit. + * + * 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), \ @@ -5351,6 +5357,7 @@ union bpf_attr { FN(skb_set_tstamp), \ FN(ima_file_hash), \ FN(kptr_xchg), \ + FN(skc_to_mptcp_sock), \ /* */ =20 /* integer value in 'imm' field of BPF_CALL instruction selects which help= er diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 813f6ee80419..3d8790e81c48 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -509,6 +509,7 @@ static bool is_ptr_cast_function(enum bpf_func_id func_= id) func_id =3D=3D BPF_FUNC_skc_to_tcp_sock || func_id =3D=3D BPF_FUNC_skc_to_tcp6_sock || func_id =3D=3D BPF_FUNC_skc_to_udp6_sock || + func_id =3D=3D BPF_FUNC_skc_to_mptcp_sock || func_id =3D=3D BPF_FUNC_skc_to_tcp_timewait_sock || func_id =3D=3D BPF_FUNC_skc_to_tcp_request_sock; } diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c index f15b826f9899..8451fc83d031 100644 --- a/kernel/trace/bpf_trace.c +++ b/kernel/trace/bpf_trace.c @@ -1688,6 +1688,8 @@ tracing_prog_func_proto(enum bpf_func_id func_id, con= st struct bpf_prog *prog) return &bpf_skc_to_udp6_sock_proto; case BPF_FUNC_skc_to_unix_sock: return &bpf_skc_to_unix_sock_proto; + case BPF_FUNC_skc_to_mptcp_sock: + return &bpf_skc_to_mptcp_sock_proto; case BPF_FUNC_sk_storage_get: return &bpf_sk_storage_get_tracing_proto; case BPF_FUNC_sk_storage_delete: diff --git a/net/core/filter.c b/net/core/filter.c index b741b9f7e6a9..ef84a9087651 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -78,6 +78,7 @@ #include #include #include +#include =20 static const struct bpf_func_proto * bpf_sk_base_func_proto(enum bpf_func_id func_id); @@ -11272,6 +11273,20 @@ 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) +{ + BTF_TYPE_EMIT(struct mptcp_sock); + return (unsigned long)bpf_mptcp_sock_from_subflow(sk); +} + +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); @@ -11314,6 +11329,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 cb7f53f6ab22..6e7df47c9584 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..5a0a84ad94af --- /dev/null +++ b/net/mptcp/bpf.c @@ -0,0 +1,21 @@ +// 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; +} diff --git a/scripts/bpf_doc.py b/scripts/bpf_doc.py index 096625242475..d5452f7eb996 100755 --- a/scripts/bpf_doc.py +++ b/scripts/bpf_doc.py @@ -633,6 +633,7 @@ class PrinterHelpers(Printer): 'struct socket', 'struct file', 'struct bpf_timer', + 'struct mptcp_sock', ] known_types =3D { '...', @@ -682,6 +683,7 @@ class PrinterHelpers(Printer): 'struct socket', 'struct file', 'struct bpf_timer', + 'struct mptcp_sock', } mapped_types =3D { 'u8': '__u8', diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h index 444fe6f1cf35..3e996e097084 100644 --- a/tools/include/uapi/linux/bpf.h +++ b/tools/include/uapi/linux/bpf.h @@ -5154,6 +5154,12 @@ union bpf_attr { * if not NULL, is a reference which must be released using its * corresponding release function, or moved into a BPF map before * program exit. + * + * 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), \ @@ -5351,6 +5357,7 @@ union bpf_attr { FN(skb_set_tstamp), \ FN(ima_file_hash), \ FN(kptr_xchg), \ + 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 Sep 18 06:42:57 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:ad0f:0:b0:4cb:58ce:be2f with SMTP id s15csp6846pih; Thu, 19 May 2022 01:25:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy8RwKb9K6khVctEbzySmM3fLgRoXTnJCrllUHOfWwDXyKQSJvuCpze4eS/iUpt9NCrQ4tx X-Received: by 2002:a63:4550:0:b0:3f2:b22b:8a22 with SMTP id u16-20020a634550000000b003f2b22b8a22mr2914652pgk.395.1652948740581; Thu, 19 May 2022 01:25:40 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id h21-20020a056a00231500b005103895dae4si2018230pfh.316.2022.05.19.01.25.40 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 19 May 2022 01:25:40 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5382-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=SN2unJRc; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5382-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.88.99 as permitted sender) smtp.mailfrom="mptcp+bounces-5382-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 sv.mirrors.kernel.org (Postfix) with ESMTPS id 10EBC2809A8 for ; Thu, 19 May 2022 08:25:40 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 226FC23C9; Thu, 19 May 2022 08:25: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 83F5E7A for ; Thu, 19 May 2022 08:25:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652948735; 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=Atk3G91JSSNUe+UIEuu8GjmY3hMPn56dEBUsv8p19hs=; b=SN2unJRcf20pUIV091w6zbKkw24bDf1EpUizfNix1uo9a8Q8kRVAJjtTRW/w4Upq9W54hT lL5NBBrnlO3zygFJfg93Dm4sLj46q3MMWQXLsk2hkm5UTXc4S7XIYsthSPZLJbWzVRr5Oe KieipStr3z3d909DTPTIuUwIZUznv6Y= Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04lp2057.outbound.protection.outlook.com [104.47.14.57]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-22-4nIgI97YMaeH-a76oMEJcg-1; Thu, 19 May 2022 10:25:34 +0200 X-MC-Unique: 4nIgI97YMaeH-a76oMEJcg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fRLN7lKS6puy0FLWpMvMgfAmlqiUD+3WajOrzlAJW2aOHMXJIqfj67q3Pq3aKHUpzgN07bVuYmj2Sj7apFEo+hAiyn+k7Zu+e8tJNM0dHNbDMcFIZcLM79jPhH5/u+SSDcsGhMrNDFImiQ1BFupfHAldTV8TxJrs3dhnFZovKKInDsATo6/maqbWgE44g0A9i1zqt505+5zzkSzRwwmXX+TmpmIK3oEOx0OKV5g05H9WInLP5Ik5aAk5hg853kcTW+5yBhT/htpD9l+KC3OZKheD/Y2l94yES0KlEQKPcPUtfL1fjsXRRAiHvbNTiWt/AGX7xv/HnZh1KDzxW82yqg== 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=y27vFa5j/lSX4Ma9newk9esbxK4aYDN13I/rD70ttUw=; b=YnMirjrZSWIJog1QC5tcIeZjknLa4ah72ApDLt4J00PuQDCOLHHpp3EafW1ApT+TaxTmjTLBhXk/J36ZjAREyjL/jPGmDklF1mGJrSsyWqFNpHuC7dhdfwRO8h/RZAj7fKwnPZzLUgfwE+3i8R2JoYPnvk9quPEINGHiTIdrpcdXHhSt5pSNPciqi/dGpmIak3P4X4VTOxP84kYHyO6IP9PD9Yq9GU70C6bgdvY2jIH0uP/ukL0mL1uFR3mjrYlWgW0Tdkb9qAEnZ796RInA1JGMXrtA/tIEB18VQMPQUdQ1Tbsl/k0TjOqFGluIHowCJSNomKxNjoYhh/sd4YbywQ== 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 DB8PR04MB6652.eurprd04.prod.outlook.com (2603:10a6:10:109::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.18; Thu, 19 May 2022 08:25:32 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Thu, 19 May 2022 08:25:32 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Mat Martineau , Andrii Nakryiko Subject: [PATCH mptcp-next v2 2/7] selftests/bpf: Enable CONFIG_IKCONFIG_PROC in config Date: Thu, 19 May 2022 16:25:13 +0800 Message-ID: <575177c9d8157173537bb495bb0902c78b358ca7.1652948238.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SG2PR02CA0090.apcprd02.prod.outlook.com (2603:1096:4:90::30) 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: e533a8df-c5b5-44f7-b07f-08da397123fe X-MS-TrafficTypeDiagnostic: DB8PR04MB6652: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: wgy4JaV2u0aZyZonkRZ8iCmAiSNclwX5lcvm1x6L3pSqWIvavt+k7kskLCUIkOXYnEl6BmbrXnIS4zc6H0QB8HmbDk9DU/AY8PhBHedHIVk7INqIXiDHwSsdUDAUS7yGbLCh675muQmM++YgOOrti7V3f85G4R8gzxQWrshj5nIli082hZ7Nh+8fnBz0RnL4g0I32fZqUohKmJ/KJ9AK3/x5sY6DiDOA8wN4NOHlDG6WHazcQero9I/mCEsfNXycNbOZkET+Y26FNQ+f6ra47hjR4cufaBk/WR5OXR3am7MpGQEUZtoq6On0qDe/KSskus47+8FFGA6BlVLGjrXP4dIcEnYsDm88IKQ0d8eZmj6YtbEhafcm9/luoIrNhq+OQd0q7aaKdFrckBV3K+FcsISAZ4pqTB8F7yVzjvqwVwkL53zRTUMGspDwHAmaDiGPX07+FJSDsmy+cU/SHdBjZ9KI8Sl2cmgDIlMxIqXQbTf/IrWhMFsur7fIbwX2fH3bO8WaIqkKrNLX4Fv4AmzIoF2hlN5EUx4WDpruMBEZzgTEWpz6OmdoLK815DFndWTWLZD+4ma0SsAZnvtSB0ehMEh5k/UTZ/WQlMcZkxG5Pb497g7p1Nmo8eN6A+Uae4/hwcrj77bO85RPD4UkuSKc/oz2wmhIT/MTBaM55YUwrkvQhynFwe0rZ8/nLlu26w1tr6k/kFvw+8bLgpnwFyLuww== 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)(2906002)(6666004)(38100700002)(186003)(6512007)(86362001)(316002)(6916009)(54906003)(8676002)(6486002)(2616005)(44832011)(66476007)(66556008)(36756003)(5660300002)(508600001)(6506007)(26005)(8936002)(66946007)(4326008)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4i6ubGjZVaNtu4BNXaW+3SMpBRcHFfK+Scsf+JfXwGW+8ZnYeo1X2uBV1t+N?= =?us-ascii?Q?iTv5WHfLx/FBMOhTmEsfnwSxcjcG8EAfMG08ZbSOhozQBbUGWhYTlAwxen2J?= =?us-ascii?Q?I42uT+Z0X1xMMZeGy83OL8v7MqKweYjIvuUUACxWvhn5pGxdLLB0ytORFN2g?= =?us-ascii?Q?zi7c2ctLVbeOZn4+Rs5bzJjfhQvwpKPGLUjDPRnMMfu02vqoz/4c9fdbtXlv?= =?us-ascii?Q?ZkmUBJFmSB1tk0qVCddy8j8oupQ7s9fe9FyG93BssRwd9UTkgY8ylU9S463v?= =?us-ascii?Q?R9+ev3bCeYXDlJ/+w6iL09UgsK9Ztd7Od50xt1u8ahU9j77uktXsxlPPqo17?= =?us-ascii?Q?D2Xzgge2nKw9WwNCbT+5NGpVzdKl3zmOSxwebb2KXTuco0bOlZJNr/w+gfE4?= =?us-ascii?Q?E2RbE1zBTkRptspUAQ/ixh76PBizeF4X4XV0KJn1saa8X3e8kbPZrIqha95L?= =?us-ascii?Q?7bKKDfHQ2YR/y8TEqVNkLJ2luX2/+4cWQ0aqK6fB3I9XI7uxC97YBGfuq/o6?= =?us-ascii?Q?C6lQSYRv7xN3h1HcgTbsQF77renM9AXT/dU1YIkStXUjW/hVPduaZTINddXH?= =?us-ascii?Q?CgL3o1oZSuveE/5Yb+fLW5FVeHA6ywlgTO6pulkeHxnVuGyxJ0ZpQEkHpGU3?= =?us-ascii?Q?bcukWCOWdK8h9ABb3aerAeyAsdUbnR8vprYHGmGnkJkoszMMk7u3bDVF9nZB?= =?us-ascii?Q?l01H+UAd4TwJfYtfhc1BZimpSLj4o8dU6vrY3l/JlybuU2sqAM+j8T8bvZgf?= =?us-ascii?Q?R0Q5/r3cQXihhoVlTHYjYbiurIcJjIQ4j82yrMQzR/x5bz+B+8Y9faXiEij7?= =?us-ascii?Q?Vk16l+9MV/wjA638gC8wBhKZ1g+RS5xdrG1WxQpIRmDjqhEEcw+qjJ428RId?= =?us-ascii?Q?4tZRRXcRC6r6srRt7nYhi+t9wf1TK9yXfFUP0rLrbCAT/Cgs10oRQJHh5J++?= =?us-ascii?Q?Kv9UL9uNosgwni/OYWYMRmmDYZgbZGRf8Z0OuqDc/mFwZJ+/rf7qqcFtpluO?= =?us-ascii?Q?ItnkaGvDpI5mdCs1csNv6itsWghY0+3WkFGlhtsSfutNBDbk2KqeQSLyZ8Ji?= =?us-ascii?Q?c2FrOIBDGURm/blr5E11iyObkABgwG3CvmAs4LGHgwgnnVKJMZwBzP1NkKFa?= =?us-ascii?Q?Tm52KoWcGEkBe7yfNPMdWyMfbWXO1b5RImnxfxk2Kpyj+HPqT/RLP39LQFlk?= =?us-ascii?Q?lyd8LkUCu5Xv6F6BguTnz5ocgwPHWGdym0+AYSDm3G8zPIHVtBaUh6Jv67Iw?= =?us-ascii?Q?SZPCal+dQzoEossZiDSTPQQn01cTpJjB9MR7Zd/ZRzEadyTQ2/jOQ6XKKtCN?= =?us-ascii?Q?z/OH1PIyak0KAO2bXOk5vn5UwPWsZhcVU3u8IgSitP9gw94LldpUEXDhX3rY?= =?us-ascii?Q?C4aZWp0hCIxphDuPsqretTH0gDlxMSSY2LuQVJQdb0WaSoK7hHfNu4LMS2gS?= =?us-ascii?Q?fZfl4eA6HF0lqgEMRd7M+FfkQ8fQtvPPVXrwkkqF2BGEREMnU6Q03rHvcZ6S?= =?us-ascii?Q?60dK8HLbib7YB0beWF6o32LxMty7ZvEHfV6KM/2JbUiimHaLQvbI5P6Y9rWU?= =?us-ascii?Q?IlOFBOMpJ1J6VAssXg9MWC/+kq8HCYrqsd2PDBPp/tZFhe+GCrZH3BTH81r9?= =?us-ascii?Q?+VG8vMX645Bd6znMRDNnggzMR7E/K7NDfJvVXavbWf1pn44vTfvq0rud4Pe8?= =?us-ascii?Q?/0Va9anLT7TjCZjCzLmcqa88OrzJ7CUyRsdeE4JufyyVcd0/06K5SgoBDHyv?= =?us-ascii?Q?6/oa3vpJuEJzmlueZD09LfyjzveOP3I=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: e533a8df-c5b5-44f7-b07f-08da397123fe X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2022 08:25:32.5109 (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: NR9T9P0yKZb1ALaEK/icOtY0HdT0pniqz8uO//f5KeSrBOWAOhYGHjXGbkDZc3Fm9AlclNUOjyjHKehMbTMb8w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6652 Content-Type: text/plain; charset="utf-8" CONFIG_IKCONFIG_PROC is required by BPF selftests, otherwise we get errors like this: libbpf: failed to open system Kconfig libbpf: failed to load object 'kprobe_multi' libbpf: failed to load BPF skeleton 'kprobe_multi': -22 It's because /proc/config.gz is opened in bpf_object__read_kconfig_file() in tools/lib/bpf/libbpf.c: file =3D gzopen("/proc/config.gz", "r"); So this patch enables CONFIG_IKCONFIG and CONFIG_IKCONFIG_PROC in tools/testing/selftests/bpf/config. Suggested-by: Mat Martineau Reviewed-by: Mat Martineau Acked-by: Andrii Nakryiko Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/testing/selftests/bpf/config b/tools/testing/selftests/b= pf/config index 763db63a3890..8d7faff33c54 100644 --- a/tools/testing/selftests/bpf/config +++ b/tools/testing/selftests/bpf/config @@ -53,3 +53,5 @@ CONFIG_NF_DEFRAG_IPV4=3Dy CONFIG_NF_DEFRAG_IPV6=3Dy CONFIG_NF_CONNTRACK=3Dy CONFIG_USERFAULTFD=3Dy +CONFIG_IKCONFIG=3Dy +CONFIG_IKCONFIG_PROC=3Dy --=20 2.34.1 From nobody Thu Sep 18 06:42:57 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:ad0f:0:b0:4cb:58ce:be2f with SMTP id s15csp6881pih; Thu, 19 May 2022 01:25:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzvaDnc5KxZ3Ntilf8Pt6WO187iUngrPHu5At5XP3lOtg9UAqAYn9CrW2zVhG1K+s4XZAp/ X-Received: by 2002:a05:6870:4619:b0:f1:e78d:fd54 with SMTP id z25-20020a056870461900b000f1e78dfd54mr2345923oao.195.1652948749084; Thu, 19 May 2022 01:25:49 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id c32-20020a05683034a000b0060626ec035csi5573440otu.269.2022.05.19.01.25.48 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 19 May 2022 01:25:49 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5383-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) client-ip=139.178.84.19; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=QgJi2fVh; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5383-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5383-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 da.mirrors.kernel.org (Postfix) with ESMTPS id BBA7B2E09DB for ; Thu, 19 May 2022 08:25:48 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3F2E823C9; Thu, 19 May 2022 08:25:47 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A71CE7A for ; Thu, 19 May 2022 08:25:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652948742; 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=bkjKp1Cvxvy02n7w3yYz2n9NsJ5xEq7eZKycP3jGCKY=; b=QgJi2fVhcBRnwAi72lKEeeoV+pfWxpXSHtZeFnh3AxP1OvB/HT8TcvGQnt9nmfY8wKoT3F MJ3fbKy/wMIZkCYb3zRTOBps3gbQOWHAk/u6OUUa7JJ38Mrd+WAc6i4dNTSDUjKucG3n2B 3O2x9s6UzjgHqfW2PoRP2VmHJXepbVE= 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-27-3YIXxftxOoqNyNuxVsn_yQ-2; Thu, 19 May 2022 10:25:41 +0200 X-MC-Unique: 3YIXxftxOoqNyNuxVsn_yQ-2 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AkPSV7l1WRaaH72vu6sowvtvJM/do9DZ9wVVsiThh3Fgh86Ij0E2GQVca5f2j0wdA0mUQ2Q1CiqwJhiHyJ9gNJ7DdDvGucrcn5KjmzV6pB9hlvC/jg7HLY1gVCOoljEOuRlgXX8jPZ+eIT3j/Uhq8oLVBxIuC17oyzYd5lPQKgAa9nxLKCmIUTUQknCpU3Mj/vw/LhprBkRAGjwTbGL4Rc8DMxIo02/4ZcOeVo0m1ss/mn2CLgfFNJ4wXPMhtFMol82bRw6imyKYw8XbfUxk+EGITweM1Jeurju5/eQ6gYMSDAMuD5W8+Y0E8qVGOmINLBfZN6gtaDMuKpydRFDk0w== 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=L6EWHAAEhdwo9vOR9nj/bBQbcDKZzQyvxJiYXoz6bnE=; b=B+JvjGDJJR3z+Tw5JHRSIREYGWmv9S//oCbH+ySuJFWWdx1IH2eaF9nSiNX/qv/Q64XzB0rb5KPgFa8hiSLpF3N7rEKSQBsW6vcIHoY/kkiGqd99YBIDTIuezbmuCzaWbiLXuDG0zfGCARIfRA8ErdcKlMnJyzQj+l4Cv/nFoJWL6y86V61nSxIujIRFQPs/TwLmYwpkw2nHbBXNHPuL602xQefNedwaRPq6pFTvsn92htrm9HwFyYwy3zU1lhcyiig72qKnoVMXV4xZF+cREvZca7dqppkr/b6NbMxZSzV0r3IAYI68fy0SSqNGoMWkm4P1vEOpZBlW+J0sGIPSIg== 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 DB8PR04MB6652.eurprd04.prod.outlook.com (2603:10a6:10:109::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.18; Thu, 19 May 2022 08:25:40 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Thu, 19 May 2022 08:25:40 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Nicolas Rybowski , Matthieu Baerts , Geliang Tang Subject: [PATCH mptcp-next v2 3/7] selftests/bpf: add MPTCP test base Date: Thu, 19 May 2022 16:25:14 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR01CA0057.apcprd01.prod.exchangelabs.com (2603:1096:203:a6::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: e5ca602b-7666-41b3-8d10-08da39712861 X-MS-TrafficTypeDiagnostic: DB8PR04MB6652: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: og1Azkpotf3T5OosiTZA43NvTDGE0RWltIyh5HxfcOAdOmKEH1fypjU9gEGJkISjWaa4OwWMDoR6KZMcsP1AAElSKn/9B1pyoTzOYsFQbEe/xvCdiTnu7x63lXlMTil3+kKazYFb+gLFHAgmZgP+lx7hSfRRq/HKtKkm9jxszcWU9douU30Yi+P8pGJT9CGtBQZJYcfX2ynwIToEWCZqW7hOECfpGGBok0dttNEEKcpCgdaSwHxu/6HtiT9zVZP3pl0vJ8ku5Pr02MOpaQdYmD8b0FxdMiP6iu+22zzr+0AgAMt41nr+Otw1ChcQR4mRiJWRd48YBECmRd2MGQ+5Zn0ueoRdsN/JjTpuQic+6BVZ9576g8oPS/HgooEu7pWLPnTTxb00IQuYlWilCQjCNsZOsqOlDNkM2TH74NcDHvnb6J8Ll/nvaG2MdSz9HcwgLvXZiL/2meE8lBGQsdg16SOESekJYMyyTRtyfLGfDLsIz5qaGlXfzN4/cVzd1OsnRwrKboxFBwCUxqZzItXbNg6kjqWCbAZIQnG6Blbjng/8IV1ZkufE6KB02BupBiyl47AH7IJqCS4QSycBYUqq+ZySBpebcUmMHXDzP9ydwI23aXtxl1uSMRSEfJVSu+6h6c+xjVQPAWaNGbVQO+r0EEbVwcW8BIWFTPdU/giSL32kn2CG59xNWQ3KngL/AAFKM7Fw1WXLEAVB9fPmAPBP6A== 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)(83380400001)(2906002)(6666004)(38100700002)(186003)(6512007)(86362001)(316002)(6916009)(54906003)(8676002)(6486002)(2616005)(44832011)(66476007)(66556008)(30864003)(36756003)(5660300002)(508600001)(6506007)(26005)(107886003)(8936002)(66946007)(4326008)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QOO+NgRpCokGTZ0op4+w+KIKWkHBBn15O8jKbjGom2073AB/weZQooAJbbzr?= =?us-ascii?Q?25QtueI6SJulYKDspoBzcJmSalRQrVbPmVk7fgR5OadJM26B3RoximRsxu8f?= =?us-ascii?Q?HTZExpYnIo3mUQy0pa6mHV/Vz+NkH7f7bhrfvQ7DpYLFpxyOY9BiJcUxonoH?= =?us-ascii?Q?BuwU7lwBYV7vEY1mJ3BWmDxFkYPIGg7rCh8ZEKuuv1AS6zd3sRecs/YiFAcK?= =?us-ascii?Q?Uk20WoYs0Cz0BRc8sR08KdNQ3d9sYb+PfwHByOXgw8suDJQghqRif28LqKfv?= =?us-ascii?Q?EPQeM0NvOlNfNpOJ3tqrW/YW/WPZhI59K1kt1ymXHwRo3OLlTam7n7WBP0dp?= =?us-ascii?Q?7ntyZ0pS/bq0fnaDIcflyzTHaLSavx81wIOMiFbiHtDhT0ISqw4rtkpexqXS?= =?us-ascii?Q?o23ikFL0vWucrwm1UuNcDeU+WrYTMtmMjAh+dXUlaqd0/O/BOP0oQw0qOtOA?= =?us-ascii?Q?QFwvd/mZSeO4TeTKNkeySSG2jwOPbOGsDyg4xmPDWcN4WPwQEZ7jy7rfjeF5?= =?us-ascii?Q?tOKAyltC1gCDo+/irK+T+YGAAmL/KSHzYZb3/6lDeFhajAaAcpvyHo2D+pzG?= =?us-ascii?Q?yxpT04+Kr8imSTMy8Bw1SfgOFCjV/azZ16jGMyku/yS1ACJasCsDCWBsn/pt?= =?us-ascii?Q?bcwlRuXSD8T4Ffw0C5MZzC05aXXZBXWKul0I4eVr0btbVKL+xKPf8pFwtU1D?= =?us-ascii?Q?2kVnFS3SgSfmKZCOFxz/TvL6psCzKDMMD0DFYKqodCtX6k6vlxpG908RipIt?= =?us-ascii?Q?fDtzsOwkaIS1T2OYfiH2/eP+NQX9mXQ/ByTR7NtQRMtNwRCBFTsEakMReGOj?= =?us-ascii?Q?+JVx6VhA2tMkRRyUiXw9iFr62GBkEWU6uPyvcY1axp7PoWNxVOpYxxPeTgVA?= =?us-ascii?Q?bOJ96WYvN+PPVgUGWaDv9PfN81e35bXZiSa0/eCU7NHS2/Q9Nv9WxWB++g/B?= =?us-ascii?Q?tlFTfKfR4r40IAP1Bln7njVEVQw9eI7l0Oe2cM1Vx3ZyAjBl32hiXsvyH7le?= =?us-ascii?Q?Uk2+LeFBJmPoHjuqMytIX0H252UyxTOFRkPk4zQCN1lPRkjVU48If+/tYN/5?= =?us-ascii?Q?HYkbdxwnHaQ2RlrCg20ek1dJJFSnl9uOzpHHyF9wY+ioUFcDK3xYqxRj70ZV?= =?us-ascii?Q?qXYT9BkMc1NMT9hHCPP9WuL03F1ywCJvbPVVU4PkVryATmIDnwm7gI/80nfF?= =?us-ascii?Q?N2F6IxqIISF17BKna0VjhKSY+I9Y8D5eLo/GFO515Ag7bBKEZUSPMyxfpAEE?= =?us-ascii?Q?QCvQmS7ez1cs6UiLigiIz7wL2k1CcJlry8YATRXvgPaiK0aTi7Qn+Zo+oYJR?= =?us-ascii?Q?1sG8eEuSwi59CKsLNEhSs/oh3FHU29XPsYGkOCVwX9Z7YGRQYIt95wLHJkRh?= =?us-ascii?Q?kgwBTADJZMc8TCp1+4KXDxMLAzRavUTeuIrOasqsTQxxp7gnG1pNgJ6aeq0I?= =?us-ascii?Q?Z7JhLbHSkFV+nCWPVFv0kDHgaGzANBN8nLYM5JkxJTyEG4Vy9tRVlshYUjqZ?= =?us-ascii?Q?XuQXdNpQc1r+g9+8KdJudp5wufPoQ5s7NqRr0PiM74n/7MCUbk4vMdOYTTY8?= =?us-ascii?Q?lngVWSvYtQrMFSZNF1TEGh9+0/rOFPETiktozj2/+ZL1YY69Dn//KfqENUps?= =?us-ascii?Q?+/SeVwral8pZ7eaBvGOdRPx/EyZqxvGlG7hxQP18SJMNI/CuFvbGE2/ss1OY?= =?us-ascii?Q?hYDT3lSwTa3gO4idQcyGu+CJIUBjk5Cd6jXVOGidXUHyfgrmwolHql4hWUv9?= =?us-ascii?Q?eH9aOsmyP7IKUwDgabvtZm5k7QaBiqo=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: e5ca602b-7666-41b3-8d10-08da39712861 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2022 08:25:40.0415 (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: sGU+RnsQJZ58VSkwgXaaAFoel+JHYeelTOHamX1ToWszz5PmBv2liBvstlazFVHa3+4uyi8fqDs3YiRBzBimrw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6652 Content-Type: text/plain; charset="utf-8" From: Nicolas Rybowski This patch adds a base for MPTCP specific tests. It is currently limited to the is_mptcp field in case of plain TCP connection because there is no easy way to get the subflow sk from a msk in userspace. This implies that we cannot lookup the sk_storage attached to the subflow sk in the sockops program. v4: - add copyright 2022 (Andrii) - use ASSERT_* instead of CHECK_FAIL (Andrii) - drop SEC("version") (Andrii) - use is_mptcp in tcp_sock, instead of bpf_tcp_sock (Martin & Andrii) v5: - Drop connect_to_mptcp_fd (Martin) - Use BPF test skeleton (Andrii) - Use ASSERT_EQ (Andrii) - Drop the 'msg' parameter of verify_sk Acked-by: Matthieu Baerts Co-developed-by: Geliang Tang Signed-off-by: Geliang Tang Signed-off-by: Nicolas Rybowski --- MAINTAINERS | 1 + tools/testing/selftests/bpf/bpf_tcp_helpers.h | 1 + tools/testing/selftests/bpf/config | 1 + tools/testing/selftests/bpf/network_helpers.c | 40 +++++-- tools/testing/selftests/bpf/network_helpers.h | 2 + .../testing/selftests/bpf/prog_tests/mptcp.c | 112 ++++++++++++++++++ .../testing/selftests/bpf/progs/mptcp_sock.c | 53 +++++++++ 7 files changed, 201 insertions(+), 9 deletions(-) create mode 100644 tools/testing/selftests/bpf/prog_tests/mptcp.c create mode 100644 tools/testing/selftests/bpf/progs/mptcp_sock.c diff --git a/MAINTAINERS b/MAINTAINERS index 69b597aa4bc7..00e29c9f8f5f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -13799,6 +13799,7 @@ F: include/net/mptcp.h F: include/trace/events/mptcp.h F: include/uapi/linux/mptcp.h F: net/mptcp/ +F: tools/testing/selftests/bpf/*/*mptcp*.c F: tools/testing/selftests/net/mptcp/ =20 NETWORKING [TCP] diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index b1ede6f0b821..22e0c8849a17 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -81,6 +81,7 @@ struct tcp_sock { __u32 lsndtime; __u32 prior_cwnd; __u64 tcp_mstamp; /* most recent packet received/sent */ + bool is_mptcp; } __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/config b/tools/testing/selftests/b= pf/config index 8d7faff33c54..a25e15d55918 100644 --- a/tools/testing/selftests/bpf/config +++ b/tools/testing/selftests/bpf/config @@ -55,3 +55,4 @@ CONFIG_NF_CONNTRACK=3Dy CONFIG_USERFAULTFD=3Dy CONFIG_IKCONFIG=3Dy CONFIG_IKCONFIG_PROC=3Dy +CONFIG_MPTCP=3Dy diff --git a/tools/testing/selftests/bpf/network_helpers.c b/tools/testing/= selftests/bpf/network_helpers.c index 2bb1f9b3841d..59cf81ec55af 100644 --- a/tools/testing/selftests/bpf/network_helpers.c +++ b/tools/testing/selftests/bpf/network_helpers.c @@ -21,6 +21,10 @@ #include "network_helpers.h" #include "test_progs.h" =20 +#ifndef IPPROTO_MPTCP +#define IPPROTO_MPTCP 262 +#endif + #define clean_errno() (errno =3D=3D 0 ? "None" : strerror(errno)) #define log_err(MSG, ...) ({ \ int __save =3D errno; \ @@ -73,13 +77,13 @@ int settimeo(int fd, int timeout_ms) =20 #define save_errno_close(fd) ({ int __save =3D errno; close(fd); errno =3D= __save; }) =20 -static int __start_server(int type, const struct sockaddr *addr, +static int __start_server(int type, int protocol, const struct sockaddr *a= ddr, socklen_t addrlen, int timeout_ms, bool reuseport) { int on =3D 1; int fd; =20 - fd =3D socket(addr->sa_family, type, 0); + fd =3D socket(addr->sa_family, type, protocol); if (fd < 0) { log_err("Failed to create server socket"); return -1; @@ -113,8 +117,8 @@ static int __start_server(int type, const struct sockad= dr *addr, return -1; } =20 -int start_server(int family, int type, const char *addr_str, __u16 port, - int timeout_ms) +static int start_server_proto(int family, int type, int protocol, + const char *addr_str, __u16 port, int timeout_ms) { struct sockaddr_storage addr; socklen_t addrlen; @@ -122,10 +126,23 @@ int start_server(int family, int type, const char *ad= dr_str, __u16 port, if (make_sockaddr(family, addr_str, port, &addr, &addrlen)) return -1; =20 - return __start_server(type, (struct sockaddr *)&addr, + return __start_server(type, protocol, (struct sockaddr *)&addr, addrlen, timeout_ms, false); } =20 +int start_server(int family, int type, const char *addr_str, __u16 port, + int timeout_ms) +{ + return start_server_proto(family, type, 0, addr_str, port, timeout_ms); +} + +int start_mptcp_server(int family, const char *addr_str, __u16 port, + int timeout_ms) +{ + return start_server_proto(family, SOCK_STREAM, IPPROTO_MPTCP, addr_str, + port, timeout_ms); +} + int *start_reuseport_server(int family, int type, const char *addr_str, __u16 port, int timeout_ms, unsigned int nr_listens) { @@ -144,7 +161,7 @@ int *start_reuseport_server(int family, int type, const= char *addr_str, if (!fds) return NULL; =20 - fds[0] =3D __start_server(type, (struct sockaddr *)&addr, addrlen, + fds[0] =3D __start_server(type, 0, (struct sockaddr *)&addr, addrlen, timeout_ms, true); if (fds[0] =3D=3D -1) goto close_fds; @@ -154,7 +171,7 @@ int *start_reuseport_server(int family, int type, const= char *addr_str, goto close_fds; =20 for (; nr_fds < nr_listens; nr_fds++) { - fds[nr_fds] =3D __start_server(type, (struct sockaddr *)&addr, + fds[nr_fds] =3D __start_server(type, 0, (struct sockaddr *)&addr, addrlen, timeout_ms, true); if (fds[nr_fds] =3D=3D -1) goto close_fds; @@ -247,7 +264,7 @@ int connect_to_fd_opts(int server_fd, const struct netw= ork_helper_opts *opts) struct sockaddr_storage addr; struct sockaddr_in *addr_in; socklen_t addrlen, optlen; - int fd, type; + int fd, type, protocol; =20 if (!opts) opts =3D &default_opts; @@ -258,6 +275,11 @@ int connect_to_fd_opts(int server_fd, const struct net= work_helper_opts *opts) return -1; } =20 + if (getsockopt(server_fd, SOL_SOCKET, SO_PROTOCOL, &protocol, &optlen)) { + log_err("getsockopt(SOL_PROTOCOL)"); + return -1; + } + addrlen =3D sizeof(addr); if (getsockname(server_fd, (struct sockaddr *)&addr, &addrlen)) { log_err("Failed to get server addr"); @@ -265,7 +287,7 @@ int connect_to_fd_opts(int server_fd, const struct netw= ork_helper_opts *opts) } =20 addr_in =3D (struct sockaddr_in *)&addr; - fd =3D socket(addr_in->sin_family, type, 0); + fd =3D socket(addr_in->sin_family, type, protocol); if (fd < 0) { log_err("Failed to create client socket"); return -1; diff --git a/tools/testing/selftests/bpf/network_helpers.h b/tools/testing/= selftests/bpf/network_helpers.h index a4b3b2f9877b..f882c691b790 100644 --- a/tools/testing/selftests/bpf/network_helpers.h +++ b/tools/testing/selftests/bpf/network_helpers.h @@ -42,6 +42,8 @@ extern struct ipv6_packet pkt_v6; int settimeo(int fd, int timeout_ms); int start_server(int family, int type, const char *addr, __u16 port, int timeout_ms); +int start_mptcp_server(int family, const char *addr, __u16 port, + int timeout_ms); int *start_reuseport_server(int family, int type, const char *addr_str, __u16 port, int timeout_ms, unsigned int nr_listens); diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c new file mode 100644 index 000000000000..7874d8264836 --- /dev/null +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -0,0 +1,112 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2020, Tessares SA. */ +/* Copyright (c) 2022, SUSE. */ + +#include +#include "cgroup_helpers.h" +#include "network_helpers.h" +#include "mptcp_sock.skel.h" + +struct mptcp_storage { + __u32 invoked; + __u32 is_mptcp; +}; + +static int verify_sk(int map_fd, int client_fd, __u32 is_mptcp) +{ + int err, cfd =3D client_fd; + struct mptcp_storage val; + + if (is_mptcp =3D=3D 1) + return 0; + + err =3D bpf_map_lookup_elem(map_fd, &cfd, &val); + if (!ASSERT_OK(err, "bpf_map_lookup_elem")) + return err; + + if (!ASSERT_EQ(val.invoked, 1, "unexpected invoked count")) + err++; + + if (!ASSERT_EQ(val.is_mptcp, 0, "unexpected is_mptcp")) + err++; + + return err; +} + +static int run_test(int cgroup_fd, int server_fd, bool is_mptcp) +{ + int client_fd, prog_fd, map_fd, err; + struct mptcp_sock *sock_skel; + + sock_skel =3D mptcp_sock__open_and_load(); + if (!ASSERT_OK_PTR(sock_skel, "skel_open_load")) + return -EIO; + + prog_fd =3D bpf_program__fd(sock_skel->progs._sockops); + if (!ASSERT_GE(prog_fd, 0, "bpf_program__fd")) { + err =3D -EIO; + goto out; + } + + map_fd =3D bpf_map__fd(sock_skel->maps.socket_storage_map); + if (!ASSERT_GE(map_fd, 0, "bpf_map__fd")) { + err =3D -EIO; + goto out; + } + + err =3D bpf_prog_attach(prog_fd, cgroup_fd, BPF_CGROUP_SOCK_OPS, 0); + if (!ASSERT_OK(err, "bpf_prog_attach")) + goto out; + + client_fd =3D connect_to_fd(server_fd, 0); + if (!ASSERT_GE(client_fd, 0, "connect to fd")) { + err =3D -EIO; + goto out; + } + + err +=3D is_mptcp ? verify_sk(map_fd, client_fd, 1) : + verify_sk(map_fd, client_fd, 0); + + close(client_fd); + +out: + mptcp_sock__destroy(sock_skel); + return err; +} + +void test_base(void) +{ + int server_fd, cgroup_fd; + + cgroup_fd =3D test__join_cgroup("/mptcp"); + if (!ASSERT_GE(cgroup_fd, 0, "test__join_cgroup")) + return; + + /* without MPTCP */ + server_fd =3D start_server(AF_INET, SOCK_STREAM, NULL, 0, 0); + if (!ASSERT_GE(server_fd, 0, "start_server")) + goto with_mptcp; + + ASSERT_OK(run_test(cgroup_fd, server_fd, false), "run_test tcp"); + + close(server_fd); + +with_mptcp: + /* with MPTCP */ + server_fd =3D start_mptcp_server(AF_INET, NULL, 0, 0); + if (!ASSERT_GE(server_fd, 0, "start_mptcp_server")) + goto close_cgroup_fd; + + ASSERT_OK(run_test(cgroup_fd, server_fd, true), "run_test mptcp"); + + close(server_fd); + +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_sock.c b/tools/testing= /selftests/bpf/progs/mptcp_sock.c new file mode 100644 index 000000000000..bc09dba0b078 --- /dev/null +++ b/tools/testing/selftests/bpf/progs/mptcp_sock.c @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: GPL-2.0 +/* Copyright (c) 2020, Tessares SA. */ +/* Copyright (c) 2022, SUSE. */ + +#include +#include +#include "bpf_tcp_helpers.h" + +char _license[] SEC("license") =3D "GPL"; + +struct mptcp_storage { + __u32 invoked; + __u32 is_mptcp; +}; + +struct { + __uint(type, BPF_MAP_TYPE_SK_STORAGE); + __uint(map_flags, BPF_F_NO_PREALLOC); + __type(key, int); + __type(value, struct mptcp_storage); +} socket_storage_map SEC(".maps"); + +SEC("sockops") +int _sockops(struct bpf_sock_ops *ctx) +{ + struct mptcp_storage *storage; + int op =3D (int)ctx->op; + struct tcp_sock *tsk; + struct bpf_sock *sk; + bool is_mptcp; + + if (op !=3D BPF_SOCK_OPS_TCP_CONNECT_CB) + return 1; + + sk =3D ctx->sk; + if (!sk) + return 1; + + tsk =3D bpf_skc_to_tcp_sock(sk); + if (!tsk) + return 1; + + is_mptcp =3D bpf_core_field_exists(tsk->is_mptcp) ? tsk->is_mptcp : 0; + storage =3D bpf_sk_storage_get(&socket_storage_map, sk, 0, + BPF_SK_STORAGE_GET_F_CREATE); + if (!storage) + return 1; + + storage->invoked++; + storage->is_mptcp =3D is_mptcp; + + return 1; +} --=20 2.34.1 From nobody Thu Sep 18 06:42:57 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:ad0f:0:b0:4cb:58ce:be2f with SMTP id s15csp6910pih; Thu, 19 May 2022 01:25:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwO1VhboqMREXgDjlI0VgdSp6tZGPFjGD4NONb8gI3IsKNcrhcIUfW4alJUm21MrMfaf8ui X-Received: by 2002:a17:902:9684:b0:161:5b2b:6ea2 with SMTP id n4-20020a170902968400b001615b2b6ea2mr3672726plp.71.1652948755278; Thu, 19 May 2022 01:25:55 -0700 (PDT) Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id j15-20020a170903024f00b0015d50baea7dsi6285300plh.212.2022.05.19.01.25.55 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 19 May 2022 01:25:55 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5384-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b="D5/eD8gR"; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5384-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5384-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 sv.mirrors.kernel.org (Postfix) with ESMTPS id 9B0F5280A70 for ; Thu, 19 May 2022 08:25:54 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8F73223C9; Thu, 19 May 2022 08:25:53 +0000 (UTC) X-Original-To: mptcp@lists.linux.dev Received: from de-smtp-delivery-102.mimecast.com (de-smtp-delivery-102.mimecast.com [194.104.109.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F21407A for ; Thu, 19 May 2022 08:25:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652948750; 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=YgvF/pS55UHA6+MGqv21qUCJNTkQUGLZgQu4F+baYa0=; b=D5/eD8gRKB4vOVynEwahvxzl1hpwyrvNsjVQrBPTbgTvyTeq8lrCt7nGqOEWTAx8YEXdDF 8KWQrfWANqql0OVOWILCxHLyFm3ikA+srAfXASEeaUL0P0wEOl3kkdwOGCjh7oifBgMOOE 0CX5sRMRd/VS1loueEvMm6p3hiyMTfM= 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-41-H3NytRf6O5qcTK7jrU82mw-1; Thu, 19 May 2022 10:25:48 +0200 X-MC-Unique: H3NytRf6O5qcTK7jrU82mw-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q1nv8/u371mVstAidFd7Y8oHVyZQGQzylIBu+Il74TqSMdHv8mA2Ey90KWknul5AEmvU8JOo52XzTgGyrYZrWRSweeV4XgjBoXo10CEfkauEBYysOvde6UuG3Ye0oHx43/gq2iL5LuWRycTjPEZH9Z19C5D/75NFrnxh/qP5Q4zoiSIig/Z6IXDpFcB5KY7KP1GORNT5dv0qXMRzkNKTVazMzaVuP9MlYdpchWZ0GGBYxjHfvPj++1gj4Gg3jsri1TzU66ozQ4aZgWqunVBRaeRUO2fcVK3gG/UONoizb6+q3k3bGmfqLL/eqYfmVafGqRij6lTYJ7mJIZrj/pveGg== 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=PjS1I7izMMGNCyAWyudWiZyxvBGl5pqmzRA7auoYFU0=; b=GBnHu2S52vrxECuUo27T+7ZHYCcfZ60NX1sj5yDhJIfwXObZFXnnzhzJrKhUpxsVLWv0Szh8miQfUzhpeJ/ZDIVERJF0ZBi9fSCOzU0Aj8FED2+ZDH/mFGSBi3KTX3vPGWE6hAxq0k7Zjogx6wbS1DLheEcT09TLsLhVRq/gQnhpcr5uQjhXJN53DpRf7q8kD2g6rifIyWKSpjILoMkFk5FjiJrJIGVVqxISbiSjDdor7P/Ggi3gw6xaFDGcUi//rI9LnySX86Zf186zKqmg/EUrvo4+dYjdIZYWW88PVoup5BKHg7CWsSzv6amxpEdAnhGUwF+MSVOdo5oNvcL6Wg== 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 DB8PR04MB6652.eurprd04.prod.outlook.com (2603:10a6:10:109::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.18; Thu, 19 May 2022 08:25:47 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Thu, 19 May 2022 08:25:47 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Mat Martineau , Matthieu Baerts Subject: [PATCH mptcp-next v2 4/7] selftests/bpf: test bpf_skc_to_mptcp_sock Date: Thu, 19 May 2022 16:25:15 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK0PR01CA0068.apcprd01.prod.exchangelabs.com (2603:1096:203:a6::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: 13c4fc9d-cf74-456f-0572-08da39712ce1 X-MS-TrafficTypeDiagnostic: DB8PR04MB6652: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: uYG0hxOyAXAGCwvMlHPF8v+s0KlbaQrrHwhhAhwrs33XRzquLJp5UF9dBSjmwk+OHTEmrYo0KSvz21WMHKuecYtgi6eLal6FeMvAqdob4Xfss7qd1yKWnKtVCIOrbYv6T+UsKhPNYpOU0t7qclIi8kUDQZ3gjvkjgVet8TgNSFK9hMOMXv4Uv5qC3QADt4V61I8+vi/uCT0hee0Z8UjbF8RrlJO82goD0+93JOyFuY0I+kFM6i8o7XEV5JytPt71cJu0wfZEi7CFMSNzapmruI7V1tMwkC4VMy6MzpguFpxajYnKl7QFk9RejuYoaiNl2RudnrNKvTcxAqjqcbFfOWBSLDsSQLupVju8TIokP7mZ08HFjSYPjDo4n8Fum6Xm2O2XdXKZLj84tLlJX/X8HFshZtbODUbBgPD6ax+rmwTPvmkbiS/75LgSevBIRvbaWKIX0ZkJXGLjCEOX/83C5wQ4azIi0v1OQWzEE9c3YYG1RjpxhzGTF0PoilE6BpBRn5+H2R7QWHKzPiR4G+sCPy+I41n+t/7qgpv0x9v1BQeKMpX4NSaGEBBqt0yEUa6JfKXwPx6VR2YCwCFvLawvcutGt3tEwRirucyt1Ol+L6egMQ8PaAOUMdHJCLE2KNmLzCHPqleFsmiRDv4c6JVIArX49Z2p7kXhlMCdihMOtdPMWjdjGVdQsqo8fhOMlJZJ 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)(83380400001)(2906002)(6666004)(38100700002)(186003)(6512007)(86362001)(316002)(6916009)(54906003)(8676002)(6486002)(2616005)(44832011)(66476007)(66556008)(36756003)(5660300002)(508600001)(6506007)(26005)(8936002)(66946007)(4326008)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Jmxu04M0jMrmpUDOnsoE/HMr0w+BpjKVAY9ZrjH6/I25hKPrGIhN/F3TJuls?= =?us-ascii?Q?QEo2keBXljI5H8mlp4KeIQfYnWgTKJebPTfAo61w4xhXP7kzvzRMTMSpSk7n?= =?us-ascii?Q?GK5IonOxHXjW5C9gNIBiuEUMRo67cfw53MXgujcfvuu1zpihfnuxiEX2/8x0?= =?us-ascii?Q?cVPi5n9arg2L6VlQfVhz4DJwpkCfTba6lx7E+kYW3pzXr5Bf477/6AtsIcxk?= =?us-ascii?Q?5pqPJIguCAfWsSz4ei0I68Rn+Q7XkupdYvO9UzrNYKbcNvxKL//ALCgAtGZB?= =?us-ascii?Q?5A7YCXhH2KYptrprFdL5r3qiVaWIerrkNqtskamlO8qlSJTtSZnK83ApIkge?= =?us-ascii?Q?v5J4f+pecwyuIJnrBzJf6ukfcIDQZIYJ4YZ6AiJ4BatQid1mDdj4dyj7S3wT?= =?us-ascii?Q?wQVdNKFGnN62LGPICNu3ED/iaS0JWEHa3i5Im8FlcNzLeNmlyHRibxWC2Urj?= =?us-ascii?Q?37C0zmgzCjEqydkAGbLZXt+4YtnbjZlEwNQFZ+m7OxvaU74psrsn9doSdBMC?= =?us-ascii?Q?cBM4BQ6P2pAS4C84pFSYLfodFFjUgiwQ69dVlBPywJTYH8Cd0EFfF/Pzoo+V?= =?us-ascii?Q?wV4bLvUJeo2Gghtcz8DikqK4+kkvwyo0H+1weByCHaf7wEU5jSQz9mTS7uPC?= =?us-ascii?Q?olblkV9wIbH/+X4IRKRGsP+pytWsB1kL6LGsBZ+mAWkzP0LvxWpSp3KxnEAh?= =?us-ascii?Q?YtsA359XPst8ExJOrGAM+jdbkD4QoIxzmj1NDUnQAuR8D3nYyXAj5TMREuls?= =?us-ascii?Q?YssA38EClSQQnBYdfpxYKt3WsnKSKboa1hNZ/94yspiALnl3GkE5dt6pHoi0?= =?us-ascii?Q?VQ5CRFbVcMyO+oHnFOFkGo83N6zTGCYPezxqdzpTOFXFXTs0Dhc8ncCBCEXz?= =?us-ascii?Q?PePL+bECGrTDB5DHydatKPVZZP7JpRQcMm5jf4Et4JOts2QG1JYDwYqHzved?= =?us-ascii?Q?yKfrh7Sl96c+8524rxS12ZiGMLQmgoVRZFJZTSzps5jC23gp8Nh3HnOe/OcE?= =?us-ascii?Q?6TWE1sQdWG1ZkmH6TwYM1N05ixbHKcJj2+8QVl4iTN1W3HgAFKp8NlZjUPal?= =?us-ascii?Q?fANeC//0UNpmtUOYT7YedU8piba3KF8ZeeIGejTymiznQwp0lCZo9IoeEpWj?= =?us-ascii?Q?Me8M9Bsg7ivariV8eoWOO/NpsvyLDXcCLpe/8Wh8VVgw00SytuEBRN2nCKj0?= =?us-ascii?Q?pBneqCJAF65p11sq8vvPqBthyfPu6OsIEIBWqNQIu4oFPEayeRccyGS4bDnE?= =?us-ascii?Q?J5mlr6AQ/N3PjMemmKipJ6UFHfRNzd11AVATQG2awtXwGoblSwtEd/0OTUf+?= =?us-ascii?Q?bKNaTl4ISky6G7kxeffYnJ70xAG8V2IUsKXNm3wd2ZAVkYiogvjnCB4GVS8D?= =?us-ascii?Q?zauua+9QWg+1IO3S7PIG6uZ2wLbBFkGonqOhF5jCxM5XM0xl25QNHCPAsUk5?= =?us-ascii?Q?FBPPyxgi2cflrb3Tsgr/I3qyvzPnS7Ds6PaZkR0wT88oWMEly1KXqJqirGPX?= =?us-ascii?Q?4aFaAs93z2kR49gKP33uTiP1ApyZ/rILsoyI1vq0wfwHzCbxeLn+9dRrk74h?= =?us-ascii?Q?1OcrYXJsN+DKJQsZqXJZwgvBgtLF4R34dqnqp9TVY9U84UGVRjtQxi6KI23z?= =?us-ascii?Q?F83ZrzhA4HC8qlfHvw+5lW32EKGFi9OjcnFB3peCQiGaVTUtqbOc/ZoOD2b2?= =?us-ascii?Q?qglOnnt35j+DQf+srsc0FHbgSopkCEVH2sFVPLF8M5tyZ3axJ9SH+Y8mEyDP?= =?us-ascii?Q?z7EAdy9eKXiR0KYtEnVwlT6JI9lHJPs=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 13c4fc9d-cf74-456f-0572-08da39712ce1 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2022 08:25:47.6347 (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: EJ4K77UU3Ht7lZ0CEdDJMWKpvmXOLU/wMJaJHGqmGRuzOYPT1opIiz/zrdrrZx53vhV7dpzcPj4FwS7XzkvnXw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6652 Content-Type: text/plain; charset="utf-8" This patch extends the MPTCP test base, to test the new helper bpf_skc_to_mptcp_sock(). Define struct mptcp_sock in bpf_tcp_helpers.h, use bpf_skc_to_mptcp_sock to get the msk socket in progs/mptcp_sock.c and store the infos in socket_storage_map. Get the infos from socket_storage_map in prog_tests/mptcp.c. Add a new function verify_msk() to verify the infos of MPTCP socket, and rename verify_sk() to verify_tsk() to verify TCP socket only. v2: Add CONFIG_MPTCP check for clearer error messages v4: - use ASSERT_* instead of CHECK_FAIL (Andrii) - drop bpf_mptcp_helpers.h (Andrii) v5: - some 'ASSERT_*' were replaced in the next commit by mistake. - Drop CONFIG_MPTCP (Martin) - Use ASSERT_EQ (Andrii) Acked-by: Mat Martineau Acked-by: Matthieu Baerts Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/bpf_tcp_helpers.h | 5 ++++ .../testing/selftests/bpf/prog_tests/mptcp.c | 27 ++++++++++++++----- .../testing/selftests/bpf/progs/mptcp_sock.c | 19 ++++++++++--- 3 files changed, 41 insertions(+), 10 deletions(-) diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index 22e0c8849a17..90fecafc493d 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -226,4 +226,9 @@ static __always_inline bool tcp_cc_eq(const char *a, co= nst char *b) extern __u32 tcp_slow_start(struct tcp_sock *tp, __u32 acked) __ksym; extern void tcp_cong_avoid_ai(struct tcp_sock *tp, __u32 w, __u32 acked) _= _ksym; =20 +struct mptcp_sock { + struct inet_connection_sock sk; + +} __attribute__((preserve_access_index)); + #endif diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 7874d8264836..6f333e3aba9c 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -12,14 +12,11 @@ struct mptcp_storage { __u32 is_mptcp; }; =20 -static int verify_sk(int map_fd, int client_fd, __u32 is_mptcp) +static int verify_tsk(int map_fd, int client_fd) { int err, cfd =3D client_fd; struct mptcp_storage val; =20 - if (is_mptcp =3D=3D 1) - return 0; - err =3D bpf_map_lookup_elem(map_fd, &cfd, &val); if (!ASSERT_OK(err, "bpf_map_lookup_elem")) return err; @@ -33,6 +30,24 @@ static int verify_sk(int map_fd, int client_fd, __u32 is= _mptcp) return err; } =20 +static int verify_msk(int map_fd, int client_fd) +{ + int err, cfd =3D client_fd; + struct mptcp_storage val; + + err =3D bpf_map_lookup_elem(map_fd, &cfd, &val); + if (!ASSERT_OK(err, "bpf_map_lookup_elem")) + return err; + + if (!ASSERT_EQ(val.invoked, 1, "unexpected invoked count")) + err++; + + if (!ASSERT_EQ(val.is_mptcp, 1, "unexpected is_mptcp")) + err++; + + return err; +} + static int run_test(int cgroup_fd, int server_fd, bool is_mptcp) { int client_fd, prog_fd, map_fd, err; @@ -64,8 +79,8 @@ static int run_test(int cgroup_fd, int server_fd, bool is= _mptcp) goto out; } =20 - err +=3D is_mptcp ? verify_sk(map_fd, client_fd, 1) : - verify_sk(map_fd, client_fd, 0); + err +=3D is_mptcp ? verify_msk(map_fd, client_fd) : + verify_tsk(map_fd, client_fd); =20 close(client_fd); =20 diff --git a/tools/testing/selftests/bpf/progs/mptcp_sock.c b/tools/testing= /selftests/bpf/progs/mptcp_sock.c index bc09dba0b078..dc73b3fbb50b 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_sock.c +++ b/tools/testing/selftests/bpf/progs/mptcp_sock.c @@ -24,6 +24,7 @@ SEC("sockops") int _sockops(struct bpf_sock_ops *ctx) { struct mptcp_storage *storage; + struct mptcp_sock *msk; int op =3D (int)ctx->op; struct tcp_sock *tsk; struct bpf_sock *sk; @@ -41,11 +42,21 @@ int _sockops(struct bpf_sock_ops *ctx) return 1; =20 is_mptcp =3D bpf_core_field_exists(tsk->is_mptcp) ? tsk->is_mptcp : 0; - storage =3D bpf_sk_storage_get(&socket_storage_map, sk, 0, - BPF_SK_STORAGE_GET_F_CREATE); - if (!storage) - return 1; + if (!is_mptcp) { + storage =3D bpf_sk_storage_get(&socket_storage_map, sk, 0, + BPF_SK_STORAGE_GET_F_CREATE); + if (!storage) + return 1; + } else { + msk =3D bpf_skc_to_mptcp_sock(sk); + if (!msk) + return 1; =20 + storage =3D bpf_sk_storage_get(&socket_storage_map, msk, 0, + BPF_SK_STORAGE_GET_F_CREATE); + if (!storage) + return 1; + } storage->invoked++; storage->is_mptcp =3D is_mptcp; =20 --=20 2.34.1 From nobody Thu Sep 18 06:42:57 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:ad0f:0:b0:4cb:58ce:be2f with SMTP id s15csp6938pih; Thu, 19 May 2022 01:26:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxSywYdJCDdFIPeg9dzJr6Grd2Bmdbw3utbl+meQHw1KfXEqWEeFKFK0/0nnuROZ6cE4KtP X-Received: by 2002:a05:6808:1594:b0:32a:e9d6:1da9 with SMTP id t20-20020a056808159400b0032ae9d61da9mr856622oiw.60.1652948764146; Thu, 19 May 2022 01:26:04 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id t6-20020a056870f20600b000f1afd1e41csi6147302oao.204.2022.05.19.01.26.04 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 19 May 2022 01:26:04 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5385-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) client-ip=139.178.84.19; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b="cmze/RsV"; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5385-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5385-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 da.mirrors.kernel.org (Postfix) with ESMTPS id E23152E09D4 for ; Thu, 19 May 2022 08:26:03 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9D12623C9; Thu, 19 May 2022 08:26:02 +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 838847A for ; Thu, 19 May 2022 08:26:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652948758; 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=b8zg3YY5mfyQ/ku7nm/1A4gLPIVoe0s14JEdN5al1YI=; b=cmze/RsV3XxcteFeTQsxqAKzWhccMhItkYkrI3Y23iOhML3viIHQfgzAv57w2i+RG+4T5P YZf8I/lV2JbC9ESs8Iz6+RW6A70Cck/GaMaTkWyuwEJa9/lj5OiEKZ7PoFufDSAs+eATck 4pIRSBVRp7wcQTOWvnSjKhAkvdc0zjU= Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04lp2053.outbound.protection.outlook.com [104.47.14.53]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-10-qJNd5V3OOgmAnH2-QEyi0Q-1; Thu, 19 May 2022 10:25:57 +0200 X-MC-Unique: qJNd5V3OOgmAnH2-QEyi0Q-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AnxBL/fFdgzfYx9dJwLwZ833DZArA2xjgOXgjGA5P6S9PZY5fC8HtvzaPrU1GHsAj/nZNsNd7pfY41nk8XGbbyDSDf7C67gzIQev3sKMuF3saP6eVM94BFra6UjnJ5dmJaqRalaekPiCiE8GjEsk1cjOD+5fF3nm/3kiSlbSuI0EsRK4H/fVWSHbvBkVmzUGm/R6DXc1k3Jqj0b7uCxAEH8MLU55c0E9gc37DQANUYckzxDqqYFgVkFDNCh2nSKdaendwri93Pu8SiWQjiMH7/kfWbkpfbofdBhYmExdCQGJHSvNapzVRcNpfYdruHWhHcf3Mpt5OW0jzT48S6ifTQ== 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=YEp3QBiFPz+ifQHU8zVnCYkvGVE1sze0xMGWUaoBSPc=; b=AnPsLv8o1yexqTFc5dR6I+2GX00e2NJEPXuq/VTLOHE9xzD1IM+krFQHfozmeQl2nNC1QIL0F7ZIAvLfXQFI6uK/2rHuyIpcZZ0bQ11t2ldLVXjLZkwpeIBZfUEsOZuoOsYyljK39sacRX09iAo6G5lmz5q17IiM1jpz5wR5nGWzZZG9/sN86WZp4NzH+Li8XVSFqqU47k4I2RlngcirYhC1YsxvB4PSzt1CKDbCkOdqREI4XaBj9q1AWTARBJjpXGHKGvWGOnQpH4ojZfE6Q0yk03dGxJEW8njZCPZtsYIIiypCnBpP+kQ2yWYg127QSxJumB3F7CyPGrmwZNoNKw== 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 DB8PR04MB6652.eurprd04.prod.outlook.com (2603:10a6:10:109::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.18; Thu, 19 May 2022 08:25:56 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Thu, 19 May 2022 08:25:56 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Matthieu Baerts , Mat Martineau Subject: [PATCH mptcp-next v2 5/7] selftests/bpf: verify token of struct mptcp_sock Date: Thu, 19 May 2022 16:25:16 +0800 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR0302CA0007.apcprd03.prod.outlook.com (2603:1096:202::17) 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: 588c8f77-9543-41d2-235b-08da3971320c X-MS-TrafficTypeDiagnostic: DB8PR04MB6652: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: pJpYEInc6B+o4bdvGrQfLH813AJVFWKZ/PN5TqIbbHN6xYN+TyT3woLmVZg/yDywdfb2+jcyYzQKhtZ/EnCMaJcyze4KzCE9rdu8/6GZXCQScieSa4gbiN6lSnQB65KpLpObhcIFUIbrCuHJfMVoOzYJ4yYSG7tJxQvoQVZ2Xurq4W99aAwxnhqgqt+vVRlB6rlIOqO5Lwq86YEmdOKmV9UUF7XS/trmpmahunkXXXl98/4ddrFMKCDs+7BQqce8YMDZK5ij2vLnbzhHxJ5HfblQVZwB5uyF3hThKrrYze77KheyTPfc/ugRQemzEn8uT/U1KQJu8aO9WG6LAxB6HjMtph4xIceOKJi+S6ShpUBfSY1J886f2/kOFlQ8x1G3KWq/nZO9/PRkkilVFY/10PtB/PDCPZcinJa5g8pAfG7QPhzbK8SYYYiEFg6i0Nir61uyOH5ARtXP0UHzQlt35Qv49uEILy59yuPbEa/FKjQmub3LnWc4/XoMAxoxkztC40Co0EUY8FwE2vO1oow5LcYb+oVhUw1Q87AeK17mzKC2Y7xNg9SopOdF50pgZ/Y6UkH70ERNvpUo3KtR/jNZ7invNXRgVptg04yE2jIvZNf8MgHn8MvivVB0ixG8DTR50aCgNuwec+/5ipjPFrMrY1Kk9o8ciKhqlYMXtkzfK3puZkzLcsC/NgLBTFmB2nWq 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)(83380400001)(2906002)(6666004)(38100700002)(186003)(6512007)(15650500001)(86362001)(316002)(6916009)(54906003)(8676002)(6486002)(2616005)(44832011)(66476007)(66556008)(36756003)(5660300002)(508600001)(6506007)(26005)(8936002)(66946007)(4326008)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Tk5A52I8IBjTAXbFNnv2asTGXk0DIMEywH+hVbbPvCQSIxXa/0R2qRxvngVS?= =?us-ascii?Q?E+7rXgGcXadbsvH5KDy9aKzhRxjCZ1YWkAorLgDPGC/Uqk6fvcq4Z5x1n7Ir?= =?us-ascii?Q?0RNs6MpcUYokOBLqsadnvssaPVtz9wEtc45wkBFJDwD4QiDJd7S+mhYCLCsV?= =?us-ascii?Q?zy2j/RRk1g2Qij465A99tTfwvDuhN2uv2pV5U0bJVlqTqdW2wIceOwt+JudU?= =?us-ascii?Q?g9bReDD6S1LjtkFxxBtpRKJIGNsgOa6QTuOHQtYpXEaFMgF3/MyMVHlK0lgu?= =?us-ascii?Q?VbD8/6KdktYIyp9uGKN7wZZCcEYSXizGGMwPQZmjMF+ASSIWN28G/KZYgs8D?= =?us-ascii?Q?kieIJw56PadI1C45Csh9ieUq3io075BcZqmy7QLcRMvyYbDfhJrOEjhIC0sF?= =?us-ascii?Q?Vofw5Mui2cbdF7sgQ2yrEwx6yaD543WHPe4WFD/jpX277VDHOj1fVKH30r82?= =?us-ascii?Q?1X9kDDi27ncbRFt+0D+QuazDlyE+p/QWb7GMWo34eH1eFF7LAW51Xkfh1CJ+?= =?us-ascii?Q?ephrjdcu472IiamwtfhOm9frBGi8137YOat5pmJjq/kfQCZfN6Sakqk5ATTc?= =?us-ascii?Q?VcQbma6W+2uHx5VVTbIxIjxqRzrvbMDKSmadlTx/NtzINogGWh9ZjaTkBA2M?= =?us-ascii?Q?4pSjVpNx2ByjsYEZNL+8csMjDUH+Q+pn6XHp+Xh6OVrC2kHss3cWI++3fH6O?= =?us-ascii?Q?BXBjYIB6DceZv3fCx+ut2CQvV7xsf8mBSy7/0aZ2OkoA/tEHfUem4EpGkeF4?= =?us-ascii?Q?TWD49jSmAHHx3Plsui7o1it++N7OZVNdtZIq3uSs7Y4URUKdU2PNqHazr1OF?= =?us-ascii?Q?q658oNNc7TL273bQaLbY5pajqREYlY0/631GHBIXZmNDOiU9fbQQoqidI9mv?= =?us-ascii?Q?YWSU/pMLEUDTARO810oDQETdcvZzKXWBoLn5ZjVu6cFrvlj4sK/yFgq2Uhcs?= =?us-ascii?Q?OKX19ixWnMNNWuew2zVjOqK65Re5pYJNiTftJg1qbvKavTCCU6PWXln1F/DR?= =?us-ascii?Q?dfrd5cA6Id0Mr/m1uJ9hfKeDHltFLs+qT73wlVtUxCRW3oC8aP4scVSvCamY?= =?us-ascii?Q?BwmhQXODB0293Ro6o28UljjrkTbA3MFFSAXr9sD5SS3exL+dJb6tf55oQov+?= =?us-ascii?Q?HAJUSCHApz8tSdVAJUi2sQLUZVL9ZzMasUVo/YPjdzTTFJ+DWQtzCeC2M134?= =?us-ascii?Q?GVd60RK8DbelAlu0JH7gDGV2aaEjC/qJ8jGb257FmbOZYFgkjhnH9TEflkSk?= =?us-ascii?Q?lv4MQyGktbedmSs3HyasBL9ntdBpm2lRRZbzzlMyicxNrFcIEbnl3JK6VJf3?= =?us-ascii?Q?ixOTjjLi2CoiKGNp8WZejMOU0znsPnSJE92x+dT6CYE9JDKpNpBqU0pGMUMO?= =?us-ascii?Q?9a7dh4/NTD7e+h4Ld8ChwDtu8aV1zh0PM0oP/dtIYfLeSXmJHVtvLMAzFkwR?= =?us-ascii?Q?1/k1Fu8L0JL597CoHwJzxV2L1o8CnpfGfb0GhN6U/amjFPFwC5PBrYa/ia4a?= =?us-ascii?Q?mo2/Ryv2yCY7okq+MPY3hftsu36TemygVMcgU4Y19pQYK5QCUIsyb4J3ZtTh?= =?us-ascii?Q?tDTmwFJ0VFSbcFN67CaYHI5RHVHodOBGrDOw2aXv9BeVKiiFuLo1GJ1GX8uD?= =?us-ascii?Q?lWl7SEZp4ke01FnVjZkvr+nD7ct0FdNh1z5S1SigHVgFQG9nBQdBh8p1GGh+?= =?us-ascii?Q?rIM9cFRP9xcwwfIr17s3JY2WDoA4l7aIBtIv2dJe017pJeSUwBBsiEl9QuPM?= =?us-ascii?Q?PIv2iH71eqIHj8EsZNaEqNibG1xfiQM=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 588c8f77-9543-41d2-235b-08da3971320c X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2022 08:25:56.2746 (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: SRHzxbuLoPCHGdyS5MQ6F3GKK2IwiIWR3A3j9QhMhCkWFt3/A6kHN4YLSuK6ZNDOx03oz7rmwUs/I6m8+VY/Nw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6652 Content-Type: text/plain; charset="utf-8" This patch verifies the struct member token of struct mptcp_sock. Add a new member token in struct mptcp_storage to store the token value of the msk socket got by bpf_skc_to_mptcp_sock(). Trace the kernel function mptcp_pm_new_connection() by using bpf fentry prog to obtain the msk token and save it in a global bpf variable. Pass the variable to verify_msk() to verify it with the token saved in socket_storage_map. v4: - use ASSERT_* instead of CHECK_FAIL (Andrii) - skip the test if 'ip mptcp monitor' is not supported (Mat) v5: - Drop 'ip mptcp monitor', trace mptcp_pm_new_connection instead(Martin) - Use ASSERT_EQ (Andrii) Acked-by: Matthieu Baerts Acked-by: Mat Martineau Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/bpf_tcp_helpers.h | 1 + tools/testing/selftests/bpf/prog_tests/mptcp.c | 15 +++++++++++++-- tools/testing/selftests/bpf/progs/mptcp_sock.c | 16 ++++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index 90fecafc493d..422491872619 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -229,6 +229,7 @@ extern void tcp_cong_avoid_ai(struct tcp_sock *tp, __u3= 2 w, __u32 acked) __ksym; struct mptcp_sock { struct inet_connection_sock sk; =20 + __u32 token; } __attribute__((preserve_access_index)); =20 #endif diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 6f333e3aba9c..138bcc80ab9e 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -10,6 +10,7 @@ struct mptcp_storage { __u32 invoked; __u32 is_mptcp; + __u32 token; }; =20 static int verify_tsk(int map_fd, int client_fd) @@ -30,11 +31,14 @@ static int verify_tsk(int map_fd, int client_fd) return err; } =20 -static int verify_msk(int map_fd, int client_fd) +static int verify_msk(int map_fd, int client_fd, __u32 token) { int err, cfd =3D client_fd; struct mptcp_storage val; =20 + if (!ASSERT_GT(token, 0, "invalid token")) + return -1; + err =3D bpf_map_lookup_elem(map_fd, &cfd, &val); if (!ASSERT_OK(err, "bpf_map_lookup_elem")) return err; @@ -45,6 +49,9 @@ static int verify_msk(int map_fd, int client_fd) if (!ASSERT_EQ(val.is_mptcp, 1, "unexpected is_mptcp")) err++; =20 + if (!ASSERT_EQ(val.token, token, "unexpected token")) + err++; + return err; } =20 @@ -57,6 +64,10 @@ static int run_test(int cgroup_fd, int server_fd, bool i= s_mptcp) if (!ASSERT_OK_PTR(sock_skel, "skel_open_load")) return -EIO; =20 + err =3D mptcp_sock__attach(sock_skel); + if (!ASSERT_OK(err, "skel_attach")) + goto out; + prog_fd =3D bpf_program__fd(sock_skel->progs._sockops); if (!ASSERT_GE(prog_fd, 0, "bpf_program__fd")) { err =3D -EIO; @@ -79,7 +90,7 @@ static int run_test(int cgroup_fd, int server_fd, bool is= _mptcp) goto out; } =20 - err +=3D is_mptcp ? verify_msk(map_fd, client_fd) : + err +=3D is_mptcp ? verify_msk(map_fd, client_fd, sock_skel->bss->token) : verify_tsk(map_fd, client_fd); =20 close(client_fd); diff --git a/tools/testing/selftests/bpf/progs/mptcp_sock.c b/tools/testing= /selftests/bpf/progs/mptcp_sock.c index dc73b3fbb50b..f038b0e699a2 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_sock.c +++ b/tools/testing/selftests/bpf/progs/mptcp_sock.c @@ -7,10 +7,12 @@ #include "bpf_tcp_helpers.h" =20 char _license[] SEC("license") =3D "GPL"; +__u32 token =3D 0; =20 struct mptcp_storage { __u32 invoked; __u32 is_mptcp; + __u32 token; }; =20 struct { @@ -47,6 +49,8 @@ int _sockops(struct bpf_sock_ops *ctx) BPF_SK_STORAGE_GET_F_CREATE); if (!storage) return 1; + + storage->token =3D 0; } else { msk =3D bpf_skc_to_mptcp_sock(sk); if (!msk) @@ -56,9 +60,21 @@ int _sockops(struct bpf_sock_ops *ctx) BPF_SK_STORAGE_GET_F_CREATE); if (!storage) return 1; + + storage->token =3D msk->token; } storage->invoked++; storage->is_mptcp =3D is_mptcp; =20 return 1; } + +SEC("fentry/mptcp_pm_new_connection") +int BPF_PROG(trace_mptcp_pm_new_connection, struct mptcp_sock *msk, + const struct sock *ssk, int server_side) +{ + if (!server_side) + token =3D msk->token; + + return 0; +} --=20 2.34.1 From nobody Thu Sep 18 06:42:57 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:ad0f:0:b0:4cb:58ce:be2f with SMTP id s15csp6957pih; Thu, 19 May 2022 01:26:14 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyBtLu3h/bEBqV02/8jkB0mKWy4VPJa6HlQvo48aWuzcmocqz8lpd7NCXm2xEqasXJA1jaF X-Received: by 2002:a05:6870:f61a:b0:f1:7484:8eca with SMTP id ek26-20020a056870f61a00b000f174848ecamr1977667oab.107.1652948774159; Thu, 19 May 2022 01:26:14 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [2604:1380:4040:4f00::1]) by mx.google.com with ESMTPS id q12-20020a4aac4c000000b0035ea2ce6c1dsi4041890oon.84.2022.05.19.01.26.14 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 19 May 2022 01:26:14 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5386-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) client-ip=2604:1380:4040:4f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=f9yeW3qc; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5386-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5386-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 da.mirrors.kernel.org (Postfix) with ESMTPS id DA7142E09B7 for ; Thu, 19 May 2022 08:26:13 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B072423C9; Thu, 19 May 2022 08:26:12 +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 D9AC07A for ; Thu, 19 May 2022 08:26:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652948769; 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=0wyAiqJrxbsrOzQZkOW8J9DDbOtPs1v+mOWtujL1zzM=; b=f9yeW3qceuUhkQHgVmHpwmeoRoDPG42MRsLb9XcK3PoDIJ/xuS5SwQDx7WnWARjXKYFHwT JfclQgpWOCtgX7lUr/2tYjGLZtJEA1XptocDg4u7goGbQEmksYxdbvSeLK9GhjymgE4FnM BDZ58NbjjAk/hyltoT7hymo7X+NLEb0= Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04lp2056.outbound.protection.outlook.com [104.47.13.56]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-36-fulWZ2loOTWOJ_CghUzpMg-1; Thu, 19 May 2022 10:26:07 +0200 X-MC-Unique: fulWZ2loOTWOJ_CghUzpMg-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QG85BMrtTBO6W06qrJ4klKevJ/6lMLCndycbespQ3tvXRymbZRZ59zZ60TW6/CeVV0MiP5LbyUrOqmnJq4BF4IxBNUOKJq7+wRubTrkkaCi1H0uSCCAcWo/MOIkIS6JS8/i97VMrhkkc2IPWBFTJWe1d9gfkUJQQZ9G3HvfTR8HDS3prDcj1+dyps+EhSM+7UrWpr5IuETiUItMueQM1cdaAwIx0JPPsc3GdPMdF5/pjWqfdvijUx5OOMfrR/pJEkrYe56EuJ95zjsxTj0ItcVqcfVL38WZx5ZyPg5z6Pw5Wi/PwxFy4Dv6At8cpfMUpdD5oZkdLDttINJ+QaADhKA== 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=z0DMObuDqhBnmp9GnxtaVVDhXzRPXx/uK0SQlwZG57A=; b=j+hfvxb/EIdrDWEGIr4Fp6wwQoa/IGJUjCD5GoXb7Smye8HBiFDHGqh8LpfGO4tlkh1HlZRj2Lsh9lZe7VGlI8ucmSJvndz8zDvkOl6rC6LQHKzFGWi7d8J7XlTH74Fz0m43ytCRwaeGEFjTwhS1b40wZzXBM9cJntqVa2Y///ytLErTKLwCx6WOcSUUiSa9DG1scGfcCtafcTN4LGrtTNTtd6WGSNOGWsUl9YPuwvlb4E6VKla2vx9dLL0IWSxZddVG1ifpPw1KxvqM7iHfDbJ4XfP0ixjzm75fYB40+zwD3tvRkt3ib0BYzAhRyTOPUckxerlrtoOr0IEs85HB9w== 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 DB8PR04MB6652.eurprd04.prod.outlook.com (2603:10a6:10:109::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.18; Thu, 19 May 2022 08:26:05 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Thu, 19 May 2022 08:26:05 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Mat Martineau , Matthieu Baerts Subject: [PATCH mptcp-next v2 6/7] selftests/bpf: verify ca_name of struct mptcp_sock Date: Thu, 19 May 2022 16:25:17 +0800 Message-ID: <1e7c38a83f8072d038e13dd7ca0637fe92d4f366.1652948238.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR0302CA0012.apcprd03.prod.outlook.com (2603:1096:202::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: eb47c1fa-c4e9-475b-55f0-08da3971372b X-MS-TrafficTypeDiagnostic: DB8PR04MB6652: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: rxsfynEBSguwqdvAz5bLMLvLFYIkppoCpQEFREgO3E5XZ1nfwG072cDGYCfYTnD8VuVE9TVeE55zURX3jECLoIYGgVwXBKaVYbzzQgoNROgEct8TQ5IhV1r/B5/K8EcLFhnjHRMaC3H9eLksZuRqhgSapzeYgKKr0JprG8wj2HJb0yp97uaBoPgaQcFPOCgNXij66skoRru/qPmqX5/J5wptC9P/M9nrQcL+CAsvOGo7MFTymNbitijbP62ajOhNgvQilLiIekXtjzbkEF0mGxOho4tu8FPrQWQfmcbVnRIxYliKs/DpP81HZuZydZHq6076MRRGxGCw64klGq7fa7TyV7NBqlhXGlKrUHF4YWMq0Bfe2n9mLoGPrBI9lFQK4KTDTzAOnch6YbLl8bg7+G7M8o8dOvdrDxeQfbWRxIBlA/OQ1LH9NQSRH9XBAtr3kmYFFtTJKSXuqo8ymZWQScxKcgvOkHLIb6TFcbucIfdEpteFzUNlSdhHghjrU3yexmTWOyqFo7/Q+ZqBnbPt74LedK7je+YI59Oi3KCMyfqYEx3giZtjcwTOLGva5+eb/HR6A1Yw70EsQ3iTz9czozs4HfSCQWmbYURz0cp3b7g6+hgMFk6mvUWjLtIOCGKw9sheHgk5OSqO7JL8U/7xSSVPzFGTvq5Ees2p/Bv6ssrd845I8+rISMISRZQSrHsg 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)(83380400001)(2906002)(6666004)(38100700002)(186003)(6512007)(15650500001)(86362001)(316002)(6916009)(54906003)(8676002)(6486002)(2616005)(44832011)(66476007)(66556008)(36756003)(5660300002)(508600001)(6506007)(26005)(8936002)(66946007)(4326008)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?RwirtCmycnbKhbEamXieUJy4nTGSe632H64T1DLhztXruFPOnHRWKXjvxPnt?= =?us-ascii?Q?ehtIsAj2jY9klMGJbv7l59XCvaPJTMssiUUbd3b90pRTlFO/9WHNb8O5FMc4?= =?us-ascii?Q?iVwjNuyS2klYX9zxcA/htsBRg+61hVjZN4J/scIxugWctQOT3gn1MpkTv3hA?= =?us-ascii?Q?HzZ+mhjFWh0BQVwHdzJflcTp02zKeBAPN3L86MHqBVG34wpQIJuVUzmGDVBQ?= =?us-ascii?Q?Pdr0a6101J8V7DTObKjyzvunt0UeXZysIyj4Lz1zxand9Kxf8CL3fnragWA3?= =?us-ascii?Q?nDd84fmb3lJsVL2WdP74CXKoN5PRWvXrKkYsEWVhDpLZO8Aq4g3pbNOdNK3x?= =?us-ascii?Q?ub/oZTmMmwXVa0EeHoHVAysPyzYyyxDBsAgO/JQPeUX+CFKLXJhz6JcOZdG2?= =?us-ascii?Q?GHGsrm3co4k8l42djdrvoTRLNlJTcwAGe6vYBOKXioUi9K55E3wspQXf0un7?= =?us-ascii?Q?7c7ZRYfyVTfHX5NDy0fiYJ0ovQokcsF6YObGvKbh+iDhyu+QTXWz91nGe9iN?= =?us-ascii?Q?RyMxvLtpcE/RwSMfWrXP0LRHijsan2LjkGuNhLNAqYE+lbF71SkWsKKjzZZH?= =?us-ascii?Q?ta8uAQwNulX+3zOblWOBD5Uy0Mi4svqpVf2Lf5CHFyjclIkHGtFNGN8zqxlE?= =?us-ascii?Q?EEYVRjFUd9vmkoDTD8kxOLowZ1+rLkzkb4qKf6JSSAFL2NL0ntTkSNtzjHxH?= =?us-ascii?Q?Aee3nWf3/uqJCLLdeM5wU6D0YL3n5zu6/Dlmh/g6TxA1Y8y9bhPg9nRur65r?= =?us-ascii?Q?GW2y3y/+9pn2kHklN5SFNAC2qhOQoisQ8q5T1WABqKeOqDXfTvGVAIwHKl7G?= =?us-ascii?Q?0r/EJKrg+fJN0Ti48v9d+r53kA/3OxHrY0JHT30M6nnv+0kWu6sPjBmCm/vf?= =?us-ascii?Q?T83Iqk0v2K0R3UPs1UxH0xEqGc8mu+rdWObqbHuGFjS2QBIJIw8lroBVjWDL?= =?us-ascii?Q?1Gr1NCETKPPrKJ0P8MjYUlZBCPX3mSNk0auMfwr7qeWIFDF3u6iMXOsisecU?= =?us-ascii?Q?EGNicxlfivlGu634yb36XjVsiIb2QYjaq+e44LTLvZcLIGLXTH9qiQRi4zRB?= =?us-ascii?Q?BvyUKantBHRCPq+w27+QYBZ0SR416wWLvIjk3s/W8V3fN1C/fW6etK6LKZnW?= =?us-ascii?Q?tFklP2mV/mUYcgil8+jqbAa1I2g6cLvea6DY2eWoE0jajAYSO6a6HkNFKv7J?= =?us-ascii?Q?PIc/uVdnbxzg4VVhS7rdkwAOdzljGaEepr1ZK0e8sSWPBkH4K8IPkZ4sqr0f?= =?us-ascii?Q?1SGjWhYAhsQaB2oY5/VJFLkwKoCOqE0A4MScHA+oUvIR9LSwtOGNKYpe8veO?= =?us-ascii?Q?4ms0l5mRL6V2QuV2aI0djHQsAwiufB+TMFK7LasdkWOPs4uehagN2CAoebzZ?= =?us-ascii?Q?bRnE2TJ6xK+2fhE4p9Sau/FLA2IrbblUhvIObLZY8vdIcLzA88JWDsx0lp0g?= =?us-ascii?Q?GiZcDGFPae6XoIq0+kl3nzOWjSjhieLD443WmLILN+u4mPOAzjt6/Vh11/V/?= =?us-ascii?Q?lkbSrs4YNBl1bMSohiNRj6xSZn9F19aAdML9KEQwx/fGyMfYuEboBzRXIN71?= =?us-ascii?Q?/b+TReMBjexvPA8gcOtSmp5SN4YW31kbNXJ5zRqlBcmZlAeDgkgJiYxHx8/4?= =?us-ascii?Q?yX/ZaClP4c+8vSWFlUNd+BCWoylwZoUe4qghsIqkybAOkw6XepBWxIKbO6Es?= =?us-ascii?Q?iOdKn1mTKShojWxnxUrSLIb/cXBCLaCWAEjzDJzX/VrfdkEWAJ3YI0sDdXn2?= =?us-ascii?Q?gI31C4xL3QlzmwKYJ502tEJUz+6pGmM=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: eb47c1fa-c4e9-475b-55f0-08da3971372b X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2022 08:26:05.3989 (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: zjUkpJcr4mk4XPBkfzDiHe/HPOSFBbnju20WW1mz2lBfR2o0f8j0zvvkyourT9/nNl/Fwght1in1rMU+o6CdmQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6652 Content-Type: text/plain; charset="utf-8" This patch verifies another member of struct mptcp_sock, ca_name. Add a new function get_msk_ca_name() to read the sysctl tcp_congestion_control and verify it in verify_msk(). v3: Access the sysctl through the filesystem to avoid compatibility issues with the busybox sysctl command. v4: use ASSERT_* instead of CHECK_FAIL (Andrii) Acked-by: Mat Martineau Acked-by: Matthieu Baerts Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/bpf_tcp_helpers.h | 5 +++ .../testing/selftests/bpf/prog_tests/mptcp.c | 31 +++++++++++++++++++ .../testing/selftests/bpf/progs/mptcp_sock.c | 4 +++ 3 files changed, 40 insertions(+) diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index 422491872619..c38c66d5c1e6 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 { @@ -230,6 +234,7 @@ struct mptcp_sock { struct inet_connection_sock sk; =20 __u32 token; + char ca_name[TCP_CA_NAME_MAX]; } __attribute__((preserve_access_index)); =20 #endif diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 138bcc80ab9e..17ad1cb07339 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -7,10 +7,15 @@ #include "network_helpers.h" #include "mptcp_sock.skel.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 int verify_tsk(int map_fd, int client_fd) @@ -31,14 +36,37 @@ static int verify_tsk(int map_fd, int client_fd) return err; } =20 +void get_msk_ca_name(char ca_name[]) +{ + size_t len; + int fd; + + fd =3D open("/proc/sys/net/ipv4/tcp_congestion_control", O_RDONLY); + if (!ASSERT_GE(fd, 0, "failed to open tcp_congestion_control")) + return; + + len =3D read(fd, ca_name, TCP_CA_NAME_MAX); + if (!ASSERT_GT(len, 0, "failed to read ca_name")) + goto err; + + if (len > 0 && ca_name[len - 1] =3D=3D '\n') + ca_name[len - 1] =3D '\0'; + +err: + close(fd); +} + static int verify_msk(int map_fd, int client_fd, __u32 token) { + char ca_name[TCP_CA_NAME_MAX]; int err, cfd =3D client_fd; struct mptcp_storage val; =20 if (!ASSERT_GT(token, 0, "invalid token")) return -1; =20 + get_msk_ca_name(ca_name); + err =3D bpf_map_lookup_elem(map_fd, &cfd, &val); if (!ASSERT_OK(err, "bpf_map_lookup_elem")) return err; @@ -52,6 +80,9 @@ static int verify_msk(int map_fd, int client_fd, __u32 to= ken) if (!ASSERT_EQ(val.token, token, "unexpected token")) err++; =20 + if (!ASSERT_STRNEQ(val.ca_name, ca_name, TCP_CA_NAME_MAX, "unexpected ca_= name")) + err++; + return err; } =20 diff --git a/tools/testing/selftests/bpf/progs/mptcp_sock.c b/tools/testing= /selftests/bpf/progs/mptcp_sock.c index f038b0e699a2..6a78e7b754a8 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_sock.c +++ b/tools/testing/selftests/bpf/progs/mptcp_sock.c @@ -2,6 +2,7 @@ /* Copyright (c) 2020, Tessares SA. */ /* Copyright (c) 2022, SUSE. */ =20 +#include #include #include #include "bpf_tcp_helpers.h" @@ -13,6 +14,7 @@ struct mptcp_storage { __u32 invoked; __u32 is_mptcp; __u32 token; + char ca_name[TCP_CA_NAME_MAX]; }; =20 struct { @@ -51,6 +53,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) @@ -62,6 +65,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 is_mptcp; --=20 2.34.1 From nobody Thu Sep 18 06:42:57 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:ad0f:0:b0:4cb:58ce:be2f with SMTP id s15csp6992pih; Thu, 19 May 2022 01:26:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwYFl9E+0+CawP8NrbQkZ+uQeXs1OW1U5BJgb+7OWyQ6/hF2HqIhFZaz8DlWmQCDmE0hZll X-Received: by 2002:a05:6808:13cd:b0:328:a194:1d15 with SMTP id d13-20020a05680813cd00b00328a1941d15mr1768602oiw.186.1652948782570; Thu, 19 May 2022 01:26:22 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [2604:1380:4040:4f00::1]) by mx.google.com with ESMTPS id lb10-20020a056871414a00b000f1b0f9ce00si3701259oab.172.2022.05.19.01.26.22 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 19 May 2022 01:26:22 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5387-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) client-ip=2604:1380:4040:4f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=GcIVXbG0; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5387-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 2604:1380:4040:4f00::1 as permitted sender) smtp.mailfrom="mptcp+bounces-5387-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 da.mirrors.kernel.org (Postfix) with ESMTPS id 5E62B2E09CE for ; Thu, 19 May 2022 08:26:22 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B287823C9; Thu, 19 May 2022 08:26:20 +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 F16827A for ; Thu, 19 May 2022 08:26:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652948777; 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=8bplI9rX0E7VQWmxEeoit1jc5FHz4R0qMqAETsk7/VM=; b=GcIVXbG0mqZLvVpKmXwJghS3ahvb5ceuNfJd1apkhJCziokxprPRH5hjTw2rauYvE42nk+ d1F3mc/leLiqAvqEe6aThGV3Yjftbpl/i/IpV7QCULeCWI5STq7pz+JrbYWs2na94cydZL CddfcQctHOPHlrxmq/CoZe3GBq8XCmM= Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04lp2057.outbound.protection.outlook.com [104.47.13.57]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-24-OugJWbMhMAmT-U2Z54LJQA-1; Thu, 19 May 2022 10:26:16 +0200 X-MC-Unique: OugJWbMhMAmT-U2Z54LJQA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bH7ovAthoBbx1EZeKpfOTTDAloK9c6RxoGJrzHyUsf/3EUgL5kjiOz7/57MuIMLmn5LhbTwqoAkQzxh0Hfn62GRoqz41gpq81lDAio8ZLRIN+FRvf2IWkkTbyo7jxpq33UnMTIaQGak4uid5ajlWufUIs0U7kvH5MMHp9OaAVaPs8vARY5a6ApQ9Zzr87P9s2uFdmGL6fSol2l6S8UGafZzenlSoeHrJhODWICqVo8B1Yc0C99L5i206TdEgY16/8YHOxAnWcCpL5L+JUB1Zeadncrt1VaKwH5A2B7wxw8hhq3u7GIZq6RgbB5T+6W3OBpTCWu/3yTEJUGrISFNMKw== 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=kldL7lnlLvgd3DBSbMJOQiL5fToXVqL9yekeasqx0t0=; b=UPAGHQnafHucNndTT8dPNTyfWnxig6xExS4HrWyvkS5RvQ2wotOxXpjn08HfeqXhlYbqbAz0RQh/Dt+6EsHcBbQA8u3UEnjGPxKE8M8KOwoVISpqYcZRtXXaTN6X/Si0I745JuxGSUmwX7wALg2/CbzIrHDq+eSwTm4DsaURyu7tM+QMiYTPusBzRkr5CCSPzNR24Vq7K9VWd06+kbnfTZkSXCGuK8HekSW3X94OuFi9d3in8/AuV46HKcu/nKzXCxeUG1A0T/ug1AYFQSEUR2Kd5E4rIP+0K2/QDE+QGaKcGzLiah2x98jH+QgLT7oDMgFUXDI4hiTid2DHkKzQHQ== 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 VE1PR04MB6527.eurprd04.prod.outlook.com (2603:10a6:803:11f::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.16; Thu, 19 May 2022 08:26:13 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Thu, 19 May 2022 08:26:13 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang , Mat Martineau , Matthieu Baerts Subject: [PATCH mptcp-next v2 7/7] selftests/bpf: verify first of struct mptcp_sock Date: Thu, 19 May 2022 16:25:18 +0800 Message-ID: <214b689e36df96b9c1ee6bdac0209debb5ced855.1652948238.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR06CA0014.apcprd06.prod.outlook.com (2603:1096:202:2e::26) 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: 74acd848-6327-4ea0-8c90-08da39713c0c X-MS-TrafficTypeDiagnostic: VE1PR04MB6527: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: D3fH+p/aMF9Z2U2/j6kteFvoBjNhuve1k25cewXGYqDFe6/ztqdzFUdoVbG2uZaRVCGU8awjXR6o28dzMouqSf1sNImm6zqhIbfqb9YS/wujG1SLVCaUNPavMcTzbk70J8Zg5vSsWCu2wSjGIv8KXEnOCRU2vEm3amXz2GHMoXJx9pbJ5xArLUtgeeBLMclT3QBhhr0WIqk+w7voXoS/6IJwLWrVgSHVTTEXTcTLKnt3yD4tfPXr44T7O3ij8VUTAoxqauLW4jJwPd+Df0RRdHIvcd7znO0pyOmMsVsJC5zXy1EG3q4TN0T/ticqqRH9Xkkz3NCtAleE9YoSaHojb7XQ9mV/E86NSuDtSSH4xSyXyOAvs8Ps9wi4p0RGmHtPav3I84g8p1IO8/GuHRgodgfa/jWwPBOc5rfKxRqsFUe/NTqk7hPz7dn+lHQsIdqBBJMOfCAbOuz4BD1PDDKODc4N25MhNI3UALyUigc2O4SqH01YWYWh1bR+FzUt1XBaqUycR7vGQMvSqSXzL4NCFFNPrG/LBeT8U5h/izFKZ3sDOUue+tB78zUwulr5XyrlnQZ0r0GC9InA1VDxv68WfhYLcGo2hSSPq5qu4pk91NvSCcMSEvjpaTPUq/BmsPfTGy2og0MZi7WEDfcphd1Oofin+YtcqJ9f5jY00VU6KI9Owmjy00L+CGFIuWATaZA/BM2mSSUYBYnRK5geoPdl9w== 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)(83380400001)(36756003)(186003)(2616005)(44832011)(15650500001)(2906002)(6512007)(6916009)(6506007)(316002)(54906003)(26005)(5660300002)(66946007)(8936002)(66556008)(8676002)(4326008)(38100700002)(6486002)(86362001)(508600001)(66476007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?bEreOyokoFTqdhVrUYUdkX8QdtSUe7quUbA8DEUQae1zg87+o7v+lRj4N0j+?= =?us-ascii?Q?j7mqpK8A28VoIBLh+tgIxf/qstGSZ30+emEh2MVlNzaN0H60am3FPHpjTKdO?= =?us-ascii?Q?06BhOSsQ5azVTeuQeEOz/utl4FOjqQZveUiXV6LN+Lx6v84a6ly+6TZ4DU5s?= =?us-ascii?Q?7x5LmUZLqbasxBhsWTzgJfIiXDJL0bOIP1YK+I+u41VoNcAQB9hq1U4NKMXq?= =?us-ascii?Q?GZJlGLjCvFO239lo1YL0hhc+N+0WCzsDYnWiLwXJQqKlj83ZGxkiOMDIE0KJ?= =?us-ascii?Q?lfZHTzmwUPc3Jk/VliGcdIxlikGR8OFT6PM3nmYSmuQ89hXo+19SHgoHIYwL?= =?us-ascii?Q?lNY9RdPMfbdqu5mtkyLHS9pSPOSSx9i2YeH7TibpT4cPklGbWKgHIRcn5mo6?= =?us-ascii?Q?pPiaHOoWy/0IdnuOwqO5eXku7AzCiqrWZtqTHyzi2zIPH81oKv6rD3XCorzI?= =?us-ascii?Q?BI4pTBjIBTalqv0RzvmrEQu3WwocujC9b3vCZ3vU6UO1ITV5UfTLVmLoCut6?= =?us-ascii?Q?kzk08RLi765L/O7L1twQaS1HbIojaZqyLys5CLrz+pkLAuXm+kyCHrpauUnI?= =?us-ascii?Q?Ah/d+6Ovg6e0xv9212NzcRvnhnpofYg0G/FWsBQOGpMtLBdk/Bgjp+4AWCeb?= =?us-ascii?Q?3OOC6NunGwkt+51c1Fk8a22eut8pwZYddIbkwxCRzjN52ZADAkUkfpaBUVQK?= =?us-ascii?Q?ooWJv/CdI2EXn6GHw5y6hmOSPE4yRhc/MJoG6nAKLBklD9r0FYPMZAXQPr0S?= =?us-ascii?Q?GRsTkuSsyV39HXw8FXGRZsYhfhPCnZK4+ABgkn/FA7RPSwqGEVzvOEIJlxgE?= =?us-ascii?Q?trlJvRX4ATaHzjBvYn8D6mDw1ylhhfr4lj73eeCyCevNXQ9JgSYpLCgNeVT2?= =?us-ascii?Q?AyUIKoYgsGv3hW6p0L8z2ZSjydMrslJqR3RXqONCh5mHLMgQXIXPuDFkjQ6b?= =?us-ascii?Q?dNb/Q3a+mwP0hph6H2FygXNSqGetRLyW8aPMqSBFShGAlfhX30HHLFV5JvUA?= =?us-ascii?Q?0ePFDEoSjZ4VuWlgn4ND8gzv3REoXZQqeCjE1WX+k7Dz7jWhxM+VOfpH2qNx?= =?us-ascii?Q?vlhN/fgN9ooNdOJGYj5rS6MSeyxvnnnu7gYwMRDsSVVejGpYVJMuNKF3NWbd?= =?us-ascii?Q?2JXaIQHLhZ1oXe+pmnbMpclH/Ht9GvRB2kZt8HLrDBwwA0wFhC0s0lTtVOJu?= =?us-ascii?Q?1bf41NGXQn4EAAJj/TzoWM4nzBAubnKzrkARs9vdODwfzvR4GIqam3zcNPOR?= =?us-ascii?Q?SXdbT0Ugb8GcaFiGynAsqaiH9ZwFAf7lbi/GD1DE0icsJ3WahBxH7Ef7+qIP?= =?us-ascii?Q?VD/0VMtHmlcec0NS/IVXnts1eCrJaSjg209M19ChgNBBW5oXx0WdrrhMFIc7?= =?us-ascii?Q?Vto6aL6Jz77dGXZ1yYluTedOd4Xi5AZHM185TXr7c8fE1d2RCSeehHuz97D2?= =?us-ascii?Q?KxvE75cvZouFpN/5sfLCfU0k5g3mQffi+QFXRzth+D4EaCYXjmbpzXydE22O?= =?us-ascii?Q?ChPMpSfg9dfffKo5qgmW7LqVjjP9QSC7KK7BLORmlkxch8pXHjd1wGGi1LcI?= =?us-ascii?Q?PIEsvS+gDNDMVQVEXeAYYyfl9x/N0sF62D461ltm9u36AhhRJnrmS34pWnaV?= =?us-ascii?Q?YS10spdKkHwxAqexcnx7BKf4CN4eWjQhCExMv70cmLXjCwNYdNxIt5qrofMZ?= =?us-ascii?Q?G5oDTw1NLfiporvoMO6esszryu42WZNM6DKnZzNzfp2E7M3n+Vs3rNokgYbE?= =?us-ascii?Q?FSqa6cvO8RCxEXJTqEFCzzdcrVzWjAs=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 74acd848-6327-4ea0-8c90-08da39713c0c X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2022 08:26:13.0701 (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: a0oUxxLYcqTQs64T9Jve1kyOEaFj5cc5xv2XvSE5FfWGZwH35zA5VIOYJaMUFKZ/87DS2ceN33mn5AQTtGzkSg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR04MB6527 Content-Type: text/plain; charset="utf-8" This patch verifies the 'first' struct member of struct mptcp_sock, which points to the first subflow of msk. Save 'sk' in mptcp_storage, and verify it with 'first' in verify_msk(). v5: - Use ASSERT_EQ. Acked-by: Mat Martineau Acked-by: Matthieu Baerts Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/bpf_tcp_helpers.h | 1 + tools/testing/selftests/bpf/prog_tests/mptcp.c | 5 +++++ tools/testing/selftests/bpf/progs/mptcp_sock.c | 5 +++++ 3 files changed, 11 insertions(+) diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/= selftests/bpf/bpf_tcp_helpers.h index c38c66d5c1e6..82a7c9de95f9 100644 --- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h +++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h @@ -234,6 +234,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 17ad1cb07339..257a8668ad40 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -14,7 +14,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 @@ -80,6 +82,9 @@ static int verify_msk(int map_fd, int client_fd, __u32 to= ken) if (!ASSERT_EQ(val.token, token, "unexpected token")) err++; =20 + if (!ASSERT_EQ(val.first, val.sk, "unexpected first")) + err++; + if (!ASSERT_STRNEQ(val.ca_name, ca_name, TCP_CA_NAME_MAX, "unexpected ca_= name")) err++; =20 diff --git a/tools/testing/selftests/bpf/progs/mptcp_sock.c b/tools/testing= /selftests/bpf/progs/mptcp_sock.c index 6a78e7b754a8..f638cb876424 100644 --- a/tools/testing/selftests/bpf/progs/mptcp_sock.c +++ b/tools/testing/selftests/bpf/progs/mptcp_sock.c @@ -13,7 +13,9 @@ __u32 token =3D 0; struct mptcp_storage { __u32 invoked; __u32 is_mptcp; + struct sock *sk; __u32 token; + struct sock *first; char ca_name[TCP_CA_NAME_MAX]; }; =20 @@ -54,6 +56,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) @@ -66,9 +69,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 is_mptcp; + storage->sk =3D (struct sock *)sk; =20 return 1; } --=20 2.34.1 From nobody Thu Sep 18 06:42:57 2025 Delivered-To: wpasupplicant.patchew@gmail.com Received: by 2002:ac4:ad0f:0:b0:4cb:58ce:be2f with SMTP id s15csp7020pih; Thu, 19 May 2022 01:26:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyLSzmSeRNSi8gtuyja6AFhIeefMfdeVPCM6CEdkIG84BCrvMlLezY4HlM/t3tP7Ll30ut4 X-Received: by 2002:a05:6808:220f:b0:329:9d5:7d53 with SMTP id bd15-20020a056808220f00b0032909d57d53mr2165611oib.95.1652948787822; Thu, 19 May 2022 01:26:27 -0700 (PDT) Return-Path: Received: from da.mirrors.kernel.org (da.mirrors.kernel.org. [139.178.84.19]) by mx.google.com with ESMTPS id f5-20020a05680814c500b003264522df1bsi5507506oiw.163.2022.05.19.01.26.27 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 19 May 2022 01:26:27 -0700 (PDT) Received-SPF: pass (google.com: domain of mptcp+bounces-5388-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) client-ip=139.178.84.19; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=mimecast20200619 header.b=iMaEjbK0; arc=fail (body hash mismatch); spf=pass (google.com: domain of mptcp+bounces-5388-wpasupplicant.patchew=gmail.com@lists.linux.dev designates 139.178.84.19 as permitted sender) smtp.mailfrom="mptcp+bounces-5388-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 da.mirrors.kernel.org (Postfix) with ESMTPS id 9613F2E09DB for ; Thu, 19 May 2022 08:26:27 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 429C523C9; Thu, 19 May 2022 08:26:26 +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 A70A57A for ; Thu, 19 May 2022 08:26:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=mimecast20200619; t=1652948783; 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=0VmazoG2iraY3SpxCd7RljfDFFcxAK23xincRTiSgYk=; b=iMaEjbK0NInvgoe31uF3JOKr4H1sqV4V52Kb/gJw0m41pRiGIcbFeG5vS5MLmUCAxjyr2W XPXyD5Rz1B/qOnefwc512RColpA7Yq15pxTaOYt2rhp+tQP26L8JpXl9YHGQXYaEu5jEdy IO9DlDbLH8a9uKIgS+03iYtHLY6VeRc= Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04lp2057.outbound.protection.outlook.com [104.47.13.57]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id de-mta-6-vnr1KJI8MU6CQGnhsnKjnA-1; Thu, 19 May 2022 10:26:22 +0200 X-MC-Unique: vnr1KJI8MU6CQGnhsnKjnA-1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a8w64muXorBrb1CJ3rjwFQj6v+DsG9wzpas8DvW72gzyBoLuRhE05l/JLuXVghoCqB8+HE4BDrOwCDV18cEOEG31HsydWmrDOcR08nXuDiWKvloqjzuCEuGf+UQKpfLUYB7YAF2+ivEbRPKGWaU7+AaZMHee0UYr2zTiBt1N8Nuog1j17EBDCmyRC5MaSYJzyzQ2WF/1zDRoxZzBsvWMPtDNye/iFFHqgCBnpOn+MqvodXlsyVpNG/D0IiGoct9q1TIF2wOMCpGkmxXmgzMk+yFTQZK4QRtvyNkFNrqGMEYUTt8lhYMQvsLn3dx5nzNYkdDXjZw3alBZFBEhzYuluA== 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=bBP/RPZgMVDtMEnPasbzS/wXF2kJ5DNDGX/LAaLhiV4=; b=RYIqkV1JvG3JA1nc95w7VwFJxi29GV/S07IwyGQbvxRx1eJrt65Xh1kFQxz9LWUo/AbBbKkda+VdHm4pTl8wOyDhOO3hHlmCiNKRAMIQrYYVFZ1sTrnhfhIqEknrXxRq5ki3eFrBYf1zNVFoHWcRTyGFeu+xT0ydFEVyx0hdMDiO79vsXv48SAMFZoc7f2HOx+p4wpCFU6iZbUSgmxNj0FhV6CiHFB9CRffM8OZA5AyFxv+i/rhWQnUwzXze9aaY4FJ2T2RYPLfcr7nZBGjzg+s2W9BZorOBlhkn4Vy+jAJmtzi6Y+IqyHwj/HHFpp6eVpmtKpekLgkIre7EFUvVhA== 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 VE1PR04MB6527.eurprd04.prod.outlook.com (2603:10a6:803:11f::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.16; Thu, 19 May 2022 08:26:21 +0000 Received: from HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6]) by HE1PR0402MB3497.eurprd04.prod.outlook.com ([fe80::5557:2d1:efed:96a6%7]) with mapi id 15.20.5250.018; Thu, 19 May 2022 08:26:20 +0000 From: Geliang Tang To: mptcp@lists.linux.dev CC: Geliang Tang Subject: [PATCH mptcp-next v2] Squash to "selftests/bpf: add bpf_first test" Date: Thu, 19 May 2022 16:25:19 +0800 Message-ID: <5bf7f96f2668225cbf594c1c601b1b258e5f82cf.1652948256.git.geliang.tang@suse.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: HK2PR0401CA0016.apcprd04.prod.outlook.com (2603:1096:202:2::26) 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: afd6faa2-3ce6-4daa-8f83-08da397140d3 X-MS-TrafficTypeDiagnostic: VE1PR04MB6527: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: Tqm20wqs3lxEhVtd4YNRE5tNWHdImDKqjyYPR+ku0qsS3YuchqOXQtEHBWKy/V9hsD5XqayZol1YFPD6oF/TbX7ez+ZsvD8/O8qqLOvELe+21oicQdKwPG909GidOajszLAJbTLLa4FrXERI5B+ZcLmb16yWvuXqKzJMKUHXEw3CNVG0FfLDNCSLqoxGcMMBm6SIL4LX+RXyj04W883Pb2NmhEMnKsm5W/AY+VQmSiPJorYcYHj0wRDvQ7wHD0C88Hed4XDT2picmxPzhuTFy5Ck798WXbU4wRhFP5tfYRh7wWhPVaWcsafeP0aJK8KOiB9170tFmcrK/YrkRE1Jpna9VJGQkpbnYXTfQXb1l5Hs9uTuhLeH2aijcYrVPl2YN9cW/6yQWfSK0DWwzYh1ZybxTBMlkDuQ2Iiwd9broanZMscfUT+2KDBUp7iLVt74fcxa/PsOoQsKdGNvOKG+O+ieFFt+2TckXyugrO2IHR6st1489zR4F+d0H23OafkUVvm2z+qPk025iXUSCXNs8Dw/B2hYesgZLZT3NKt7oywQQBRC+duTWyrqz8fPV2jSoraSJYAjci8JzacoiO/fJ6PkHpD8tTOzkU+buXzL0T09xu5IfT5/dcDTu/jKlRxeBC84S1st7+HDhnYQVcpC2w2KZK5YYgkscdBsidIE24YeXXnJEtWr1umo+hJTdBzC 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)(83380400001)(36756003)(186003)(107886003)(2616005)(44832011)(2906002)(6512007)(6916009)(6506007)(316002)(26005)(4744005)(5660300002)(66946007)(8936002)(66556008)(8676002)(4326008)(38100700002)(6486002)(86362001)(508600001)(66476007)(13296009);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?UXo7u2YeYAJ8ejUp8I+lyN1LDvkUZqnq9eZ2hvZL+89sJJzwvRV35Mif8G8X?= =?us-ascii?Q?e78vJUMFRTulU4xOwGrAWHy5y8NohBpACUkJkFMAkiypBmdrX34pg9ymAgJy?= =?us-ascii?Q?OlMyWqC0x9vGyFhR/sOxbxEunqgiJDlnvTDq9ZKQi3tbkQv+mRbmr8HhfZfH?= =?us-ascii?Q?h4N5aUo6AoOljb0RTB3vpgd1WPtBB081LZ8kGzGiMD/RgZy4SmaH6B6g6zSe?= =?us-ascii?Q?L5H8IrCh2K6gBcPJPKq72/OAqnJDuOZE3WBoW07dr7ykEszOPJcOLFzPWCaa?= =?us-ascii?Q?zcwtewVQw8Nqg5YPGBtTYujszSrDox2BCD2o76cikdefPu+QDobyhG+fG0se?= =?us-ascii?Q?gE7HKMDr49OSvJj5N1xqRRBzafVMrMN1EsA31j4g43Tihb1t020Vd0LwruFR?= =?us-ascii?Q?Yq4Un2Yc0Rbg2lPCpa85nBVeBpPzXBjDNKO3xUvE6WAIgO308FiJ/X/gixoc?= =?us-ascii?Q?+sDNsfPnDygSpFh1zXHqR6PmVX1OdMuo2z6DBpkw20E3as7gpaexxxw5pPTG?= =?us-ascii?Q?YjY+5o91YOTqfqnqzp4VxkDz+WOHqFEQfMhRFNxCyapC1gUepfJLdVuw/aZD?= =?us-ascii?Q?LrLtIOxjr0LpMG1dBSjFfqgY/lSZIFw2IJWEZD1C6/x+stey4K1J0+s9C/jU?= =?us-ascii?Q?Y9OV3KbFhqVnGAqvoYSc9+F9qlA9Le4yBMgMa8opH5Y3s/yKr73kXjsRRpZd?= =?us-ascii?Q?fhyeKwdT3wr92dxzjEPXcSiwrm83Rize9D3Dcwshu/WkFRIY5BDWGEOagp7e?= =?us-ascii?Q?TaDx8Q//GR2+fS59lCNecTIEFjQtqU2uETtaA73N8+4hdEddtEMM55HTzPuL?= =?us-ascii?Q?N3s+Zysqe/SU8VFL0F6TZQsK/2vpfWKGWRNpTYNJnz7vXOfdnSLvN1x12/dq?= =?us-ascii?Q?K8usar2tkkYQZqUF1MxPgbfYevtrp2Gkf2nL0DVNahKnBWaddKMxrx+tKOxx?= =?us-ascii?Q?xZ6ao5yastr23udqxZVtYvzveRasQrFsxXyiaLuR244uvRKuxZxaLCT+M4j5?= =?us-ascii?Q?OvvlzENr1aLFyKB+v58qUtio9pgroI+efZ7FPYaSccUOz+FfJ3mikv9oixzv?= =?us-ascii?Q?BxbI+1Y3vwn41BlG4O6WLUgef1XEYcLi2v93GkRjn4q4n6rnBbiPUjSoXbkA?= =?us-ascii?Q?tbXBYdwi5A/0Md4gFqYtZ2BoYNRaYSLWiycAaKWTwg/NPihTej5Vo31J6Q1i?= =?us-ascii?Q?yRcIxBtEGzhW5Gp8d/FYrvN6ifoRvyfX6W8azqIg8yNPTS2WB98DbuEQlGWP?= =?us-ascii?Q?Bok/o4hvHYjVKFN8JdPHKqmvCXWVpLSxztDr4mHNfiJ6d0DbW/cHPFnZwxHP?= =?us-ascii?Q?a4Hoj9MSPPTqEWPgRnbsJPsvCpgNmf8lSuc9M1SSAJ69FhVqJT38gcH1xYp5?= =?us-ascii?Q?b1tFaBmazKJhTzG+DA1Z57HST+VFHKWwtlQBlqxDzS9uyZC/odDJ+PP5zZsF?= =?us-ascii?Q?pO2v4VBpmNWe3948qt3nXlFX9sBtWw9GdK96OgFlWZOuDHunNPBc7p+Ts8mO?= =?us-ascii?Q?C6xq13esszyrA4p9w+IPqbBvb3cZYhtzNw6rPCJ+jh4Zhr6YOm+/fEe2F0kL?= =?us-ascii?Q?jFHWqKQXo0deiCEU2lF1tn3mPhYE77+1EWS6+eRi7qoFQjaklv/jrBb3zZqU?= =?us-ascii?Q?eeyvF0mcPFxRBtW1ncBayzWDSpaOBbSpfvzrkQ2LcVv+jhaqj9/Sah62HrB8?= =?us-ascii?Q?DH6W+4TITuKQevJSuEy0jaKeQi02IQ7H2JJfyBkqbD/mRW3m2rmKhppQ5yjw?= =?us-ascii?Q?b2asJJF8Vjuh8UZu27YcpQS8EitgL6k=3D?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: afd6faa2-3ce6-4daa-8f83-08da397140d3 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0402MB3497.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 May 2022 08:26:20.8664 (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: RTbQWbnysUF4YuZPPzxdZ4SqHXA3CDynNqZJlX3+JSyIQekz/A0cD7rDrzF1fnepOJECKJ/rV9pG9c8DFQhL4A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR04MB6527 Content-Type: text/plain; charset="utf-8" Drop connect_to_mptcp_fd, use connect_to_fd instead. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/prog_tests/mptcp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing= /selftests/bpf/prog_tests/mptcp.c index 5a689e758ed0..9d37c509d3ce 100644 --- a/tools/testing/selftests/bpf/prog_tests/mptcp.c +++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c @@ -268,7 +268,7 @@ static void test_first(void) =20 system("sysctl -qw net.mptcp.scheduler=3Dbpf_first"); server_fd =3D start_mptcp_server(AF_INET, NULL, 0, 0); - client_fd =3D connect_to_mptcp_fd(server_fd, 0); + client_fd =3D connect_to_fd(server_fd, 0); =20 send_data(server_fd, client_fd); =20 --=20 2.34.1