BPF List
 help / color / mirror / Atom feed
* [PATCH bpf-next 0/5] use network helpers, part 7
@ 2024-06-11  1:59 Geliang Tang
  2024-06-11  1:59 ` [PATCH bpf-next 1/5] selftests/bpf: Drop type from network_helper_opts Geliang Tang
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Geliang Tang @ 2024-06-11  1:59 UTC (permalink / raw)
  To: Andrii Nakryiko, Eduard Zingerman, Mykola Lysenko,
	Alexei Starovoitov, Daniel Borkmann, Martin KaFai Lau, Song Liu,
	Yonghong Song, John Fastabend, KP Singh, Stanislav Fomichev,
	Hao Luo, Jiri Olsa, Shuah Khan
  Cc: Geliang Tang, bpf, linux-kselftest

From: Geliang Tang <tanggeliang@kylinos.cn>

Drop type, noconnect and must_fail from network_helper_opts. And use
start_server_str in mptcp and test_tcp_check_syncookie_user.

Patches 1-3 address Martin's comments in the previous series.

Geliang Tang (5):
  selftests/bpf: Drop type from network_helper_opts
  selftests/bpf: Drop noconnect from network_helper_opts
  selftests/bpf: Drop must_fail from network_helper_opts
  selftests/bpf: Use start_server_str in mptcp
  selftests/bpf: Use start_server_str in test_tcp_check_syncookie_user

 tools/testing/selftests/bpf/network_helpers.c | 20 ++++++++-----
 tools/testing/selftests/bpf/network_helpers.h |  5 ++--
 .../selftests/bpf/prog_tests/cgroup_v1v2.c    |  5 +---
 .../bpf/prog_tests/ip_check_defrag.c          |  7 ++---
 .../testing/selftests/bpf/prog_tests/mptcp.c  |  7 +----
 .../bpf/test_tcp_check_syncookie_user.c       | 29 ++-----------------
 6 files changed, 21 insertions(+), 52 deletions(-)

-- 
2.43.0


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH bpf-next 1/5] selftests/bpf: Drop type from network_helper_opts
  2024-06-11  1:59 [PATCH bpf-next 0/5] use network helpers, part 7 Geliang Tang
@ 2024-06-11  1:59 ` Geliang Tang
  2024-06-11 21:20   ` Eduard Zingerman
  2024-06-11  1:59 ` [PATCH bpf-next 2/5] selftests/bpf: Drop noconnect " Geliang Tang
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 10+ messages in thread
From: Geliang Tang @ 2024-06-11  1:59 UTC (permalink / raw)
  To: Andrii Nakryiko, Eduard Zingerman, Mykola Lysenko,
	Alexei Starovoitov, Daniel Borkmann, Martin KaFai Lau, Song Liu,
	Yonghong Song, John Fastabend, KP Singh, Stanislav Fomichev,
	Hao Luo, Jiri Olsa, Shuah Khan
  Cc: Geliang Tang, bpf, linux-kselftest

From: Geliang Tang <tanggeliang@kylinos.cn>

The opts.{type, noconnect, must_fail} is at least a bit non intuitive or
unnecessary. The only use case now is in test_bpf_ip_check_defrag_ok which
ends up bypassing most (or at least some) of the connect_to_fd_opts()
logic. It's much better that test should have its own connect_to_fd_opts()
instead.

This patch adds a new helper named __connect_to_fd_opts() to do this. It
accepts a new "type" parameter, then opts->type can be replaced by "type"
parameter in this helper. In test_bpf_ip_check_defrag_ok, different types
are passed to it. And the strcut member "type" of network_helper_opts can
be dropped now.

Then connect_to_fd_opts can implement as a wrapper of this new helper.

Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
 tools/testing/selftests/bpf/network_helpers.c      | 14 +++++++++-----
 tools/testing/selftests/bpf/network_helpers.h      |  3 ++-
 .../selftests/bpf/prog_tests/ip_check_defrag.c     |  5 ++---
 3 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/tools/testing/selftests/bpf/network_helpers.c b/tools/testing/selftests/bpf/network_helpers.c
index e20caef06aae..902060a70e3b 100644
--- a/tools/testing/selftests/bpf/network_helpers.c
+++ b/tools/testing/selftests/bpf/network_helpers.c
@@ -303,21 +303,20 @@ int connect_to_addr(int type, const struct sockaddr_storage *addr, socklen_t add
 	return -1;
 }
 
-int connect_to_fd_opts(int server_fd, const struct network_helper_opts *opts)
+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, type, protocol;
+	int fd, protocol;
 
 	if (!opts)
 		opts = &default_opts;
 
 	optlen = sizeof(type);
 
-	if (opts->type) {
-		type = opts->type;
-	} else {
+	if (!type) {
 		if (getsockopt(server_fd, SOL_SOCKET, SO_TYPE, &type, &optlen)) {
 			log_err("getsockopt(SOL_TYPE)");
 			return -1;
@@ -364,6 +363,11 @@ int connect_to_fd_opts(int server_fd, const struct network_helper_opts *opts)
 	return -1;
 }
 
+int connect_to_fd_opts(int server_fd, const struct network_helper_opts *opts)
+{
+	return __connect_to_fd_opts(server_fd, 0, opts);
+}
+
 int connect_to_fd(int server_fd, int timeout_ms)
 {
 	struct network_helper_opts opts = {
diff --git a/tools/testing/selftests/bpf/network_helpers.h b/tools/testing/selftests/bpf/network_helpers.h
index 11eea8e2e4f1..9a7cbea87967 100644
--- a/tools/testing/selftests/bpf/network_helpers.h
+++ b/tools/testing/selftests/bpf/network_helpers.h
@@ -25,7 +25,6 @@ struct network_helper_opts {
 	int timeout_ms;
 	bool must_fail;
 	bool noconnect;
-	int type;
 	int proto;
 	int (*post_socket_cb)(int fd, void *opts);
 	void *cb_opts;
@@ -61,6 +60,8 @@ void free_fds(int *fds, unsigned int nr_close_fds);
 int connect_to_addr(int type, 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, int type,
+			 const struct network_helper_opts *opts);
 int connect_to_fd_opts(int server_fd, const struct network_helper_opts *opts);
 int connect_fd_to_fd(int client_fd, int server_fd, int timeout_ms);
 int fastopen_connect(int server_fd, const char *data, unsigned int data_len,
diff --git a/tools/testing/selftests/bpf/prog_tests/ip_check_defrag.c b/tools/testing/selftests/bpf/prog_tests/ip_check_defrag.c
index 284764e7179f..30349c866c77 100644
--- a/tools/testing/selftests/bpf/prog_tests/ip_check_defrag.c
+++ b/tools/testing/selftests/bpf/prog_tests/ip_check_defrag.c
@@ -164,7 +164,6 @@ void test_bpf_ip_check_defrag_ok(bool ipv6)
 	};
 	struct network_helper_opts tx_ops = {
 		.timeout_ms = 1000,
-		.type = SOCK_RAW,
 		.proto = IPPROTO_RAW,
 		.noconnect = true,
 	};
@@ -201,7 +200,7 @@ void test_bpf_ip_check_defrag_ok(bool ipv6)
 	nstoken = open_netns(NS0);
 	if (!ASSERT_OK_PTR(nstoken, "setns ns0"))
 		goto out;
-	client_tx_fd = connect_to_fd_opts(srv_fd, &tx_ops);
+	client_tx_fd = __connect_to_fd_opts(srv_fd, SOCK_RAW, &tx_ops);
 	close_netns(nstoken);
 	if (!ASSERT_GE(client_tx_fd, 0, "connect_to_fd_opts"))
 		goto out;
@@ -210,7 +209,7 @@ void test_bpf_ip_check_defrag_ok(bool ipv6)
 	nstoken = open_netns(NS0);
 	if (!ASSERT_OK_PTR(nstoken, "setns ns0"))
 		goto out;
-	client_rx_fd = connect_to_fd_opts(srv_fd, &rx_opts);
+	client_rx_fd = __connect_to_fd_opts(srv_fd, 0, &rx_opts);
 	close_netns(nstoken);
 	if (!ASSERT_GE(client_rx_fd, 0, "connect_to_fd_opts"))
 		goto out;
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH bpf-next 2/5] selftests/bpf: Drop noconnect from network_helper_opts
  2024-06-11  1:59 [PATCH bpf-next 0/5] use network helpers, part 7 Geliang Tang
  2024-06-11  1:59 ` [PATCH bpf-next 1/5] selftests/bpf: Drop type from network_helper_opts Geliang Tang
@ 2024-06-11  1:59 ` Geliang Tang
  2024-06-11  1:59 ` [PATCH bpf-next 3/5] selftests/bpf: Drop must_fail " Geliang Tang
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Geliang Tang @ 2024-06-11  1:59 UTC (permalink / raw)
  To: Andrii Nakryiko, Eduard Zingerman, Mykola Lysenko,
	Alexei Starovoitov, Daniel Borkmann, Martin KaFai Lau, Song Liu,
	Yonghong Song, John Fastabend, KP Singh, Stanislav Fomichev,
	Hao Luo, Jiri Olsa, Shuah Khan
  Cc: Geliang Tang, bpf, linux-kselftest

From: Geliang Tang <tanggeliang@kylinos.cn>

This patch adds another new parameter "noconnect" for __connect_to_fd_opts,
then opts->noconnect can be replaced by "noconnect" parameter in it. In
test_bpf_ip_check_defrag_ok(), true is passed to it. And the strcut member
"noconnect" of network_helper_opts can be dropped now.

Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
 tools/testing/selftests/bpf/network_helpers.c            | 6 +++---
 tools/testing/selftests/bpf/network_helpers.h            | 3 +--
 tools/testing/selftests/bpf/prog_tests/ip_check_defrag.c | 6 ++----
 3 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/tools/testing/selftests/bpf/network_helpers.c b/tools/testing/selftests/bpf/network_helpers.c
index 902060a70e3b..0f53638ae5a0 100644
--- a/tools/testing/selftests/bpf/network_helpers.c
+++ b/tools/testing/selftests/bpf/network_helpers.c
@@ -303,7 +303,7 @@ int connect_to_addr(int type, const struct sockaddr_storage *addr, socklen_t add
 	return -1;
 }
 
-int __connect_to_fd_opts(int server_fd, int type,
+int __connect_to_fd_opts(int server_fd, int type, bool noconnect,
 			 const struct network_helper_opts *opts)
 {
 	struct sockaddr_storage addr;
@@ -352,7 +352,7 @@ int __connect_to_fd_opts(int server_fd, int type,
 	    opts->post_socket_cb(fd, opts->cb_opts))
 		goto error_close;
 
-	if (!opts->noconnect)
+	if (!noconnect)
 		if (connect_fd_to_addr(fd, &addr, addrlen, opts->must_fail))
 			goto error_close;
 
@@ -365,7 +365,7 @@ int __connect_to_fd_opts(int server_fd, int type,
 
 int connect_to_fd_opts(int server_fd, const struct network_helper_opts *opts)
 {
-	return __connect_to_fd_opts(server_fd, 0, opts);
+	return __connect_to_fd_opts(server_fd, 0, false, opts);
 }
 
 int connect_to_fd(int server_fd, int timeout_ms)
diff --git a/tools/testing/selftests/bpf/network_helpers.h b/tools/testing/selftests/bpf/network_helpers.h
index 9a7cbea87967..e029d4ff983e 100644
--- a/tools/testing/selftests/bpf/network_helpers.h
+++ b/tools/testing/selftests/bpf/network_helpers.h
@@ -24,7 +24,6 @@ typedef __u16 __sum16;
 struct network_helper_opts {
 	int timeout_ms;
 	bool must_fail;
-	bool noconnect;
 	int proto;
 	int (*post_socket_cb)(int fd, void *opts);
 	void *cb_opts;
@@ -60,7 +59,7 @@ void free_fds(int *fds, unsigned int nr_close_fds);
 int connect_to_addr(int type, 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, int type,
+int __connect_to_fd_opts(int server_fd, int type, bool noconnect,
 			 const struct network_helper_opts *opts);
 int connect_to_fd_opts(int server_fd, const struct network_helper_opts *opts);
 int connect_fd_to_fd(int client_fd, int server_fd, int timeout_ms);
diff --git a/tools/testing/selftests/bpf/prog_tests/ip_check_defrag.c b/tools/testing/selftests/bpf/prog_tests/ip_check_defrag.c
index 30349c866c77..330dfba95c56 100644
--- a/tools/testing/selftests/bpf/prog_tests/ip_check_defrag.c
+++ b/tools/testing/selftests/bpf/prog_tests/ip_check_defrag.c
@@ -160,12 +160,10 @@ void test_bpf_ip_check_defrag_ok(bool ipv6)
 {
 	struct network_helper_opts rx_opts = {
 		.timeout_ms = 1000,
-		.noconnect = true,
 	};
 	struct network_helper_opts tx_ops = {
 		.timeout_ms = 1000,
 		.proto = IPPROTO_RAW,
-		.noconnect = true,
 	};
 	struct sockaddr_storage caddr;
 	struct ip_check_defrag *skel;
@@ -200,7 +198,7 @@ void test_bpf_ip_check_defrag_ok(bool ipv6)
 	nstoken = open_netns(NS0);
 	if (!ASSERT_OK_PTR(nstoken, "setns ns0"))
 		goto out;
-	client_tx_fd = __connect_to_fd_opts(srv_fd, SOCK_RAW, &tx_ops);
+	client_tx_fd = __connect_to_fd_opts(srv_fd, SOCK_RAW, true, &tx_ops);
 	close_netns(nstoken);
 	if (!ASSERT_GE(client_tx_fd, 0, "connect_to_fd_opts"))
 		goto out;
@@ -209,7 +207,7 @@ void test_bpf_ip_check_defrag_ok(bool ipv6)
 	nstoken = open_netns(NS0);
 	if (!ASSERT_OK_PTR(nstoken, "setns ns0"))
 		goto out;
-	client_rx_fd = __connect_to_fd_opts(srv_fd, 0, &rx_opts);
+	client_rx_fd = __connect_to_fd_opts(srv_fd, 0, true, &rx_opts);
 	close_netns(nstoken);
 	if (!ASSERT_GE(client_rx_fd, 0, "connect_to_fd_opts"))
 		goto out;
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH bpf-next 3/5] selftests/bpf: Drop must_fail from network_helper_opts
  2024-06-11  1:59 [PATCH bpf-next 0/5] use network helpers, part 7 Geliang Tang
  2024-06-11  1:59 ` [PATCH bpf-next 1/5] selftests/bpf: Drop type from network_helper_opts Geliang Tang
  2024-06-11  1:59 ` [PATCH bpf-next 2/5] selftests/bpf: Drop noconnect " Geliang Tang
@ 2024-06-11  1:59 ` Geliang Tang
  2024-06-11  1:59 ` [PATCH bpf-next 4/5] selftests/bpf: Use start_server_str in mptcp Geliang Tang
  2024-06-11  1:59 ` [PATCH bpf-next 5/5] selftests/bpf: Use start_server_str in test_tcp_check_syncookie_user Geliang Tang
  4 siblings, 0 replies; 10+ messages in thread
From: Geliang Tang @ 2024-06-11  1:59 UTC (permalink / raw)
  To: Andrii Nakryiko, Eduard Zingerman, Mykola Lysenko,
	Alexei Starovoitov, Daniel Borkmann, Martin KaFai Lau, Song Liu,
	Yonghong Song, John Fastabend, KP Singh, Stanislav Fomichev,
	Hao Luo, Jiri Olsa, Shuah Khan
  Cc: Geliang Tang, bpf, linux-kselftest

From: Geliang Tang <tanggeliang@kylinos.cn>

This patch adds another new parameter "must_fail" for __connect_to_fd_opts,
then opts->must_fail can be replaced by "must_fail" parameter in it. In
run_test() of cgroup_v1v2, true is passed to it, while false is passed in
other places. And the strcut member "must_fail" of network_helper_opts can
be dropped now.

Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
 tools/testing/selftests/bpf/network_helpers.c            | 8 ++++----
 tools/testing/selftests/bpf/network_helpers.h            | 3 +--
 tools/testing/selftests/bpf/prog_tests/cgroup_v1v2.c     | 5 +----
 tools/testing/selftests/bpf/prog_tests/ip_check_defrag.c | 4 ++--
 4 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/tools/testing/selftests/bpf/network_helpers.c b/tools/testing/selftests/bpf/network_helpers.c
index 0f53638ae5a0..1c4c783719b7 100644
--- a/tools/testing/selftests/bpf/network_helpers.c
+++ b/tools/testing/selftests/bpf/network_helpers.c
@@ -293,7 +293,7 @@ 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 (connect_fd_to_addr(fd, addr, addrlen, false))
 		goto error_close;
 
 	return fd;
@@ -303,7 +303,7 @@ int connect_to_addr(int type, const struct sockaddr_storage *addr, socklen_t add
 	return -1;
 }
 
-int __connect_to_fd_opts(int server_fd, int type, bool noconnect,
+int __connect_to_fd_opts(int server_fd, int type, bool noconnect, bool must_fail,
 			 const struct network_helper_opts *opts)
 {
 	struct sockaddr_storage addr;
@@ -353,7 +353,7 @@ int __connect_to_fd_opts(int server_fd, int type, bool noconnect,
 		goto error_close;
 
 	if (!noconnect)
-		if (connect_fd_to_addr(fd, &addr, addrlen, opts->must_fail))
+		if (connect_fd_to_addr(fd, &addr, addrlen, must_fail))
 			goto error_close;
 
 	return fd;
@@ -365,7 +365,7 @@ int __connect_to_fd_opts(int server_fd, int type, bool noconnect,
 
 int connect_to_fd_opts(int server_fd, const struct network_helper_opts *opts)
 {
-	return __connect_to_fd_opts(server_fd, 0, false, opts);
+	return __connect_to_fd_opts(server_fd, 0, false, false, opts);
 }
 
 int connect_to_fd(int server_fd, int timeout_ms)
diff --git a/tools/testing/selftests/bpf/network_helpers.h b/tools/testing/selftests/bpf/network_helpers.h
index e029d4ff983e..fefe2ed0c798 100644
--- a/tools/testing/selftests/bpf/network_helpers.h
+++ b/tools/testing/selftests/bpf/network_helpers.h
@@ -23,7 +23,6 @@ typedef __u16 __sum16;
 
 struct network_helper_opts {
 	int timeout_ms;
-	bool must_fail;
 	int proto;
 	int (*post_socket_cb)(int fd, void *opts);
 	void *cb_opts;
@@ -59,7 +58,7 @@ void free_fds(int *fds, unsigned int nr_close_fds);
 int connect_to_addr(int type, 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, int type, bool noconnect,
+int __connect_to_fd_opts(int server_fd, int type, bool noconnect, bool must_fail,
 			 const struct network_helper_opts *opts);
 int connect_to_fd_opts(int server_fd, const struct network_helper_opts *opts);
 int connect_fd_to_fd(int client_fd, int server_fd, int timeout_ms);
diff --git a/tools/testing/selftests/bpf/prog_tests/cgroup_v1v2.c b/tools/testing/selftests/bpf/prog_tests/cgroup_v1v2.c
index addf720428f7..124132b435ba 100644
--- a/tools/testing/selftests/bpf/prog_tests/cgroup_v1v2.c
+++ b/tools/testing/selftests/bpf/prog_tests/cgroup_v1v2.c
@@ -9,9 +9,6 @@
 
 static int run_test(int cgroup_fd, int server_fd, bool classid)
 {
-	struct network_helper_opts opts = {
-		.must_fail = true,
-	};
 	struct connect4_dropper *skel;
 	int fd, err = 0;
 
@@ -32,7 +29,7 @@ static int run_test(int cgroup_fd, int server_fd, bool classid)
 		goto out;
 	}
 
-	fd = connect_to_fd_opts(server_fd, &opts);
+	fd = __connect_to_fd_opts(server_fd, 0, false, true, NULL);
 	if (fd < 0)
 		err = -1;
 	else
diff --git a/tools/testing/selftests/bpf/prog_tests/ip_check_defrag.c b/tools/testing/selftests/bpf/prog_tests/ip_check_defrag.c
index 330dfba95c56..948e1ca287a2 100644
--- a/tools/testing/selftests/bpf/prog_tests/ip_check_defrag.c
+++ b/tools/testing/selftests/bpf/prog_tests/ip_check_defrag.c
@@ -198,7 +198,7 @@ void test_bpf_ip_check_defrag_ok(bool ipv6)
 	nstoken = open_netns(NS0);
 	if (!ASSERT_OK_PTR(nstoken, "setns ns0"))
 		goto out;
-	client_tx_fd = __connect_to_fd_opts(srv_fd, SOCK_RAW, true, &tx_ops);
+	client_tx_fd = __connect_to_fd_opts(srv_fd, SOCK_RAW, true, false, &tx_ops);
 	close_netns(nstoken);
 	if (!ASSERT_GE(client_tx_fd, 0, "connect_to_fd_opts"))
 		goto out;
@@ -207,7 +207,7 @@ void test_bpf_ip_check_defrag_ok(bool ipv6)
 	nstoken = open_netns(NS0);
 	if (!ASSERT_OK_PTR(nstoken, "setns ns0"))
 		goto out;
-	client_rx_fd = __connect_to_fd_opts(srv_fd, 0, true, &rx_opts);
+	client_rx_fd = __connect_to_fd_opts(srv_fd, 0, true, false, &rx_opts);
 	close_netns(nstoken);
 	if (!ASSERT_GE(client_rx_fd, 0, "connect_to_fd_opts"))
 		goto out;
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH bpf-next 4/5] selftests/bpf: Use start_server_str in mptcp
  2024-06-11  1:59 [PATCH bpf-next 0/5] use network helpers, part 7 Geliang Tang
                   ` (2 preceding siblings ...)
  2024-06-11  1:59 ` [PATCH bpf-next 3/5] selftests/bpf: Drop must_fail " Geliang Tang
@ 2024-06-11  1:59 ` Geliang Tang
  2024-06-11 21:11   ` Eduard Zingerman
  2024-06-11  1:59 ` [PATCH bpf-next 5/5] selftests/bpf: Use start_server_str in test_tcp_check_syncookie_user Geliang Tang
  4 siblings, 1 reply; 10+ messages in thread
From: Geliang Tang @ 2024-06-11  1:59 UTC (permalink / raw)
  To: Andrii Nakryiko, Eduard Zingerman, Mykola Lysenko,
	Alexei Starovoitov, Daniel Borkmann, Martin KaFai Lau, Song Liu,
	Yonghong Song, John Fastabend, KP Singh, Stanislav Fomichev,
	Hao Luo, Jiri Olsa, Shuah Khan
  Cc: Geliang Tang, bpf, linux-kselftest

From: Geliang Tang <tanggeliang@kylinos.cn>

Since start_server_str() is added now, it can be used in mptcp.c in
start_mptcp_server() instead of using helpers make_sockaddr() and
start_server_addr() to simplify the code.

Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
 tools/testing/selftests/bpf/prog_tests/mptcp.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing/selftests/bpf/prog_tests/mptcp.c
index 4472aa404da0..00f63f3f19f4 100644
--- a/tools/testing/selftests/bpf/prog_tests/mptcp.c
+++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c
@@ -104,13 +104,8 @@ static int start_mptcp_server(int family, const char *addr_str, __u16 port,
 		.timeout_ms	= timeout_ms,
 		.proto		= IPPROTO_MPTCP,
 	};
-	struct sockaddr_storage addr;
-	socklen_t addrlen;
 
-	if (make_sockaddr(family, addr_str, port, &addr, &addrlen))
-		return -1;
-
-	return start_server_addr(SOCK_STREAM, &addr, addrlen, &opts);
+	return start_server_str(family, SOCK_STREAM, addr_str, port, &opts);
 }
 
 static int verify_tsk(int map_fd, int client_fd)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH bpf-next 5/5] selftests/bpf: Use start_server_str in test_tcp_check_syncookie_user
  2024-06-11  1:59 [PATCH bpf-next 0/5] use network helpers, part 7 Geliang Tang
                   ` (3 preceding siblings ...)
  2024-06-11  1:59 ` [PATCH bpf-next 4/5] selftests/bpf: Use start_server_str in mptcp Geliang Tang
@ 2024-06-11  1:59 ` Geliang Tang
  2024-06-11 21:13   ` Eduard Zingerman
  4 siblings, 1 reply; 10+ messages in thread
From: Geliang Tang @ 2024-06-11  1:59 UTC (permalink / raw)
  To: Andrii Nakryiko, Eduard Zingerman, Mykola Lysenko,
	Alexei Starovoitov, Daniel Borkmann, Martin KaFai Lau, Song Liu,
	Yonghong Song, John Fastabend, KP Singh, Stanislav Fomichev,
	Hao Luo, Jiri Olsa, Shuah Khan
  Cc: Geliang Tang, bpf, linux-kselftest

From: Geliang Tang <tanggeliang@kylinos.cn>

Since start_server_str() is added now, it can be used in script
test_tcp_check_syncookie_user.c instead of start_server_addr() to
simplify the code.

Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
 .../bpf/test_tcp_check_syncookie_user.c       | 29 ++-----------------
 1 file changed, 3 insertions(+), 26 deletions(-)

diff --git a/tools/testing/selftests/bpf/test_tcp_check_syncookie_user.c b/tools/testing/selftests/bpf/test_tcp_check_syncookie_user.c
index aebc58c24dc5..3844f9b8232a 100644
--- a/tools/testing/selftests/bpf/test_tcp_check_syncookie_user.c
+++ b/tools/testing/selftests/bpf/test_tcp_check_syncookie_user.c
@@ -156,10 +156,6 @@ static int v6only_false(int fd, void *opts)
 int main(int argc, char **argv)
 {
 	struct network_helper_opts opts = { 0 };
-	struct sockaddr_in addr4;
-	struct sockaddr_in6 addr6;
-	struct sockaddr_in addr4dual;
-	struct sockaddr_in6 addr6dual;
 	int server = -1;
 	int server_v6 = -1;
 	int server_dual = -1;
@@ -181,36 +177,17 @@ int main(int argc, char **argv)
 		goto err;
 	}
 
-	memset(&addr4, 0, sizeof(addr4));
-	addr4.sin_family = AF_INET;
-	addr4.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
-	addr4.sin_port = 0;
-	memcpy(&addr4dual, &addr4, sizeof(addr4dual));
-
-	memset(&addr6, 0, sizeof(addr6));
-	addr6.sin6_family = AF_INET6;
-	addr6.sin6_addr = in6addr_loopback;
-	addr6.sin6_port = 0;
-
-	memset(&addr6dual, 0, sizeof(addr6dual));
-	addr6dual.sin6_family = AF_INET6;
-	addr6dual.sin6_addr = in6addr_any;
-	addr6dual.sin6_port = 0;
-
-	server = start_server_addr(SOCK_STREAM, (struct sockaddr_storage *)&addr4,
-				   sizeof(addr4), NULL);
+	server = start_server_str(AF_INET, SOCK_STREAM, "127.0.0.1", 0, NULL);
 	if (server == -1)
 		goto err;
 
 	opts.post_socket_cb = v6only_true;
-	server_v6 = start_server_addr(SOCK_STREAM, (struct sockaddr_storage *)&addr6,
-				      sizeof(addr6), &opts);
+	server_v6 = start_server_str(AF_INET6, SOCK_STREAM, "::1", 0, &opts);
 	if (server_v6 == -1)
 		goto err;
 
 	opts.post_socket_cb = v6only_false;
-	server_dual = start_server_addr(SOCK_STREAM, (struct sockaddr_storage *)&addr6dual,
-					sizeof(addr6dual), &opts);
+	server_dual = start_server_str(AF_INET6, SOCK_STREAM, "::0", 0, &opts);
 	if (server_dual == -1)
 		goto err;
 
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH bpf-next 4/5] selftests/bpf: Use start_server_str in mptcp
  2024-06-11  1:59 ` [PATCH bpf-next 4/5] selftests/bpf: Use start_server_str in mptcp Geliang Tang
@ 2024-06-11 21:11   ` Eduard Zingerman
  0 siblings, 0 replies; 10+ messages in thread
From: Eduard Zingerman @ 2024-06-11 21:11 UTC (permalink / raw)
  To: Geliang Tang, Andrii Nakryiko, Mykola Lysenko, Alexei Starovoitov,
	Daniel Borkmann, Martin KaFai Lau, Song Liu, Yonghong Song,
	John Fastabend, KP Singh, Stanislav Fomichev, Hao Luo, Jiri Olsa,
	Shuah Khan
  Cc: Geliang Tang, bpf, linux-kselftest

On Tue, 2024-06-11 at 09:59 +0800, Geliang Tang wrote:
> From: Geliang Tang <tanggeliang@kylinos.cn>
> 
> Since start_server_str() is added now, it can be used in mptcp.c in
> start_mptcp_server() instead of using helpers make_sockaddr() and
> start_server_addr() to simplify the code.
> 
> Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
> ---

Acked-by: Eduard Zingerman <eddyz87@gmail.com>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH bpf-next 5/5] selftests/bpf: Use start_server_str in test_tcp_check_syncookie_user
  2024-06-11  1:59 ` [PATCH bpf-next 5/5] selftests/bpf: Use start_server_str in test_tcp_check_syncookie_user Geliang Tang
@ 2024-06-11 21:13   ` Eduard Zingerman
  0 siblings, 0 replies; 10+ messages in thread
From: Eduard Zingerman @ 2024-06-11 21:13 UTC (permalink / raw)
  To: Geliang Tang, Andrii Nakryiko, Mykola Lysenko, Alexei Starovoitov,
	Daniel Borkmann, Martin KaFai Lau, Song Liu, Yonghong Song,
	John Fastabend, KP Singh, Stanislav Fomichev, Hao Luo, Jiri Olsa,
	Shuah Khan
  Cc: Geliang Tang, bpf, linux-kselftest

On Tue, 2024-06-11 at 09:59 +0800, Geliang Tang wrote:
> From: Geliang Tang <tanggeliang@kylinos.cn>
> 
> Since start_server_str() is added now, it can be used in script
> test_tcp_check_syncookie_user.c instead of start_server_addr() to
> simplify the code.
> 
> Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
> ---

Acked-by: Eduard Zingerman <eddyz87@gmail.com>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH bpf-next 1/5] selftests/bpf: Drop type from network_helper_opts
  2024-06-11  1:59 ` [PATCH bpf-next 1/5] selftests/bpf: Drop type from network_helper_opts Geliang Tang
@ 2024-06-11 21:20   ` Eduard Zingerman
  2024-06-12  3:39     ` Geliang Tang
  0 siblings, 1 reply; 10+ messages in thread
From: Eduard Zingerman @ 2024-06-11 21:20 UTC (permalink / raw)
  To: Geliang Tang, Andrii Nakryiko, Mykola Lysenko, Alexei Starovoitov,
	Daniel Borkmann, Martin KaFai Lau, Song Liu, Yonghong Song,
	John Fastabend, KP Singh, Stanislav Fomichev, Hao Luo, Jiri Olsa,
	Shuah Khan
  Cc: Geliang Tang, bpf, linux-kselftest

On Tue, 2024-06-11 at 09:59 +0800, Geliang Tang wrote:
> From: Geliang Tang <tanggeliang@kylinos.cn>
> 
> The opts.{type, noconnect, must_fail} is at least a bit non intuitive or
> unnecessary. The only use case now is in test_bpf_ip_check_defrag_ok which
> ends up bypassing most (or at least some) of the connect_to_fd_opts()
> logic. It's much better that test should have its own connect_to_fd_opts()
> instead.
> 
> This patch adds a new helper named __connect_to_fd_opts() to do this. It
> accepts a new "type" parameter, then opts->type can be replaced by "type"
> parameter in this helper. In test_bpf_ip_check_defrag_ok, different types
> are passed to it. And the strcut member "type" of network_helper_opts can
> be dropped now.
> 
> Then connect_to_fd_opts can implement as a wrapper of this new helper.
> 
> Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
> ---

Patches #1,2,3 trade options specified as struct fields for options
specified as function parameters. Tbh, this seems to be an opinionated
stylistic change, what is the need for it?

If anything, I think that this is less readable:

> +	client_rx_fd = __connect_to_fd_opts(srv_fd, 0, &rx_opts);

compared to this:

>  	struct network_helper_opts tx_ops = {
>  		.timeout_ms = 1000,
> -		.type = SOCK_RAW,
>  		.proto = IPPROTO_RAW,
>  		.noconnect = true,
>  	};
...
> -	client_rx_fd = connect_to_fd_opts(srv_fd, &rx_opts);

(given that by patch #3 three parameters are added to
 __connect_to_fd_opts() *and* it also accepts options).

[...]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH bpf-next 1/5] selftests/bpf: Drop type from network_helper_opts
  2024-06-11 21:20   ` Eduard Zingerman
@ 2024-06-12  3:39     ` Geliang Tang
  0 siblings, 0 replies; 10+ messages in thread
From: Geliang Tang @ 2024-06-12  3:39 UTC (permalink / raw)
  To: Eduard Zingerman, Andrii Nakryiko, Mykola Lysenko,
	Alexei Starovoitov, Daniel Borkmann, Martin KaFai Lau, Song Liu,
	Yonghong Song, John Fastabend, KP Singh, Stanislav Fomichev,
	Hao Luo, Jiri Olsa, Shuah Khan
  Cc: Geliang Tang, bpf, linux-kselftest

On Tue, 2024-06-11 at 14:20 -0700, Eduard Zingerman wrote:
> On Tue, 2024-06-11 at 09:59 +0800, Geliang Tang wrote:
> > From: Geliang Tang <tanggeliang@kylinos.cn>
> > 
> > The opts.{type, noconnect, must_fail} is at least a bit non
> > intuitive or
> > unnecessary. The only use case now is in
> > test_bpf_ip_check_defrag_ok which
> > ends up bypassing most (or at least some) of the
> > connect_to_fd_opts()
> > logic. It's much better that test should have its own
> > connect_to_fd_opts()
> > instead.
> > 
> > This patch adds a new helper named __connect_to_fd_opts() to do
> > this. It
> > accepts a new "type" parameter, then opts->type can be replaced by
> > "type"
> > parameter in this helper. In test_bpf_ip_check_defrag_ok, different
> > types
> > are passed to it. And the strcut member "type" of
> > network_helper_opts can
> > be dropped now.
> > 
> > Then connect_to_fd_opts can implement as a wrapper of this new
> > helper.
> > 
> > Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
> > ---
> 
> Patches #1,2,3 trade options specified as struct fields for options
> specified as function parameters. Tbh, this seems to be an
> opinionated
> stylistic change, what is the need for it?

Thanks for your review.

Patches 1-3 address Martin's comment for "Drop type parameter of
start_server_addr" [1].

Since opts.{type, noconnect} are only used in ip_check_defrag.c and
opts.must_fail is only used in cgroup_v1v2.c, they are not generic
enough to be added into network_helper_opts. So this set removes them
from network_helper_opts and use them as function parameters.

Thanks,
-Geliang

[1]
https://patchwork.kernel.org/project/netdevbpf/patch/65dd42dd91d678740e9c05e32852f5e01ba2b7bc.1716369375.git.tanggeliang@kylinos.cn/

> 
> If anything, I think that this is less readable:
> 
> > +	client_rx_fd = __connect_to_fd_opts(srv_fd, 0, &rx_opts);
> 
> compared to this:
> 
> >  	struct network_helper_opts tx_ops = {
> >  		.timeout_ms = 1000,
> > -		.type = SOCK_RAW,
> >  		.proto = IPPROTO_RAW,
> >  		.noconnect = true,
> >  	};
> ...
> > -	client_rx_fd = connect_to_fd_opts(srv_fd, &rx_opts);
> 
> (given that by patch #3 three parameters are added to
>  __connect_to_fd_opts() *and* it also accepts options).
> 
> [...]


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2024-06-12  3:39 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-11  1:59 [PATCH bpf-next 0/5] use network helpers, part 7 Geliang Tang
2024-06-11  1:59 ` [PATCH bpf-next 1/5] selftests/bpf: Drop type from network_helper_opts Geliang Tang
2024-06-11 21:20   ` Eduard Zingerman
2024-06-12  3:39     ` Geliang Tang
2024-06-11  1:59 ` [PATCH bpf-next 2/5] selftests/bpf: Drop noconnect " Geliang Tang
2024-06-11  1:59 ` [PATCH bpf-next 3/5] selftests/bpf: Drop must_fail " Geliang Tang
2024-06-11  1:59 ` [PATCH bpf-next 4/5] selftests/bpf: Use start_server_str in mptcp Geliang Tang
2024-06-11 21:11   ` Eduard Zingerman
2024-06-11  1:59 ` [PATCH bpf-next 5/5] selftests/bpf: Use start_server_str in test_tcp_check_syncookie_user Geliang Tang
2024-06-11 21:13   ` Eduard Zingerman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox