mirror of https://github.com/aya-rs/aya
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84e5e2894f
Having separate format hints and tokens per IP address family is unnecessary, since they are represented by different types and we handle format hints for each type separately. So we can just have one format hint. Also, we should be consistent with the format strings grammar in Rust[0]. The `type` token, which is mapped to formatting traits, usually consists of one letter[1] (and optional `?` for `Debug` trait, but that doesn't matter for us). It shouldn't consist of multiple letters. Our `:ipv4` and `:ipv6` tokens were clearly breaking that convention, so we should rather switch to something with one letter - hence `:i`. [0] https://doc.rust-lang.org/std/fmt/#syntax [1] https://doc.rust-lang.org/std/fmt/#formatting-traits |
1 year ago | |
---|---|---|
.. | ||
src | 1 year ago | |
Cargo.toml | 2 years ago | |
README.md | 2 years ago | |
release.toml | 2 years ago |
README.md
aya-log - a logging library for eBPF programs
Overview
aya-log
is a logging library for eBPF programs written using aya. Think of
it as the log crate for eBPF.
Installation
User space
Add aya-log
to Cargo.toml
:
[dependencies]
aya-log = { git = "https://github.com/aya-rs/aya", branch = "main" }
eBPF side
Add aya-log-ebpf
to Cargo.toml
:
[dependencies]
aya-log-ebpf = { git = "https://github.com/aya-rs/aya", branch = "main" }
Example
Here's an example that uses aya-log
in conjunction with the env_logger crate
to log eBPF messages to the terminal.
User space code
use aya_log::BpfLogger;
env_logger::init();
// Will log using the default logger, which is TermLogger in this case
BpfLogger::init(&mut bpf).unwrap();
eBPF code
use aya_log_ebpf::info;
fn try_xdp_firewall(ctx: XdpContext) -> Result<u32, ()> {
if let Some(port) = tcp_dest_port(&ctx)? {
if block_port(port) {
info!(&ctx, "❌ blocked incoming connection on port: {}", port);
return Ok(XDP_DROP);
}
}
Ok(XDP_PASS)
}