mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 04:31:50 +00:00
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>
This commit is contained in:
parent
20434d2d89
commit
5166b3e3e3
@ -1,6 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include <test_progs.h>
|
||||
#include "cgroup_helpers.h"
|
||||
#include "network_helpers.h"
|
||||
|
||||
#include "sockopt_inherit.skel.h"
|
||||
|
||||
@ -98,47 +99,36 @@ static void *server_thread(void *arg)
|
||||
return (void *)(long)err;
|
||||
}
|
||||
|
||||
static int start_server(void)
|
||||
static int custom_cb(int fd, const struct post_socket_opts *opts)
|
||||
{
|
||||
struct sockaddr_in addr = {
|
||||
.sin_family = AF_INET,
|
||||
.sin_addr.s_addr = htonl(INADDR_LOOPBACK),
|
||||
};
|
||||
char buf;
|
||||
int err;
|
||||
int fd;
|
||||
int i;
|
||||
|
||||
fd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (fd < 0) {
|
||||
log_err("Failed to create server socket");
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (i = CUSTOM_INHERIT1; i <= CUSTOM_LISTENER; i++) {
|
||||
buf = 0x01;
|
||||
err = setsockopt(fd, SOL_CUSTOM, i, &buf, 1);
|
||||
if (err) {
|
||||
log_err("Failed to call setsockopt(%d)", i);
|
||||
close(fd);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (bind(fd, (const struct sockaddr *)&addr, sizeof(addr)) < 0) {
|
||||
log_err("Failed to bind socket");
|
||||
close(fd);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return fd;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void run_test(int cgroup_fd)
|
||||
{
|
||||
struct bpf_link *link_getsockopt = NULL;
|
||||
struct bpf_link *link_setsockopt = NULL;
|
||||
struct network_helper_opts opts = {
|
||||
.post_socket_cb = custom_cb,
|
||||
};
|
||||
int server_fd = -1, client_fd;
|
||||
struct sockaddr_in addr = {
|
||||
.sin_family = AF_INET,
|
||||
.sin_addr.s_addr = htonl(INADDR_LOOPBACK),
|
||||
};
|
||||
struct sockopt_inherit *obj;
|
||||
void *server_err;
|
||||
pthread_t tid;
|
||||
@ -160,7 +150,8 @@ static void run_test(int cgroup_fd)
|
||||
if (!ASSERT_OK_PTR(link_setsockopt, "cg-attach-setsockopt"))
|
||||
goto close_bpf_object;
|
||||
|
||||
server_fd = start_server();
|
||||
server_fd = start_server_addr(SOCK_STREAM, (struct sockaddr_storage *)&addr,
|
||||
sizeof(addr), &opts);
|
||||
if (!ASSERT_GE(server_fd, 0, "start_server"))
|
||||
goto close_bpf_object;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user