From da9ec2b1673ddf6b956304dca6ed6918d89d4631 Mon Sep 17 00:00:00 2001 From: Yonghong Song Date: Sat, 22 Aug 2020 15:19:46 -0700 Subject: [PATCH] sync with libbpf repo sync with latest libbpf repo. Strut definition for btf_ext_header is defined in libbpf/src/btf.h previously and used by bcc. Now, the struct is moved to libbpf/src/libbpf_internal.h and not available to bcc. We do not want to include libbpf/src/libbpf_internal.h as it is really libbpf internal. Let us define bcc version of btf_ext_header with struct name bcc_btf_ext_header. The new name is to avoid conflict when compiling with old libbpf package. Signed-off-by: Yonghong Song --- src/cc/bcc_btf.cc | 2 +- src/cc/bcc_btf.h | 17 +++++++++++++++++ src/cc/compat/linux/virtual_bpf.h | 17 ++++++++++++----- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/cc/bcc_btf.cc b/src/cc/bcc_btf.cc index e220f117..1056950c 100644 --- a/src/cc/bcc_btf.cc +++ b/src/cc/bcc_btf.cc @@ -185,7 +185,7 @@ void BTF::adjust(uint8_t *btf_sec, uintptr_t btf_sec_size, } struct btf_header *hdr = (struct btf_header *)btf_sec; - struct btf_ext_header *ehdr = (struct btf_ext_header *)btf_ext_sec; + struct bcc_btf_ext_header *ehdr = (struct bcc_btf_ext_header *)btf_ext_sec; // Fixup btf for old kernels or kernel requirements. fixup_btf(btf_sec + hdr->hdr_len + hdr->type_off, hdr->type_len, diff --git a/src/cc/bcc_btf.h b/src/cc/bcc_btf.h index 438c1f73..75b47cc3 100644 --- a/src/cc/bcc_btf.h +++ b/src/cc/bcc_btf.h @@ -45,6 +45,23 @@ class BTFStringTable { }; class BTF { + struct bcc_btf_ext_header { + uint16_t magic; + uint8_t version; + uint8_t flags; + uint32_t hdr_len; + + /* All offsets are in bytes relative to the end of this header */ + uint32_t func_info_off; + uint32_t func_info_len; + uint32_t line_info_off; + uint32_t line_info_len; + + /* optional part of .BTF.ext header */ + uint32_t core_relo_off; + uint32_t core_relo_len; +}; + public: BTF(bool debug, sec_map_def §ions); ~BTF(); diff --git a/src/cc/compat/linux/virtual_bpf.h b/src/cc/compat/linux/virtual_bpf.h index 38262630..0387b970 100644 --- a/src/cc/compat/linux/virtual_bpf.h +++ b/src/cc/compat/linux/virtual_bpf.h @@ -768,7 +768,7 @@ union bpf_attr { * * Also, note that **bpf_trace_printk**\ () is slow, and should * only be used for debugging purposes. For this reason, a notice - * bloc (spanning several lines) is printed to kernel logs and + * block (spanning several lines) is printed to kernel logs and * states that the helper should not be used "for production use" * the first time this helper is used (or more precisely, when * **trace_printk**\ () buffers are allocated). For passing values @@ -1034,14 +1034,14 @@ union bpf_attr { * * int ret; * struct bpf_tunnel_key key = {}; - * + * * ret = bpf_skb_get_tunnel_key(skb, &key, sizeof(key), 0); * if (ret < 0) * return TC_ACT_SHOT; // drop packet - * + * * if (key.remote_ipv4 != 0x0a000001) * return TC_ACT_SHOT; // drop packet - * + * * return TC_ACT_OK; // accept packet * * This interface can also be used with all encapsulation devices @@ -1148,7 +1148,7 @@ union bpf_attr { * Description * Retrieve the realm or the route, that is to say the * **tclassid** field of the destination for the *skb*. The - * indentifier retrieved is a user-provided tag, similar to the + * identifier retrieved is a user-provided tag, similar to the * one used with the net_cls cgroup (see description for * **bpf_get_cgroup_classid**\ () helper), but here this tag is * held by a route (a destination entry), not by a task. @@ -4072,6 +4072,13 @@ struct bpf_link_info { __u64 cgroup_id; __u32 attach_type; } cgroup; + struct { + __aligned_u64 target_name; /* in/out: target_name buffer ptr */ + __u32 target_name_len; /* in/out: target_name buffer len */ + union { + __u32 map_id; + } map; + } iter; struct { __u32 netns_ino; __u32 attach_type; -- 2.29.2