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