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.

Reply via email to