Skip to content

Commit 5166b3e

Browse files
Geliang TangMartin KaFai Lau
authored andcommitted
selftests/bpf: Use start_server_addr in sockopt_inherit
Include network_helpers.h in prog_tests/sockopt_inherit.c, use public helper start_server_addr() instead of the local defined function start_server(). This can avoid duplicate code. Add a helper custom_cb() to set SOL_CUSTOM sockopt looply, set it to post_socket_cb pointer of struct network_helper_opts, and pass it to start_server_addr(). Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> Link: https://lore.kernel.org/r/687af66f743a0bf15cdba372c5f71fe64863219e.1714907662.git.tanggeliang@kylinos.cn Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
1 parent 20434d2 commit 5166b3e

1 file changed

Lines changed: 12 additions & 21 deletions

File tree

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

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// SPDX-License-Identifier: GPL-2.0
22
#include <test_progs.h>
33
#include "cgroup_helpers.h"
4+
#include "network_helpers.h"
45

56
#include "sockopt_inherit.skel.h"
67

@@ -98,47 +99,36 @@ static void *server_thread(void *arg)
9899
return (void *)(long)err;
99100
}
100101

101-
static int start_server(void)
102+
static int custom_cb(int fd, const struct post_socket_opts *opts)
102103
{
103-
struct sockaddr_in addr = {
104-
.sin_family = AF_INET,
105-
.sin_addr.s_addr = htonl(INADDR_LOOPBACK),
106-
};
107104
char buf;
108105
int err;
109-
int fd;
110106
int i;
111107

112-
fd = socket(AF_INET, SOCK_STREAM, 0);
113-
if (fd < 0) {
114-
log_err("Failed to create server socket");
115-
return -1;
116-
}
117-
118108
for (i = CUSTOM_INHERIT1; i <= CUSTOM_LISTENER; i++) {
119109
buf = 0x01;
120110
err = setsockopt(fd, SOL_CUSTOM, i, &buf, 1);
121111
if (err) {
122112
log_err("Failed to call setsockopt(%d)", i);
123-
close(fd);
124113
return -1;
125114
}
126115
}
127116

128-
if (bind(fd, (const struct sockaddr *)&addr, sizeof(addr)) < 0) {
129-
log_err("Failed to bind socket");
130-
close(fd);
131-
return -1;
132-
}
133-
134-
return fd;
117+
return 0;
135118
}
136119

137120
static void run_test(int cgroup_fd)
138121
{
139122
struct bpf_link *link_getsockopt = NULL;
140123
struct bpf_link *link_setsockopt = NULL;
124+
struct network_helper_opts opts = {
125+
.post_socket_cb = custom_cb,
126+
};
141127
int server_fd = -1, client_fd;
128+
struct sockaddr_in addr = {
129+
.sin_family = AF_INET,
130+
.sin_addr.s_addr = htonl(INADDR_LOOPBACK),
131+
};
142132
struct sockopt_inherit *obj;
143133
void *server_err;
144134
pthread_t tid;
@@ -160,7 +150,8 @@ static void run_test(int cgroup_fd)
160150
if (!ASSERT_OK_PTR(link_setsockopt, "cg-attach-setsockopt"))
161151
goto close_bpf_object;
162152

163-
server_fd = start_server();
153+
server_fd = start_server_addr(SOCK_STREAM, (struct sockaddr_storage *)&addr,
154+
sizeof(addr), &opts);
164155
if (!ASSERT_GE(server_fd, 0, "start_server"))
165156
goto close_bpf_object;
166157

0 commit comments

Comments
 (0)