Files | |
| bsc_ebpf.c | |
Questo file NON è incluso nel repository perché dipende dalla versione esatta del kernel in esecuzione sulla macchina target.
Il meson.build genera vmlinux.h automaticamente durante il build se bpftool è installato:
In alternativa, usa il vmlinux.h fornito da libbpf-bootstrap: https://github.com/libbpf/libbpf-bootstrap/blob/master/vmlinux/vmlinux.h
Copia il file corretto per la tua architettura (x86_64, arm64) in questa directory prima di eseguire meson compile.
bsc_ebpf.c aggancia tre punti distinti del kernel per massimizzare la coverage di connessioni rilevate:
| Sezione SEC() | Cosa cattura |
|---|---|
| tracepoint/sock/inet_sock_set_state | transizioni TCP a ESTABLISHED (active+passive) |
| kprobe/tcp_v4_connect, kprobe/tcp_v6_connect | ogni connect() TCP, anche falliti |
| kprobe/udp_sendmsg, kprobe/udpv6_sendmsg | UDP sendto()/sendmsg() con destinazione esplicita |
La deduplicazione avviene nel kernel tramite una BPF_MAP_TYPE_LRU_HASH con chiave <pid, dst_ip, dst_port> — senza dedup, un client QUIC riempirebbe la ring buffer in millisecondi.
Se il caricamento di un singolo kprobe fallisce (simbolo non presente su kernel custom o stripped), il loader userspace prosegue comunque con i probe che ha attaccato con successo — meglio coverage parziale che niente.
Verificare con: