bpftool-feature.rst 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. .. SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
  2. ===============
  3. bpftool-feature
  4. ===============
  5. -------------------------------------------------------------------------------
  6. tool for inspection of eBPF-related parameters for Linux kernel or net device
  7. -------------------------------------------------------------------------------
  8. :Manual section: 8
  9. .. include:: substitutions.rst
  10. SYNOPSIS
  11. ========
  12. **bpftool** [*OPTIONS*] **feature** *COMMAND*
  13. *OPTIONS* := { |COMMON_OPTIONS| }
  14. *COMMANDS* := { **probe** | **help** }
  15. FEATURE COMMANDS
  16. ================
  17. | **bpftool** **feature probe** [*COMPONENT*] [**full**] [**unprivileged**] [**macros** [**prefix** *PREFIX*]]
  18. | **bpftool** **feature list_builtins** *GROUP*
  19. | **bpftool** **feature help**
  20. |
  21. | *COMPONENT* := { **kernel** | **dev** *NAME* }
  22. | *GROUP* := { **prog_types** | **map_types** | **attach_types** | **link_types** | **helpers** }
  23. DESCRIPTION
  24. ===========
  25. bpftool feature probe [kernel] [full] [macros [prefix *PREFIX*]]
  26. Probe the running kernel and dump a number of eBPF-related parameters, such
  27. as availability of the **bpf**\ () system call, JIT status, eBPF program
  28. types availability, eBPF helper functions availability, and more.
  29. By default, bpftool **does not run probes** for **bpf_probe_write_user**\
  30. () and **bpf_trace_printk**\() helpers which print warnings to kernel logs.
  31. To enable them and run all probes, the **full** keyword should be used.
  32. If the **macros** keyword (but not the **-j** option) is passed, a subset
  33. of the output is dumped as a list of **#define** macros that are ready to
  34. be included in a C header file, for example. If, additionally, **prefix**
  35. is used to define a *PREFIX*, the provided string will be used as a prefix
  36. to the names of the macros: this can be used to avoid conflicts on macro
  37. names when including the output of this command as a header file.
  38. Keyword **kernel** can be omitted. If no probe target is specified, probing
  39. the kernel is the default behaviour.
  40. When the **unprivileged** keyword is used, bpftool will dump only the
  41. features available to a user who does not have the **CAP_SYS_ADMIN**
  42. capability set. The features available in that case usually represent a
  43. small subset of the parameters supported by the system. Unprivileged users
  44. MUST use the **unprivileged** keyword: This is to avoid misdetection if
  45. bpftool is inadvertently run as non-root, for example. This keyword is
  46. unavailable if bpftool was compiled without libcap.
  47. bpftool feature probe dev *NAME* [full] [macros [prefix *PREFIX*]]
  48. Probe network device for supported eBPF features and dump results to the
  49. console.
  50. The keywords **full**, **macros** and **prefix** have the same role as when
  51. probing the kernel.
  52. bpftool feature list_builtins *GROUP*
  53. List items known to bpftool. These can be BPF program types
  54. (**prog_types**), BPF map types (**map_types**), attach types
  55. (**attach_types**), link types (**link_types**), or BPF helper functions
  56. (**helpers**). The command does not probe the system, but simply lists the
  57. elements that bpftool knows from compilation time, as provided from libbpf
  58. (for all object types) or from the BPF UAPI header (list of helpers). This
  59. can be used in scripts to iterate over BPF types or helpers.
  60. bpftool feature help
  61. Print short help message.
  62. OPTIONS
  63. =======
  64. .. include:: common_options.rst