hello-libbpfgo

module
v0.0.0-...-9439876 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 1, 2024 License: MIT

README

hello-libbpfgo
==================

|Build examples|


Examples for libbpf, `aquasecurity/libbpfgo <https://github.com/aquasecurity/libbpfgo>`__ and `cilium/ebpf <https://github.com/cilium/ebpf>`__.



setup develop env
--------------------

.. code-block:: shell

    $ vagrant up


Program Types
------------------


Examples by program type:

+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| Program Type                              | Attach Type                            | ELF Section Name                 | Examples                                  |
+===========================================+========================================+==================================+===========================================+
| ``BPF_PROG_TYPE_CGROUP_DEVICE``           | ``BPF_CGROUP_DEVICE``                  | ``cgroup/dev``                   |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_CGROUP_SKB``              |                                        | ``cgroup/skb``                   |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_INET_EGRESS``             | ``cgroup_skb/egress``            |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_INET_INGRESS``            | ``cgroup_skb/ingress``           |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_CGROUP_SOCKOPT``          | ``BPF_CGROUP_GETSOCKOPT``              | ``cgroup/getsockopt``            |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_SETSOCKOPT``              | ``cgroup/setsockopt``            |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_CGROUP_SOCK_ADDR``        | ``BPF_CGROUP_INET4_BIND``              | ``cgroup/bind4``                 |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_INET4_CONNECT``           | ``cgroup/connect4``              |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_INET4_GETPEERNAME``       | ``cgroup/getpeername4``          |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_INET4_GETSOCKNAME``       | ``cgroup/getsockname4``          |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_INET6_BIND``              | ``cgroup/bind6``                 |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_INET6_CONNECT``           | ``cgroup/connect6``              |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_INET6_GETPEERNAME``       | ``cgroup/getpeername6``          |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_INET6_GETSOCKNAME``       | ``cgroup/getsockname6``          |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_UDP4_RECVMSG``            | ``cgroup/recvmsg4``              |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_UDP4_SENDMSG``            | ``cgroup/sendmsg4``              |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_UDP6_RECVMSG``            | ``cgroup/recvmsg6``              |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_UDP6_SENDMSG``            | ``cgroup/sendmsg6``              |                                           |
|                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_UNIX_CONNECT``            | ``cgroup/connect_unix``          |                                           |
|                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_UNIX_SENDMSG``            | ``cgroup/sendmsg_unix``          |                                           |
|                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_UNIX_RECVMSG``            | ``cgroup/recvmsg_unix``          |                                           |
|                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_UNIX_GETPEERNAME``        | ``cgroup/getpeername_unix``      |                                           |
|                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_UNIX_GETSOCKNAME``        | ``cgroup/getsockname_unix``      |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_CGROUP_SOCK``             | ``BPF_CGROUP_INET4_POST_BIND``         | ``cgroup/post_bind4``            |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_INET6_POST_BIND``         | ``cgroup/post_bind6``            |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_INET_SOCK_CREATE``        | ``cgroup/sock_create``           |                                           |
+                                           +                                        +----------------------------------+-------------------------------------------+
|                                           |                                        | ``cgroup/sock``                  |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_CGROUP_INET_SOCK_RELEASE``       | ``cgroup/sock_release``          |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_CGROUP_SYSCTL``           | ``BPF_CGROUP_SYSCTL``                  | ``cgroup/sysctl``                |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_EXT``                     |                                        | ``freplace+``                    |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_FLOW_DISSECTOR``          | ``BPF_FLOW_DISSECTOR``                 | ``flow_dissector``               |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_KPROBE``                  |                                        | ``kprobe+``                      |`28`_ `29`_                                |
+                                           +                                        +----------------------------------+-------------------------------------------+
|                                           |                                        | ``kretprobe+``                   |`28`_ `29`_                                |
+                                           +                                        +----------------------------------+-------------------------------------------+
|                                           |                                        | ``ksyscall+``                    |`30`_ `31`_                                |
+                                           +                                        +----------------------------------+-------------------------------------------+
|                                           |                                        |  ``kretsyscall+``                |`30`_ `31`_                                |
+                                           +                                        +----------------------------------+-------------------------------------------+
|                                           |                                        | ``uprobe+``                      |                                           |
+                                           +                                        +----------------------------------+-------------------------------------------+
|                                           |                                        | ``uprobe.s+``                    |                                           |
+                                           +                                        +----------------------------------+-------------------------------------------+
|                                           |                                        | ``uretprobe+``                   |                                           |
+                                           +                                        +----------------------------------+-------------------------------------------+
|                                           |                                        | ``uretprobe.s+``                 |                                           |
+                                           +                                        +----------------------------------+-------------------------------------------+
|                                           |                                        | ``usdt+``                        |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_TRACE_KPROBE_MULTI``             | ``kprobe.multi+``                |                                           |
+                                           +                                        +----------------------------------+-------------------------------------------+
|                                           |                                        | ``kretprobe.multi+``             |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_LIRC_MODE2``              | ``BPF_LIRC_MODE2``                     | ``lirc_mode2``                   |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_LSM``                     | ``BPF_LSM_CGROUP``                     | ``lsm_cgroup+``                  |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_LSM_MAC``                        | ``lsm+``                         |`26`_  `40`_                               |
+                                           +                                        +----------------------------------+-------------------------------------------+
|                                           |                                        | ``lsm.s+``                       |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_LWT_IN``                  |                                        | ``lwt_in``                       |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_LWT_OUT``                 |                                        | ``lwt_out``                      |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_LWT_SEG6LOCAL``           |                                        | ``lwt_seg6local``                |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_LWT_XMIT``                |                                        | ``lwt_xmit``                     |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_NETFILTER``               |                                        | ``netfilter``                    |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_PERF_EVENT``              |                                        | ``perf_event``                   |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE`` |                                        | ``raw_tp.w+``                    |                                           |
+                                           +                                        +----------------------------------+-------------------------------------------+
|                                           |                                        | ``raw_tracepoint.w+``            |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_RAW_TRACEPOINT``          |                                        | ``raw_tp+``                      |`12`_ `13`_ `41`_                          |
+                                           +                                        +----------------------------------+                                           +
|                                           |                                        | ``raw_tracepoint+``              |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_SCHED_ACT``               |                                        | ``action``                       |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_SCHED_CLS``               |                                        | ``classifier``                   |`21`_ `25`_                                |
+                                           +                                        +----------------------------------+                                           +
|                                           |                                        | ``tc``                           |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_NETKIT_PRIMARY``                 | ``netkit/primary``               |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_NETKIT_PEER``                    | ``netkit/peer``                  |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_TCX_INGRESS``                    | ``tc/ingress``                   |`43`_                                      |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_TCX_EGRESS``                     | ``tc/egress``                    |`44`_                                      |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_TCX_INGRESS``                    | ``tcx/ingress``                  |`43`_                                      |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_TCX_EGRESS``                     | ``tcx/egress``                   |`44`_                                      |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_SK_LOOKUP``               | ``BPF_SK_LOOKUP``                      | ``sk_lookup``                    |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_SK_MSG``                  | ``BPF_SK_MSG_VERDICT``                 | ``sk_msg``                       |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_SK_REUSEPORT``            | ``BPF_SK_REUSEPORT_SELECT_OR_MIGRATE`` | ``sk_reuseport/migrate``         |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_SK_REUSEPORT_SELECT``            | ``sk_reuseport``                 |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_SK_SKB``                  |                                        | ``sk_skb``                       |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_SK_SKB_STREAM_PARSER``           | ``sk_skb/stream_parser``         |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_SK_SKB_STREAM_VERDICT``          | ``sk_skb/stream_verdict``        |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_SOCKET_FILTER``           |                                        | ``socket``                       |`18`_ `19`_ `20`_ `39`_                    |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_SOCK_OPS``                | ``BPF_CGROUP_SOCK_OPS``                | ``sockops``                      |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_STRUCT_OPS``              |                                        | ``struct_ops+``                  |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_SYSCALL``                 |                                        | ``syscall``                      |                                           |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_TRACEPOINT``              |                                        | ``tp+``                          |`04`_ `07`_ `14`_                          |
+                                           +                                        +----------------------------------+`35`_ `36`_ `37`_                          +
|                                           |                                        | ``tracepoint+``                  |`38`_                                      |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_TRACING``                 | ``BPF_MODIFY_RETURN``                  | ``fmod_ret+``                    |                                           |
+                                           +                                        +----------------------------------+-------------------------------------------+
|                                           |                                        | ``fmod_ret.s+``                  |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_TRACE_FENTRY``                   | ``fentry+``                      |`32`_                                      |
+                                           +                                        +----------------------------------+-------------------------------------------+
|                                           |                                        | ``fentry.s+``                    |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_TRACE_FEXIT``                    | ``fexit+``                       |`32`_                                      |
+                                           +                                        +----------------------------------+-------------------------------------------+
|                                           |                                        | ``fexit.s+``                     |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_TRACE_ITER``                     | ``iter+``                        |`34`_                                      |
+                                           +                                        +----------------------------------+-------------------------------------------+
|                                           |                                        | ``iter.s+``                      |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_TRACE_RAW_TP``                   | ``tp_btf+``                      |`16`_ `17`_  `42`_                         |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+
| ``BPF_PROG_TYPE_XDP``                     | ``BPF_XDP_CPUMAP``                     | ``xdp.frags/cpumap``             |                                           |
+                                           +                                        +----------------------------------+-------------------------------------------+
|                                           |                                        | ``xdp/cpumap``                   |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_XDP_DEVMAP``                     | ``xdp.frags/devmap``             |                                           |
+                                           +                                        +----------------------------------+-------------------------------------------+
|                                           |                                        | ``xdp/devmap``                   |                                           |
+                                           +----------------------------------------+----------------------------------+-------------------------------------------+
|                                           | ``BPF_XDP``                            | ``xdp.frags``                    |                                           |
+                                           +                                        +----------------------------------+-------------------------------------------+
|                                           |                                        | ``xdp``                          |`33`_                                      |
+-------------------------------------------+----------------------------------------+----------------------------------+-------------------------------------------+


.. |Build examples| image:: https://github.com/mozillazg/hello-libbpfgo/actions/workflows/build.yml/badge.svg?branch=master
   :target: https://github.com/mozillazg/hello-libbpfgo/actions/workflows/build.yml

.. _04: 04-tracepoint
.. _07: 07-tracepoint-args
.. _12: 12-raw-tracepoint-args
.. _13: 13-raw-tracepoint-args-sched_switch
.. _14: 14-tracepoint-args-sched_switch
.. _16: 16-btf-raw-tracepoint-args
.. _17: 17-btf-raw-tracepoint-args-sched_switch
.. _18: 18-socket-filter-capture-icmp-traffic-kernel-parse
.. _19: 19-socket-filter-capture-icmp-traffic-userspace-parse
.. _20: 20-socket-filter-capture-icmp-traffic-kernel-parse-without-llvm-load
.. _21: 21-tc-parse-packet-with-bpf_skb_load_bytes
.. _25: 25-tc-parse-packet-with-direct-memory-access
.. _26: 26-lsm-path_chmod
.. _28: 28-kprobe-hello
.. _29: 29-kprobe-hello-with-macro
.. _30: 30-ksyscall-hello
.. _31: 31-ksyscall-hello-with-macro
.. _32: 32-fentry-hello
.. _33: 33-xdp-hello
.. _34: 34-iter-task-hello
.. _35: 35-tracepoint-args-use-custom-struct
.. _36: 36-tracepoint-args-sched_switch-use-custom-struct
.. _37: 37-tracepoint-sched_process_exec
.. _38: 38-raw-tracepoint-sched_wakeup
.. _39: 39-socket-filter-tcp
.. _40: 40-lsm-block-path_unlink
.. _41: 41-raw-tracepoint-args-with-macro
.. _42: 42-btf-raw-tracepoint-args-with-macro
.. _43: 43-tcx-ingress-hello
.. _44: 44-tcx-egress-hello

https://mozillazg.com/tag/libbpf.html

Directories

Path Synopsis
27-attach-tracepoint-with-syscall

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL