Allows a process to manipulate aspects of the kernel
enhanced Berkeley Packet Filter (BPF) system. This is
an execution subsystem of the kernel, that manages BPF
programs. CAP_BPF permits a process to:
  - create all types of BPF maps
  - advanced verifier features:
    - indirect variable access
    - bounded loops
    - BPF to BPF function calls
    - scalar precision tracking
    - larger complexity limits
    - dead code elimination
    - potentially other features

Other capabilities can be used together with CAP_BFP to
further manipulate the BPF system:
  - CAP_PERFMON relaxes the verifier checks as follows:
    - BPF programs can use pointer-to-integer
      conversions
    - speculation attack hardening measures can be
      bypassed
    - bpf_probe_read to read arbitrary kernel memory is
      permitted
    - bpf_trace_printk to print the content of kernel
      memory
  - CAP_SYS_ADMIN permits the following:
    - use of bpf_probe_write_user
    - iteration over the system-wide loaded programs,
      maps, links BTFs and convert their IDs to file
      descriptors.
  - CAP_PERFMON is required to load tracing programs.
  - CAP_NET_ADMIN is required to load networking
    programs.
