Skip to content

Commit 5e4a565

Browse files
geliangtangKernel Patches Daemon
authored and
Kernel Patches Daemon
committed
selftests: bpf: verify first of struct mptcp_sock
This patch verifies the 'first' struct member of struct mptcp_sock, which points to the first subflow of msk. Save 'sk' in mptcp_storage, and verify it with 'first' in verify_msk(). Acked-by: Matthieu Baerts <[email protected]> Signed-off-by: Geliang Tang <[email protected]> Signed-off-by: Mat Martineau <[email protected]>
1 parent 720e42f commit 5e4a565

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

tools/testing/selftests/bpf/bpf_mptcp_helpers.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ struct mptcp_sock {
1010
struct inet_connection_sock sk;
1111

1212
__u32 token;
13+
struct sock *first;
1314
char ca_name[TCP_CA_NAME_MAX];
1415
} __attribute__((preserve_access_index));
1516

tools/testing/selftests/bpf/prog_tests/mptcp.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
struct mptcp_storage {
1313
__u32 invoked;
1414
__u32 is_mptcp;
15+
struct sock *sk;
1516
__u32 token;
17+
struct sock *first;
1618
char ca_name[TCP_CA_NAME_MAX];
1719
};
1820

@@ -133,6 +135,12 @@ static int verify_msk(int map_fd, int client_fd)
133135
err++;
134136
}
135137

138+
if (val.first != val.sk) {
139+
log_err("Unexpected mptcp_sock.first %p != %p",
140+
val.first, val.sk);
141+
err++;
142+
}
143+
136144
if (strncmp(val.ca_name, ca_name, TCP_CA_NAME_MAX)) {
137145
log_err("Unexpected mptcp_sock.ca_name %s != %s",
138146
val.ca_name, ca_name);

tools/testing/selftests/bpf/progs/mptcp_sock.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ __u32 _version SEC("version") = 1;
1212
struct mptcp_storage {
1313
__u32 invoked;
1414
__u32 is_mptcp;
15+
struct sock *sk;
1516
__u32 token;
17+
struct sock *first;
1618
char ca_name[TCP_CA_NAME_MAX];
1719
};
1820

@@ -51,6 +53,7 @@ int _sockops(struct bpf_sock_ops *ctx)
5153

5254
storage->token = 0;
5355
bzero(storage->ca_name, TCP_CA_NAME_MAX);
56+
storage->first = NULL;
5457
} else {
5558
msk = bpf_skc_to_mptcp_sock(sk);
5659
if (!msk)
@@ -63,9 +66,11 @@ int _sockops(struct bpf_sock_ops *ctx)
6366

6467
storage->token = msk->token;
6568
memcpy(storage->ca_name, msk->ca_name, TCP_CA_NAME_MAX);
69+
storage->first = msk->first;
6670
}
6771
storage->invoked++;
6872
storage->is_mptcp = tcp_sk->is_mptcp;
73+
storage->sk = (struct sock *)sk;
6974

7075
return 1;
7176
}

0 commit comments

Comments
 (0)