Any eBPF program must be GPL compatible to use GPL-ed functions. Please see kernel code snippet http://elixir.free-electrons.com/linux/latest/source/kernel/bpf/syscall.c
/* eBPF programs must be GPL compatible to use GPL-ed functions */ is_gpl = license_is_gpl_compatible(license); where you can find in http://elixir.free-electrons.com/linux/latest/source/include/linux/license.h#L4 the implementation of licensing checking: static inline int license_is_gpl_compatible(const char *license) { return (strcmp(license, "GPL") == 0 || strcmp(license, "GPL v2") == 0 || strcmp(license, "GPL and additional rights") == 0 || strcmp(license, "Dual BSD/GPL") == 0 || strcmp(license, "Dual MIT/GPL") == 0 || strcmp(license, "Dual MPL/GPL") == 0); } Calling BPF system call to download an eBPF program will require using any one of the GPL strings listed above. Is "Dual BSD/GPL" acceptable? Please advise. > -----Original Message----- > From: Pascal Mazon [mailto:pascal.ma...@6wind.com] > Sent: Tuesday, December 05, 2017 9:59 AM > To: Thomas Monjalon <tho...@monjalon.net>; Stephen Hemminger > <step...@networkplumber.org> > Cc: dev@dpdk.org; Ophir Munk <ophi...@mellanox.com>; Olga Shern > <ol...@mellanox.com> > Subject: Re: [dpdk-dev] [RFC 2/2] net/tap: add eBPF instructions > > Indeed, the spirit of the initial work was to publish source code, compiled > BPF bytecode, and Makefile for re-generating the latter. > I have no clue regarding licensing, I'll trust you guys on that. > > On 30/11/2017 18:39, Thomas Monjalon wrote: > > 30/11/2017 18:20, Stephen Hemminger: > >> On Thu, 30 Nov 2017 18:05:22 +0100 > >> Thomas Monjalon <tho...@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. > > Good point. > > The compiled BPF may be provided as a plugin file. > > So we would be free to not package this GPL file.