Skip to content

Commit b2a87ee

Browse files
committed
Reduce code duplication on BPF programs handling
1 parent 3576086 commit b2a87ee

1 file changed

Lines changed: 20 additions & 24 deletions

File tree

fact/src/bpf.rs

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -132,39 +132,35 @@ impl Bpf {
132132
Ok(())
133133
}
134134

135+
fn load_lsm_prog(&mut self, name: &str, hook: &str, btf: &Btf) -> anyhow::Result<()> {
136+
let Some(prog) = self.obj.program_mut(name) else {
137+
bail!("{name} program not found");
138+
};
139+
let prog: &mut Lsm = prog.try_into()?;
140+
prog.load(hook, btf)?;
141+
Ok(())
142+
}
143+
135144
fn load_progs(&mut self) -> anyhow::Result<()> {
136145
let btf = Btf::from_sys_fs()?;
137-
let Some(trace_file_open) = self.obj.program_mut("trace_file_open") else {
138-
bail!("trace_file_open program not found");
139-
};
140-
let trace_file_open: &mut Lsm = trace_file_open.try_into()?;
141-
trace_file_open.load("file_open", &btf)?;
146+
self.load_lsm_prog("trace_file_open", "file_open", &btf)?;
147+
self.load_lsm_prog("trace_path_unlink", "path_unlink", &btf)
148+
}
142149

143-
let Some(trace_path_unlink) = self.obj.program_mut("trace_path_unlink") else {
144-
bail!("trace_path_unlink program not found");
150+
fn attach_lsm_prog(&mut self, name: &str) -> anyhow::Result<()> {
151+
let Some(prog) = self.obj.program_mut(name) else {
152+
bail!("{name} program not found");
145153
};
146-
let trace_path_unlink: &mut Lsm = trace_path_unlink.try_into()?;
147-
trace_path_unlink.load("path_unlink", &btf)?;
154+
let prog: &mut Lsm = prog.try_into()?;
155+
let id = prog.attach()?;
156+
self.links.push(prog.take_link(id)?);
148157

149158
Ok(())
150159
}
151160

152161
fn attach_progs(&mut self) -> anyhow::Result<()> {
153-
let Some(trace_file_open) = self.obj.program_mut("trace_file_open") else {
154-
bail!("trace_file_open program not found");
155-
};
156-
let trace_file_open: &mut Lsm = trace_file_open.try_into()?;
157-
let id = trace_file_open.attach()?;
158-
self.links.push(trace_file_open.take_link(id)?);
159-
160-
let Some(trace_path_unlink) = self.obj.program_mut("trace_path_unlink") else {
161-
bail!("trace_path_unlink program not found");
162-
};
163-
let trace_path_unlink: &mut Lsm = trace_path_unlink.try_into()?;
164-
let id = trace_path_unlink.attach()?;
165-
self.links.push(trace_path_unlink.take_link(id)?);
166-
167-
Ok(())
162+
self.attach_lsm_prog("trace_file_open")?;
163+
self.attach_lsm_prog("trace_path_unlink")
168164
}
169165

170166
fn detach_progs(&mut self) {

0 commit comments

Comments
 (0)