From mboxrd@z Thu Jan 1 00:00:00 1970 From: Li Zhijian Subject: Re: [PATCH bpf] tools/bpftool: copy uapi/linux/tc_act/tc_bpf.h to tools directory Date: Thu, 8 Nov 2018 09:15:24 +0800 Message-ID: <149eb435-a9b5-da31-9f72-52168a9058f4@intel.com> References: <20181108010011.3982963-1-yhs@fb.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Cc: kernel-team@fb.com To: Yonghong Song , ast@fb.com, kafai@fb.com, daniel@iogearbox.net, netdev@vger.kernel.org, rong.a.chen@intel.com Return-path: Received: from mga18.intel.com ([134.134.136.126]:5494 "EHLO mga18.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728175AbeKHKs0 (ORCPT ); Thu, 8 Nov 2018 05:48:26 -0500 In-Reply-To: <20181108010011.3982963-1-yhs@fb.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: On 11/8/2018 9:00 AM, Yonghong Song wrote: > Commit f6f3bac08ff9 ("tools/bpf: bpftool: add net support") > added certain networking support to bpftool. > The implementation relies on a relatively recent uapi header file > linux/tc_act/tc_bpf.h on the host which contains the marco > definition of TCA_ACT_BPF_ID. > > Unfortunately, this is not the case for all distributions. > See the email message below where rhel-7.2 does not have > an up-to-date linux/tc_act/tc_bpf.h. > https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1799211.html i have not tested this patch, but basing on the early commit 6f3bac08ff9 ("tools/bpf: bpftool: add net support") i cooked up similar patch locally, but i noticed that it also requires an up-to-date linux/pkt_cls.h as well to avoid compiling errors: root@lkp-bdw-ep3 ~/linux-f6f3bac08f/tools/bpf/bpftool# make V=1 [...snip...] gcc -O2 -W -Wall -Wextra -Wno-unused-parameter -Wshadow -Wno-missing-field-initializers -DPACKAGE='"bpftool"' -D__EXPORTED_HEADERS__ -I/root/linux-f6f3bac08f/kernel/bpf/ -I/root/linux-f6f3bac08f/tools/include -I/root/linux-f6f3bac08f/tools/include/uapi -I/root/linux-f6f3bac08f/tools/lib/bpf -I/root/linux-f6f3bac08f/tools/perf -DBPFTOOL_VERSION='"4.19.0-rc2"' -DCOMPAT_NEED_REALLOCARRAY -c -MMD -o netlink_dumper.o netlink_dumper.c make -C /root/linux-f6f3bac08f/tools/lib/bpf/ OUTPUT= libbpf.a make[1]: Entering directory '/root/linux-f6f3bac08f/tools/lib/bpf' netlink_dumper.c: In function 'do_bpf_filter_dump': netlink_dumper.c:153:9: error: 'TCA_BPF_ID' undeclared (first use in this function) if (tb[TCA_BPF_ID]) ^~~~~~~~~~ netlink_dumper.c:153:9: note: each undeclared identifier is reported only once for each function it appears in netlink_dumper.c:155:9: error: 'TCA_BPF_TAG' undeclared (first use in this function) if (tb[TCA_BPF_TAG]) ^~~~~~~~~~~ Makefile:96: recipe for target 'netlink_dumper.o' failed make: *** [netlink_dumper.o] Error 1 make: *** Waiting for unfinished jobs.... make -f /root/linux-f6f3bac08f/tools/build/Makefile.build dir=. obj=libbpf make[1]: Leaving directory '/root/linux-f6f3bac08f/tools/lib/bpf' Thanks Zhijian > > This patch fixed the issue by copying linux/tc_act/tc_bpf.h from > kernel include/uapi directory to tools/include/uapi directory so > building the bpftool does not depend on host system for this file. > > Fixes: f6f3bac08ff9 ("tools/bpf: bpftool: add net support") > Reported-by: kernel test robot > Signed-off-by: Yonghong Song > --- > tools/include/uapi/linux/tc_act/tc_bpf.h | 37 ++++++++++++++++++++++++ > 1 file changed, 37 insertions(+) > create mode 100644 tools/include/uapi/linux/tc_act/tc_bpf.h > > diff --git a/tools/include/uapi/linux/tc_act/tc_bpf.h b/tools/include/uapi/linux/tc_act/tc_bpf.h > new file mode 100644 > index 000000000000..6e89a5df49a4 > --- /dev/null > +++ b/tools/include/uapi/linux/tc_act/tc_bpf.h > @@ -0,0 +1,37 @@ > +/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ > +/* > + * Copyright (c) 2015 Jiri Pirko > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + */ > + > +#ifndef __LINUX_TC_BPF_H > +#define __LINUX_TC_BPF_H > + > +#include > + > +#define TCA_ACT_BPF 13 > + > +struct tc_act_bpf { > + tc_gen; > +}; > + > +enum { > + TCA_ACT_BPF_UNSPEC, > + TCA_ACT_BPF_TM, > + TCA_ACT_BPF_PARMS, > + TCA_ACT_BPF_OPS_LEN, > + TCA_ACT_BPF_OPS, > + TCA_ACT_BPF_FD, > + TCA_ACT_BPF_NAME, > + TCA_ACT_BPF_PAD, > + TCA_ACT_BPF_TAG, > + TCA_ACT_BPF_ID, > + __TCA_ACT_BPF_MAX, > +}; > +#define TCA_ACT_BPF_MAX (__TCA_ACT_BPF_MAX - 1) > + > +#endif