Skip to main content

Module ebpf

Module ebpf 

Source
Expand description

Wrappers de la famille ebpf.

Cf. docs/specs/layer-0/family-ebpf.md. Couverture exhaustive des 37 sous-commandes de enum bpf_cmd (cible 6.12), chacune en fonction dédiée typée (jamais de bpf(cmd, attr, size) générique, ADR-021 conv. 3), plus perf_event_open et ses 12 ioctls dédiés.

On charge des programmes/BTF déjà assemblés ; on n’assemble ni ne compile rien (logique → couche 1). RAII pour cartes/programmes/liens/BTF/ perf_event (Drop ferme le FD ; un BpfLink détache au Drop). EINTR remonté tel quel. La plupart des opérations exigent CAP_BPF/CAP_PERFMON.

Structs§

BpfLink
Lien d’attache moderne (bpf_link). Drop détache (ferme le FD).
BpfMap
Carte eBPF (BpfMap). Drop ferme le FD.
BpfProgram
Programme eBPF chargé. Drop ferme le FD.
Btf
Objet BTF chargé. Drop ferme le FD.
PerfEvent
Compteur/échantillonneur perf_event. Drop ferme le FD.

Functions§

bpf_btf_get_fd_by_id
BPF_BTF_GET_FD_BY_ID — FD d’un objet BTF par id.
bpf_btf_get_next_id
BPF_BTF_GET_NEXT_ID — id de BTF suivant (None = fin).
bpf_btf_load
BPF_BTF_LOAD — charge un blob BTF déjà formé.
bpf_enable_statistics
BPF_ENABLE_STATS — active un type de statistiques (RAII : actif tant que le FD retourné est ouvert).
bpf_iterator_create
BPF_ITER_CREATE — crée un itérateur depuis un lien d’itération.
bpf_link_create
BPF_LINK_CREATE — crée un lien moderne (FD RAII, détache au Drop).
bpf_link_detach
BPF_LINK_DETACH — détache le programme en gardant le lien.
bpf_link_get_fd_by_id
BPF_LINK_GET_FD_BY_ID — FD d’un lien par id.
bpf_link_get_next_id
BPF_LINK_GET_NEXT_ID — id de lien suivant (None = fin).
bpf_link_update
BPF_LINK_UPDATE — remplace à chaud le programme d’un lien.
bpf_map_create
BPF_MAP_CREATE — crée une carte eBPF.
bpf_map_delete_batch
BPF_MAP_DELETE_BATCH — supprime un lot de clés. Retourne le nombre traité.
bpf_map_delete_element
BPF_MAP_DELETE_ELEM — supprime l’entrée key.
bpf_map_freeze
BPF_MAP_FREEZE — rend la carte non modifiable depuis l’espace utilisateur.
bpf_map_get_fd_by_id
BPF_MAP_GET_FD_BY_ID — FD d’une carte par id.
bpf_map_get_next_id
BPF_MAP_GET_NEXT_ID — id de carte suivant (None = fin).
bpf_map_get_next_key
BPF_MAP_GET_NEXT_KEY — itère les clés. key = None ⇒ première clé.
bpf_map_lookup_and_delete_batch
BPF_MAP_LOOKUP_AND_DELETE_BATCH — lit et retire un lot.
bpf_map_lookup_and_delete_element
BPF_MAP_LOOKUP_AND_DELETE_ELEM — lit puis retire (cartes Queue/Stack).
bpf_map_lookup_batch
BPF_MAP_LOOKUP_BATCH — lit un lot d’éléments. Retourne le nombre traité.
bpf_map_lookup_element
BPF_MAP_LOOKUP_ELEM — lit la valeur associée à key dans value_out.
bpf_map_update_batch
BPF_MAP_UPDATE_BATCH — insère/remplace un lot. Retourne le nombre traité.
bpf_map_update_element
BPF_MAP_UPDATE_ELEM — insère ou remplace la paire (key, value).
bpf_object_get
BPF_OBJ_GET — récupère un FD vers un objet épinglé.
bpf_object_get_info_by_fd
BPF_OBJ_GET_INFO_BY_FD — remplit info_out (octets écrits retournés).
bpf_object_pin
BPF_OBJ_PIN — épingle un objet sous un chemin bpffs.
bpf_program_attach
BPF_PROG_ATTACH — attache historique (cgroup, sk_skb, flow_dissector…).
bpf_program_bind_map
BPF_PROG_BIND_MAP — lie une carte à un programme (durée de vie).
bpf_program_detach
BPF_PROG_DETACH — détache un programme historique.
bpf_program_get_fd_by_id
BPF_PROG_GET_FD_BY_ID — FD d’un programme par id (CAP_SYS_ADMIN).
bpf_program_get_next_id
BPF_PROG_GET_NEXT_ID — id de programme suivant (None = fin).
bpf_program_load
BPF_PROG_LOAD — charge un programme déjà assemblé.
bpf_program_query
BPF_PROG_QUERY — liste les programmes attachés à une cible.
bpf_program_test_run
BPF_PROG_TEST_RUN — exécute le programme sur des données fournies.
bpf_raw_tracepoint_open
BPF_RAW_TRACEPOINT_OPEN — attache un programme à un tracepoint brut.
bpf_task_fd_query
BPF_TASK_FD_QUERY — interroge le programme derrière un fd perf/tracepoint.
bpf_token_create
BPF_TOKEN_CREATE (Linux 6.9+) — jeton de délégation BPF depuis un bpffs.
perf_event_disable
PERF_EVENT_IOC_DISABLE.
perf_event_enable
PERF_EVENT_IOC_ENABLE.
perf_event_id
PERF_EVENT_IOC_ID — identifiant unique de l’événement.
perf_event_modify_attributes
PERF_EVENT_IOC_MODIFY_ATTRIBUTES — modifie les attributs à chaud.
perf_event_open
Ouvre un compteur/échantillonneur de performance.
perf_event_pause_output
PERF_EVENT_IOC_PAUSE_OUTPUT — met en pause/reprend l’anneau de sortie.
perf_event_query_bpf
PERF_EVENT_IOC_QUERY_BPF — liste les ids de programmes BPF attachés.
perf_event_refresh
PERF_EVENT_IOC_REFRESH — réarme pour count débordements.
perf_event_reset
PERF_EVENT_IOC_RESET.
perf_event_set_bpf_program
PERF_EVENT_IOC_SET_BPF — attache un programme eBPF (LE PONT eBPF ↔ perf).
perf_event_set_filter
PERF_EVENT_IOC_SET_FILTER — pose un filtre (tracepoint).
perf_event_set_output
PERF_EVENT_IOC_SET_OUTPUT — redirige la sortie ; None détache.
perf_event_set_period
PERF_EVENT_IOC_PERIOD — change la période d’échantillonnage.