On 5/7/18 8:10 AM, Daniel Borkmann wrote: > On 05/07/2018 03:35 PM, Jesper Dangaard Brouer wrote: >> On Thu, 3 May 2018 19:54:31 -0700 David Ahern <dsah...@gmail.com> wrote: >> >>> diff --git a/net/core/filter.c b/net/core/filter.c >>> index 6877426c23a6..cf0d27acf1d1 100644 >>> --- a/net/core/filter.c >>> +++ b/net/core/filter.c >> [...] >>> +static const struct bpf_func_proto bpf_xdp_fib_lookup_proto = { >>> + .func = bpf_xdp_fib_lookup, >>> + .gpl_only = true, >> >> Is it a deliberate choice to require BPF-progs using this helper to be >> GPL licensed? >> >> Asking as this seems to be the first network related helper with this >> requirement, while this is typical for tracing related helpers. > > Good point, we should remove that. In networking it's only the perf event > output helpers tying into tracing bits. After all, if you do a route lookup > via netlink from user space there's no such restriction at all. >
Networking symbols are typically exported GPL for modules. The person writing the code and exporting GPL is specifying a desire that only GPL licensed modules can link to the symbol. Given the common analogy of modules and bpf programs, why can't a writer of a bpf helper specify a preference that only GPL licensed programs leverage a BPF helper?