diff --git a/test/integration-ebpf/Cargo.toml b/test/integration-ebpf/Cargo.toml index 8f3eb3de..1c2b04ea 100644 --- a/test/integration-ebpf/Cargo.toml +++ b/test/integration-ebpf/Cargo.toml @@ -91,3 +91,7 @@ path = "src/xdp_sec.rs" [[bin]] name = "uprobe_cookie" path = "src/uprobe_cookie.rs" + +[[bin]] +name = "socket_filter" +path = "src/socket_filter.rs" diff --git a/test/integration-ebpf/src/socket_filter.rs b/test/integration-ebpf/src/socket_filter.rs new file mode 100644 index 00000000..b9cf4cd8 --- /dev/null +++ b/test/integration-ebpf/src/socket_filter.rs @@ -0,0 +1,20 @@ +#![no_std] +#![no_main] + +use aya_ebpf::{macros::socket_filter, programs::SkBuffContext}; + + +#[socket_filter] +pub fn read_one(ctx: SkBuffContext) -> i64 { + // Read 1 byte + let mut dst = [0; 1]; + let _ = ctx.load_bytes(0, &mut dst); + + 0 +} + +#[cfg(not(test))] +#[panic_handler] +fn panic(_info: &core::panic::PanicInfo) -> ! { + loop {} +} diff --git a/test/integration-test/src/lib.rs b/test/integration-test/src/lib.rs index 90277bb4..50012891 100644 --- a/test/integration-test/src/lib.rs +++ b/test/integration-test/src/lib.rs @@ -32,6 +32,8 @@ pub const TEST: &[u8] = include_bytes_aligned!(concat!(env!("OUT_DIR"), "/test") pub const TWO_PROGS: &[u8] = include_bytes_aligned!(concat!(env!("OUT_DIR"), "/two_progs")); pub const XDP_SEC: &[u8] = include_bytes_aligned!(concat!(env!("OUT_DIR"), "/xdp_sec")); pub const UPROBE_COOKIE: &[u8] = include_bytes_aligned!(concat!(env!("OUT_DIR"), "/uprobe_cookie")); +pub const SOCKET_FILTER: &[u8] = include_bytes_aligned!(concat!(env!("OUT_DIR"), "/socket_filter")); + #[cfg(test)] mod tests; #[cfg(test)] diff --git a/test/integration-test/src/tests.rs b/test/integration-test/src/tests.rs index 9ca83669..49cdc8ae 100644 --- a/test/integration-test/src/tests.rs +++ b/test/integration-test/src/tests.rs @@ -14,3 +14,4 @@ mod strncmp; mod tcx; mod uprobe_cookie; mod xdp; +mod socket_filter; \ No newline at end of file diff --git a/test/integration-test/src/tests/socket_filter.rs b/test/integration-test/src/tests/socket_filter.rs new file mode 100644 index 00000000..add7f98d --- /dev/null +++ b/test/integration-test/src/tests/socket_filter.rs @@ -0,0 +1,13 @@ +use aya::{programs::SocketFilter, Ebpf}; + +#[test] +fn socket_filter_load() { + let mut bpf = Ebpf::load(crate::SOCKET_FILTER).unwrap(); + let prog: &mut SocketFilter = bpf + .program_mut("read_one") + .unwrap() + .try_into() + .unwrap(); + prog.load().unwrap(); + +} \ No newline at end of file