From: Geliang Tang <tanggeliang@xxxxxxxxxx> Since "type" is a struct member of network_helper_opts, it makes sense to drop the "type" parameter of connect_to_addr() helper, using opts->type instead in this helper. If no network_helper_opts is set, use SOCK_STREAM as default socket type. Signed-off-by: Geliang Tang <tanggeliang@xxxxxxxxxx> --- tools/testing/selftests/bpf/network_helpers.c | 4 ++-- tools/testing/selftests/bpf/network_helpers.h | 2 +- .../selftests/bpf/prog_tests/cls_redirect.c | 2 +- .../selftests/bpf/prog_tests/sk_assign.c | 5 +++- .../selftests/bpf/prog_tests/sock_addr.c | 23 ++++++++++++------- 5 files changed, 23 insertions(+), 13 deletions(-) diff --git a/tools/testing/selftests/bpf/network_helpers.c b/tools/testing/selftests/bpf/network_helpers.c index 129ac90e4528..49e807ffcccb 100644 --- a/tools/testing/selftests/bpf/network_helpers.c +++ b/tools/testing/selftests/bpf/network_helpers.c @@ -268,7 +268,7 @@ static int connect_fd_to_addr(int fd, return 0; } -int connect_to_addr(int type, const struct sockaddr_storage *addr, socklen_t addrlen, +int connect_to_addr(const struct sockaddr_storage *addr, socklen_t addrlen, const struct network_helper_opts *opts) { int fd; @@ -276,7 +276,7 @@ int connect_to_addr(int type, const struct sockaddr_storage *addr, socklen_t add if (!opts) opts = &default_opts; - fd = socket(addr->ss_family, type, opts->proto); + fd = socket(addr->ss_family, opts->type ? : SOCK_STREAM, opts->proto); if (fd < 0) { log_err("Failed to create client socket"); return -1; diff --git a/tools/testing/selftests/bpf/network_helpers.h b/tools/testing/selftests/bpf/network_helpers.h index 9de84a8d00fd..c925c771bd98 100644 --- a/tools/testing/selftests/bpf/network_helpers.h +++ b/tools/testing/selftests/bpf/network_helpers.h @@ -56,7 +56,7 @@ int *start_reuseport_server(int family, int type, const char *addr_str, int start_server_addr(const struct sockaddr_storage *addr, socklen_t len, const struct network_helper_opts *opts); void free_fds(int *fds, unsigned int nr_close_fds); -int connect_to_addr(int type, const struct sockaddr_storage *addr, socklen_t len, +int connect_to_addr(const struct sockaddr_storage *addr, socklen_t len, const struct network_helper_opts *opts); int connect_to_fd(int server_fd, int timeout_ms); int connect_to_fd_opts(int server_fd, const struct network_helper_opts *opts); diff --git a/tools/testing/selftests/bpf/prog_tests/cls_redirect.c b/tools/testing/selftests/bpf/prog_tests/cls_redirect.c index 53b81651a6fa..1f1b9f0c2ffc 100644 --- a/tools/testing/selftests/bpf/prog_tests/cls_redirect.c +++ b/tools/testing/selftests/bpf/prog_tests/cls_redirect.c @@ -76,7 +76,7 @@ static bool set_up_conn(const struct sockaddr *addr, socklen_t len, int type, if (CHECK_FAIL(getsockname(*server, sa, &slen))) goto close_server; - *conn = connect_to_addr(type, (struct sockaddr_storage *)sa, slen, NULL); + *conn = connect_to_addr((struct sockaddr_storage *)sa, slen, &opts); if (*conn < 0) goto close_server; diff --git a/tools/testing/selftests/bpf/prog_tests/sk_assign.c b/tools/testing/selftests/bpf/prog_tests/sk_assign.c index 517d1186e386..91f65b407f3a 100644 --- a/tools/testing/selftests/bpf/prog_tests/sk_assign.c +++ b/tools/testing/selftests/bpf/prog_tests/sk_assign.c @@ -109,12 +109,15 @@ rcv_msg(int srv_client, int type) static int run_test(int server_fd, const struct sockaddr *addr, socklen_t len, int type) { + struct network_helper_opts opts = { + .type = type, + }; int client = -1, srv_client = -1; char buf[] = "testing"; in_port_t port; int ret = 1; - client = connect_to_addr(type, (struct sockaddr_storage *)addr, len, NULL); + client = connect_to_addr((struct sockaddr_storage *)addr, len, &opts); if (client == -1) { perror("Cannot connect to server"); goto out; diff --git a/tools/testing/selftests/bpf/prog_tests/sock_addr.c b/tools/testing/selftests/bpf/prog_tests/sock_addr.c index b880c564a204..244686d582cb 100644 --- a/tools/testing/selftests/bpf/prog_tests/sock_addr.c +++ b/tools/testing/selftests/bpf/prog_tests/sock_addr.c @@ -224,12 +224,12 @@ static int kernel_getpeername(int fd, struct sockaddr *addr, socklen_t *addrlen) return sock_addr_op("kernel_getpeername", addr, addrlen, true); } -int kernel_connect_to_addr(int type, const struct sockaddr_storage *addr, socklen_t addrlen, +int kernel_connect_to_addr(const struct sockaddr_storage *addr, socklen_t addrlen, const struct network_helper_opts *opts) { int err; - if (!ASSERT_OK(kernel_init_sock(addr->ss_family, type, 0), + if (!ASSERT_OK(kernel_init_sock(addr->ss_family, opts->type, 0), "kernel_init_sock")) goto err; @@ -278,7 +278,7 @@ int kernel_start_server(int family, int type, const char *addr_str, __u16 port, } struct sock_ops { - int (*connect_to_addr)(int type, const struct sockaddr_storage *addr, + int (*connect_to_addr)(const struct sockaddr_storage *addr, socklen_t addrlen, const struct network_helper_opts *opts); int (*start_server)(int family, int type, const char *addr_str, @@ -2284,6 +2284,9 @@ static int test_bind(struct sock_addr_test *test) { struct sockaddr_storage expected_addr; socklen_t expected_addr_len = sizeof(struct sockaddr_storage); + struct network_helper_opts opts = { + .type = test->socket_type, + }; int serv = -1, client = -1, err; serv = test->ops->start_server(test->socket_family, test->socket_type, @@ -2306,7 +2309,7 @@ static int test_bind(struct sock_addr_test *test) goto cleanup; /* Try to connect to server just in case */ - client = connect_to_addr(test->socket_type, &expected_addr, expected_addr_len, NULL); + client = connect_to_addr(&expected_addr, expected_addr_len, &opts); if (!ASSERT_GE(client, 0, "connect_to_addr")) goto cleanup; @@ -2327,6 +2330,9 @@ static int test_connect(struct sock_addr_test *test) socklen_t addr_len = sizeof(struct sockaddr_storage), expected_addr_len = sizeof(struct sockaddr_storage), expected_src_addr_len = sizeof(struct sockaddr_storage); + struct network_helper_opts opts = { + .type = test->socket_type, + }; int serv = -1, client = -1, err; serv = start_server(test->socket_family, test->socket_type, @@ -2339,8 +2345,7 @@ static int test_connect(struct sock_addr_test *test) if (!ASSERT_EQ(err, 0, "make_sockaddr")) goto cleanup; - client = test->ops->connect_to_addr(test->socket_type, &addr, addr_len, - NULL); + client = test->ops->connect_to_addr(&addr, addr_len, &opts); if (client < 0) { err = errno; goto err; @@ -2519,6 +2524,9 @@ static int test_getpeername(struct sock_addr_test *test) struct sockaddr_storage addr, expected_addr; socklen_t addr_len = sizeof(struct sockaddr_storage), expected_addr_len = sizeof(struct sockaddr_storage); + struct network_helper_opts opts = { + .type = test->socket_type, + }; int serv = -1, client = -1, err; serv = start_server(test->socket_family, test->socket_type, @@ -2531,8 +2539,7 @@ static int test_getpeername(struct sock_addr_test *test) if (!ASSERT_EQ(err, 0, "make_sockaddr")) goto cleanup; - client = test->ops->connect_to_addr(test->socket_type, &addr, addr_len, - NULL); + client = test->ops->connect_to_addr(&addr, addr_len, &opts); if (!ASSERT_GE(client, 0, "connect_to_addr")) goto cleanup; -- 2.43.0