]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
selftests/bpf: Use connect_to_addr in connect_to_fd_opt
authorGeliang Tang <tanggeliang@kylinos.cn>
Fri, 21 Jun 2024 02:15:59 +0000 (10:15 +0800)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 21 Jun 2024 03:42:44 +0000 (20:42 -0700)
This patch moves "post_socket_cb" and "noconnect" into connect_to_addr(),
then connect_to_fd_opts() can be implemented by getsockname() and
connect_to_addr(). This change makes connect_to_* interfaces more unified.

Acked-by: Eduard Zingerman <eddyz87@gmail.com>
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
Link: https://lore.kernel.org/r/4569c30533e14c22fae6c05070aad809720551c1.1718932493.git.tanggeliang@kylinos.cn
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/network_helpers.c

index c0646d5a4283463dd82ce0ddea8cfa7361c52480..5d1b4f165def1d35c9a9c399b04006126f0532eb 100644 (file)
@@ -293,9 +293,14 @@ int connect_to_addr(int type, const struct sockaddr_storage *addr, socklen_t add
        if (settimeo(fd, opts->timeout_ms))
                goto error_close;
 
-       if (connect_fd_to_addr(fd, addr, addrlen, opts->must_fail))
+       if (opts->post_socket_cb &&
+           opts->post_socket_cb(fd, opts->cb_opts))
                goto error_close;
 
+       if (!opts->noconnect)
+               if (connect_fd_to_addr(fd, addr, addrlen, opts->must_fail))
+                       goto error_close;
+
        return fd;
 
 error_close:
@@ -306,9 +311,7 @@ error_close:
 int connect_to_fd_opts(int server_fd, int type, const struct network_helper_opts *opts)
 {
        struct sockaddr_storage addr;
-       struct sockaddr_in *addr_in;
        socklen_t addrlen;
-       int fd;
 
        if (!opts)
                opts = &default_opts;
@@ -319,29 +322,7 @@ int connect_to_fd_opts(int server_fd, int type, const struct network_helper_opts
                return -1;
        }
 
-       addr_in = (struct sockaddr_in *)&addr;
-       fd = socket(addr_in->sin_family, type, opts->proto);
-       if (fd < 0) {
-               log_err("Failed to create client socket");
-               return -1;
-       }
-
-       if (settimeo(fd, opts->timeout_ms))
-               goto error_close;
-
-       if (opts->post_socket_cb &&
-           opts->post_socket_cb(fd, opts->cb_opts))
-               goto error_close;
-
-       if (!opts->noconnect)
-               if (connect_fd_to_addr(fd, &addr, addrlen, opts->must_fail))
-                       goto error_close;
-
-       return fd;
-
-error_close:
-       save_errno_close(fd);
-       return -1;
+       return connect_to_addr(type, &addr, addrlen, opts);
 }
 
 int connect_to_fd(int server_fd, int timeout_ms)