From: Geliang Tang <[email protected]>

Add a new parameter expect_errno for make_client(), and use public network
helpers make_sockaddr() + connect_to_addr() in it instead of using local
defined function make_socket() + connect(). This local function can be
dropped latter.

Signed-off-by: Geliang Tang <[email protected]>
---
 .../selftests/bpf/prog_tests/sk_lookup.c      | 46 +++++++++----------
 1 file changed, 23 insertions(+), 23 deletions(-)

diff --git a/tools/testing/selftests/bpf/prog_tests/sk_lookup.c 
b/tools/testing/selftests/bpf/prog_tests/sk_lookup.c
index d03ea3e64a2e..f9b8415c16a6 100644
--- a/tools/testing/selftests/bpf/prog_tests/sk_lookup.c
+++ b/tools/testing/selftests/bpf/prog_tests/sk_lookup.c
@@ -229,25 +229,27 @@ static int make_server(int sotype, const char *ip, int 
port,
        return -1;
 }
 
-static int make_client(int sotype, const char *ip, int port)
+static int make_client(int sotype, const char *ip, int port,
+                      const int expect_errno)
 {
-       struct sockaddr_storage addr = {0};
+       int family = is_ipv6(ip) ? AF_INET6 : AF_INET;
+       struct network_helper_opts opts = {
+               .timeout_ms     = IO_TIMEOUT_SEC,
+               .expect_errno   = expect_errno,
+       };
+       struct sockaddr_storage addr;
+       socklen_t len;
        int err, fd;
 
-       fd = make_socket(sotype, ip, port, &addr);
-       if (fd < 0)
+       err = make_sockaddr(family, ip, port, &addr, &len);
+       if (!ASSERT_OK(err, "make_sockaddr"))
                return -1;
 
-       err = connect(fd, (void *)&addr, inetaddr_len(&addr));
-       if (CHECK(err, "make_client", "connect")) {
-               log_err("failed to connect client socket");
-               goto fail;
-       }
+       fd = connect_to_addr(sotype, &addr, len, &opts);
+       if (!ASSERT_GE(fd, 0, "connect_to_addr"))
+               return -1;
 
        return fd;
-fail:
-       close(fd);
-       return -1;
 }
 
 static __u64 socket_cookie(int fd)
@@ -658,7 +660,7 @@ static void run_lookup_prog(const struct test *t)
                        goto close;
        }
 
-       client_fd = make_client(t->sotype, t->connect_to.ip, 
t->connect_to.port);
+       client_fd = make_client(t->sotype, t->connect_to.ip, 
t->connect_to.port, 0);
        if (client_fd < 0)
                goto close;
 
@@ -874,7 +876,6 @@ static void test_redirect_lookup(struct test_sk_lookup 
*skel)
 
 static void drop_on_lookup(const struct test *t)
 {
-       struct sockaddr_storage dst = {};
        int client_fd, server_fd, err;
        struct bpf_link *lookup_link;
        ssize_t n;
@@ -888,12 +889,12 @@ static void drop_on_lookup(const struct test *t)
        if (server_fd < 0)
                goto detach;
 
-       client_fd = make_socket(t->sotype, t->connect_to.ip,
-                               t->connect_to.port, &dst);
+       client_fd = make_client(t->sotype, t->connect_to.ip,
+                               t->connect_to.port, ECONNREFUSED);
        if (client_fd < 0)
                goto close_srv;
 
-       err = connect(client_fd, (void *)&dst, inetaddr_len(&dst));
+       err = -1;
        if (t->sotype == SOCK_DGRAM) {
                err = send_byte(client_fd);
                if (err)
@@ -988,7 +989,6 @@ static void test_drop_on_lookup(struct test_sk_lookup *skel)
 
 static void drop_on_reuseport(const struct test *t)
 {
-       struct sockaddr_storage dst = { 0 };
        int client, server1, server2, err;
        struct bpf_link *lookup_link;
        ssize_t n;
@@ -1012,12 +1012,12 @@ static void drop_on_reuseport(const struct test *t)
        if (server2 < 0)
                goto close_srv1;
 
-       client = make_socket(t->sotype, t->connect_to.ip,
-                            t->connect_to.port, &dst);
+       client = make_client(t->sotype, t->connect_to.ip,
+                            t->connect_to.port, ECONNREFUSED);
        if (client < 0)
                goto close_srv2;
 
-       err = connect(client, (void *)&dst, inetaddr_len(&dst));
+       err = -1;
        if (t->sotype == SOCK_DGRAM) {
                err = send_byte(client);
                if (err)
@@ -1164,7 +1164,7 @@ static void run_sk_assign_connected(struct test_sk_lookup 
*skel,
        if (server_fd < 0)
                return;
 
-       connected_fd = make_client(sotype, EXT_IP4, EXT_PORT);
+       connected_fd = make_client(sotype, EXT_IP4, EXT_PORT, 0);
        if (connected_fd < 0)
                goto out_close_server;
 
@@ -1178,7 +1178,7 @@ static void run_sk_assign_connected(struct test_sk_lookup 
*skel,
                goto out_close_connected;
 
        /* Try to redirect TCP SYN / UDP packet to a connected socket */
-       client_fd = make_client(sotype, EXT_IP4, EXT_PORT);
+       client_fd = make_client(sotype, EXT_IP4, EXT_PORT, 0);
        if (client_fd < 0)
                goto out_unlink_prog;
        if (sotype == SOCK_DGRAM) {
-- 
2.43.0


Reply via email to