On 3/11/26 11:20 PM, Jiayuan Chen wrote:
From: Jiayuan Chen <[email protected]>

No functional changes.

This is not true as you mentioned below.


The connect_force_port test can fail intermittently because the
hardcoded server ports (60123/60124) may already be in use by other
tests or processes in CI environments [1].

Fix this by using dynamically assigned ports (port 0) for start_server
and propagating the actual port to the BPF programs at runtime via
skel->bss->port. Convert the test from the legacy bpf_object__open_file
loading model to the skeleton (skel) pattern, which provides direct
access to BPF global variables without introducing maps or other
mechanisms.

I suggest you have two patches:
  . patch 1: fix port issue
  . patch 2: improve code from bpf_object__*() to skel based.
    patch 2 is optional.


Test:

   ./test_progs -a connect_force_port -v

   test_v4:PASS:skel4_open_and_load 0 nsec
   attach_progs:PASS:attach connect 0 nsec
   attach_progs:PASS:attach getpeername 0 nsec
   attach_progs:PASS:attach getsockname 0 nsec
   run_tests:PASS:start_server tcp 0 nsec
   run_tests:PASS:get_socket_local_port 0 nsec
   run_tests:PASS:connect_to_fd 0 nsec
   run_tests:PASS:verify_ports 0 nsec
   run_tests:PASS:start_server udp 0 nsec
   run_tests:PASS:get_socket_local_port 0 nsec
   run_tests:PASS:connect_to_fd 0 nsec
   run_tests:PASS:verify_ports 0 nsec
   test_v6:PASS:skel6_open_and_load 0 nsec
   attach_progs:PASS:attach connect 0 nsec
   attach_progs:PASS:attach getpeername 0 nsec
   attach_progs:PASS:attach getsockname 0 nsec
   run_tests:PASS:start_server tcp 0 nsec
   run_tests:PASS:get_socket_local_port 0 nsec
   run_tests:PASS:connect_to_fd 0 nsec
   run_tests:PASS:verify_ports 0 nsec
   run_tests:PASS:start_server udp 0 nsec
   run_tests:PASS:get_socket_local_port 0 nsec
   run_tests:PASS:connect_to_fd 0 nsec
   run_tests:PASS:verify_ports 0 nsec
   #80      connect_force_port:OK
   Summary: 1/0 PASSED, 0 SKIPPED, 0 FAILED

[1] 
https://github.com/kernel-patches/bpf/actions/runs/22697676317/job/65808536038

Cc: Jiayuan Chen <[email protected]>
Signed-off-by: Jiayuan Chen <[email protected]>
---
  .../bpf/prog_tests/connect_force_port.c       | 190 +++++++++---------
  .../selftests/bpf/progs/connect_force_port4.c |  10 +-
  .../selftests/bpf/progs/connect_force_port6.c |  10 +-
  3 files changed, 108 insertions(+), 102 deletions(-)

diff --git a/tools/testing/selftests/bpf/prog_tests/connect_force_port.c 
b/tools/testing/selftests/bpf/prog_tests/connect_force_port.c
index 24d553109f8dd..3e62f9b9f1d94 100644
--- a/tools/testing/selftests/bpf/prog_tests/connect_force_port.c
+++ b/tools/testing/selftests/bpf/prog_tests/connect_force_port.c
@@ -3,6 +3,8 @@
  #include <test_progs.h>
  #include "cgroup_helpers.h"
  #include "network_helpers.h"
+#include "connect_force_port4.skel.h"
+#include "connect_force_port6.skel.h"
static int verify_ports(int family, int fd,
                        __u16 expected_local, __u16 expected_peer)
@@ -46,122 +48,122 @@ static int verify_ports(int family, int fd,
        return 0;
  }
[...]


Reply via email to