logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Author

       Generated automatically by Doxygen for DPDK from the source code.

DPDK                                             Version 24.11.2                                    rte_bpf.h(3)

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.

Enumeration Type Documentation

enumrte_bpf_arg_type
       Possible types for function/BPF program arguments.

       EnumeratorRTE_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_mbufRTE_BPF_ARG_RESERVED
              reserved for internal use

       Definition at line 30 of file rte_bpf.h.

   enumrte_bpf_xtype
       Possible types for external symbols.

       EnumeratorRTE_BPF_XTYPE_FUNC
              function

       RTE_BPF_XTYPE_VAR
              variable

       Definition at line 60 of file rte_bpf.h.

Function Documentation

voidrte_bpf_destroy(structrte_bpf*bpf)
       De-allocate all memory used by this eBPF execution context.

       Parametersbpf BPF handle to destroy.

   structrte_bpf*rte_bpf_load(conststructrte_bpf_prm*prm)
       Create a new eBPF execution context and load given BPF code into it.

       Parametersprm 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

   structrte_bpf*rte_bpf_elf_load(conststructrte_bpf_prm*prm,constchar*fname,constchar*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 instruction that references external symbol, it will treat is as
       standard BPF_CALL to the external helper function.

       Parametersprm 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

   uint64_trte_bpf_exec(conststructrte_bpf*bpf,void*ctx)
       Execute given BPF bytecode.

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

       Returns
           BPF execution return value.

   uint32_trte_bpf_exec_burst(conststructrte_bpf*bpf,void*ctx[],uint64_trc[],uint32_tnum)
       Execute given BPF bytecode over a set of input contexts.

       Parametersbpf 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.

   intrte_bpf_get_jit(conststructrte_bpf*bpf,structrte_bpf_jit*jit)
       Provide information about natively compiled code for given BPF handle.

       Parametersbpf 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.

   voidrte_bpf_dump(FILE*f,conststructebpf_insn*buf,uint32_tlen)
       Dump epf instructions to a file.

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

   structrte_bpf_prm*rte_bpf_convert(conststructbpf_program*prog)
       Convert a Classic BPF program from libpcap into a DPDK BPF code.

       Parametersprog Classic BPF program from pcap_compile().

       Returns
           Pointer to BPF program (allocated with rte_malloc) 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

           • ENOTSUP - operation not supported

Macro Definition Documentation

#defineRTE_BPF_ARG_PTR_TYPE(x)((x)&RTE_BPF_ARG_PTR)
       determine is argument a pointer

       Definition at line 55 of file rte_bpf.h.

Name

       rte_bpf.h

Synopsis

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

   DataStructures
       struct rte_bpf_arg
       struct rte_bpf_xsym
       struct rte_bpf_prm
       struct rte_bpf_jitMacros
       #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)
       struct rte_bpf * rte_bpf_elf_load (const struct rte_bpf_prm *prm, const char *fname, const char *sname)
       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)

See Also