]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
bpf: add btf func and func_proto kind support
authorYonghong Song <yhs@fb.com>
Fri, 25 Jan 2019 00:41:07 +0000 (16:41 -0800)
committerStephen Hemminger <stephen@networkplumber.org>
Tue, 5 Feb 2019 23:29:20 +0000 (15:29 -0800)
The issue is discovered for bpf selftest test_skb_cgroup.sh.
Currently we have,
  $ ./test_skb_cgroup_id.sh
  Wait for testing link-local IP to become available ... OK
  Object has unknown BTF type: 13!
  [PASS]

In the above the BTF type 13 refers to BTF kind
BTF_KIND_FUNC_PROTO.
This patch added support of BTF_KIND_FUNC_PROTO and
BTF_KIND_FUNC during type parsing.
With this patch, I got
  $ ./test_skb_cgroup_id.sh
  Wait for testing link-local IP to become available ... OK
  [PASS]

Signed-off-by: Yonghong Song <yhs@fb.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
lib/bpf.c

index 5e85cfc0bdd5b607f57bbc03a8f131e028c400d1..762f8857453ffa5d727d417c9a47cee62215666e 100644 (file)
--- a/lib/bpf.c
+++ b/lib/bpf.c
@@ -2193,12 +2193,16 @@ static int bpf_btf_prep_type_data(struct bpf_elf_ctx *ctx)
                case BTF_KIND_ENUM:
                        type_cur += var_len * sizeof(struct btf_enum);
                        break;
+               case BTF_KIND_FUNC_PROTO:
+                       type_cur += var_len * sizeof(struct btf_param);
+                       break;
                case BTF_KIND_TYPEDEF:
                case BTF_KIND_PTR:
                case BTF_KIND_FWD:
                case BTF_KIND_VOLATILE:
                case BTF_KIND_CONST:
                case BTF_KIND_RESTRICT:
+               case BTF_KIND_FUNC:
                        break;
                default:
                        fprintf(stderr, "Object has unknown BTF type: %u!\n", kind);