Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
rte_bpf.h(3)			      DPDK			    rte_bpf.h(3)

NAME
     rte_bpf.h

SYNOPSIS
     #include <rte_common.h>
     #include <rte_mbuf.h>
     #include <rte_malloc.h>
     #include <bpf_def.h>

   Data Structures
     struct rte_bpf_arg
     struct rte_bpf_xsym
     struct rte_bpf_prm
     struct rte_bpf_jit

   Macros
     #define RTE_BPF_ARG_PTR_TYPE(x)   ((x) & RTE_BPF_ARG_PTR)

   Enumerations
     enum rte_bpf_arg_type { RTE_BPF_ARG_UNDEF, RTE_BPF_ARG_RAW, RTE_BPF_ARG_PTR
	 = 0x10, RTE_BPF_ARG_PTR_MBUF, RTE_BPF_ARG_RESERVED }
     enum rte_bpf_xtype { RTE_BPF_XTYPE_FUNC, RTE_BPF_XTYPE_VAR }

   Functions
     void rte_bpf_destroy (struct rte_bpf *bpf)
     struct  rte_bpf * rte_bpf_load (const struct rte_bpf_prm *prm) __rte_malloc
	 __rte_dealloc(rte_bpf_destroy
     struct rte_bpf struct rte_bpf * rte_bpf_elf_load (const struct  rte_bpf_prm
	 *prm,	const  char  *fname, const char *sname) __rte_malloc __rte_deal-
	 loc(rte_bpf_destroy
     struct rte_bpf struct rte_bpf uint64_t rte_bpf_exec (const  struct  rte_bpf
	 *bpf, void *ctx)
     uint32_t  rte_bpf_exec_burst  (const  struct  rte_bpf  *bpf,  void  *ctx[],
	 uint64_t rc[], uint32_t num)
     int rte_bpf_get_jit (const struct rte_bpf *bpf, struct rte_bpf_jit *jit)
     void rte_bpf_dump (FILE *f, const struct ebpf_insn *buf, uint32_t len)
     struct rte_bpf_prm  *  rte_bpf_convert  (const  struct  bpf_program  *prog)
	 __rte_malloc __rte_dealloc_free

Detailed Description
     RTE BPF support.

     librte_bpf  provides  a  framework to load and execute eBPF bytecode inside
     user-space dpdk based applications. It supports basic set of features  from
     eBPF spec (https://www.kernel.org/doc/Documentation/networking/filter.txt).

     Definition in file rte_bpf.h.

Macro Definition Documentation
   #define RTE_BPF_ARG_PTR_TYPE(x)   ((x) & RTE_BPF_ARG_PTR)
     determine is argument a pointer

     Definition at line 56 of file rte_bpf.h.

Enumeration Type Documentation
   enum rte_bpf_arg_type
     Possible types for function/BPF program arguments.

     Enumerator

     RTE_BPF_ARG_UNDEF
	    undefined

     RTE_BPF_ARG_RAW
	    scalar value

     RTE_BPF_ARG_PTR
	    pointer to data buffer

     RTE_BPF_ARG_PTR_MBUF
	    pointer to rte_mbuf

     RTE_BPF_ARG_RESERVED
	    reserved for internal use

     Definition at line 31 of file rte_bpf.h.

   enum rte_bpf_xtype
     Possible types for external symbols.

     Enumerator

     RTE_BPF_XTYPE_FUNC
	    function

     RTE_BPF_XTYPE_VAR
	    variable

     Definition at line 61 of file rte_bpf.h.

Function Documentation
   void rte_bpf_destroy (struct rte_bpf * bpf)
     De-allocate all memory used by this eBPF execution context.

     Parameters
	 bpf BPF handle to destroy.

   struct rte_bpf * rte_bpf_load (const struct rte_bpf_prm * prm)
     Create a new eBPF execution context and load given BPF code into it.

     Parameters
	 prm Parameters used to create and initialise the BPF execution context.

     Returns
	 BPF  handle  that  is	used in future BPF operations, or NULL on error,
	 with error code set in rte_errno. Possible rte_errno errors include:

	 * EINVAL - invalid parameter passed to function

	 * ENOMEM - can't reserve enough memory

   struct rte_bpf struct rte_bpf * rte_bpf_elf_load (const struct rte_bpf_prm  *
     prm, const char * fname, const char * sname)
     Create  a	new eBPF execution context and load BPF code from given ELF file
     into it. Note that if the function will encounter EBPF_PSEUDO_CALL instruc-
     tion that references external symbol, it will treat is as standard BPF_CALL
     to the external helper function.

     Parameters
	 prm Parameters used to create and initialise the BPF execution context.
	 fname Pathname for a ELF file.
	 sname Name of the executable section within the file to load.

     Returns
	 BPF handle that is used in future BPF operations,  or	NULL  on  error,
	 with error code set in rte_errno. Possible rte_errno errors include:

	 * EINVAL - invalid parameter passed to function

	 * ENOMEM - can't reserve enough memory

   struct  rte_bpf  struct rte_bpf uint64_t rte_bpf_exec (const struct rte_bpf *
     bpf, void * ctx)
     Execute given BPF bytecode.

     Parameters
	 bpf handle for the BPF code to execute.
	 ctx pointer to input context.

     Returns
	 BPF execution return value.

   uint32_t rte_bpf_exec_burst (const  struct  rte_bpf	*  bpf,  void  *  ctx[],
     uint64_t rc[], uint32_t num)
     Execute given BPF bytecode over a set of input contexts.

     Parameters
	 bpf handle for the BPF code to execute.
	 ctx array of pointers to the input contexts.
	 rc array of return values (one per input).
	 num number of elements in ctx[] (and rc[]).

     Returns
	 number of successfully processed inputs.

   int rte_bpf_get_jit (const struct rte_bpf * bpf, struct rte_bpf_jit * jit)
     Provide information about natively compiled code for given BPF handle.

     Parameters
	 bpf handle for the BPF code.
	 jit  pointer  to  the	rte_bpf_jit  structure to be filled with related
	 data.

     Returns

	 * -EINVAL if the parameters are invalid.

	 * Zero if operation completed successfully.

   void rte_bpf_dump (FILE * f, const struct ebpf_insn * buf, uint32_t len)
     Dump epf instructions to a file.

     Parameters
	 f A pointer to a file for output
	 buf A pointer to BPF instructions
	 len Number of BPF instructions to dump.

   struct rte_bpf_prm * rte_bpf_convert (const struct bpf_program * prog)
     Convert a Classic BPF program from libpcap into a DPDK BPF code.

     Parameters
	 prog Classic BPF program from pcap_compile().

     Returns
	 Pointer to BPF program (allocated with rte_malloc) that is used in  fu-
	 ture  BPF  operations, or NULL on error, with error code set in rte_er-
	 rno. Possible rte_errno errors include:

	 * EINVAL - invalid parameter passed to function

	 * ENOMEM - can't reserve enough memory

	 * ENOTSUP - operation not supported

Author
     Generated automatically by Doxygen for DPDK from the source code.

Version 25.11.0 		 Thu Aug 27 2026		    rte_bpf.h(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=rte_bpf_exec_burst&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help