1906ee42cSAndrii Nakryiko // SPDX-License-Identifier: GPL-2.0
2906ee42cSAndrii Nakryiko /* Copyright (c) 2024 Meta Platforms, Inc. and affiliates. */
3906ee42cSAndrii Nakryiko 
4906ee42cSAndrii Nakryiko #include "vmlinux.h"
5906ee42cSAndrii Nakryiko #include <bpf/bpf_helpers.h>
6906ee42cSAndrii Nakryiko #include <bpf/bpf_tracing.h>
7906ee42cSAndrii Nakryiko 
8906ee42cSAndrii Nakryiko char _license[] SEC("license") = "GPL";
9906ee42cSAndrii Nakryiko 
10906ee42cSAndrii Nakryiko int my_pid;
11*4dc75564SXu Kuohai int reject_capable;
12*4dc75564SXu Kuohai int reject_cmd;
13906ee42cSAndrii Nakryiko 
14906ee42cSAndrii Nakryiko SEC("lsm/bpf_token_capable")
BPF_PROG(token_capable,struct bpf_token * token,int cap)15906ee42cSAndrii Nakryiko int BPF_PROG(token_capable, struct bpf_token *token, int cap)
16906ee42cSAndrii Nakryiko {
17906ee42cSAndrii Nakryiko 	if (my_pid == 0 || my_pid != (bpf_get_current_pid_tgid() >> 32))
18906ee42cSAndrii Nakryiko 		return 0;
19906ee42cSAndrii Nakryiko 	if (reject_capable)
20906ee42cSAndrii Nakryiko 		return -1;
21906ee42cSAndrii Nakryiko 	return 0;
22906ee42cSAndrii Nakryiko }
23906ee42cSAndrii Nakryiko 
24906ee42cSAndrii Nakryiko SEC("lsm/bpf_token_cmd")
BPF_PROG(token_cmd,struct bpf_token * token,enum bpf_cmd cmd)25906ee42cSAndrii Nakryiko int BPF_PROG(token_cmd, struct bpf_token *token, enum bpf_cmd cmd)
26906ee42cSAndrii Nakryiko {
27906ee42cSAndrii Nakryiko 	if (my_pid == 0 || my_pid != (bpf_get_current_pid_tgid() >> 32))
28906ee42cSAndrii Nakryiko 		return 0;
29906ee42cSAndrii Nakryiko 	if (reject_cmd)
30906ee42cSAndrii Nakryiko 		return -1;
31906ee42cSAndrii Nakryiko 	return 0;
32906ee42cSAndrii Nakryiko }
33