[dpdk-dev] [RFC 2/2] net/tap: add eBPF instructions

Stephen Hemminger stephen at networkplumber.org
Thu Nov 30 18:20:42 CET 2017


On Thu, 30 Nov 2017 18:05:22 +0100
Thomas Monjalon <thomas at monjalon.net> wrote:

> 30/11/2017 17:54, Stephen Hemminger:
> > Loading BPF is a could solution to doing dynamic flow matching.
> > It needs to be done differently to be accepted.
> > 
> > Putting raw machine instructions in source code is as bad as binary
> > blobs. You need to provide original source of program and then have
> > build instructions to create any needed code.  
> 
> The source program is provided in this patch: tap_bpf_program.c
> It is pre-compiled to avoid requiring too many dependencies when building DPDK.

But the "freedom to modify" comes into play here. If a *evil* vendor builds
an application based on DPDK and does not provide source. Then user still deserves
the right to modify the eBPF program that it loads as GPL.  The best solution
is to make the TAP PMD loader routine load the program from a file.
Although I am certainly not a FSF legal scholar, putting GPL'd object code in
TAP PMD risks accusations of being a derived or combined work.

> 
> > There licensing concerns here as well. Any BPF program inserted
> > in the kernel must be GPL. So you need to provide source.
> > 
> > Given the license overlap you should also document that in the rte_flow_tap.rst
> > file.
> > 
> > The program that loads the program can be BSD, it just needs to pick
> > up the BPF firmware file from a compiled ELF image.  
> 
> The program that loads BPF is the TAP PMD itself.
> 



More information about the dev mailing list