* [PATCH mptcp-next 0/3] check more values from mptcp_sock
@ 2022-03-13 10:59 Geliang Tang
2022-03-13 10:59 ` [PATCH mptcp-next 1/3] Squash to "selftests: bpf: test bpf_skc_to_mptcp_sock" Geliang Tang
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Geliang Tang @ 2022-03-13 10:59 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patchset checked two more values from 'mptcp_sock', ca_name and
first.
Geliang Tang (3):
Squash to "selftests: bpf: test bpf_skc_to_mptcp_sock"
selftests: bpf: verify ca_name of struct mptcp_sock
selftests: bpf: verify first subflow of mptcp_sock
tools/testing/selftests/bpf/bpf_tcp_helpers.h | 6 ++-
.../testing/selftests/bpf/prog_tests/mptcp.c | 43 ++++++++++++++++++-
tools/testing/selftests/bpf/progs/mptcp.c | 18 ++++++--
3 files changed, 62 insertions(+), 5 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH mptcp-next 1/3] Squash to "selftests: bpf: test bpf_skc_to_mptcp_sock"
2022-03-13 10:59 [PATCH mptcp-next 0/3] check more values from mptcp_sock Geliang Tang
@ 2022-03-13 10:59 ` Geliang Tang
2022-03-13 10:59 ` [PATCH mptcp-next 2/3] selftests: bpf: verify ca_name of struct mptcp_sock Geliang Tang
2022-03-13 10:59 ` [PATCH mptcp-next 3/3] selftests: bpf: verify first subflow of mptcp_sock Geliang Tang
2 siblings, 0 replies; 4+ messages in thread
From: Geliang Tang @ 2022-03-13 10:59 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Some small cleanups.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/bpf/bpf_tcp_helpers.h | 2 +-
tools/testing/selftests/bpf/prog_tests/mptcp.c | 2 +-
tools/testing/selftests/bpf/progs/mptcp.c | 9 ++++++---
3 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/selftests/bpf/bpf_tcp_helpers.h
index 05f62f81cc4d..9ea6687c8f4d 100644
--- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h
+++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h
@@ -86,7 +86,7 @@ struct tcp_sock {
struct mptcp_sock {
struct inet_connection_sock sk;
- __u32 token;
+ __u32 token;
} __attribute__((preserve_access_index));
static __always_inline struct inet_connection_sock *inet_csk(const struct sock *sk)
diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing/selftests/bpf/prog_tests/mptcp.c
index 035a87755b94..80ae5a9777bf 100644
--- a/tools/testing/selftests/bpf/prog_tests/mptcp.c
+++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c
@@ -56,7 +56,7 @@ static __u32 get_msk_token(void)
fd = open(monitor_log_path, O_RDONLY);
if (CHECK_FAIL(fd < 0)) {
log_err("Failed to open %s", monitor_log_path);
- goto err;
+ return token;
}
len = read(fd, buf, sizeof(buf));
diff --git a/tools/testing/selftests/bpf/progs/mptcp.c b/tools/testing/selftests/bpf/progs/mptcp.c
index b08448a12c02..928111f56f69 100644
--- a/tools/testing/selftests/bpf/progs/mptcp.c
+++ b/tools/testing/selftests/bpf/progs/mptcp.c
@@ -22,7 +22,8 @@ struct {
SEC("sockops")
int _sockops(struct bpf_sock_ops *ctx)
{
- char fmt[] = "invoked=%u is_mptcp=%u token=%x";
+ char fmt1[] = "invoked=%u is_mptcp=%u";
+ char fmt2[] = "token=%x";
struct mptcp_storage *storage;
struct bpf_tcp_sock *tcp_sk;
struct mptcp_sock *msk;
@@ -61,8 +62,10 @@ int _sockops(struct bpf_sock_ops *ctx)
}
storage->invoked++;
storage->is_mptcp = tcp_sk->is_mptcp;
- bpf_trace_printk(fmt, sizeof(fmt),
- storage->invoked, storage->is_mptcp, storage->token);
+ bpf_trace_printk(fmt1, sizeof(fmt1),
+ storage->invoked, storage->is_mptcp);
+ bpf_trace_printk(fmt2, sizeof(fmt2),
+ storage->token);
return 1;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH mptcp-next 2/3] selftests: bpf: verify ca_name of struct mptcp_sock
2022-03-13 10:59 [PATCH mptcp-next 0/3] check more values from mptcp_sock Geliang Tang
2022-03-13 10:59 ` [PATCH mptcp-next 1/3] Squash to "selftests: bpf: test bpf_skc_to_mptcp_sock" Geliang Tang
@ 2022-03-13 10:59 ` Geliang Tang
2022-03-13 10:59 ` [PATCH mptcp-next 3/3] selftests: bpf: verify first subflow of mptcp_sock Geliang Tang
2 siblings, 0 replies; 4+ messages in thread
From: Geliang Tang @ 2022-03-13 10:59 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch verified another member of struct mptcp_sock, ca_name. Added a
new function get_msk_ca_name() to read the sysctl tcp_congestion_control
and verified it in verify_msk().
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/bpf/bpf_tcp_helpers.h | 3 ++
.../testing/selftests/bpf/prog_tests/mptcp.c | 33 +++++++++++++++++++
tools/testing/selftests/bpf/progs/mptcp.c | 8 +++--
3 files changed, 42 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/selftests/bpf/bpf_tcp_helpers.h
index 9ea6687c8f4d..57de5ca5ed50 100644
--- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h
+++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h
@@ -16,6 +16,8 @@ BPF_PROG(name, args)
#define SOL_TCP 6
#endif
+#define TCP_CA_NAME_MAX 16
+
#define tcp_jiffies32 ((__u32)bpf_jiffies64())
struct sock_common {
@@ -87,6 +89,7 @@ struct mptcp_sock {
struct inet_connection_sock sk;
__u32 token;
+ char ca_name[TCP_CA_NAME_MAX];
} __attribute__((preserve_access_index));
static __always_inline struct inet_connection_sock *inet_csk(const struct sock *sk)
diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing/selftests/bpf/prog_tests/mptcp.c
index 80ae5a9777bf..aff35ab33379 100644
--- a/tools/testing/selftests/bpf/prog_tests/mptcp.c
+++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c
@@ -3,12 +3,16 @@
#include "cgroup_helpers.h"
#include "network_helpers.h"
+#define TCP_CA_SYSCTL "/proc/sys/net/ipv4/tcp_congestion_control"
+#define TCP_CA_NAME_MAX 16
+
char monitor_log_path[64];
struct mptcp_storage {
__u32 invoked;
__u32 is_mptcp;
__u32 token;
+ char ca_name[TCP_CA_NAME_MAX];
};
static int verify_tsk(int map_fd, int client_fd)
@@ -77,14 +81,37 @@ static __u32 get_msk_token(void)
return token;
}
+void get_msk_ca_name(char ca_name[])
+{
+ ssize_t len;
+ int fd;
+
+ fd = open(TCP_CA_SYSCTL, O_RDONLY);
+ if (CHECK_FAIL(fd < 0)) {
+ log_err("Failed to open %s", TCP_CA_SYSCTL);
+ return;
+ }
+
+ len = read(fd, ca_name, TCP_CA_NAME_MAX);
+ if (CHECK_FAIL(len < 0)) {
+ log_err("Failed to read %s", TCP_CA_SYSCTL);
+ goto err;
+ }
+
+err:
+ close(fd);
+}
+
static int verify_msk(int map_fd, int client_fd)
{
char *msg = "MPTCP subflow socket";
int err = 0, cfd = client_fd;
struct mptcp_storage val;
+ char ca_name[TCP_CA_NAME_MAX];
__u32 token;
token = get_msk_token();
+ get_msk_ca_name(ca_name);
if (token <= 0) {
log_err("Unexpected token %x", token);
return -1;
@@ -113,6 +140,12 @@ static int verify_msk(int map_fd, int client_fd)
err++;
}
+ if (strncmp(val.ca_name, ca_name, strlen(val.ca_name))) {
+ log_err("Unexpected mptcp_sock.ca_name %s != %s",
+ val.ca_name, ca_name);
+ err++;
+ }
+
return err;
}
diff --git a/tools/testing/selftests/bpf/progs/mptcp.c b/tools/testing/selftests/bpf/progs/mptcp.c
index 928111f56f69..61adc4396abf 100644
--- a/tools/testing/selftests/bpf/progs/mptcp.c
+++ b/tools/testing/selftests/bpf/progs/mptcp.c
@@ -1,4 +1,5 @@
// SPDX-License-Identifier: GPL-2.0
+#include <string.h>
#include <linux/bpf.h>
#include <bpf/bpf_helpers.h>
#include "bpf_tcp_helpers.h"
@@ -10,6 +11,7 @@ struct mptcp_storage {
__u32 invoked;
__u32 is_mptcp;
__u32 token;
+ char ca_name[TCP_CA_NAME_MAX];
};
struct {
@@ -23,7 +25,7 @@ SEC("sockops")
int _sockops(struct bpf_sock_ops *ctx)
{
char fmt1[] = "invoked=%u is_mptcp=%u";
- char fmt2[] = "token=%x";
+ char fmt2[] = "token=%x ca_name=%s";
struct mptcp_storage *storage;
struct bpf_tcp_sock *tcp_sk;
struct mptcp_sock *msk;
@@ -48,6 +50,7 @@ int _sockops(struct bpf_sock_ops *ctx)
return 1;
storage->token = 0;
+ bzero(storage->ca_name, TCP_CA_NAME_MAX);
} else {
msk = bpf_skc_to_mptcp_sock(sk);
if (!msk)
@@ -59,13 +62,14 @@ int _sockops(struct bpf_sock_ops *ctx)
return 1;
storage->token = msk->token;
+ memcpy(storage->ca_name, msk->ca_name, TCP_CA_NAME_MAX);
}
storage->invoked++;
storage->is_mptcp = tcp_sk->is_mptcp;
bpf_trace_printk(fmt1, sizeof(fmt1),
storage->invoked, storage->is_mptcp);
bpf_trace_printk(fmt2, sizeof(fmt2),
- storage->token);
+ storage->token, storage->ca_name);
return 1;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH mptcp-next 3/3] selftests: bpf: verify first subflow of mptcp_sock
2022-03-13 10:59 [PATCH mptcp-next 0/3] check more values from mptcp_sock Geliang Tang
2022-03-13 10:59 ` [PATCH mptcp-next 1/3] Squash to "selftests: bpf: test bpf_skc_to_mptcp_sock" Geliang Tang
2022-03-13 10:59 ` [PATCH mptcp-next 2/3] selftests: bpf: verify ca_name of struct mptcp_sock Geliang Tang
@ 2022-03-13 10:59 ` Geliang Tang
2 siblings, 0 replies; 4+ messages in thread
From: Geliang Tang @ 2022-03-13 10:59 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This patch verified the 'first' struct member of struct mptcp_sock, which
pointed to the first subflow of msk. Saved 'sk' in mptcp_storage, and
verified it with 'first' in verify_msk().
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/bpf/bpf_tcp_helpers.h | 1 +
tools/testing/selftests/bpf/prog_tests/mptcp.c | 8 ++++++++
tools/testing/selftests/bpf/progs/mptcp.c | 13 +++++++++----
3 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/tools/testing/selftests/bpf/bpf_tcp_helpers.h b/tools/testing/selftests/bpf/bpf_tcp_helpers.h
index 57de5ca5ed50..728ab2fba0c9 100644
--- a/tools/testing/selftests/bpf/bpf_tcp_helpers.h
+++ b/tools/testing/selftests/bpf/bpf_tcp_helpers.h
@@ -89,6 +89,7 @@ struct mptcp_sock {
struct inet_connection_sock sk;
__u32 token;
+ struct sock *first;
char ca_name[TCP_CA_NAME_MAX];
} __attribute__((preserve_access_index));
diff --git a/tools/testing/selftests/bpf/prog_tests/mptcp.c b/tools/testing/selftests/bpf/prog_tests/mptcp.c
index aff35ab33379..eb3b542a4d73 100644
--- a/tools/testing/selftests/bpf/prog_tests/mptcp.c
+++ b/tools/testing/selftests/bpf/prog_tests/mptcp.c
@@ -11,7 +11,9 @@ char monitor_log_path[64];
struct mptcp_storage {
__u32 invoked;
__u32 is_mptcp;
+ struct sock *sk;
__u32 token;
+ struct sock *first;
char ca_name[TCP_CA_NAME_MAX];
};
@@ -140,6 +142,12 @@ static int verify_msk(int map_fd, int client_fd)
err++;
}
+ if (val.first != val.sk) {
+ log_err("Unexpected mptcp_sock.first %p != %p",
+ val.first, val.sk);
+ err++;
+ }
+
if (strncmp(val.ca_name, ca_name, strlen(val.ca_name))) {
log_err("Unexpected mptcp_sock.ca_name %s != %s",
val.ca_name, ca_name);
diff --git a/tools/testing/selftests/bpf/progs/mptcp.c b/tools/testing/selftests/bpf/progs/mptcp.c
index 61adc4396abf..5c8dfd5774fc 100644
--- a/tools/testing/selftests/bpf/progs/mptcp.c
+++ b/tools/testing/selftests/bpf/progs/mptcp.c
@@ -10,7 +10,9 @@ __u32 _version SEC("version") = 1;
struct mptcp_storage {
__u32 invoked;
__u32 is_mptcp;
+ struct sock *sk;
__u32 token;
+ struct sock *first;
char ca_name[TCP_CA_NAME_MAX];
};
@@ -24,8 +26,8 @@ struct {
SEC("sockops")
int _sockops(struct bpf_sock_ops *ctx)
{
- char fmt1[] = "invoked=%u is_mptcp=%u";
- char fmt2[] = "token=%x ca_name=%s";
+ char fmt1[] = "invoked=%u is_mptcp=%u sk=%p";
+ char fmt2[] = "token=%x ca_name=%s first=%p";
struct mptcp_storage *storage;
struct bpf_tcp_sock *tcp_sk;
struct mptcp_sock *msk;
@@ -51,6 +53,7 @@ int _sockops(struct bpf_sock_ops *ctx)
storage->token = 0;
bzero(storage->ca_name, TCP_CA_NAME_MAX);
+ storage->first = NULL;
} else {
msk = bpf_skc_to_mptcp_sock(sk);
if (!msk)
@@ -63,13 +66,15 @@ int _sockops(struct bpf_sock_ops *ctx)
storage->token = msk->token;
memcpy(storage->ca_name, msk->ca_name, TCP_CA_NAME_MAX);
+ storage->first = msk->first;
}
storage->invoked++;
storage->is_mptcp = tcp_sk->is_mptcp;
+ storage->sk = (struct sock *)sk;
bpf_trace_printk(fmt1, sizeof(fmt1),
- storage->invoked, storage->is_mptcp);
+ storage->invoked, storage->is_mptcp, storage->sk);
bpf_trace_printk(fmt2, sizeof(fmt2),
- storage->token, storage->ca_name);
+ storage->token, storage->ca_name, storage->first);
return 1;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-03-13 10:59 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-13 10:59 [PATCH mptcp-next 0/3] check more values from mptcp_sock Geliang Tang
2022-03-13 10:59 ` [PATCH mptcp-next 1/3] Squash to "selftests: bpf: test bpf_skc_to_mptcp_sock" Geliang Tang
2022-03-13 10:59 ` [PATCH mptcp-next 2/3] selftests: bpf: verify ca_name of struct mptcp_sock Geliang Tang
2022-03-13 10:59 ` [PATCH mptcp-next 3/3] selftests: bpf: verify first subflow of mptcp_sock Geliang Tang
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.