From 8dcda393c4db27087b5e77a86c4b044b0257ce6b Mon Sep 17 00:00:00 2001 From: Kenjiro Nakayama Date: Wed, 9 Feb 2022 22:59:35 +0900 Subject: [PATCH 1/2] Add template for socket_filter program type This patch adds template for socket_filter. e.g. ```sh cargo generate --path ~/dev/aya-template \ --name my-test \ -d program_type=socket_filter ``` --- .github/workflows/ci.yml | 1 + cargo-generate.toml | 1 + {{project-name}}-ebpf/src/main.rs | 10 ++++++++++ {{project-name}}/src/main.rs | 9 +++++++++ 4 files changed, 21 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 943737c..cfa2fc8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,6 +26,7 @@ jobs: - uprobe - uretprobe - sock_ops + - sock_filter - sk_msg - xdp - classifier diff --git a/cargo-generate.toml b/cargo-generate.toml index e88d8be..fb840de 100644 --- a/cargo-generate.toml +++ b/cargo-generate.toml @@ -13,6 +13,7 @@ choices = [ "uprobe", "uretprobe", "sock_ops", + "sock_filter", "sk_msg", "xdp", "classifier", diff --git a/{{project-name}}-ebpf/src/main.rs b/{{project-name}}-ebpf/src/main.rs index f676e99..af3f009 100644 --- a/{{project-name}}-ebpf/src/main.rs +++ b/{{project-name}}-ebpf/src/main.rs @@ -245,6 +245,16 @@ pub fn {{tracepoint_name}}(ctx: BtfTracePointContext) -> i32 { unsafe fn try_{{tracepoint_name}}(_ctx: BtfTracePointContext) -> Result { Ok(0) } +{%- when "socket_filter" %} +use aya_bpf::{ + macros::socket_filter, + programs::SkBuffContext, +}; + +#[socket_filter(name="{{crate_name}}")] +pub fn {{crate_name}}(_ctx: SkBuffContext) -> i64 { + return 0 +} {%- endcase %} #[panic_handler] diff --git a/{{project-name}}/src/main.rs b/{{project-name}}/src/main.rs index 8176b85..ff2e578 100644 --- a/{{project-name}}/src/main.rs +++ b/{{project-name}}/src/main.rs @@ -28,6 +28,10 @@ use aya::programs::TracePoint; use aya::{programs::Lsm, Btf}; {%- when "tp_btf" -%} use aya::{programs::BtfTracePoint, Btf}; +{%- when "socket_filter" -%} +use std::net::TcpStream; +use std::os::unix::io::AsRawFd; +use aya::programs::SocketFilter; {%- endcase %} use log::info; use simplelog::{ColorChoice, ConfigBuilder, LevelFilter, TermLogger, TerminalMode}; @@ -131,6 +135,11 @@ async fn main() -> Result<(), anyhow::Error> { let program: &mut BtfTracePoint = bpf.program_mut("{{tracepoint_name}}").unwrap().try_into()?; program.load("{{tracepoint_name}}", &btf)?; program.attach()?; + {%- when "socket_filter" -%} + let client = TcpStream::connect("127.0.0.1:1234")?; + let prog: &mut SocketFilter = bpf.program_mut("{{crate_name}}").unwrap().try_into()?; + prog.load()?; + prog.attach(client.as_raw_fd())?; {%- endcase %} info!("Waiting for Ctrl-C..."); From 11798df0ab47ee29397c9ce72cdcd61c75154526 Mon Sep 17 00:00:00 2001 From: Kenjiro Nakayama Date: Thu, 10 Feb 2022 11:20:48 +0900 Subject: [PATCH 2/2] Fix sock_filter to socket_filter --- .github/workflows/ci.yml | 2 +- cargo-generate.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cfa2fc8..69b185f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: - uprobe - uretprobe - sock_ops - - sock_filter + - socket_filter - sk_msg - xdp - classifier diff --git a/cargo-generate.toml b/cargo-generate.toml index fb840de..5041444 100644 --- a/cargo-generate.toml +++ b/cargo-generate.toml @@ -13,7 +13,7 @@ choices = [ "uprobe", "uretprobe", "sock_ops", - "sock_filter", + "socket_filter", "sk_msg", "xdp", "classifier",