summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python/bin
diff options
context:
space:
mode:
authorMahe Tardy <mahe.tardy@gmail.com>2026-07-09 14:48:56 +0000
committerDaniel Borkmann <daniel@iogearbox.net>2026-07-10 11:56:23 +0200
commitf3603df9aebb2a2fe2f745bd71ca38aeca60e6e7 (patch)
tree03883c10df716748231fb2c021efeb161a13e84c /tools/perf/scripts/python/bin
parenta4553044d1af13f82806524d79e2071efc7988a0 (diff)
bpf: Add bpf_icmp_send kfunc
This is needed in the context of Tetragon to provide improved feedback (in contrast to just dropping packets) to east-west traffic when blocked by policies using cgroup_skb programs. This reuses concepts from netfilter reject target codepath with the differences that: * Packets are cloned since the BPF user can still let the packet pass (SK_PASS from the cgroup_skb progs for example) and the current skb need to stay untouched (cgroup_skb hooks only allow read-only skb payload). * We protect against recursion since the kfunc, by generating an ICMP error message, could retrigger the BPF prog that invoked it. Only ICMP_DEST_UNREACH and ICMPV6_DEST_UNREACH are currently supported. The interface accepts a type parameter to facilitate future extension to other ICMP control message types. For normal cgroup_skb paths, the skb dst route should already be set. However, bpf_prog_test_run_skb can create synthetic IPv4/IPv6 skbs without an attached route. In that case, icmp_send returns early, and the kfunc would otherwise report success despite no ICMP reply being sent. This check also reject metadata dsts, which are not valid struct rtable instances. While IPv6 would stricly require only rejecting metadata dsts, same check is applied for API consistency. Signed-off-by: Mahe Tardy <mahe.tardy@gmail.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Reviewed-by: Emil Tsalapatis <emil@etsalapatis.com> Reviewed-by: Jordan Rife <jordan@jrife.io> Acked-by: Stanislav Fomichev <sdf@fomichev.me> Link: https://lore.kernel.org/bpf/20260709144900.245904-2-mahe.tardy@gmail.com
Diffstat (limited to 'tools/perf/scripts/python/bin')
0 files changed, 0 insertions, 0 deletions