mirror of https://github.com/aya-rs/aya
Create greened_test.rs
parent
bcbe79bc95
commit
c93d2f0ab7
@ -0,0 +1,60 @@
|
|||||||
|
use anyhow::Context;
|
||||||
|
use aya::{
|
||||||
|
include_bytes_aligned,
|
||||||
|
programs::{Xdp, XdpFlags},
|
||||||
|
Bpf,
|
||||||
|
};
|
||||||
|
use aya_log::BpfLogger;
|
||||||
|
use clap::Parser;
|
||||||
|
use log::warn;
|
||||||
|
use simplelog::{ColorChoice, ConfigBuilder, LevelFilter, TermLogger, TerminalMode};
|
||||||
|
use tokio::signal::ctrl_c;
|
||||||
|
|
||||||
|
#[derive(Debug, Parser)]
|
||||||
|
struct Opt {
|
||||||
|
#[clap(short, long, default_value = "eth0")]
|
||||||
|
//#[clap(short, long, default_value = "enp1s0")]
|
||||||
|
iface: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[tokio::main]
|
||||||
|
async fn main() -> Result<(), anyhow::Error> {
|
||||||
|
TermLogger::init(
|
||||||
|
LevelFilter::Debug,
|
||||||
|
ConfigBuilder::new()
|
||||||
|
.set_target_level(LevelFilter::Error)
|
||||||
|
.set_location_level(LevelFilter::Error)
|
||||||
|
.build(),
|
||||||
|
TerminalMode::Mixed,
|
||||||
|
ColorChoice::Auto,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
let opt = Opt::parse();
|
||||||
|
|
||||||
|
// env_logger::init();
|
||||||
|
|
||||||
|
// This will include your eBPF object file as raw bytes at compile-time and load it at
|
||||||
|
// runtime. This approach is recommended for most real-world use cases. If you would
|
||||||
|
// like to specify the eBPF program at runtime rather than at compile-time, you can
|
||||||
|
// reach for `Bpf::load_file` instead.
|
||||||
|
#[cfg(debug_assertions)]
|
||||||
|
let mut bpf = Bpf::load(include_bytes_aligned!(
|
||||||
|
"../../target/bpfel-unknown-none/debug/xdp-syncookie"
|
||||||
|
))?;
|
||||||
|
#[cfg(not(debug_assertions))]
|
||||||
|
let mut bpf = Bpf::load(include_bytes_aligned!(
|
||||||
|
"../../target/bpfel-unknown-none/release/xdp-syncookie"
|
||||||
|
))?;
|
||||||
|
if let Err(e) = BpfLogger::init(&mut bpf) {
|
||||||
|
// This can happen if you remove all logger statements from your eBPF program.
|
||||||
|
warn!("failed to initialize eBPF logger: {}", e);
|
||||||
|
}
|
||||||
|
let program: &mut Xdp = bpf.program_mut("xdp_syncookie").unwrap().try_into()?;
|
||||||
|
program.load()?;
|
||||||
|
program.attach(&opt.iface, XdpFlags::default())
|
||||||
|
.context("failed to attach the XDP program with default flags - try changing XdpFlags::default() to XdpFlags::SKB_MODE")?;
|
||||||
|
ctrl_c().await?;
|
||||||
|
|
||||||
|
// (1)
|
||||||
|
Ok(())
|
||||||
|
}
|
Loading…
Reference in New Issue