Re: [PATCH bpf-next v4 4/9] tools: bpftool: add probes for eBPF program types
From: Jakub Kicinski <hidden>
Date: 2019-01-17 00:42:26
On Wed, 16 Jan 2019 14:21:14 +0000, Quentin Monnet wrote:
quoted hunk ↗ jump to hunk
diff --git a/tools/lib/bpf/libbpf.map b/tools/lib/bpf/libbpf.map index cd02cd4e2cc3..6355e4c80a86 100644 --- a/tools/lib/bpf/libbpf.map +++ b/tools/lib/bpf/libbpf.map@@ -56,6 +56,7 @@ LIBBPF_0.0.1 { bpf_object__unpin_maps; bpf_object__unpin_programs; bpf_perf_event_read_simple; + bpf_probe_prog_type;
I think you have to start a new 0.0.2 section now, no?
bpf_prog_attach; bpf_prog_detach; bpf_prog_detach2;
+bool bpf_probe_prog_type(enum bpf_prog_type prog_type, __u32 ifindex)
+{
+ struct bpf_insn insns[2] = {
+ BPF_MOV64_IMM(BPF_REG_0, 0),
+ BPF_EXIT_INSN()
+ };
+
+ if (ifindex && prog_type == BPF_PROG_TYPE_SCHED_CLS)
+ /* nfp returns -EINVAL on exit(0) with TC offload */
+ insns[0].imm = 2;
+
+ errno = 0;
+ prog_load(prog_type, insns, ARRAY_SIZE(insns), NULL, 0, ifindex);
+
+ return errno != EINVAL && errno != EOPNOTSUPP;
nit: could you check that errno in the function doing the load? :|
also perhaps name that function probe_load()?
+}