Commit eb62f49d authored by Mahe Tardy's avatar Mahe Tardy Committed by Martin KaFai Lau
Browse files

bpf: add get_netns_cookie helper to tc programs



This is needed in the context of Cilium and Tetragon to retrieve netns
cookie from hostns when traffic leaves Pod, so that we can correlate
skb->sk's netns cookie.

Signed-off-by: default avatarMahe Tardy <mahe.tardy@gmail.com>
Link: https://lore.kernel.org/r/20241007095958.97442-1-mahe.tardy@gmail.com


Signed-off-by: default avatarMartin KaFai Lau <martin.lau@kernel.org>
parent bc9b3fb8
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -5138,6 +5138,17 @@ static u64 __bpf_get_netns_cookie(struct sock *sk)
	return net->net_cookie;
}

BPF_CALL_1(bpf_get_netns_cookie, struct sk_buff *, skb)
{
	return __bpf_get_netns_cookie(skb && skb->sk ? skb->sk : NULL);
}

static const struct bpf_func_proto bpf_get_netns_cookie_proto = {
	.func           = bpf_get_netns_cookie,
	.ret_type       = RET_INTEGER,
	.arg1_type      = ARG_PTR_TO_CTX_OR_NULL,
};

BPF_CALL_1(bpf_get_netns_cookie_sock, struct sock *, ctx)
{
	return __bpf_get_netns_cookie(ctx);
@@ -8209,6 +8220,8 @@ tc_cls_act_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
		return &bpf_skb_under_cgroup_proto;
	case BPF_FUNC_get_socket_cookie:
		return &bpf_get_socket_cookie_proto;
	case BPF_FUNC_get_netns_cookie:
		return &bpf_get_netns_cookie_proto;
	case BPF_FUNC_get_socket_uid:
		return &bpf_get_socket_uid_proto;
	case BPF_FUNC_fib_lookup: