All notable changes to clj-ebpf will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
create-sock-map - Array-based socket storage for SK_SKB/SK_MSG programscreate-sock-hash - Hash-based socket storage with custom keysclj-ebpf.dsl.socket):
sk-skb-prologue - Standard prologue for SK_SKB programssk-redirect-map - Redirect stream data to socket in SOCKMAPsk-redirect-hash - Redirect stream data to socket in SOCKHASHsk-skb-pass, sk-skb-drop - Return patternsclj-ebpf.dsl.socket):
sk-msg-prologue - Standard prologue for SK_MSG programsmsg-redirect-map - Redirect message to socket in SOCKMAPmsg-redirect-hash - Redirect message to socket in SOCKHASHsk-msg-pass, sk-msg-drop - Return patternssock-map-update - Add socket to SOCKMAP from BPF programsock-hash-update - Add socket to SOCKHASH from BPF programclj-ebpf.programs):
attach-sk-skb - Attach SK_SKB program to SOCKMAP/SOCKHASHattach-sk-msg - Attach SK_MSG program to SOCKMAP/SOCKHASHdetach-sk-skb, detach-sk-msg - Detach programs from mapsmsg-redirect-map (60), sock-hash-update (70)msg-redirect-hash (71), sk-redirect-hash (72)examples/sockmap_redirect.clj)create-dev-map - Array-based interface redirect map for L2 forwardingcreate-dev-map-hash - Hash-based interface redirect map for sparse mappingscreate-cpu-map - CPU steering map for custom RSS (Receive Side Scaling)clj-ebpf.dsl.xdp):
xdp-redirect - Direct interface index redirectxdp-redirect-map - Map-based redirect for DEVMAP/CPUMAP/XSKMAPxdp-redirect-to-interface - Convenience helper for DEVMAPxdp-redirect-to-cpu - Convenience helper for CPUMAPredirect-map (51), sk-redirect-map (52), sock-map-update (53), xdp-adjust-meta (54)examples/xdp_redirect_devmap.clj)clj-ebpf.macros) - New macro system that
reduces boilerplate by 60% and provides a more Clojure-idiomatic API:
defmap-spec - Define reusable BPF map specifications with sensible defaultsdefprogram - Define BPF programs declaratively with DSL instructionswith-bpf-script - Complete lifecycle management for maps, programs, and
attachments with automatic cleanupload-defprogram - Convenience function to load a defprogram speccreate-defmap - Convenience function to create a map from defmap-specclj-ebpf.core for convenient accesswith-bpf-script:
:xdp) with mode and flags options:tc) with direction and priority:kprobe, :kretprobe):tracepoint) with category and event:uprobe, :uretprobe) with binary and symbol/offset:cgroup-skb, :cgroup-sock) with cgroup path and direction:lsm) with hook namedocs/guides/macros.md)tutorials/quick-start-macros.md)examples/macro_dsl.clj)examples/simple_kprobe.clj to demonstrate both traditional and
macro approaches/proc filesystem files. The
get-current-cgroup function now uses java.nio.file.Files/readString
instead of slurp, which fails on /proc files in Java 25 due to
FileInputStream.available() returning EINVAL for special filesystem files.:inval but the syscall layer returns :einval.
Now map-lookup-batch, map-update-batch, map-delete-batch, and
map-lookup-and-delete-batch correctly fall back to individual operations
when the kernel doesn't support batch syscalls.examples/helpers_tutorial.clj)docs/guides/helpers-guide.md)bpf() syscall interface using Panama FFI (Java 25+)linux/bpf.hwith-map)with-program)Note: Many of these limitations have been addressed in later releases. See the full changelog for current capabilities.
See README.md for complete roadmap of planned features.
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |