Re: [PATCH bpf-next v3 4/5] selftests/bpf: Use connect_to_addr_str in sk_lookup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 7/17/24 11:22 PM, Geliang Tang wrote:
From: Geliang Tang <tanggeliang@xxxxxxxxxx>

This patch uses the new helper connect_to_addr_str() in make_client()
instead of using local defined function make_socket() + connect(). This
local function can be dropped latter.

A new parameter "expect_errno" is added for make_client() too to allow
different "expect_errno" is passed to make_client(). It is used to check
with "errno" after invoking connect_to_addr_str().

Signed-off-by: Geliang Tang <tanggeliang@xxxxxxxxxx>
---
  .../selftests/bpf/prog_tests/sk_lookup.c      | 26 +++++++------------
  1 file changed, 10 insertions(+), 16 deletions(-)

diff --git a/tools/testing/selftests/bpf/prog_tests/sk_lookup.c b/tools/testing/selftests/bpf/prog_tests/sk_lookup.c
index ae87c00867ba..beea7866b37f 100644
--- a/tools/testing/selftests/bpf/prog_tests/sk_lookup.c
+++ b/tools/testing/selftests/bpf/prog_tests/sk_lookup.c
@@ -229,25 +229,19 @@ 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, int expect_errno)
  {
-	struct sockaddr_storage addr = {0};
-	int err, fd;
-
-	fd = make_socket(sotype, ip, port, &addr);
-	if (fd < 0)
-		return -1;
+	int fd;
- err = connect(fd, (void *)&addr, inetaddr_len(&addr));
-	if (CHECK(err, "make_client", "connect")) {
+	fd = connect_to_addr_str(is_ipv6(ip) ? AF_INET6 : AF_INET,
+				 sotype, ip, port, NULL);
+	if (CHECK(fd < 0 && (!expect_errno || errno != expect_errno),
+		  "make_client", "connect_to_addr_str")) {
  		log_err("failed to connect client socket");
-		goto fail;
+		return -1;
  	}
return fd;
-fail:
-	close(fd);
-	return -1;
  }
static __u64 socket_cookie(int fd)
@@ -646,7 +640,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;
@@ -1152,7 +1146,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;
@@ -1166,7 +1160,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);

No errno is expected in all these cases. directly call connect_to_addr_str() instead of calling make_client.

  	if (client_fd < 0)
  		goto out_unlink_prog;
  	if (sotype == SOCK_DGRAM) {





[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux