File: dummy.c

package info (click to toggle)
golang-github-iovisor-gobpf 0.2.0-10
  • links: PTS, VCS
  • area: main
  • in suites: experimental, forky, sid, trixie
  • size: 732 kB
  • sloc: ansic: 2,716; makefile: 17; sh: 7
file content (148 lines) | stat: -rw-r--r-- 3,042 bytes parent folder | download | duplicates (2)
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;