aboutsummaryrefslogtreecommitdiffstats
path: root/tools/lib/bpf
diff options
context:
space:
mode:
authorQuentin Monnet <quentin.monnet@netronome.com>2018-02-07 23:27:13 -0500
committerDaniel Borkmann <daniel@iogearbox.net>2018-02-08 05:59:50 -0500
commit0badd331491097cc3702d05a6dd0264a434712b2 (patch)
tree8f140f765f8f637fed5fea1573b208b0563c9fe6 /tools/lib/bpf
parentb7d99235473ad3a550f8eb05bd4469edadf1c8e6 (diff)
libbpf: complete list of strings for guessing program type
It seems that the type guessing feature for libbpf, based on the name of the ELF section the program is located in, was inspired from samples/bpf/prog_load.c, which was not used by any sample for loading programs of certain types such as TC actions and classifiers, or LWT-related types. As a consequence, libbpf is not able to guess the type of such programs and to load them automatically if type is not provided to the `bpf_load_prog()` function. Add ELF section names associated to those eBPF program types so that they can be loaded with e.g. bpftool as well. Signed-off-by: Quentin Monnet <quentin.monnet@netronome.com> Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Diffstat (limited to 'tools/lib/bpf')
-rw-r--r--tools/lib/bpf/libbpf.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
index 71ddc481f349..c64840365433 100644
--- a/tools/lib/bpf/libbpf.c
+++ b/tools/lib/bpf/libbpf.c
@@ -1816,12 +1816,17 @@ static const struct {
1816 BPF_PROG_SEC("socket", BPF_PROG_TYPE_SOCKET_FILTER), 1816 BPF_PROG_SEC("socket", BPF_PROG_TYPE_SOCKET_FILTER),
1817 BPF_PROG_SEC("kprobe/", BPF_PROG_TYPE_KPROBE), 1817 BPF_PROG_SEC("kprobe/", BPF_PROG_TYPE_KPROBE),
1818 BPF_PROG_SEC("kretprobe/", BPF_PROG_TYPE_KPROBE), 1818 BPF_PROG_SEC("kretprobe/", BPF_PROG_TYPE_KPROBE),
1819 BPF_PROG_SEC("classifier", BPF_PROG_TYPE_SCHED_CLS),
1820 BPF_PROG_SEC("action", BPF_PROG_TYPE_SCHED_ACT),
1819 BPF_PROG_SEC("tracepoint/", BPF_PROG_TYPE_TRACEPOINT), 1821 BPF_PROG_SEC("tracepoint/", BPF_PROG_TYPE_TRACEPOINT),
1820 BPF_PROG_SEC("xdp", BPF_PROG_TYPE_XDP), 1822 BPF_PROG_SEC("xdp", BPF_PROG_TYPE_XDP),
1821 BPF_PROG_SEC("perf_event", BPF_PROG_TYPE_PERF_EVENT), 1823 BPF_PROG_SEC("perf_event", BPF_PROG_TYPE_PERF_EVENT),
1822 BPF_PROG_SEC("cgroup/skb", BPF_PROG_TYPE_CGROUP_SKB), 1824 BPF_PROG_SEC("cgroup/skb", BPF_PROG_TYPE_CGROUP_SKB),
1823 BPF_PROG_SEC("cgroup/sock", BPF_PROG_TYPE_CGROUP_SOCK), 1825 BPF_PROG_SEC("cgroup/sock", BPF_PROG_TYPE_CGROUP_SOCK),
1824 BPF_PROG_SEC("cgroup/dev", BPF_PROG_TYPE_CGROUP_DEVICE), 1826 BPF_PROG_SEC("cgroup/dev", BPF_PROG_TYPE_CGROUP_DEVICE),
1827 BPF_PROG_SEC("lwt_in", BPF_PROG_TYPE_LWT_IN),
1828 BPF_PROG_SEC("lwt_out", BPF_PROG_TYPE_LWT_OUT),
1829 BPF_PROG_SEC("lwt_xmit", BPF_PROG_TYPE_LWT_XMIT),
1825 BPF_PROG_SEC("sockops", BPF_PROG_TYPE_SOCK_OPS), 1830 BPF_PROG_SEC("sockops", BPF_PROG_TYPE_SOCK_OPS),
1826 BPF_PROG_SEC("sk_skb", BPF_PROG_TYPE_SK_SKB), 1831 BPF_PROG_SEC("sk_skb", BPF_PROG_TYPE_SK_SKB),
1827}; 1832};