xref: /aosp_15_r20/external/iproute2/include/bpf_elf.h (revision de1e4e894b0c224df933550f0afdecc354b238c4)
1*de1e4e89SAndroid Build Coastguard Worker #ifndef __BPF_ELF__
2*de1e4e89SAndroid Build Coastguard Worker #define __BPF_ELF__
3*de1e4e89SAndroid Build Coastguard Worker 
4*de1e4e89SAndroid Build Coastguard Worker #include <asm/types.h>
5*de1e4e89SAndroid Build Coastguard Worker 
6*de1e4e89SAndroid Build Coastguard Worker /* Note:
7*de1e4e89SAndroid Build Coastguard Worker  *
8*de1e4e89SAndroid Build Coastguard Worker  * Below ELF section names and bpf_elf_map structure definition
9*de1e4e89SAndroid Build Coastguard Worker  * are not (!) kernel ABI. It's rather a "contract" between the
10*de1e4e89SAndroid Build Coastguard Worker  * application and the BPF loader in tc. For compatibility, the
11*de1e4e89SAndroid Build Coastguard Worker  * section names should stay as-is. Introduction of aliases, if
12*de1e4e89SAndroid Build Coastguard Worker  * needed, are a possibility, though.
13*de1e4e89SAndroid Build Coastguard Worker  */
14*de1e4e89SAndroid Build Coastguard Worker 
15*de1e4e89SAndroid Build Coastguard Worker /* ELF section names, etc */
16*de1e4e89SAndroid Build Coastguard Worker #define ELF_SECTION_LICENSE	"license"
17*de1e4e89SAndroid Build Coastguard Worker #define ELF_SECTION_MAPS	"maps"
18*de1e4e89SAndroid Build Coastguard Worker #define ELF_SECTION_PROG	"prog"
19*de1e4e89SAndroid Build Coastguard Worker #define ELF_SECTION_CLASSIFIER	"classifier"
20*de1e4e89SAndroid Build Coastguard Worker #define ELF_SECTION_ACTION	"action"
21*de1e4e89SAndroid Build Coastguard Worker 
22*de1e4e89SAndroid Build Coastguard Worker #define ELF_MAX_MAPS		64
23*de1e4e89SAndroid Build Coastguard Worker #define ELF_MAX_LICENSE_LEN	128
24*de1e4e89SAndroid Build Coastguard Worker 
25*de1e4e89SAndroid Build Coastguard Worker /* Object pinning settings */
26*de1e4e89SAndroid Build Coastguard Worker #define PIN_NONE		0
27*de1e4e89SAndroid Build Coastguard Worker #define PIN_OBJECT_NS		1
28*de1e4e89SAndroid Build Coastguard Worker #define PIN_GLOBAL_NS		2
29*de1e4e89SAndroid Build Coastguard Worker 
30*de1e4e89SAndroid Build Coastguard Worker /* ELF map definition */
31*de1e4e89SAndroid Build Coastguard Worker struct bpf_elf_map {
32*de1e4e89SAndroid Build Coastguard Worker 	__u32 type;
33*de1e4e89SAndroid Build Coastguard Worker 	__u32 size_key;
34*de1e4e89SAndroid Build Coastguard Worker 	__u32 size_value;
35*de1e4e89SAndroid Build Coastguard Worker 	__u32 max_elem;
36*de1e4e89SAndroid Build Coastguard Worker 	__u32 flags;
37*de1e4e89SAndroid Build Coastguard Worker 	__u32 id;
38*de1e4e89SAndroid Build Coastguard Worker 	__u32 pinning;
39*de1e4e89SAndroid Build Coastguard Worker 	__u32 inner_id;
40*de1e4e89SAndroid Build Coastguard Worker 	__u32 inner_idx;
41*de1e4e89SAndroid Build Coastguard Worker };
42*de1e4e89SAndroid Build Coastguard Worker 
43*de1e4e89SAndroid Build Coastguard Worker #endif /* __BPF_ELF__ */
44