* [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