mirror of
https://github.com/xdp-project/bpf-examples.git
synced 2024-05-06 15:54:53 +00:00
5f5ea00a6c334e9e86ec597a2e30f8fa3e25a353
It's way too difficult to read packet data in XDP because LLVM will mostly generate code that doesn't pass the verifier. Thankfully, Cilium has a nice workaround for this in the form of hand-written BPF assembly to perform the reads in a way that the verifier will understand. Let's import these helpers so they can be used by the examples in this repository, along with some of the other BPF helpers that it relies on. This commit imports these files wholesale from Cilium: - include/bpf/builtins.h - include/bpf/compiler.h - include/bpf/errno.h And also adds include/xdp/context_helpers.h which only contains the xdp_load_bytes() and xdp_store_bytes() helpers from Cilium's include/bpf/ctx/xdp.h (as the other functions in that file are specific to how the Cilium code is structured). We also extend the maximum size supported by the efficient memcpy() implementation in builtins.h to 280 bytes, and the mask size applied to packet data copies up to 0x3ff. Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
Practical BPF examples
This git repository contains a diverse set of practical BPF examples that solve (or demonstrate) a specific use-case using BPF.
It is meant to ease doing rapid prototyping and development, writing C-code BPF programs using libbpf. The goal is to make is easier for developers to get started coding.
Many developers struggle to get a working BPF build environment. The repo enviroment makes it easy to build/compile BPF programs by doing the necessary libbpf setup transparently and detect missing compile dependencies (via the (configure)[configure] script). It is a declared goal to make BPF programming more consumable by detecting and reporting issues (when possible).
Description
Languages
C
93.6%
Shell
4.7%
Makefile
1.6%