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;
}
[...]