Browse Source

Add copy of README.md inside aya-log/

Needed for crates.io
Alessandro Decina 3 years ago
parent
commit
8bde15d
1 changed files with 73 additions and 0 deletions
  1. 73 0
      aya-log/aya-log/README.md

+ 73 - 0
aya-log/aya-log/README.md

@@ -0,0 +1,73 @@
+# 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`:
+
+```toml
+[dependencies]
+aya-log = { git = "https://github.com/aya-rs/aya-log", branch = "main" }
+```
+
+### eBPF side
+
+Add `aya-log-ebpf` to `Cargo.toml`:
+
+```toml
+[dependencies]
+aya-log-ebpf = { git = "https://github.com/aya-rs/aya-log", branch = "main" }
+```
+
+## Example
+
+Here's an example that uses `aya-log` in conjunction with the [simplelog] crate
+to log eBPF messages to the terminal.
+
+### User space code
+
+```rust
+use simplelog::{ColorChoice, ConfigBuilder, LevelFilter, TermLogger, TerminalMode};
+use aya_log::BpfLogger;
+
+TermLogger::init(
+    LevelFilter::Debug,
+    ConfigBuilder::new()
+        .set_target_level(LevelFilter::Error)
+        .set_location_level(LevelFilter::Error)
+        .build(),
+    TerminalMode::Mixed,
+    ColorChoice::Auto,
+)
+.unwrap();
+
+// Will log using the default logger, which is TermLogger in this case
+BpfLogger::init(&mut bpf).unwrap();
+```
+
+### eBPF code
+
+```rust
+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)
+}
+```
+
+[aya]: https://github.com/aya-rs/aya
+[log]: https://docs.rs/log
+[simplelog]: https://docs.rs/simplelog