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

Ophir Munk ophirmu at mellanox.com
Wed Dec 13 10:58:18 CET 2017


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.mazon at 6wind.com]
> Sent: Tuesday, December 05, 2017 9:59 AM
> To: Thomas Monjalon <thomas at monjalon.net>; Stephen Hemminger
> <stephen at networkplumber.org>
> Cc: dev at dpdk.org; Ophir Munk <ophirmu at mellanox.com>; Olga Shern
> <olgas at 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 <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.
> > Good point.
> > The compiled BPF may be provided as a plugin file.
> > So we would be free to not package this GPL file.



More information about the dev mailing list