Skip to content

Commit 27e3162

Browse files
mrpreAlexei Starovoitov
authored andcommitted
selftests/bpf: Allow auto port binding for cgroup connect
Allow auto port binding for cgroup connect test to avoid binding conflict. Result: ./test_progs -a cgroup_v1v2 59 cgroup_v1v2:OK Summary: 1/0 PASSED, 0 SKIPPED, 0 FAILED Signed-off-by: Jiayuan Chen <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Alexei Starovoitov <[email protected]>
1 parent 43d9d43 commit 27e3162

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

tools/testing/selftests/bpf/prog_tests/cgroup_v1v2.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,18 @@
1010
static int run_test(int cgroup_fd, int server_fd, bool classid)
1111
{
1212
struct connect4_dropper *skel;
13-
int fd, err = 0;
13+
int fd, err = 0, port;
1414

1515
skel = connect4_dropper__open_and_load();
1616
if (!ASSERT_OK_PTR(skel, "skel_open"))
1717
return -1;
1818

19+
port = get_socket_local_port(server_fd);
20+
if (!ASSERT_GE(port, 0, "get_socket_local_port"))
21+
return -1;
22+
23+
skel->bss->port = ntohs(port);
24+
1925
skel->links.connect_v4_dropper =
2026
bpf_program__attach_cgroup(skel->progs.connect_v4_dropper,
2127
cgroup_fd);
@@ -48,10 +54,9 @@ void test_cgroup_v1v2(void)
4854
{
4955
struct network_helper_opts opts = {};
5056
int server_fd, client_fd, cgroup_fd;
51-
static const int port = 60120;
5257

5358
/* Step 1: Check base connectivity works without any BPF. */
54-
server_fd = start_server(AF_INET, SOCK_STREAM, NULL, port, 0);
59+
server_fd = start_server(AF_INET, SOCK_STREAM, NULL, 0, 0);
5560
if (!ASSERT_GE(server_fd, 0, "server_fd"))
5661
return;
5762
client_fd = connect_to_fd_opts(server_fd, &opts);
@@ -66,7 +71,7 @@ void test_cgroup_v1v2(void)
6671
cgroup_fd = test__join_cgroup("/connect_dropper");
6772
if (!ASSERT_GE(cgroup_fd, 0, "cgroup_fd"))
6873
return;
69-
server_fd = start_server(AF_INET, SOCK_STREAM, NULL, port, 0);
74+
server_fd = start_server(AF_INET, SOCK_STREAM, NULL, 0, 0);
7075
if (!ASSERT_GE(server_fd, 0, "server_fd")) {
7176
close(cgroup_fd);
7277
return;

tools/testing/selftests/bpf/progs/connect4_dropper.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@
1313
#define VERDICT_REJECT 0
1414
#define VERDICT_PROCEED 1
1515

16+
int port;
17+
1618
SEC("cgroup/connect4")
1719
int connect_v4_dropper(struct bpf_sock_addr *ctx)
1820
{
1921
if (ctx->type != SOCK_STREAM)
2022
return VERDICT_PROCEED;
21-
if (ctx->user_port == bpf_htons(60120))
23+
if (ctx->user_port == bpf_htons(port))
2224
return VERDICT_REJECT;
2325
return VERDICT_PROCEED;
2426
}

0 commit comments

Comments
 (0)