Add netns cookie test that verifies the helper is now supported and work in the context of tracing programs. Signed-off-by: Mahe Tardy <mahe.tardy@xxxxxxxxx> --- .../testing/selftests/bpf/prog_tests/netns_cookie.c | 7 +++++++ .../testing/selftests/bpf/progs/netns_cookie_prog.c | 13 +++++++++++++ 2 files changed, 20 insertions(+) diff --git a/tools/testing/selftests/bpf/prog_tests/netns_cookie.c b/tools/testing/selftests/bpf/prog_tests/netns_cookie.c index e00cd34586dd..53a3272f3e32 100644 --- a/tools/testing/selftests/bpf/prog_tests/netns_cookie.c +++ b/tools/testing/selftests/bpf/prog_tests/netns_cookie.c @@ -52,6 +52,11 @@ void test_netns_cookie(void) if (!ASSERT_OK_PTR(skel->links.get_netns_cookie_cgroup_skb, "prog_attach_cgroup_skb")) goto cleanup_tc; + skel->links.get_netns_cookie_tracing = bpf_program__attach( + skel->progs.get_netns_cookie_tracing); + if (!ASSERT_OK_PTR(skel->links.get_netns_cookie_tracing, "prog_attach_tracing")) + goto cleanup_tc; + server_fd = start_server(AF_INET6, SOCK_STREAM, "::1", 0, 0); if (CHECK(server_fd < 0, "start_server", "errno %d\n", errno)) goto cleanup_tc; @@ -86,6 +91,8 @@ void test_netns_cookie(void) ASSERT_EQ(skel->bss->tcx_netns_cookie, cookie_expected_value, "cookie_value_tcx"); ASSERT_EQ(skel->bss->cgroup_skb_init_netns_cookie, cookie_expected_value, "cookie_value_init_cgroup_skb"); ASSERT_EQ(skel->bss->cgroup_skb_netns_cookie, cookie_expected_value, "cookie_value_cgroup_skb"); + ASSERT_EQ(skel->bss->tracing_init_netns_cookie, cookie_expected_value, "cookie_value_init_tracing"); + ASSERT_EQ(skel->bss->tracing_netns_cookie, cookie_expected_value, "cookie_value_tracing"); cleanup_tc: err = bpf_prog_detach_opts(tc_fd, loopback, BPF_TCX_INGRESS, &optd); diff --git a/tools/testing/selftests/bpf/progs/netns_cookie_prog.c b/tools/testing/selftests/bpf/progs/netns_cookie_prog.c index 94040714af18..5de573571640 100644 --- a/tools/testing/selftests/bpf/progs/netns_cookie_prog.c +++ b/tools/testing/selftests/bpf/progs/netns_cookie_prog.c @@ -3,6 +3,7 @@ #include "vmlinux.h" #include <bpf/bpf_helpers.h> +#include <bpf/bpf_tracing.h> #define AF_INET6 10 @@ -29,6 +30,7 @@ struct { int tcx_init_netns_cookie, tcx_netns_cookie; int cgroup_skb_init_netns_cookie, cgroup_skb_netns_cookie; +int tracing_init_netns_cookie, tracing_netns_cookie; SEC("sockops") int get_netns_cookie_sockops(struct bpf_sock_ops *ctx) @@ -100,4 +102,15 @@ int get_netns_cookie_cgroup_skb(struct __sk_buff *skb) return SK_PASS; } +SEC("fexit/inet_stream_connect") +int BPF_PROG(get_netns_cookie_tracing, struct socket *sock, + struct sockaddr *uaddr, int addr_len, int flags) +{ + if (uaddr->sa_family != AF_INET6) + return 0; + tracing_init_netns_cookie = bpf_get_netns_cookie(NULL); + tracing_netns_cookie = bpf_get_netns_cookie(sock->sk); + return 0; +} + char _license[] SEC("license") = "GPL"; -- 2.34.1