From patchwork Thu Apr 18 08:09:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 13634319 X-Patchwork-Delegate: bpf@iogearbox.net Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 618667C0A9; Thu, 18 Apr 2024 08:09:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713427769; cv=none; b=ltCXdNPjhorTDuJo9Xl1iqCgJqcU7FgIlQuZhgy4awD3ughhQPocT1yHHePuURFbCH/Iig2wrXs1Api1+0Cj2HrIQ6bKALcj8Y1JvWQOyPepj/EJZm/+GRQVmEG4FWFN/UnOe0v2E5jid58tzRViDGP0S9e/rjPjVRssiEJxsQw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713427769; c=relaxed/simple; bh=WPm2h8eyE3bVx1N5ABzgZr9oeKDMOQvnoUrj86zfFTc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=oI6C0MV/CVNIpGvdjvaad6BT3HtIAZWmUl5tqrhD1Dx3OZZ6pdC8omZwMtF47UjO0eo2yMnE8rN2DfdmoGwqW0kFOHyOHFpSXb4cUjOzwKABNEqLhAlz1pZ3PHyl/KUcfnecWqx6myoQHBioQGwKdp+AhF638EdcBkwQWDNAjy4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=u9/GJ7IO; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="u9/GJ7IO" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 205C6C32782; Thu, 18 Apr 2024 08:09:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1713427769; bh=WPm2h8eyE3bVx1N5ABzgZr9oeKDMOQvnoUrj86zfFTc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=u9/GJ7IO/M2+V1XjDEXrpkeOI4F+QEKIqutnTgE0p0wtN7hcW4gO+RmE6RoaTmWYr tNzudWXSaP6CHU6UhzBQSj9+04uM2cpx0YpI1hXfAq5rVb6s7MWMAd1PmbS7ofCSIo vQuFAeZdEUYND8jhdsYsbwZj0B9XWzbh9SGE+6GKiVchrp8e6vkQEfiMok8I/hdaSr P2HzsEbxXpgmBhCQ8Ibo87K8uynbOUdbGZa9BUzWNP18TW42VFUC/2aXIdYaM4trRF GdKLvlWhFmAeKYAFSi9vD9CJpwBrNXG8AIffrwaE4oH1Y+vYotBkiTqaerNZOuJ/J1 a/nV4+W17vnnQ== From: Geliang Tang To: Andrii Nakryiko , Eduard Zingerman , Mykola Lysenko , Alexei Starovoitov , Daniel Borkmann , Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Shuah Khan Cc: Geliang Tang , bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, Geliang Tang Subject: [PATCH bpf-next v5 1/6] selftests/bpf: Add start_server_addr helper Date: Thu, 18 Apr 2024 16:09:07 +0800 Message-Id: <2f01d48fa026467926738debe554ac452c19b86f.1713427236.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: bpf@iogearbox.net From: Geliang Tang In order to pair up with connect_to_addr(), this patch adds a new helper start_server_addr(), which is a wrapper of __start_server(). It accepts an argument 'addr' of 'struct sockaddr_storage' type instead of a string type argument like start_server(), and a network_helper_opts argument as the last one. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/network_helpers.c | 14 ++++++++++++-- tools/testing/selftests/bpf/network_helpers.h | 2 ++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/bpf/network_helpers.c b/tools/testing/selftests/bpf/network_helpers.c index dc1fd7af9c7a..28fe8367451b 100644 --- a/tools/testing/selftests/bpf/network_helpers.c +++ b/tools/testing/selftests/bpf/network_helpers.c @@ -52,6 +52,8 @@ struct ipv6_packet pkt_v6 = { .tcp.doff = 5, }; +static const struct network_helper_opts default_opts; + int settimeo(int fd, int timeout_ms) { struct timeval timeout = { .tv_sec = 3 }; @@ -185,6 +187,16 @@ int *start_reuseport_server(int family, int type, const char *addr_str, return NULL; } +int start_server_addr(int type, const struct sockaddr_storage *addr, socklen_t len, + const struct network_helper_opts *opts) +{ + if (!opts) + opts = &default_opts; + + return __start_server(type, 0, (struct sockaddr *)addr, len, + opts->timeout_ms, 0); +} + void free_fds(int *fds, unsigned int nr_close_fds) { if (fds) { @@ -278,8 +290,6 @@ int connect_to_addr(const struct sockaddr_storage *addr, socklen_t addrlen, int return -1; } -static const struct network_helper_opts default_opts; - int connect_to_fd_opts(int server_fd, const struct network_helper_opts *opts) { struct sockaddr_storage addr; diff --git a/tools/testing/selftests/bpf/network_helpers.h b/tools/testing/selftests/bpf/network_helpers.h index 70f4e4c92733..414ea50bb3fc 100644 --- a/tools/testing/selftests/bpf/network_helpers.h +++ b/tools/testing/selftests/bpf/network_helpers.h @@ -53,6 +53,8 @@ int start_mptcp_server(int family, const char *addr, __u16 port, int *start_reuseport_server(int family, int type, const char *addr_str, __u16 port, int timeout_ms, unsigned int nr_listens); +int start_server_addr(int type, const struct sockaddr_storage *addr, socklen_t len, + const struct network_helper_opts *opts); void free_fds(int *fds, unsigned int nr_close_fds); int connect_to_addr(const struct sockaddr_storage *addr, socklen_t len, int type); int connect_to_fd(int server_fd, int timeout_ms); From patchwork Thu Apr 18 08:09:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 13634320 X-Patchwork-Delegate: bpf@iogearbox.net Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C30182C68C; Thu, 18 Apr 2024 08:09:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713427775; cv=none; b=hjeNFKk3oRTrTVKr6RgHZUQWVMx1gSooeYFOHY90L8ltyMPBZzV+Qz0PCFQluGtGSJpwCcHbSHxXUUANHGiCDz9QtVz8JQSbAOoczq911dT/EPXgMArfz38+ty/BZCQNMzBqu7gfONKKwwpSbarW6AAwwAVffShF93i1+wLg4Ew= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713427775; c=relaxed/simple; bh=B0mLqYkHNsV+/yp9TZfhJRF6UHDk7gt/NZKMQV+0ozM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=SE/WPzkDCXnaA4kZBZ8e+G5xDal/7ZBe7AXbXkSQN7G0LxQn/AY05P/qw20QMhF0Tex7jetBCEHw+6N0S/L+Mb5EB8rRQaes+/f1Vf2V5dOh/t7rUvlNfOrjIiOfTQHFCChAYBlBltyIrZ7x/M9NVl1NRvauDQ5LozX7QQ2o8Y0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=epGTGI8E; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="epGTGI8E" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8F48DC113CE; Thu, 18 Apr 2024 08:09:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1713427775; bh=B0mLqYkHNsV+/yp9TZfhJRF6UHDk7gt/NZKMQV+0ozM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=epGTGI8EDgRkno3B+Nzntw+eNPcNItf6yxk6ROI0X0sdl2SD8fSWNgG2Hq8oO3jHs TxU9gyWyqGb0LLjBU7KztLHYZDkYqi4Ytn7IPEdO0e6uP2jt9+x6Obyl/50c6+2+bV kPXNMuQAzgFsSZTTGdEdml9rZ8hkWKLI5v8PWGPAnwPHqbDMFWTAjYUctPAxvY2Qq8 r/AQVDdRhCc9Ev09LRxiNas3fis1wnOL7NtLM8/cSoU6+0Gv/CGE++CqRRJNoIBh4a ZxB4jXDAyc4bPN0Q0bfSKyWYJuih83XYhT14paNHa0DjvCwiQOubTC2sn+hmW5Sr71 1x/HsWpPligAw== From: Geliang Tang To: Andrii Nakryiko , Eduard Zingerman , Mykola Lysenko , Alexei Starovoitov , Daniel Borkmann , Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Shuah Khan Cc: Geliang Tang , bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, Geliang Tang Subject: [PATCH bpf-next v5 2/6] selftests/bpf: Use start_server_addr in cls_redirect Date: Thu, 18 Apr 2024 16:09:08 +0800 Message-Id: <13f336cb4c6680175d50bb963d9532e11528c758.1713427236.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: bpf@iogearbox.net From: Geliang Tang Include network_helpers.h in prog_tests/cls_redirect.c, use the newly added public helper start_server_addr() instead of the local defined function start_server(). This can avoid duplicate code. Signed-off-by: Geliang Tang --- .../selftests/bpf/prog_tests/cls_redirect.c | 20 ++----------------- 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/cls_redirect.c b/tools/testing/selftests/bpf/prog_tests/cls_redirect.c index 2a55f717fc07..68cb93106658 100644 --- a/tools/testing/selftests/bpf/prog_tests/cls_redirect.c +++ b/tools/testing/selftests/bpf/prog_tests/cls_redirect.c @@ -10,6 +10,7 @@ #include #include +#include "network_helpers.h" #include "progs/test_cls_redirect.h" #include "test_cls_redirect.skel.h" @@ -35,23 +36,6 @@ struct tuple { struct addr_port dst; }; -static int start_server(const struct sockaddr *addr, socklen_t len, int type) -{ - int fd = socket(addr->sa_family, type, 0); - if (CHECK_FAIL(fd == -1)) - return -1; - if (CHECK_FAIL(bind(fd, addr, len) == -1)) - goto err; - if (type == SOCK_STREAM && CHECK_FAIL(listen(fd, 128) == -1)) - goto err; - - return fd; - -err: - close(fd); - return -1; -} - static int connect_to_server(const struct sockaddr *addr, socklen_t len, int type) { @@ -98,7 +82,7 @@ static bool set_up_conn(const struct sockaddr *addr, socklen_t len, int type, socklen_t slen = sizeof(ss); struct sockaddr *sa = (struct sockaddr *)&ss; - *server = start_server(addr, len, type); + *server = start_server_addr(type, (struct sockaddr_storage *)addr, len, NULL); if (*server < 0) return false; From patchwork Thu Apr 18 08:09:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 13634321 X-Patchwork-Delegate: bpf@iogearbox.net Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8C2897CF2B; Thu, 18 Apr 2024 08:09:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713427782; cv=none; b=eJYsiFiGR9uPC/bUgs7U1heRfvUJSYj/ybtWHGkyMO8afFtIEbHtPNeF6i9nTYPEvlDW1VKC7FTPndd2ZrlK32rF9coVjyCXYLt5BbtB4HlyGeFyYgSFwzG4JOsyf939xdg7br7RkiUEFU7ur6nzDxspNupr4YuHBuEebGnmUNw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713427782; c=relaxed/simple; bh=hXTzw17BtXmyG2zQDfFTBmZNcXLVJ7pnXsvviybn1Zs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=YCEQz3omotTbEI2tF1r+4hH/Q6u/KNQRUmSR6tu9fTZQuW7NYwhq9bWy1NTzXZ1bHj3D291K4JkKwp59lzq1ZOVwdIafhLDJWHqrQ1in95gpWjIhYviXXgQ404Ww/toB3SJw3gLIkCKF30OOUVlgzvWn0NW0j4yVMF36nJahPXU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BWFwJ+Yl; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BWFwJ+Yl" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0897CC32783; Thu, 18 Apr 2024 08:09:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1713427781; bh=hXTzw17BtXmyG2zQDfFTBmZNcXLVJ7pnXsvviybn1Zs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BWFwJ+Ylb3U8aeYHEM6OgDVqsPYyWST8SU+mZdQiTeh7euD4EtATzjKU5+iWCBt7I Q09y7KuBs8CoD+xe9wGXgLCFUMjSrybqX3jtlzTZ1UVCa8Wl7mfU5jHbopRbwPBno1 z/CNYwfKXjTXNu4QYrycZk1aDQt5+qZ0bUjrFzEYVRw1y9cBpQOOe/Ui+tQ+u9BzWi evSGabwgoLBjSK15lmzkNBK9AfdromNUs+XzNh1iuaa71Dg/k+MASuoFiLlwMovm7B 2ztL2TdNvkIR0X4VCpUud5hdMmNUm2WAw2duFFxN3tqrz5iGSrme3uYMV7mDyaGQbR HcUycAT7DcwLA== From: Geliang Tang To: Andrii Nakryiko , Eduard Zingerman , Mykola Lysenko , Alexei Starovoitov , Daniel Borkmann , Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Shuah Khan Cc: Geliang Tang , bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, Geliang Tang Subject: [PATCH bpf-next v5 3/6] selftests/bpf: Use start_server_addr in sk_assign Date: Thu, 18 Apr 2024 16:09:09 +0800 Message-Id: <2af706ffbad63b4f7eaf93a426ed1076eadf1a05.1713427236.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: bpf@iogearbox.net From: Geliang Tang Include network_helpers.h in prog_tests/sk_assign.c, use the newly added public helper start_server_addr() instead of the local defined function start_server(). This can avoid duplicate code. The code that sets SO_RCVTIMEO timeout as timeo_sec (3s) can be dropped, since start_server_addr() sets default timeout as 3s. Signed-off-by: Geliang Tang --- .../selftests/bpf/prog_tests/sk_assign.c | 29 +++---------------- 1 file changed, 4 insertions(+), 25 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/sk_assign.c b/tools/testing/selftests/bpf/prog_tests/sk_assign.c index 1374b626a985..b066b6b88d7c 100644 --- a/tools/testing/selftests/bpf/prog_tests/sk_assign.c +++ b/tools/testing/selftests/bpf/prog_tests/sk_assign.c @@ -15,6 +15,7 @@ #include #include "test_progs.h" +#include "network_helpers.h" #define BIND_PORT 1234 #define CONNECT_PORT 4321 @@ -73,30 +74,6 @@ configure_stack(void) return true; } -static int -start_server(const struct sockaddr *addr, socklen_t len, int type) -{ - int fd; - - fd = socket(addr->sa_family, type, 0); - if (CHECK_FAIL(fd == -1)) - goto out; - if (CHECK_FAIL(setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &timeo_sec, - timeo_optlen))) - goto close_out; - if (CHECK_FAIL(bind(fd, addr, len) == -1)) - goto close_out; - if (type == SOCK_STREAM && CHECK_FAIL(listen(fd, 128) == -1)) - goto close_out; - - goto out; -close_out: - close(fd); - fd = -1; -out: - return fd; -} - static int connect_to_server(const struct sockaddr *addr, socklen_t len, int type) { @@ -310,7 +287,9 @@ void test_sk_assign(void) continue; prepare_addr(test->addr, test->family, BIND_PORT, false); addr = (const struct sockaddr *)test->addr; - server = start_server(addr, test->len, test->type); + server = start_server_addr(test->type, + (const struct sockaddr_storage *)addr, + test->len, NULL); if (server == -1) goto close; From patchwork Thu Apr 18 08:09:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 13634322 X-Patchwork-Delegate: bpf@iogearbox.net Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 302F07C0A9; Thu, 18 Apr 2024 08:09:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713427787; cv=none; b=FnvVjuENOiJr3zdSpI+k4RqMPU2zDIw2f2eRcLOYdshsQi3CUTPplj9pQUdTiql+XGaigYwUAI9gor89f11XHIBUicCDiZgL60a2Yk5cLkpHpVy4itb8eODsGVqii4fuKdjKAVEke0rmaeqANvdGgywn7u+hqI7ibvg5oxNH6Xc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713427787; c=relaxed/simple; bh=VkOI1LTyEWa1WTCTTCieOSkjZUweM+kBa07gptDvTY4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ibokFTuceB0yt4NRIwEaf7C/EPmILsey0VrH1UodZ7Y92VdWRnuLzAlMFNT/5//cg4d2j5mvb/yZTqBEJYYBQFj5rRYw8bt89bD955UHxn4ZS2M9p0DXZEbIBWU4/wFloXJckylz41ju/JT5rVlD+uPx9fcDCTPsKPv84JWkdK4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=RKMMTA6E; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="RKMMTA6E" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A8DCAC4AF07; Thu, 18 Apr 2024 08:09:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1713427786; bh=VkOI1LTyEWa1WTCTTCieOSkjZUweM+kBa07gptDvTY4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=RKMMTA6EROt6DuMVkduIlbjC3UCMXf6wKVfgH4M6H/s+CuIEGHlKl1Rxbt23uEODh BlBhSS2DDPg8vKG1Zi/3JwQcmGo2k2BOD4iRc4O+u7dK2/XjuyBI0g0qg0UM1n2JDl bsAIXvKkDCIPiJLlwvyS7AUF6iwuGLwEKvfk5y1z+BGnYHCwsznyGmevTVGK5Kyhuy TVq5jhDNVtYebZMeAcPPDEZFCRDMvsj8VlYDsgR+XINifTMJLtuiiu/DCjBvSX4Czh /JzuV0X86TSkgQCzAWfteLJ5ZZ5ZVYvj2guylAH7r7dHITLoT9rTOsFbb6F6LdMqKC pH7Gt1TSc+4jg== From: Geliang Tang To: Andrii Nakryiko , Eduard Zingerman , Mykola Lysenko , Alexei Starovoitov , Daniel Borkmann , Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Shuah Khan Cc: Geliang Tang , bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, Geliang Tang Subject: [PATCH bpf-next v5 4/6] selftests/bpf: Update arguments of connect_to_addr Date: Thu, 18 Apr 2024 16:09:10 +0800 Message-Id: <088ea8a95055f93409c5f57d12f0e58d43059ac4.1713427236.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: bpf@iogearbox.net From: Geliang Tang Move the third argument "int type" of connect_to_addr() to the first one which is closer to how the socket syscall is doing it. And add a network_helper_opts argument as the fourth one. Then change its usages in sock_addr.c too. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/network_helpers.c | 13 ++++++++++--- tools/testing/selftests/bpf/network_helpers.h | 3 ++- tools/testing/selftests/bpf/prog_tests/sock_addr.c | 6 +++--- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/bpf/network_helpers.c b/tools/testing/selftests/bpf/network_helpers.c index 28fe8367451b..9d63d2ac13d8 100644 --- a/tools/testing/selftests/bpf/network_helpers.c +++ b/tools/testing/selftests/bpf/network_helpers.c @@ -270,17 +270,24 @@ static int connect_fd_to_addr(int fd, return 0; } -int connect_to_addr(const struct sockaddr_storage *addr, socklen_t addrlen, int type) +int connect_to_addr(int type, const struct sockaddr_storage *addr, socklen_t addrlen, + const struct network_helper_opts *opts) { int fd; - fd = socket(addr->ss_family, type, 0); + if (!opts) + opts = &default_opts; + + fd = socket(addr->ss_family, type, opts->proto); if (fd < 0) { log_err("Failed to create client socket"); return -1; } - if (connect_fd_to_addr(fd, addr, addrlen, false)) + if (settimeo(fd, opts->timeout_ms)) + goto error_close; + + if (connect_fd_to_addr(fd, addr, addrlen, opts->must_fail)) goto error_close; return fd; diff --git a/tools/testing/selftests/bpf/network_helpers.h b/tools/testing/selftests/bpf/network_helpers.h index 414ea50bb3fc..aef297dfa6ca 100644 --- a/tools/testing/selftests/bpf/network_helpers.h +++ b/tools/testing/selftests/bpf/network_helpers.h @@ -56,7 +56,8 @@ int *start_reuseport_server(int family, int type, const char *addr_str, int start_server_addr(int type, const struct sockaddr_storage *addr, socklen_t len, const struct network_helper_opts *opts); void free_fds(int *fds, unsigned int nr_close_fds); -int connect_to_addr(const struct sockaddr_storage *addr, socklen_t len, int type); +int connect_to_addr(int type, const struct sockaddr_storage *addr, socklen_t len, + const struct network_helper_opts *opts); int connect_to_fd(int server_fd, int timeout_ms); int connect_to_fd_opts(int server_fd, const struct network_helper_opts *opts); int connect_fd_to_fd(int client_fd, int server_fd, int timeout_ms); diff --git a/tools/testing/selftests/bpf/prog_tests/sock_addr.c b/tools/testing/selftests/bpf/prog_tests/sock_addr.c index 5fd617718991..61668e0f11b0 100644 --- a/tools/testing/selftests/bpf/prog_tests/sock_addr.c +++ b/tools/testing/selftests/bpf/prog_tests/sock_addr.c @@ -328,7 +328,7 @@ static void test_bind(struct sock_addr_test *test) goto cleanup; /* Try to connect to server just in case */ - client = connect_to_addr(&expected_addr, expected_addr_len, test->socket_type); + client = connect_to_addr(test->socket_type, &expected_addr, expected_addr_len, NULL); if (!ASSERT_GE(client, 0, "connect_to_addr")) goto cleanup; @@ -357,7 +357,7 @@ static void test_connect(struct sock_addr_test *test) if (!ASSERT_EQ(err, 0, "make_sockaddr")) goto cleanup; - client = connect_to_addr(&addr, addr_len, test->socket_type); + client = connect_to_addr(test->socket_type, &addr, addr_len, NULL); if (!ASSERT_GE(client, 0, "connect_to_addr")) goto cleanup; @@ -538,7 +538,7 @@ static void test_getpeername(struct sock_addr_test *test) if (!ASSERT_EQ(err, 0, "make_sockaddr")) goto cleanup; - client = connect_to_addr(&addr, addr_len, test->socket_type); + client = connect_to_addr(test->socket_type, &addr, addr_len, NULL); if (!ASSERT_GE(client, 0, "connect_to_addr")) goto cleanup; From patchwork Thu Apr 18 08:09:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 13634323 X-Patchwork-Delegate: bpf@iogearbox.net Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 295477D07F; Thu, 18 Apr 2024 08:09:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713427792; cv=none; b=ip08pFl1QXCtidboZOKhtezRfkyMk9i0AD75QDsw392aVJhP+gDsZNyOwkYTXyhnSv2HM0d0bLvndnxmtODVKxttPVZVv/YAI3Hwyv+3mRwt7zXQGZzhLsqcpHvKwRBvrFxJZpD9T5eQQ+hwBwZPR9WP0S1LkV3XrJpJ+Y7jeu8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713427792; c=relaxed/simple; bh=CN54nD8S3wwbYRJJVvu0yi6JN/nK8LQvss7nkguVvaY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=u5ypYPDi0nywHoE/bZTwDMKcAgxr/tnnrK6n8cQypZwLYSPfvS/nf2k7YV+3kKOw6UNce2zRSXjY8QHGEw6WBSHpfsSP3i0DSNmNJbj9OEp8/3ugHGYqgrrkOIQxc7xGbY57bcqzjTSivpSXukbMPOZp9FC3sc+s7OiqIRmSizA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jbxpWqzG; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jbxpWqzG" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 50591C113CE; Thu, 18 Apr 2024 08:09:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1713427791; bh=CN54nD8S3wwbYRJJVvu0yi6JN/nK8LQvss7nkguVvaY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jbxpWqzGZTs5u38EA9avd/RNoGceqLlF13MfxNGVdAkVGuAnjtQkNY1+IS8zF+qp1 LFA6rxto4BjFhtv0xIYK5e1k8AeMIDiSa86tM29Tzd4dZtaTHhb+Xj3MXGw2a6EEq7 /muh4E5LwSG331TvP2kSAy72eDqwh6snYY45un+y2SYfywHfbYdnTRgdcT//FY8tt9 j763Lw4PXbgun+BWLQ8HKioeoWV3eyTicok57fFdWKH0TEuA3N+0t6MI8a1p9cYzGw +HjEas6CMyMvyd075yjzMUMX96Pc/UrBFM3RgeloBC/1nmcIOLGeTE8FunMeDbDvgz rODNkdHD3u3fQ== From: Geliang Tang To: Andrii Nakryiko , Eduard Zingerman , Mykola Lysenko , Alexei Starovoitov , Daniel Borkmann , Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Shuah Khan Cc: Geliang Tang , bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, Geliang Tang Subject: [PATCH bpf-next v5 5/6] selftests/bpf: Use connect_to_addr in cls_redirect Date: Thu, 18 Apr 2024 16:09:11 +0800 Message-Id: <4a03ac92d2d392f8721f398fa449a83ac75577bc.1713427236.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: bpf@iogearbox.net From: Geliang Tang This patch uses public helper connect_to_addr() exported in network_helpers.h instead of the local defined function connect_to_server() in prog_tests/cls_redirect.c. This can avoid duplicate code. Signed-off-by: Geliang Tang --- .../selftests/bpf/prog_tests/cls_redirect.c | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/cls_redirect.c b/tools/testing/selftests/bpf/prog_tests/cls_redirect.c index 68cb93106658..34b59f6baca1 100644 --- a/tools/testing/selftests/bpf/prog_tests/cls_redirect.c +++ b/tools/testing/selftests/bpf/prog_tests/cls_redirect.c @@ -36,22 +36,6 @@ struct tuple { struct addr_port dst; }; -static int connect_to_server(const struct sockaddr *addr, socklen_t len, - int type) -{ - int fd = socket(addr->sa_family, type, 0); - if (CHECK_FAIL(fd == -1)) - return -1; - if (CHECK_FAIL(connect(fd, addr, len))) - goto err; - - return fd; - -err: - close(fd); - return -1; -} - static bool fill_addr_port(const struct sockaddr *sa, struct addr_port *ap) { const struct sockaddr_in6 *in6; @@ -89,7 +73,7 @@ static bool set_up_conn(const struct sockaddr *addr, socklen_t len, int type, if (CHECK_FAIL(getsockname(*server, sa, &slen))) goto close_server; - *conn = connect_to_server(sa, slen, type); + *conn = connect_to_addr(type, (struct sockaddr_storage *)sa, slen, NULL); if (*conn < 0) goto close_server; From patchwork Thu Apr 18 08:09:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 13634324 X-Patchwork-Delegate: bpf@iogearbox.net Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 108777C0A9; Thu, 18 Apr 2024 08:09:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713427798; cv=none; b=i/yqgcOV+aQWr7gKn6bAxnzoe0g7RsA67RrnBT2fdMTwHf9+l7xNAbMOleUjvDb/X47/+aqGurmhOBVCHmAz/mOX+HO6K5RR6covrcVngS4n4WUbgPIq38QxSM+GPOBZQo8EyQkcwsu0Ko/grisJRj7lRht6RZpSPcUtR9K0dxQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713427798; c=relaxed/simple; bh=NkME+wGXKoMaC+mSfB5Ca3k1HSHdXjtu8rQopoF3pBc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=jfK9PTWlM8+Gb5gfnx0Zpbb7DnVyQzN4S69mbt15b5HrnMmd6LIayNBhjR5Ae/93ASmg02XYLwEHQEjr/htZq764yU1WWfcMYE8FyBFYdKmZKwFEAD7Bx0lec5JiT+f4PAELfCaEcV3csWyaJCIbNqzS5lXSgj7kAbGudU6Q07E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=vOZhNQIr; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="vOZhNQIr" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 34181C113CC; Thu, 18 Apr 2024 08:09:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1713427797; bh=NkME+wGXKoMaC+mSfB5Ca3k1HSHdXjtu8rQopoF3pBc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vOZhNQIr86GBU++nKCmGIiMxBsfAXBedrxAJ2Ah5dHy1i8VMX+/FAaQtg3CaP2EGh NJgu0qVq14n/SMdGAE4GR7CK8Q2UuNSbM3d2oAmfI9My2sxjYKOWwjsNceZk7dV2Z0 0Yw5f8Hj2KZBAhMwevlbbJOlLFj1343KcO+Odt46dyJEyNkD2p9QAJEb1mDLuFjIAA M2uRTPPt//mCEfL+NGBUPF+WNtfmAWV4sdNpr7+aWY1UPvxAfTiNfiUclRU8nvKQrV loPUCju8WwVPpJtP723mwzrCp6XHAEbZMZ4jp+hAF25QPSlcETbHazqrfDA7Y6NAuw dqAgJtVk0w/lQ== From: Geliang Tang To: Andrii Nakryiko , Eduard Zingerman , Mykola Lysenko , Alexei Starovoitov , Daniel Borkmann , Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Shuah Khan Cc: Geliang Tang , bpf@vger.kernel.org, linux-kselftest@vger.kernel.org, Geliang Tang Subject: [PATCH bpf-next v5 6/6] selftests/bpf: Use connect_to_addr in sk_assign Date: Thu, 18 Apr 2024 16:09:12 +0800 Message-Id: <98fdd384872bda10b2adb052e900a2212c9047b9.1713427236.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: bpf@iogearbox.net From: Geliang Tang This patch uses public helper connect_to_addr() exported in network_helpers.h instead of the local defined function connect_to_server() in prog_tests/sk_assign.c. This can avoid duplicate code. The code that sets SO_SNDTIMEO timeout as timeo_sec (3s) can be dropped, since connect_to_addr() sets default timeout as 3s. Signed-off-by: Geliang Tang --- .../selftests/bpf/prog_tests/sk_assign.c | 26 +------------------ 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/sk_assign.c b/tools/testing/selftests/bpf/prog_tests/sk_assign.c index b066b6b88d7c..0b9bd1d6f7cc 100644 --- a/tools/testing/selftests/bpf/prog_tests/sk_assign.c +++ b/tools/testing/selftests/bpf/prog_tests/sk_assign.c @@ -23,8 +23,6 @@ #define NS_SELF "/proc/self/ns/net" #define SERVER_MAP_PATH "/sys/fs/bpf/tc/globals/server_map" -static const struct timeval timeo_sec = { .tv_sec = 3 }; -static const size_t timeo_optlen = sizeof(timeo_sec); static int stop, duration; static bool @@ -74,28 +72,6 @@ configure_stack(void) return true; } -static int -connect_to_server(const struct sockaddr *addr, socklen_t len, int type) -{ - int fd = -1; - - fd = socket(addr->sa_family, type, 0); - if (CHECK_FAIL(fd == -1)) - goto out; - if (CHECK_FAIL(setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, &timeo_sec, - timeo_optlen))) - goto close_out; - if (CHECK_FAIL(connect(fd, addr, len))) - goto close_out; - - goto out; -close_out: - close(fd); - fd = -1; -out: - return fd; -} - static in_port_t get_port(int fd) { @@ -138,7 +114,7 @@ run_test(int server_fd, const struct sockaddr *addr, socklen_t len, int type) in_port_t port; int ret = 1; - client = connect_to_server(addr, len, type); + client = connect_to_addr(type, (struct sockaddr_storage *)addr, len, NULL); if (client == -1) { perror("Cannot connect to server"); goto out;