github libbpf/libbpf v1.3.0
libbpf v1.3.0

latest releases: v0.8.3, v0.8.2, v1.4.0...
5 months ago

libbpf v1.3.0

User space-side features and APIs

  • support for netfilter programs is added:
    • SEC("netfilter") is now available
    • API function bpf_program__attach_netfilter() is now available
  • support for tcx BPF programs is added:
    • the following new SEC definitions are now available:
      • SEC("tc/egress")
      • SEC("tc/ingress")
      • SEC("tcx/egress")
      • SEC("tcx/ingress")
    • the following SEC definitions are now considered legacy:
      • SEC("tc")
      • SEC("action")
      • SEC("classifier")
    • functions bpf_prog_attach_opts() and bpf_prog_query_opts() are extended to work with tcx programs, plus two new API functions are added:
      • bpf_prog_detach_opts()
      • bpf_program__attach_tcx()
  • support for multi-uprobe programs is added:
    • the following new SEC definitions are now available:
      • SEC("uprobe.multi")
      • SEC("uprobe.multi.s")
      • SEC("uretprobe.multi")
      • SEC("uretprobe.multi.s")
    • plus a new API function:
      • bpf_program__attach_uprobe_multi()
  • support for section SEC("usdt.s") is added for sleepable usdt programs;
  • support for Unix domain socket cgroup BPF programs is added the following new SEC definitions are now available:
    • SEC("cgroup/connect_unix")
    • SEC("cgroup/sendmsg_unix")
    • SEC("cgroup/recvmsg_unix")
    • SEC("cgroup/getpeername_unix")
    • SEC("cgroup/getsockname_unix")
  • new LIBBPF_OPTS_RESET() utility macro;
  • new bpf_object__unpin() function to complement existing bpf_object__pin();
  • new API functions for work with ring buffers:
    • ring_buffer__ring()
    • ring__producer_pos()
    • ring__consumer_pos()
    • ring__avail_data_size()
    • ring__size()
    • ring__map_fd()
    • ring__consume()
  • path_fd support for bpf_obj_pin() and bpf_obj_get();
  • uprobe SEC matcher extended to allow golang symbols;
  • uprobe support for symbols versioning;
  • bpf_map__set_value_size() can now be used to resize memory mapped region for memory mapped maps;
  • struct bpf_xdp_query_opts extended with xdp_zc_max_segs output field;
  • basic BTF sanity check pass added to reject bogus BTF.

BPF-side features and APIs

  • triple-underscore flavors for kfunc relocation: like with CO-RE structs ___.* suffix is ignored when kfunc relocations are resolved;
  • __percpu_kptr macro definition in bpf_helpers.h;
  • support for exception callbacks, use __attribute__(btf_decl_tag("exception_callback:<func_name>")) to specify exception callback for a program;

Bug fixes

  • fix for btf_dump__dump_type_data() when type contains bitfields;
  • fix for correct work of offsetof() and container_of() macro with CO-RE;
  • no longer attempt to load modules BTF when resolving CO-RE relocations if CAP_SYS_ADMIN are absent;
  • regex based function search for "kprobe.multi/" programs no longer attempts to trace functions that cannot be traced;
  • bpf_program__set_type() no longer resets sec_def if it is set to a custom fallback SEC handler;
  • fix for memory leak possible after bpf_program__set_attach_target() call;

Don't miss a new libbpf release

NewReleases is sending notifications on new releases.