From: Geliang Tang <[email protected]>

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.

Signed-off-by: Geliang Tang <[email protected]>
---
 tools/testing/selftests/bpf/network_helpers.c | 47 ++++---------------
 1 file changed, 8 insertions(+), 39 deletions(-)

diff --git a/tools/testing/selftests/bpf/network_helpers.c 
b/tools/testing/selftests/bpf/network_helpers.c
index c0efccaae488..028dfe9001e4 100644
--- a/tools/testing/selftests/bpf/network_helpers.c
+++ b/tools/testing/selftests/bpf/network_helpers.c
@@ -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,21 +311,7 @@ int connect_to_addr(int type, const struct 
sockaddr_storage *addr, socklen_t add
 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, optlen;
-       int fd, protocol;
-
-       if (!opts)
-               opts = &default_opts;
-
-       if (opts->proto) {
-               protocol = opts->proto;
-       } else {
-               if (getsockopt(server_fd, SOL_SOCKET, SO_PROTOCOL, &protocol, 
&optlen)) {
-                       log_err("getsockopt(SOL_PROTOCOL)");
-                       return -1;
-               }
-       }
+       socklen_t addrlen;
 
        addrlen = sizeof(addr);
        if (getsockname(server_fd, (struct sockaddr *)&addr, &addrlen)) {
@@ -328,29 +319,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, protocol);
-       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)
-- 
2.43.0


Reply via email to