1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
|
/*
* Compiled with './build'
*/
#include "../elf/include/uapi/linux/bpf.h"
#include "../elf/include/bpf_map.h"
#define SEC(NAME) __attribute__((section(NAME), used))
#define PERF_MAX_STACK_DEPTH 127
#define KERNEL_VERSION_GTE(X) (KERNEL_VERSION >= X)
struct pt_regs{};
struct bpf_map_def SEC("maps/dummy_hash") dummy_hash = {
.type = BPF_MAP_TYPE_HASH,
.key_size = sizeof(int),
.value_size = sizeof(unsigned int),
.max_entries = 128,
};
struct bpf_map_def SEC("maps/dummy_array") dummy_array = {
.type = BPF_MAP_TYPE_ARRAY,
.key_size = sizeof(int),
.value_size = sizeof(unsigned int),
.max_entries = 128,
};
struct bpf_map_def SEC("maps/dummy_prog_array") dummy_prog_array = {
.type = BPF_MAP_TYPE_PROG_ARRAY,
.key_size = sizeof(int),
.value_size = sizeof(unsigned int),
.max_entries = 128,
};
struct bpf_map_def SEC("maps/dummy_perf") dummy_perf = {
.type = BPF_MAP_TYPE_PERF_EVENT_ARRAY,
.key_size = sizeof(int),
.value_size = sizeof(unsigned int),
.max_entries = 128,
};
#if KERNEL_VERSION_GTE(46)
struct bpf_map_def SEC("maps/dummy_percpu_hash") dummy_percpu_hash = {
.type = BPF_MAP_TYPE_PERCPU_HASH,
.key_size = sizeof(int),
.value_size = sizeof(unsigned int),
.max_entries = 128,
};
struct bpf_map_def SEC("maps/dummy_percpu_array") dummy_percpu_array = {
.type = BPF_MAP_TYPE_PERCPU_ARRAY,
.key_size = sizeof(int),
.value_size = sizeof(unsigned int),
.max_entries = 128,
};
struct bpf_map_def SEC("maps/dummy_stack_trace") dummy_stack_trace = {
.type = BPF_MAP_TYPE_STACK_TRACE,
.key_size = sizeof(int),
.value_size = PERF_MAX_STACK_DEPTH * sizeof(unsigned long long),
.max_entries = 128,
};
#endif
#if KERNEL_VERSION_GTE(48)
struct bpf_map_def SEC("maps/dummy_cgroup_array") dummy_cgroup_array = {
.type = BPF_MAP_TYPE_CGROUP_ARRAY,
.key_size = sizeof(int),
.value_size = sizeof(unsigned int),
.max_entries = 128,
};
#endif
struct bpf_map_def SEC("maps/dummy_array_custom") dummy_array_custom = {
.type = BPF_MAP_TYPE_ARRAY,
.key_size = sizeof(int),
.value_size = sizeof(unsigned int),
.max_entries = 128,
.pinning = PIN_CUSTOM_NS,
};
SEC("kprobe/dummy")
int kprobe__dummy(struct pt_regs *ctx)
{
return 0;
}
SEC("kretprobe/dummy")
int kretprobe__dummy(struct pt_regs *ctx)
{
return 0;
}
SEC("uprobe/dummy")
int uprobe__dummy(struct pt_regs *ctx)
{
return 0;
}
SEC("uretprobe/dummy")
int uretprobe__dummy(struct pt_regs *ctx)
{
return 0;
}
#if KERNEL_VERSION_GTE(410)
SEC("cgroup/skb")
int cgroup_skb__dummy(struct __sk_buff *skb)
{
return 1;
}
SEC("cgroup/sock")
int cgroup_sock__dummy(struct __sk_buff *skb)
{
return 0;
}
#endif
#if KERNEL_VERSION_GTE(47)
SEC("tracepoint/raw_syscalls/sys_enter")
int tracepoint__raw_sys_enter()
{
return 0;
}
#endif
SEC("socket/dummy")
int socket__dummy(struct __sk_buff *skb)
{
return 0;
}
#if KERNEL_VERSION_GTE(48)
SEC("xdp/prog1")
int xdp_drop(struct xdp_md *ctx) {
return XDP_DROP;
}
SEC("xdp/prog2")
int xdp_pass(struct xdp_md *ctx) {
return XDP_PASS;
}
#endif
unsigned int _version SEC("version") = 0xFFFFFFFE;
|