tools/bpftool: copy uapi/linux/tc_act/tc_bpf.h to tools directory
Subsystems (2)
PATCH 1/1 tools/bpftool: copy uapi/linux/tc_act/tc_bpf.h to tools directory
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/[email protected]/msg1799211.html
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.
--- 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
tools/include/uapi/linux/tc_act/tc_bpf.h new file +37 -0
@@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ +/* +* Copyright (c) 2015 Jiri Pirko <[email protected]> +* +* 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 <linux/pkt_cls.h> + +#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
Signature · 1 line
2.17.1
Quoted 10 lines · Yonghong Song
Commit
f6f3bac08ff9("tools/bpf: bpftool: add net support") added certain networking support to bpftool.
The implementation relies on a relatively recent uapi header filelinux/tc_act/tc_bpf.hon the host which contains the marco definition ofTCA_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/[email protected]/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
Quoted 56 lines
This patch fixed the issue by copying
linux/tc_act/tc_bpf.hfrom kernelinclude/uapidirectory totools/include/uapidirectory 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 <[email protected]>Signed-off-by Yonghong Song <[email protected]>--- 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.htools/include/uapi/linux/tc_act/tc_bpf.h new file +37
-0@@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ +/* +* Copyright (c) 2015 Jiri Pirko <[email protected]> +* +* 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 <linux/pkt_cls.h> + +#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
Quoted 11 lines · Li Zhijian
Quoted 10 lines · Yonghong Song
Commit
f6f3bac08ff9("tools/bpf: bpftool: add net support") added certain networking support to bpftool.
The implementation relies on a relatively recent uapi header filelinux/tc_act/tc_bpf.hon the host which contains the marco definition ofTCA_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.
Quoted 7 lines
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-datelinux/pkt_cls.has well to avoid compiling errors:
Thanks for testing. I will add linux/pkt_cls.h as well for the version 2.
Quoted 90 lines
root@lkp-bdw-ep3 ~/linux-f6f3bac08f/tools/bpf/bpftool# make V=1 [...snip...]
gcc -O2 -W -Wall -Wextra -Wno-unused-parameter -Wshadow(quoted diff) +0
-7-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.cmake -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.builddir=. obj=libbpf make[1]: Leaving directory '/root/linux-f6f3bac08f/tools/lib/bpf'Thanks
ZhijianQuoted 57 lines
This patch fixed the issue by copying
linux/tc_act/tc_bpf.hfrom kernelinclude/uapidirectory totools/include/uapidirectory 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 <[email protected]>Signed-off-by Yonghong Song <[email protected]>---
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.htools/include/uapi/linux/tc_act/tc_bpf.h new file +37
-0@@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ +/* +* Copyright (c) 2015 Jiri Pirko <[email protected]> +* +* 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 <linux/pkt_cls.h> + +#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