2015-07-01 02:14:03 +00:00
/*
* common eBPF ELF operations .
*
* Copyright ( C ) 2013 - 2015 Alexei Starovoitov < ast @ kernel . org >
* Copyright ( C ) 2015 Wang Nan < wangnan0 @ huawei . com >
* Copyright ( C ) 2015 Huawei Inc .
2016-07-04 11:02:42 +00:00
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation ;
* version 2.1 of the License ( not later ! )
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU Lesser General Public License for more details .
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program ; if not , see < http : //www.gnu.org/licenses>
2015-07-01 02:14:03 +00:00
*/
# ifndef __BPF_BPF_H
# define __BPF_BPF_H
# include <linux/bpf.h>
2017-02-07 21:56:05 +01:00
# include <stddef.h>
2015-07-01 02:14:03 +00:00
2017-08-18 11:28:01 -07:00
int bpf_create_map_node ( enum bpf_map_type map_type , int key_size ,
int value_size , int max_entries , __u32 map_flags ,
int node ) ;
2015-07-01 02:14:03 +00:00
int bpf_create_map ( enum bpf_map_type map_type , int key_size , int value_size ,
2016-12-08 18:46:16 -08:00
int max_entries , __u32 map_flags ) ;
2017-08-18 11:28:01 -07:00
int bpf_create_map_in_map_node ( enum bpf_map_type map_type , int key_size ,
int inner_map_fd , int max_entries ,
__u32 map_flags , int node ) ;
2017-03-22 10:00:35 -07:00
int bpf_create_map_in_map ( enum bpf_map_type map_type , int key_size ,
int inner_map_fd , int max_entries , __u32 map_flags ) ;
2015-07-01 02:14:03 +00:00
2015-07-01 02:14:06 +00:00
/* Recommend log buffer size */
# define BPF_LOG_BUF_SIZE 65536
2017-02-10 00:21:38 +01:00
int bpf_load_program ( enum bpf_prog_type type , const struct bpf_insn * insns ,
size_t insns_cnt , const char * license ,
2016-12-08 18:46:15 -08:00
__u32 kern_version , char * log_buf ,
2015-07-01 02:14:06 +00:00
size_t log_buf_sz ) ;
2017-05-10 11:42:48 -07:00
int bpf_verify_program ( enum bpf_prog_type type , const struct bpf_insn * insns ,
size_t insns_cnt , int strict_alignment ,
const char * license , __u32 kern_version ,
2017-07-21 00:00:22 +02:00
char * log_buf , size_t log_buf_sz , int log_level ) ;
2015-07-01 02:14:06 +00:00
2017-02-10 00:21:39 +01:00
int bpf_map_update_elem ( int fd , const void * key , const void * value ,
2016-12-08 18:46:15 -08:00
__u64 flags ) ;
2016-11-26 07:03:25 +00:00
2017-02-10 00:21:40 +01:00
int bpf_map_lookup_elem ( int fd , const void * key , void * value ) ;
2017-02-10 00:21:41 +01:00
int bpf_map_delete_elem ( int fd , const void * key ) ;
2017-02-10 00:21:42 +01:00
int bpf_map_get_next_key ( int fd , const void * key , void * next_key ) ;
2016-11-26 07:03:25 +00:00
int bpf_obj_pin ( int fd , const char * pathname ) ;
int bpf_obj_get ( const char * pathname ) ;
2017-02-10 20:28:24 -08:00
int bpf_prog_attach ( int prog_fd , int attachable_fd , enum bpf_attach_type type ,
unsigned int flags ) ;
2016-12-14 14:05:26 -08:00
int bpf_prog_detach ( int attachable_fd , enum bpf_attach_type type ) ;
2017-03-30 21:45:39 -07:00
int bpf_prog_test_run ( int prog_fd , int repeat , void * data , __u32 size ,
void * data_out , __u32 * size_out , __u32 * retval ,
__u32 * duration ) ;
2017-06-05 12:15:53 -07:00
int bpf_prog_get_next_id ( __u32 start_id , __u32 * next_id ) ;
int bpf_map_get_next_id ( __u32 start_id , __u32 * next_id ) ;
int bpf_prog_get_fd_by_id ( __u32 id ) ;
int bpf_map_get_fd_by_id ( __u32 id ) ;
int bpf_obj_get_info_by_fd ( int prog_fd , void * info , __u32 * info_len ) ;
2016-11-26 07:03:25 +00:00
2015-07-01 02:14:03 +00:00
# endif