2014-12-01 15:06:37 -08:00
# ifndef __BPF_HELPERS_H
# define __BPF_HELPERS_H
/* helper macro to place programs, maps, license in
* different sections in elf_bpf file . Section names
* are interpreted by elf_bpf loader
*/
# define SEC(NAME) __attribute__((section(NAME), used))
/* helper functions called from eBPF programs written in C */
static void * ( * bpf_map_lookup_elem ) ( void * map , void * key ) =
( void * ) BPF_FUNC_map_lookup_elem ;
static int ( * bpf_map_update_elem ) ( void * map , void * key , void * value ,
unsigned long long flags ) =
( void * ) BPF_FUNC_map_update_elem ;
static int ( * bpf_map_delete_elem ) ( void * map , void * key ) =
( void * ) BPF_FUNC_map_delete_elem ;
2015-03-25 12:49:23 -07:00
static int ( * bpf_probe_read ) ( void * dst , int size , void * unsafe_ptr ) =
( void * ) BPF_FUNC_probe_read ;
static unsigned long long ( * bpf_ktime_get_ns ) ( void ) =
( void * ) BPF_FUNC_ktime_get_ns ;
static int ( * bpf_trace_printk ) ( const char * fmt , int fmt_size , . . . ) =
( void * ) BPF_FUNC_trace_printk ;
2014-12-01 15:06:37 -08:00
/* llvm builtin functions that eBPF C program may use to
* emit BPF_LD_ABS and BPF_LD_IND instructions
*/
struct sk_buff ;
unsigned long long load_byte ( void * skb ,
unsigned long long off ) asm ( " llvm.bpf.load.byte " ) ;
unsigned long long load_half ( void * skb ,
unsigned long long off ) asm ( " llvm.bpf.load.half " ) ;
unsigned long long load_word ( void * skb ,
unsigned long long off ) asm ( " llvm.bpf.load.word " ) ;
/* a helper structure used by eBPF C program
* to describe map attributes to elf_bpf loader
*/
struct bpf_map_def {
unsigned int type ;
unsigned int key_size ;
unsigned int value_size ;
unsigned int max_entries ;
} ;
2015-04-01 17:12:13 -07:00
static int ( * bpf_skb_store_bytes ) ( void * ctx , int off , void * from , int len , int flags ) =
( void * ) BPF_FUNC_skb_store_bytes ;
static int ( * bpf_l3_csum_replace ) ( void * ctx , int off , int from , int to , int flags ) =
( void * ) BPF_FUNC_l3_csum_replace ;
static int ( * bpf_l4_csum_replace ) ( void * ctx , int off , int from , int to , int flags ) =
( void * ) BPF_FUNC_l4_csum_replace ;
2014-12-01 15:06:37 -08:00
# endif