0.24.8
- Added
Program::attach_netfilter_with_opts for attaching to netfilter hooks
0.24.5
- Renamed
Program::get_id_by_fd to id_from_fd- Deprecated
Program::get_id_by_fd
- Renamed
Program::get_fd_by_id to fd_from_id- Deprecated
Program::get_fd_by_id
- Adjusted
Program::{attach_*, test_run} methods to work on shared receivers - Adjusted
PerfBufferBuilder to work with MapCore objects
0.24.4
- Added
Program::fd_from_pinned_path method for restoring program descriptor from a pinned path
0.24.0
- Split
{Open,}{Map,Program} into {Open,}{Map,Program} (for shared access) and {Open,}{Map,Program}Mut (for exclusive access) - Added
AsRawLibbpf impl for OpenObject and ObjectBuilder - Decoupled
Map and MapHandle more and introduced MapCore trait abstracting over common functionality - Adjusted
SkelBuilder::open method to require mutable reference to storage space for BPF object - Adjusted
{Open,}Object::from_ptr constructor to be infallible - Added
{Open,}Object::maps{_mut,} and {Open,}Object::progs{_mut,} for BPF map and program iteration - Adjusted various APIs to return/use
OsStr instead of CStr or str - Adjusted
{Open,}Program to lazily retrieve name and section- Changed
name and section methods to return &OsStr and made constructors infallible
- Adjusted
OpenObject::name to return Option<&OsStr> - Removed
Result return type from OpenProgram::{set_log_level,set_autoload,set_flags} - Added
Object::name method - Added
Copy and Clone impls for types inside btf::types module - Adjusted
OpenMap::set_inner_map_fd to return Result - Adjusted
ProgramInput::context_in field to be a mutable reference - Made inner
query::Tag contents publicly accessible - Fixed potential memory leak in
RingBufferBuilder::build - Removed
Display implementation of various enum types
0.23.2
- Fixed build failure on Android platforms
0.23.1
- Added support for user ring buffers
- Fixed handling of bloom filter type maps
- Added
Map::lookup_bloom_filter for looking up elements in a bloom filter
0.23.0
- Overhauled crate feature set:
- Removed
novendor feature - Added
vendored feature to use vendored copies of all needed libraries
- Added
Program::attach_ksyscall for attaching to ksyscall handlers - Added
Program::test_run as a way for test-running programs - Added
OpenMap::initial_value{,_mut} for retrieving a map's initial value - Added
replace functionality to Xdp type - Added low-level
consume_raw and poll_raw methods to RingBuffer type - Added
recursion_misses attribute to query::ProgramInfo type - Added
AsRawLibbpf impl for OpenProgram - Fixed incorrect inference of
btf::types::MemberAttr::Bitfield variant - Fixed examples not building on non-x86 architectures
- Fixed potentially missing padding byte initialization on some target architectures
- Fixed compilation issues caused by mismatching function signatures in certain cross-compilation contexts
- Updated
libbpf-sys dependency to 1.4.0 - Bumped minimum Rust version to
1.71
0.22.1
- Introduced
Xdp type for working with XDP programs - Fixed handling of autocreate maps with
Object type
0.22.0
- Reworked
Error type:- Replaced
enum with data variants with struct hiding internal structure - Added support for chaining of errors
- Overhauled how errors are displayed
- Overhauled
query::ProgramInfo and query::ProgInfoIter to make them more readily usable - Added
Btf::from_vmlinux constructor and adjusted Btf::from_path to work with both raw and ELF files - Reworked
ObjectBuilder:- Made
name method fallible - Adjusted
opts to return a reference to libbpf_sys::bpf_object_open_opts - Removed object name argument from
open_memory constructor - Added
pin_root_path setter
- Added
AsRawLibbpf trait as a unified way to retrieve libbpf equivalents for libbpf-rs objects - Added
Map::update_batch method - Implemented
Send for Link - Bumped minimum Rust version to
1.65 - Updated
bitflags dependency to 2.0
0.21.2
- Enabled key iteration on
MapHandle objects (formerly possible only on Map objects) - Bumped minimum Rust version to
1.64
0.21.1
- Fixed build failures on 32 bit x86 and aarch32
0.21.0
- Added
TcHook::get_handle and TcHook::get_priority methods for restoring TcHook object - Added
Program::get_fd_by_id and Program::get_id_by_fd methods for restoring bpf management data - Added
Map::is_pinned and Map::get_pin_path methods for getting map pin status - Added
Program::attach_iter for attaching of programs to an iterator - Added
Map::delete_batch method for bulk deletion of elements - Added read/update/delete support for queue and stack
Map types - Added a new
MapHandle which provides most functionality previously found in Map - Removed support for creating
Map objects standalone (i.e. maps not created by libbpf) - Removed various
<object-type>::fd() methods in favor of <object-type>::as_fd() - Improved
btf_type_match! macro, adding support for most of Rust's match capabilities - Added
skel module exposing skeleton related traits - Fixed issue where instances of
Map created or opened without going through Object would leak file descriptors - Fixed potential Uprobe attachment failures on optimized builds caused by improper
libbpf_sys::bpf_object_open_opts object initialization - Adjusted various methods to work with
BorrowedFd instead of raw file descriptors - Made
RingBufferBuilder::add enforce that self cannot outlive the maps passed into it - Adjusted
Error::System variant textual representation to include errno string
0.20.1
- Added bindings for BTF via newly introduced
btf module - Added
Map constructors from pinned paths and from map id - Added
Map::as_libbpf_bpf_map_ptr and Object::as_libbpf_bpf_object_ptr accessors - Added
MapInfo type as a convenience wrapper around bpf_map_info- Added
Map::info to Map to make it easier to derive MapInfo from a Map instance
- Added
set_log_level, log_level, and autoload methods to OpenProgram - Removed deprecated
Link::get_fd method - Bumped minimum Rust version to
1.63
0.20.0
- Added support for USDT probes
- Added BPF linker support with new
Linker type - Added
Program::attach_uprobe_with_opts for attaching Uprobes with additional options - Added
tproxy example - Added option to
RingBuffer::poll to block indefinitely - Added support for querying BPF program type using
OpenProgram::prog_type - Added support for retrieving a BPF program's instructions using
OpenProgram::insns & Program::insns - Added
MapType::is_supported, ProgramType::is_supported, and ProgramType::is_helper_supported methods - Added
PerfBuffer::as_libbpf_perf_buffer_ptr to access underlying libbpf-sys object - Adjusted various
Map methods to work on shared receivers - Fixed
Link::open constructor to be a static method - Fixed unsoundness in skeleton logic caused by aliased
Box contents - Implemented
Send for PerfBuffer and RingBuffer - Made more types implement
Clone and Debug - Run leak sanitizer in CI
- Updated various dependencies
0.19.1
- Initial documented release