From: Jordan Rife Date: Mon, 14 Jul 2025 18:09:11 +0000 (-0700) Subject: selftests/bpf: Allow for iteration over multiple ports X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=346066c3278f3baa61b1abc8a03721ed2684efe7;p=users%2Fjedix%2Flinux-maple.git selftests/bpf: Allow for iteration over multiple ports Prepare to test TCP socket iteration over both listening and established sockets by allowing the BPF iterator programs to skip the port check. Signed-off-by: Jordan Rife Signed-off-by: Martin KaFai Lau Acked-by: Stanislav Fomichev --- diff --git a/tools/testing/selftests/bpf/prog_tests/sock_iter_batch.c b/tools/testing/selftests/bpf/prog_tests/sock_iter_batch.c index 2adacd91fdf89..0d0f1b4debff5 100644 --- a/tools/testing/selftests/bpf/prog_tests/sock_iter_batch.c +++ b/tools/testing/selftests/bpf/prog_tests/sock_iter_batch.c @@ -416,7 +416,6 @@ static void do_resume_test(struct test_case *tc) int err, iter_fd = -1; const char *addr; int *fds = NULL; - int local_port; counts = calloc(tc->max_socks, sizeof(*counts)); if (!ASSERT_OK_PTR(counts, "counts")) @@ -431,10 +430,8 @@ static void do_resume_test(struct test_case *tc) tc->init_socks); if (!ASSERT_OK_PTR(fds, "start_reuseport_server")) goto done; - local_port = get_socket_local_port(*fds); - if (!ASSERT_GE(local_port, 0, "get_socket_local_port")) - goto done; - skel->rodata->ports[0] = ntohs(local_port); + skel->rodata->ports[0] = 0; + skel->rodata->ports[1] = 0; skel->rodata->sf = tc->family; err = sock_iter_batch__load(skel); diff --git a/tools/testing/selftests/bpf/progs/sock_iter_batch.c b/tools/testing/selftests/bpf/progs/sock_iter_batch.c index 8f483337e103c..40dce6a38c30f 100644 --- a/tools/testing/selftests/bpf/progs/sock_iter_batch.c +++ b/tools/testing/selftests/bpf/progs/sock_iter_batch.c @@ -52,6 +52,8 @@ int iter_tcp_soreuse(struct bpf_iter__tcp *ctx) idx = 0; else if (sk->sk_num == ports[1]) idx = 1; + else if (!ports[0] && !ports[1]) + idx = 0; else return 0; @@ -92,6 +94,8 @@ int iter_udp_soreuse(struct bpf_iter__udp *ctx) idx = 0; else if (sk->sk_num == ports[1]) idx = 1; + else if (!ports[0] && !ports[1]) + idx = 0; else return 0;