From patchwork Tue Jul 9 09:16:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 811617 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 7735114E2E6; Tue, 9 Jul 2024 09:16:55 +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=1720516615; cv=none; b=p12ziLh6gubXP0TikZ+zkbfaIllS4Z8HsfZqSzI6mZf2EfVWpdbi9z3onZFl9mpE7bqEcF9zGlG+sQcNBMArWXB9GgsQsNIeTB63kiHd+O50C7sKNbACrwkyl6l93e4KkRm5cMThJeZZQsw0an2+CEl/gwTTHrqHTPhRkuu8u/U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720516615; c=relaxed/simple; bh=60zEMjX7htBU0OqT1VipLkt5OIQycGxibF5IvB/pNzs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KbPSuB1ILmNI0vOS6uoYRoMamQ+e0svhn/8S1AnIrNGsme/BmrQFaNsZS2tFMW1wTFMgMfERsZmu/lkHcfQL1AAQMA9RdUg9MFDCLU8Q/qf+XLT6qdqERxiguepFAJoUiY0rKjTY2Dp043HJPha671JERIiv6MJnDp1JRtVlHS0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=h5pvPy0f; 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="h5pvPy0f" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C50E1C32786; Tue, 9 Jul 2024 09:16:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1720516615; bh=60zEMjX7htBU0OqT1VipLkt5OIQycGxibF5IvB/pNzs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=h5pvPy0fRlGBxmbtbl4wg7ealufSzJFD0PtH8s9dlbSBHwXgy5HD6lUFtnTxvCbqX k6hnFO7wqCgkxxzjHA4Nj0ObPE/y19MsMleAPnx6P3blGve9cTwMx5pPbQb+IyQA5p +BrRaHeNEaYU+Ah5qE7unmGUQjL+/WBcpnN1oTK+TEeO8jiYJO2ZJLIArGhTkD3wTZ o+hQuK/yJ9Uo/AFGbtaZEs1F95JQnm4wKHgcVaGOlKdL569Qthcy4c0WRNmC15eukQ 81rJVBVoWtaFtFiSf1EcGohXyBRQAIzjVraTlINInB8PcwAaHlPK3QyqzyFWPovpej Av2UsectCnMXg== 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, Martin KaFai Lau Subject: [PATCH bpf-next v11 2/9] selftests/bpf: Add ASSERT_OK_FD macro Date: Tue, 9 Jul 2024 17:16:18 +0800 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Geliang Tang Add a new dedicated ASSERT macro ASSERT_OK_FD to test whether a socket FD is valid or not. It can be used to replace macros ASSERT_GT(fd, 0, ""), ASSERT_NEQ(fd, -1, "") or statements (fd < 0), (fd != -1). Suggested-by: Martin KaFai Lau Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/test_progs.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tools/testing/selftests/bpf/test_progs.h b/tools/testing/selftests/bpf/test_progs.h index 0ba5a20b19ba..4f7b91c25b1e 100644 --- a/tools/testing/selftests/bpf/test_progs.h +++ b/tools/testing/selftests/bpf/test_progs.h @@ -377,6 +377,14 @@ int test__join_cgroup(const char *path); ___ok; \ }) +#define ASSERT_OK_FD(fd, name) ({ \ + static int duration = 0; \ + int ___fd = (fd); \ + bool ___ok = ___fd >= 0; \ + CHECK(!___ok, (name), "unexpected fd: %d\n", ___fd); \ + ___ok; \ +}) + #define SYS(goto_label, fmt, ...) \ ({ \ char cmd[1024]; \ From patchwork Tue Jul 9 09:16:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 811616 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 09AE214BFB4; Tue, 9 Jul 2024 09:17:08 +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=1720516629; cv=none; b=g26jmxiKMhliRgRa+M2An3RZ0HNPRSiyUg7KHSt85fRZ2L7fSStIe8slt5Ne/C1sVphvV69JwpUGVGwHceJsgTlSIU7xzdmbjNN0JScaLwcbGfce0LrOBgoYyHmpMw4u+rLzH7BEFpBNtAHzFRoj7eE1zZRBdILxCGDElb9Nrn0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720516629; c=relaxed/simple; bh=ApZvhLxtD4l70b1t3CJeyj/B8UQ6goleRLaq5M5l6PM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eFujUohVXet8zA0GSAXJ1prjSvcsRrcoP4hkiW3tgYGyt7ePHTMmLQuMo/5Cz7aYf8tySUDbGEpC3IUE/bDZLC1Fm3iin10U3TTVLRoIF1uFFRpGzCD3fqJPEd6litBSyXl0iWceP3HkNi6dkKmNDje3S/dPFsZuB1J+0xZAclw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GzFiO5H0; 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="GzFiO5H0" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4F69CC3277B; Tue, 9 Jul 2024 09:17:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1720516628; bh=ApZvhLxtD4l70b1t3CJeyj/B8UQ6goleRLaq5M5l6PM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GzFiO5H0FW5TxZ1x3d/UT/sCzZxzBuiLk8wEtbxzTINkdXVIs2o43Dtys6PlQ6+Ay Los/liv0rxNkZxcjX6iuyrIDr9JUaj5gbgLWpILHJLYDH9XOHo/FWEbzQjkIAVXz4w czJNJQaeUWTF8sBJS/ybTBFm3QdpCKp1f6JftpkEhXUKrjBqmv9LZBNzFQbd+TVDel Vqy4z1FHF8Yl2RU1LfX+JFQq+OIQI2PtpbX34in4xhvDxAORLVv6U3XLADV9b1l8BK KWrRuqrHRlJ08nZ9ds2Xzlg50IexIpZdIS+QT82HRVZWN3/DTxSjRYg3H8JZOfH44L f9iehTsZVfmEQ== 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 Subject: [PATCH bpf-next v11 4/9] selftests/bpf: Use start_server_str in sk_lookup Date: Tue, 9 Jul 2024 17:16:20 +0800 Message-ID: <5981539f5591d2c4998c962ef2bf45f34c940548.1720515893.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Geliang Tang This patch uses public helper start_server_str() to simplify make_server() in prog_tests/sk_lookup.c. Add a callback setsockopts() to do all sockopts, set it to post_socket_cb pointer of struct network_helper_opts. And add a new struct cb_opts to save the data needed to pass to the callback. Then pass this network_helper_opts to start_server_str(). Also use ASSERT_OK_FD() to check fd returned by start_server_str(). Acked-by: Eduard Zingerman Signed-off-by: Geliang Tang --- .../selftests/bpf/prog_tests/sk_lookup.c | 58 +++++++++++-------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/sk_lookup.c b/tools/testing/selftests/bpf/prog_tests/sk_lookup.c index de2466547efe..20ee5da2c721 100644 --- a/tools/testing/selftests/bpf/prog_tests/sk_lookup.c +++ b/tools/testing/selftests/bpf/prog_tests/sk_lookup.c @@ -77,6 +77,12 @@ struct test { bool reuseport_has_conns; /* Add a connected socket to reuseport group */ }; +struct cb_opts { + int family; + int sotype; + bool reuseport; +}; + static __u32 duration; /* for CHECK macro */ static bool is_ipv6(const char *ip) @@ -142,19 +148,14 @@ static int make_socket(int sotype, const char *ip, int port, return fd; } -static int make_server(int sotype, const char *ip, int port, - struct bpf_program *reuseport_prog) +static int setsockopts(int fd, void *opts) { - struct sockaddr_storage addr = {0}; + struct cb_opts *co = (struct cb_opts *)opts; const int one = 1; - int err, fd = -1; - - fd = make_socket(sotype, ip, port, &addr); - if (fd < 0) - return -1; + int err = 0; /* Enabled for UDPv6 sockets for IPv4-mapped IPv6 to work. */ - if (sotype == SOCK_DGRAM) { + if (co->sotype == SOCK_DGRAM) { err = setsockopt(fd, SOL_IP, IP_RECVORIGDSTADDR, &one, sizeof(one)); if (CHECK(err, "setsockopt(IP_RECVORIGDSTADDR)", "failed\n")) { @@ -163,7 +164,7 @@ static int make_server(int sotype, const char *ip, int port, } } - if (sotype == SOCK_DGRAM && addr.ss_family == AF_INET6) { + if (co->sotype == SOCK_DGRAM && co->family == AF_INET6) { err = setsockopt(fd, SOL_IPV6, IPV6_RECVORIGDSTADDR, &one, sizeof(one)); if (CHECK(err, "setsockopt(IPV6_RECVORIGDSTADDR)", "failed\n")) { @@ -172,7 +173,7 @@ static int make_server(int sotype, const char *ip, int port, } } - if (sotype == SOCK_STREAM) { + if (co->sotype == SOCK_STREAM) { err = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)); if (CHECK(err, "setsockopt(SO_REUSEADDR)", "failed\n")) { @@ -181,7 +182,7 @@ static int make_server(int sotype, const char *ip, int port, } } - if (reuseport_prog) { + if (co->reuseport) { err = setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &one, sizeof(one)); if (CHECK(err, "setsockopt(SO_REUSEPORT)", "failed\n")) { @@ -190,19 +191,28 @@ static int make_server(int sotype, const char *ip, int port, } } - err = bind(fd, (void *)&addr, inetaddr_len(&addr)); - if (CHECK(err, "bind", "failed\n")) { - log_err("failed to bind listen socket"); - goto fail; - } +fail: + return err; +} - if (sotype == SOCK_STREAM) { - err = listen(fd, SOMAXCONN); - if (CHECK(err, "make_server", "listen")) { - log_err("failed to listen on port %d", port); - goto fail; - } - } +static int make_server(int sotype, const char *ip, int port, + struct bpf_program *reuseport_prog) +{ + struct cb_opts cb_opts = { + .family = is_ipv6(ip) ? AF_INET6 : AF_INET, + .sotype = sotype, + .reuseport = reuseport_prog, + }; + struct network_helper_opts opts = { + .backlog = SOMAXCONN, + .post_socket_cb = setsockopts, + .cb_opts = &cb_opts, + }; + int err, fd; + + fd = start_server_str(cb_opts.family, sotype, ip, port, &opts); + if (!ASSERT_OK_FD(fd, "start_server_str")) + return -1; /* Late attach reuseport prog so we can have one init path */ if (reuseport_prog) { From patchwork Tue Jul 9 09:16:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 811615 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 BD96E15383C; Tue, 9 Jul 2024 09:17:21 +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=1720516641; cv=none; b=UY+VdPV9zs6Oz0QckSIBDkuzy1VuLU4V9i8IpcopAJtZswzmmLDXryfZsKK2bRrPjmdgHippAljSB3rtudcKhgyZPfct5Y+ZXVanla2VzC1NI+w6hu4KxYxVnsfLZ43wM1UsNCTh1SamLx4rIGDe6UFwSlnbnmjcHddcnSKxVqM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720516641; c=relaxed/simple; bh=obV9apooCgZ6Dwx3T8r2jSXX7I/NFkL8m08yFMyG2Fg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Jaz3jxcul+4HgUmPozLfAIwwh6ZWM4hBIxqlwy9vT/0q0Yd1/86sy+PT1NJsY/A3iqdvNtzUjIK+lP5qefEGAVcZxlZNl8WU6p9ws9g580Z54et2p2hYre1vBY5awS6/rdIyaApOx0pckzGRazLY9AvCDjF5URFpJFg9Bca7pa0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=sGN5wxwc; 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="sGN5wxwc" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E756CC4AF0D; Tue, 9 Jul 2024 09:17:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1720516641; bh=obV9apooCgZ6Dwx3T8r2jSXX7I/NFkL8m08yFMyG2Fg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sGN5wxwc+IZz5jDWLTLxRFREEqlRScoL1bGIiRBHXkkZ+aK/GmlYe/k8fQjgnPbHq 5IS7aMxy3oSmZ9/UA102oVo6JCeGprJ3LD/zJJwbOAYz5n/qStfWASeRm5ccqdtZBU MBVcK3vP8eUGcNb7ACgZ+60QgX+m1wf/q353wJeXrE1TIVgRByE5ujLnU9cQkcjG7F kXcyoFI7j3ST2/kcu7CD2pIpyYw1js3u1di6IfxcM4S4iogTK7PC9akun/1rVW08QR 9/NA0rb/fzKfpNJiOEog3ZaiaW769IAiKvMsRMKJ7L2w8SUT3fKmIOfGhWOEVzrhjl naIytYAxQ9wvA== 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 Subject: [PATCH bpf-next v11 6/9] selftests/bpf: Use connect_fd_to_fd in sk_lookup Date: Tue, 9 Jul 2024 17:16:22 +0800 Message-ID: <7077c277cde5a1864cdc244727162fb75c8bb9c5.1720515893.git.tanggeliang@kylinos.cn> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Geliang Tang This patch uses public helper connect_fd_to_fd() exported in network_helpers.h instead of using getsockname() + connect() in run_lookup_prog() in prog_tests/sk_lookup.c. This can simplify the code. Signed-off-by: Geliang Tang --- tools/testing/selftests/bpf/prog_tests/sk_lookup.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/sk_lookup.c b/tools/testing/selftests/bpf/prog_tests/sk_lookup.c index 386e482be617..ad3f943cc2bd 100644 --- a/tools/testing/selftests/bpf/prog_tests/sk_lookup.c +++ b/tools/testing/selftests/bpf/prog_tests/sk_lookup.c @@ -633,9 +633,6 @@ static void run_lookup_prog(const struct test *t) * BPF socket lookup. */ if (t->reuseport_has_conns) { - struct sockaddr_storage addr = {}; - socklen_t len = sizeof(addr); - /* Add an extra socket to reuseport group */ reuse_conn_fd = make_server(t->sotype, t->listen_at.ip, t->listen_at.port, @@ -643,12 +640,8 @@ static void run_lookup_prog(const struct test *t) if (reuse_conn_fd < 0) goto close; - /* Connect the extra socket to itself */ - err = getsockname(reuse_conn_fd, (void *)&addr, &len); - if (CHECK(err, "getsockname", "errno %d\n", errno)) - goto close; - err = connect(reuse_conn_fd, (void *)&addr, len); - if (CHECK(err, "connect", "errno %d\n", errno)) + err = connect_fd_to_fd(reuse_conn_fd, reuse_conn_fd, 0); + if (!ASSERT_OK(err, "connect_fd_to_fd")) goto close; } From patchwork Tue Jul 9 09:16:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 811614 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 7E0B7154C18; Tue, 9 Jul 2024 09:17: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=1720516655; cv=none; b=pf6qXlSByKryWJkYjheQsdUGDGEUr3EMrd28/kphvgqJur639NJjKeurCyj3u8kGAJMSketP7LFHeGjrsGtX9ZFMPADVm3BNP41wQ6qs/98ZrHAyFhi5IdOdUAgdywUggGyn4wKA3MJCzsyzqklRYvKnhNj4KtlvRM6IMURD0pE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720516655; c=relaxed/simple; bh=FTs7Ldb0HAt0X7TgHeEKPK53qGq/J14+v1OuN6qPB5I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Xuip9+UwpXWxgbQZfLChzfcqrfCX/QT5qZstSD4Nx2yBK0GRabmZgIkb0Kj1kOTCd8/yOVJCWHI3UWWf3kFWsYZRqHzuLTcc4mbEC47wgzXtZIfsmbb4Q+pa5sC1iksb/sUhnV5tQMzB1odnLClkNGh8G54mAhzyQxFwxMEUE1k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GAgejxZM; 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="GAgejxZM" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B53ABC4AF13; Tue, 9 Jul 2024 09:17:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1720516655; bh=FTs7Ldb0HAt0X7TgHeEKPK53qGq/J14+v1OuN6qPB5I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GAgejxZMG3Aox7rmBUoTds3IqlaZDh3TXRBufiLAhbuBldWVxGx3hZQG8HdWuo48N 86OhDfRVXxedT8W7KnpviakTO/1I4zEIEBPn13zeXsBDCWoRw4Y00rhcQSC1U8JtJa ArJ6hjWf/jnFM2wFcE94dxutBYzztgc+oVYhBO5Pa7f3AWWpesyR8z9H76f9IqfYVa MB/6IcjHklMCR5OkcH/ed9uuK5JBkYZ9UOzBINI9K/gGOKKTF4vl39AJ4h7qapeJmX aDBw04s6+wsE2QvLonxmL8XRB3by7gCaaVqukF9sx01XPzwKYSmOYWZIYrc23jagia BJ4apggWtk6Ug== 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 Subject: [PATCH bpf-next v11 8/9] selftests/bpf: Use connect_fd_to_addr_str in sk_lookup Date: Tue, 9 Jul 2024 17:16:24 +0800 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Geliang Tang This patch uses the new helper connect_fd_to_addr_str() in make_client() instead of using local defined function make_socket() + connect(). This local function can be dropped latter. A new parameter "expect_errno" is added for make_client() too to allow different "expect_errno" is passed to make_client(). It is used to check with "errno" after invoking connect_fd_to_addr_str(). Signed-off-by: Geliang Tang --- .../testing/selftests/bpf/prog_tests/sk_lookup.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/sk_lookup.c b/tools/testing/selftests/bpf/prog_tests/sk_lookup.c index ad3f943cc2bd..26a1c339492e 100644 --- a/tools/testing/selftests/bpf/prog_tests/sk_lookup.c +++ b/tools/testing/selftests/bpf/prog_tests/sk_lookup.c @@ -229,17 +229,17 @@ static int make_server(int sotype, const char *ip, int port, return -1; } -static int make_client(int sotype, const char *ip, int port) +static int make_client(int sotype, const char *ip, int port, int expect_errno) { - struct sockaddr_storage addr = {0}; + int family = is_ipv6(ip) ? AF_INET6 : AF_INET; int err, fd; - fd = make_socket(sotype, ip, port, &addr); + fd = socket(family, sotype, 0); if (fd < 0) return -1; - err = connect(fd, (void *)&addr, inetaddr_len(&addr)); - if (CHECK(err, "make_client", "connect")) { + err = connect_fd_to_addr_str(fd, family, sotype, ip, port, NULL); + if (CHECK(err && (!expect_errno || errno != expect_errno), "make_client", "connect")) { log_err("failed to connect client socket"); goto fail; } @@ -645,7 +645,7 @@ static void run_lookup_prog(const struct test *t) goto close; } - client_fd = make_client(t->sotype, t->connect_to.ip, t->connect_to.port); + client_fd = make_client(t->sotype, t->connect_to.ip, t->connect_to.port, 0); if (client_fd < 0) goto close; @@ -1151,7 +1151,7 @@ static void run_sk_assign_connected(struct test_sk_lookup *skel, if (server_fd < 0) return; - connected_fd = make_client(sotype, EXT_IP4, EXT_PORT); + connected_fd = make_client(sotype, EXT_IP4, EXT_PORT, 0); if (connected_fd < 0) goto out_close_server; @@ -1165,7 +1165,7 @@ static void run_sk_assign_connected(struct test_sk_lookup *skel, goto out_close_connected; /* Try to redirect TCP SYN / UDP packet to a connected socket */ - client_fd = make_client(sotype, EXT_IP4, EXT_PORT); + client_fd = make_client(sotype, EXT_IP4, EXT_PORT, 0); if (client_fd < 0) goto out_unlink_prog; if (sotype == SOCK_DGRAM) {