github.com/looshlee/beatles@v0.0.0-20220727174639-742810ab631c/bpf/include/iproute2/bpf_elf.h (about)

     1  #ifndef __BPF_ELF__
     2  #define __BPF_ELF__
     3  
     4  #include <linux/type_mapper.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_CLASSIFIER	"classifier"
    19  #define ELF_SECTION_ACTION	"action"
    20  
    21  #define ELF_MAX_MAPS		64
    22  #define ELF_MAX_LICENSE_LEN	128
    23  
    24  /* Object pinning settings */
    25  #define PIN_NONE		0
    26  #define PIN_OBJECT_NS		1
    27  #define PIN_GLOBAL_NS		2
    28  
    29  /* ELF map definition */
    30  struct bpf_elf_map {
    31  	__u32 type;
    32  	__u32 size_key;
    33  	__u32 size_value;
    34  	__u32 max_elem;
    35  	__u32 flags;
    36  	__u32 id;
    37  	__u32 pinning;
    38  #ifdef SOCKMAP
    39  	__u32 inner_id;
    40  	__u32 inner_idx;
    41  #endif
    42  };
    43  
    44  #endif /* __BPF_ELF__ */