tp_btf: add template for tp_btf programs

pull/15/head
William Findlay 3 years ago
parent 7908e8593d
commit 3f082e713e
No known key found for this signature in database
GPG Key ID: 7162B44E9E560373

@ -30,6 +30,7 @@ jobs:
- cgroup_skb
- tracepoint
- lsm
- tp_btf
steps:
- uses: actions/checkout@v2

@ -5,7 +5,7 @@ ignore = [".github", "test.sh"]
[placeholders.program_type]
type = "string"
prompt = "Which type of eBPF program?"
choices = ["kprobe", "kretprobe", "uprobe", "uretprobe", "sock_ops", "sk_msg", "xdp", "classifier", "cgroup_skb", "tracepoint", "lsm"]
choices = ["kprobe", "kretprobe", "uprobe", "uretprobe", "sock_ops", "sk_msg", "xdp", "classifier", "cgroup_skb", "tracepoint", "lsm", "tp_btf"]
default = "xdp"
[conditional.'program_type == "kprobe" || program_type == "kretprobe"'.placeholders.kprobe]
@ -35,7 +35,7 @@ type = "string"
prompt = "Which tracepoint category? (e.g sched, net etc...)"
regex = "[a-z]+"
[conditional.'program_type == "tracepoint"'.placeholders.tracepoint_name]
[conditional.'program_type == "tracepoint" || program_type == "tp_btf"'.placeholders.tracepoint_name]
type = "string"
prompt = "Which tracepoint name? (e.g sched_switch, net_dev_queue)"
regex = "[a-z]+"

@ -33,6 +33,9 @@ case "$PROG_TYPE" in
"lsm")
ADDITIONAL_ARGS="-d lsm_hook=file_open"
;;
"tp_btf")
ADDITIONAL_ARGS="-d tracepoint_name=net_dev_queue"
;;
*)
ADDITIONAL_ARGS=''
esac

@ -194,6 +194,23 @@ pub fn {{lsm_hook}}(ctx: LsmContext) -> i32 {
unsafe fn try_{{lsm_hook}}(_ctx: LsmContext) -> Result<i32, i32> {
Ok(0)
}
{%- when "tp_btf" %}
use aya_bpf::{
macros::btf_tracepoint,
programs::BtfTracePointContext,
};
#[btf_tracepoint(name="{{tracepoint_name}}")]
pub fn {{tracepoint_name}}(ctx: BtfTracePointContext) -> i32 {
match unsafe { try_{{tracepoint_name}}(ctx) } {
Ok(ret) => ret,
Err(ret) => ret,
}
}
unsafe fn try_{{tracepoint_name}}(_ctx: BtfTracePointContext) -> Result<i32, i32> {
Ok(0)
}
{%- endcase %}
#[panic_handler]

@ -20,6 +20,8 @@ use aya::programs::{CgroupSkb, CgroupSkbAttachType};
use aya::programs::TracePoint;
{%- when "lsm" -%}
use aya::{programs::Lsm, Btf};
{%- when "tp_btf" -%}
use aya::{programs::BtfTracePoint, Btf};
{%- endcase %}
use std::{
convert::{TryFrom,TryInto},
@ -98,6 +100,11 @@ fn try_main() -> Result<(), anyhow::Error> {
let program: &mut Lsm = bpf.program_mut("{{lsm_hook}}")?.try_into()?;
program.load("{{lsm_hook}}", &btf)?;
program.attach()?;
{%- when "tp_btf" -%}
let btf = Btf::from_sys_fs()?;
let program: &mut BtfTracePoint = bpf.program_mut("{{tracepoint_name}}")?.try_into()?;
program.load("{{tracepoint_name}}", &btf)?;
program.attach()?;
{%- endcase %}
let running = Arc::new(AtomicBool::new(true));

Loading…
Cancel
Save