/**
* @file rte_bpf.h
- * @b 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
RTE_BPF_ARG_RAW, /**< scalar value */
RTE_BPF_ARG_PTR = 0x10, /**< pointer to data buffer */
RTE_BPF_ARG_PTR_MBUF, /**< pointer to rte_mbuf */
- RTE_BPF_ARG_PTR_STACK,
+ RTE_BPF_ARG_RESERVED /**< reserved for internal use */
};
/**
*/
enum rte_bpf_xtype {
RTE_BPF_XTYPE_FUNC, /**< function */
- RTE_BPF_XTYPE_VAR, /**< variable */
- RTE_BPF_XTYPE_NUM
+ RTE_BPF_XTYPE_VAR /**< variable */
};
/**
* @param bpf
* BPF handle to destroy.
*/
-__rte_experimental
void
rte_bpf_destroy(struct rte_bpf *bpf);
* - EINVAL - invalid parameter passed to function
* - ENOMEM - can't reserve enough memory
*/
-__rte_experimental
struct rte_bpf *
rte_bpf_load(const struct rte_bpf_prm *prm);
* - 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);
* @return
* BPF execution return value.
*/
-__rte_experimental
uint64_t
rte_bpf_exec(const struct rte_bpf *bpf, void *ctx);
* @return
* number of successfully processed inputs.
*/
-__rte_experimental
uint32_t
rte_bpf_exec_burst(const struct rte_bpf *bpf, void *ctx[], uint64_t rc[],
uint32_t num);
* - -EINVAL if the parameters are invalid.
* - Zero if operation completed successfully.
*/
-__rte_experimental
int
rte_bpf_get_jit(const struct rte_bpf *bpf, struct rte_bpf_jit *jit);