On Wed, 29 Nov 2017 02:05:09 +0100 Daniel Borkmann <dan...@iogearbox.net> wrote:
> Hi Stephen, > > after merge of master into net-next branch the build is now broken > for BPF loader as follows: > > # make > > lib > make[1]: Entering directory '/home/darkstar/iproute2/lib' > CC libgenl.o > CC ll_map.o > CC libnetlink.o > libnetlink.c:120:2: warning: #warning "libmnl required for error support" > [-Wcpp] > #warning "libmnl required for error support" > ^~~~~~~ > AR libnetlink.a > CC utils.o > CC rt_names.o > CC ll_types.o > CC ll_proto.o > CC ll_addr.o > CC inet_proto.o > CC namespace.o > CC json_writer.o > CC json_print.o > CC names.o > CC color.o > CC bpf.o > bpf.c: In function ‘bpf_prog_load_dev’: > bpf.c:1080:6: error: ‘union bpf_attr’ has no member named ‘prog_ifindex’; did > you mean ‘prog_id’? > attr.prog_ifindex = ifindex; > ^ > ../config.mk:39: recipe for target 'bpf.o' failed > make[1]: *** [bpf.o] Error 1 > make[1]: Leaving directory '/home/darkstar/iproute2/lib' > Makefile:59: recipe for target 'all' failed > make: *** [all] Error 2 > > Can you rebase kernel headers to fix it, in net-next branch they > are not up to date which is why the build error occurs in combination > with below merged series? > > Thanks, > Daniel > > > On 11/24/2017 03:11 AM, Jakub Kicinski wrote: > > Hi! > > > > This series allows us to pass ifindex automatically when we > > set up TC cls_bpf or XDP offload. There is a fair bit of > > refactoring to separate the parse and load stages of lib/bpf.c. > > In case of TC the skip_sw flag may come after the program > > arguments (e.g. "bpf obj prog.o da skip_sw"), so we can't > > just load the program as we parse the arguments. Note that > > this impacts only loading of the program, all other supported > > methods of finding a program (pinned, bytecode, bytefile-file) > > are handled as previously, the load call will do nothing for > > them. > > > > To simplify the implementation f_bpf and m_bpf will no longer > > allow specifying programs multiple times. Device ifindex is > > also resolved before running filter-specific code. > > > > > > Jakub Kicinski (11): > > bpf: pass program type in struct bpf_cfg_in > > bpf: keep parsed program mode in struct bpf_cfg_in > > bpf: allocate opcode table in struct bpf_cfg_in > > bpf: split parse from program loading > > bpf: rename bpf_parse_common() to bpf_parse_and_load_common() > > bpf: expose bpf_parse_common() and bpf_load_common() > > bpf: allow loading programs for a specific ifindex > > {f,m}_bpf: don't allow specifying multiple bpf programs > > tc_filter: resolve device name before parsing filter > > f_bpf: communicate ifindex for eBPF offload > > iplink: communicate ifindex for xdp offload > > > > include/bpf_util.h | 25 +++++++- > > ip/iplink.c | 4 +- > > ip/iplink_xdp.c | 13 ++++- > > ip/iproute_lwtunnel.c | 3 +- > > ip/xdp.h | 4 +- > > lib/bpf.c | 155 > > ++++++++++++++++++++++++++++++-------------------- > > tc/f_bpf.c | 18 +++++- > > tc/m_bpf.c | 6 +- > > tc/tc_filter.c | 50 ++++++++-------- > > 9 files changed, 178 insertions(+), 100 deletions(-) > > > Sorry, net-next branch had out of date headers. Now fixed.