>> Example of the new API:
>> struct rte_bpf *
>> rte_bpf_elf_image_load(const struct rte_bpf_prm *prm, char *image,
>> size_t size, const char *sname);
>>
> Did you look at rte_bpf_load()?
> Basically it works with already pre-loaded into memory bpf program.
> In fact, rte_bpf_elf_load() calls it internally after reading elf
> sections, resolving external references, etc.
> Would it meet your needs?
Yes, I think we could create our own elf_image_load() function that uses rte_bpf_load().
I understand that we don't want to have a bunch of specific variants of load-functions in dpdk,
specially if they are not used in any example or usecase.
> AFAIK linux BPF is restricted to work with a single argument only.
> I don't want DPDK version to fork too far away from 'canonical' version.
> Though, as I said above, nothing prevents you to create a struct
> with several fields, and pass pointer to that struct to your BPF program.
> Would such approach work for you?
Good alternative idea. We will test this approach.
I guess we will use the RTE_BPF_ARG_PTR as an argument for the program in this case.
Just as sidenote: we have also had a glance at
https://github.com/iovisor/ubpf
as an alternative. This is a standalone BPF VM lib, but with Apache 2.0 license and it's not bound to the dpdk log framework.
I have no views on benefits using this in dpdk, but it might be an input for future talks about a common library / collaboration.
Thanks again.
Bjorn