Add attach bpf with flags and detach single bpf
Attach bpf program to cgroup with flags, support 'BPF_F_ALLOW_OVERRIDE'
and 'BPF_F_ALLOW_MULTI'; corresponding to detach a single bpf program in
a cgroup.
Test: m
Signed-off-by: KaiWen Zheng <zhengkaiwen5@xiaomi.corp-partner.google.com>
Change-Id: I9a4d2dcb249c6c628e3f1287d7d5d1879b722bd6
diff --git a/staticlibs/native/bpf_syscall_wrappers/include/BpfSyscallWrappers.h b/staticlibs/native/bpf_syscall_wrappers/include/BpfSyscallWrappers.h
index 72eebf3..abf83da 100644
--- a/staticlibs/native/bpf_syscall_wrappers/include/BpfSyscallWrappers.h
+++ b/staticlibs/native/bpf_syscall_wrappers/include/BpfSyscallWrappers.h
@@ -125,11 +125,12 @@
}
inline int attachProgram(bpf_attach_type type, const BPF_FD_TYPE prog_fd,
- const BPF_FD_TYPE cg_fd) {
+ const BPF_FD_TYPE cg_fd, uint32_t flags = 0) {
return bpf(BPF_PROG_ATTACH, {
.target_fd = BPF_FD_TO_U32(cg_fd),
.attach_bpf_fd = BPF_FD_TO_U32(prog_fd),
.attach_type = type,
+ .attach_flags = flags,
});
}
@@ -140,6 +141,15 @@
});
}
+inline int detachSingleProgram(bpf_attach_type type, const BPF_FD_TYPE prog_fd,
+ const BPF_FD_TYPE cg_fd) {
+ return bpf(BPF_PROG_DETACH, {
+ .target_fd = BPF_FD_TO_U32(cg_fd),
+ .attach_bpf_fd = BPF_FD_TO_U32(prog_fd),
+ .attach_type = type,
+ });
+}
+
} // namespace bpf
} // namespace android