#include <rte_common.h>
#include <rte_mbuf.h>
#include <bpf_def.h>
Go to the source code of this file.
EXPERIMENTAL: this API may change without prior notice
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.
determine is argument a pointer
Definition at line 55 of file rte_bpf.h.
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
|
Definition at line 30 of file rte_bpf.h.
Possible types for external symbols.
Enumerator |
---|
RTE_BPF_XTYPE_FUNC |
function
|
RTE_BPF_XTYPE_VAR |
variable
|
Definition at line 60 of file rte_bpf.h.
__rte_experimental void rte_bpf_destroy |
( |
struct rte_bpf * |
bpf | ) |
|
De-allocate all memory used by this eBPF execution context.
- Parameters
-
bpf | BPF handle to destroy. |
__rte_experimental 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
__rte_experimental 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 instruction 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
__rte_experimental 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.
__rte_experimental 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.
__rte_experimental 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.