diff options
author | Daniel T. Lee <danieltimlee@gmail.com> | 2023-01-15 16:16:13 +0900 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2023-01-15 13:32:45 -0800 |
commit | e04946f54cd99fa1bd92e22f4540720d76d88058 (patch) | |
tree | 059e4cedf8d2015617268672584b31c5db88c6ff /samples/bpf/sock_flags.bpf.c | |
parent | e8acf8f47a5d58a00fbfa0f3592bbaaff557cec3 (diff) |
samples/bpf: change _kern suffix to .bpf with BPF test programs
This commit changes the _kern suffix to .bpf with the BPF test programs.
With this modification, test programs will inherit the benefit of the
new CLANG-BPF compile target.
Signed-off-by: Daniel T. Lee <danieltimlee@gmail.com>
Link: https://lore.kernel.org/r/20230115071613.125791-11-danieltimlee@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'samples/bpf/sock_flags.bpf.c')
-rw-r--r-- | samples/bpf/sock_flags.bpf.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/samples/bpf/sock_flags.bpf.c b/samples/bpf/sock_flags.bpf.c new file mode 100644 index 000000000000..0da749f6a9e1 --- /dev/null +++ b/samples/bpf/sock_flags.bpf.c @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: GPL-2.0 +#include "vmlinux.h" +#include "net_shared.h" +#include <bpf/bpf_helpers.h> + +SEC("cgroup/sock") +int bpf_prog1(struct bpf_sock *sk) +{ + char fmt[] = "socket: family %d type %d protocol %d\n"; + char fmt2[] = "socket: uid %u gid %u\n"; + __u64 gid_uid = bpf_get_current_uid_gid(); + __u32 uid = gid_uid & 0xffffffff; + __u32 gid = gid_uid >> 32; + + bpf_trace_printk(fmt, sizeof(fmt), sk->family, sk->type, sk->protocol); + bpf_trace_printk(fmt2, sizeof(fmt2), uid, gid); + + /* block AF_INET6, SOCK_DGRAM, IPPROTO_ICMPV6 sockets + * ie., make ping6 fail + */ + if (sk->family == AF_INET6 && + sk->type == SOCK_DGRAM && + sk->protocol == IPPROTO_ICMPV6) + return 0; + + return 1; +} + +SEC("cgroup/sock") +int bpf_prog2(struct bpf_sock *sk) +{ + char fmt[] = "socket: family %d type %d protocol %d\n"; + + bpf_trace_printk(fmt, sizeof(fmt), sk->family, sk->type, sk->protocol); + + /* block AF_INET, SOCK_DGRAM, IPPROTO_ICMP sockets + * ie., make ping fail + */ + if (sk->family == AF_INET && + sk->type == SOCK_DGRAM && + sk->protocol == IPPROTO_ICMP) + return 0; + + return 1; +} + +char _license[] SEC("license") = "GPL"; |