123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- // This is a compact version of `vmlinux.h` to be used in the examples using C code.
- #pragma once
- typedef unsigned char __u8;
- typedef short int __s16;
- typedef short unsigned int __u16;
- typedef int __s32;
- typedef unsigned int __u32;
- typedef long long int __s64;
- typedef long long unsigned int __u64;
- typedef __u8 u8;
- typedef __s16 s16;
- typedef __u16 u16;
- typedef __s32 s32;
- typedef __u32 u32;
- typedef __s64 s64;
- typedef __u64 u64;
- typedef __u16 __le16;
- typedef __u16 __be16;
- typedef __u32 __be32;
- typedef __u64 __be64;
- typedef __u32 __wsum;
- #include "bpf_helpers.h"
- enum bpf_map_type {
- BPF_MAP_TYPE_UNSPEC = 0,
- BPF_MAP_TYPE_HASH = 1,
- BPF_MAP_TYPE_ARRAY = 2,
- BPF_MAP_TYPE_PROG_ARRAY = 3,
- BPF_MAP_TYPE_PERF_EVENT_ARRAY = 4,
- BPF_MAP_TYPE_PERCPU_HASH = 5,
- BPF_MAP_TYPE_PERCPU_ARRAY = 6,
- BPF_MAP_TYPE_STACK_TRACE = 7,
- BPF_MAP_TYPE_CGROUP_ARRAY = 8,
- BPF_MAP_TYPE_LRU_HASH = 9,
- BPF_MAP_TYPE_LRU_PERCPU_HASH = 10,
- BPF_MAP_TYPE_LPM_TRIE = 11,
- BPF_MAP_TYPE_ARRAY_OF_MAPS = 12,
- BPF_MAP_TYPE_HASH_OF_MAPS = 13,
- BPF_MAP_TYPE_DEVMAP = 14,
- BPF_MAP_TYPE_SOCKMAP = 15,
- BPF_MAP_TYPE_CPUMAP = 16,
- BPF_MAP_TYPE_XSKMAP = 17,
- BPF_MAP_TYPE_SOCKHASH = 18,
- BPF_MAP_TYPE_CGROUP_STORAGE = 19,
- BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 20,
- BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 21,
- BPF_MAP_TYPE_QUEUE = 22,
- BPF_MAP_TYPE_STACK = 23,
- BPF_MAP_TYPE_SK_STORAGE = 24,
- BPF_MAP_TYPE_DEVMAP_HASH = 25,
- BPF_MAP_TYPE_STRUCT_OPS = 26,
- BPF_MAP_TYPE_RINGBUF = 27,
- BPF_MAP_TYPE_INODE_STORAGE = 28,
- };
- enum xdp_action {
- XDP_ABORTED = 0,
- XDP_DROP = 1,
- XDP_PASS = 2,
- XDP_TX = 3,
- XDP_REDIRECT = 4,
- };
- struct xdp_md {
- __u32 data;
- __u32 data_end;
- __u32 data_meta;
- __u32 ingress_ifindex;
- __u32 rx_queue_index;
- __u32 egress_ifindex;
- };
- typedef __u16 __sum16;
- #define ETH_P_IP 0x0800
- struct ethhdr {
- unsigned char h_dest[6];
- unsigned char h_source[6];
- __be16 h_proto;
- };
- struct iphdr {
- __u8 ihl: 4;
- __u8 version: 4;
- __u8 tos;
- __be16 tot_len;
- __be16 id;
- __be16 frag_off;
- __u8 ttl;
- __u8 protocol;
- __sum16 check;
- __be32 saddr;
- __be32 daddr;
- };
- enum {
- BPF_ANY = 0,
- BPF_NOEXIST = 1,
- BPF_EXIST = 2,
- BPF_F_LOCK = 4,
- };
- /* BPF_FUNC_perf_event_output, BPF_FUNC_perf_event_read and
- * BPF_FUNC_perf_event_read_value flags.
- */
- #define BPF_F_INDEX_MASK 0xffffffffULL
- #define BPF_F_CURRENT_CPU BPF_F_INDEX_MASK
- #if defined(__TARGET_ARCH_x86)
- struct pt_regs {
- /*
- * C ABI says these regs are callee-preserved. They aren't saved on kernel entry
- * unless syscall needs a complete, fully filled "struct pt_regs".
- */
- unsigned long r15;
- unsigned long r14;
- unsigned long r13;
- unsigned long r12;
- unsigned long rbp;
- unsigned long rbx;
- /* These regs are callee-clobbered. Always saved on kernel entry. */
- unsigned long r11;
- unsigned long r10;
- unsigned long r9;
- unsigned long r8;
- unsigned long rax;
- unsigned long rcx;
- unsigned long rdx;
- unsigned long rsi;
- unsigned long rdi;
- /*
- * On syscall entry, this is syscall#. On CPU exception, this is error code.
- * On hw interrupt, it's IRQ number:
- */
- unsigned long orig_rax;
- /* Return frame for iretq */
- unsigned long rip;
- unsigned long cs;
- unsigned long eflags;
- unsigned long rsp;
- unsigned long ss;
- /* top of stack page */
- };
- #endif /* __TARGET_ARCH_x86 */
|