@@ -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;
@@ -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);
@@ -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;
@@ -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;
@@ -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;