• Q
    bpf: add documentation for eBPF helpers (23-32) · 1fdd08be
    Quentin Monnet 提交于
    Add documentation for eBPF helper functions to bpf.h user header file.
    This documentation can be parsed with the Python script provided in
    another commit of the patch series, in order to provide a RST document
    that can later be converted into a man page.
    
    The objective is to make the documentation easily understandable and
    accessible to all eBPF developers, including beginners.
    
    This patch contains descriptions for the following helper functions, all
    written by Daniel:
    
    - bpf_get_prandom_u32()
    - bpf_get_smp_processor_id()
    - bpf_get_cgroup_classid()
    - bpf_get_route_realm()
    - bpf_skb_load_bytes()
    - bpf_csum_diff()
    - bpf_skb_get_tunnel_opt()
    - bpf_skb_set_tunnel_opt()
    - bpf_skb_change_proto()
    - bpf_skb_change_type()
    
    v4:
    - bpf_get_prandom_u32(): Warn that the prng is not cryptographically
      secure.
    - bpf_get_smp_processor_id(): Fix a typo (case).
    - bpf_get_cgroup_classid(): Clarify description. Add notes on the helper
      being limited to cgroup v1, and to egress path.
    - bpf_get_route_realm(): Add comparison with bpf_get_cgroup_classid().
      Add a note about usage with TC and advantage of clsact. Fix a typo in
      return value ("sdb" instead of "skb").
    - bpf_skb_load_bytes(): Make explicit loading large data loads it to the
      eBPF stack.
    - bpf_csum_diff(): Add a note on seed that can be cascaded. Link to
      bpf_l3|l4_csum_replace().
    - bpf_skb_get_tunnel_opt(): Add a note about usage with "collect
      metadata" mode, and example of this with Geneve.
    - bpf_skb_set_tunnel_opt(): Add a link to bpf_skb_get_tunnel_opt()
      description.
    - bpf_skb_change_proto(): Mention that the main use case is NAT64.
      Clarify comment about invalidated verifier checks.
    
    v3:
    - bpf_get_prandom_u32(): Fix helper name :(. Add description, including
      a note on the internal random state.
    - bpf_get_smp_processor_id(): Add description, including a note on the
      processor id remaining stable during program run.
    - bpf_get_cgroup_classid(): State that CONFIG_CGROUP_NET_CLASSID is
      required to use the helper. Add a reference to related documentation.
      State that placing a task in net_cls controller disables cgroup-bpf.
    - bpf_get_route_realm(): State that CONFIG_CGROUP_NET_CLASSID is
      required to use this helper.
    - bpf_skb_load_bytes(): Fix comment on current use cases for the helper.
    
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: NQuentin Monnet <quentin.monnet@netronome.com>
    Acked-by: NAlexei Starovoitov <ast@kernel.org>
    Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
    1fdd08be
bpf.h 53.4 KB