From 0a27d5a52038664c25ef169cbe78c28c9a107402 Mon Sep 17 00:00:00 2001 From: varun-r-mallya Date: Sun, 21 Sep 2025 19:24:01 +0530 Subject: [PATCH] add destroy function --- src/core/bpf_program.cpp | 13 ++++++++++++- src/core/bpf_program.h | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/core/bpf_program.cpp b/src/core/bpf_program.cpp index 5b46fab..b8a8ec6 100644 --- a/src/core/bpf_program.cpp +++ b/src/core/bpf_program.cpp @@ -9,7 +9,7 @@ BpfProgram::BpfProgram(std::string object_path, std::string program_name) } BpfProgram::~BpfProgram() { - //TODO: detach here as well + destroy(); if (obj_) { bpf_object__close(obj_); } @@ -64,6 +64,17 @@ bool BpfProgram::attach() { return true; } +bool BpfProgram::destroy() { + bool success = true; + for (auto [prog, link] : programs) { + if (!prog) { + throw BpfException("Program not loaded"); + } + success = success & bpf_link__destroy(link); + } + return success; +} + void BpfProgram::load_and_attach() { load(); attach(); diff --git a/src/core/bpf_program.h b/src/core/bpf_program.h index 1cfe0ed..7ec73d7 100644 --- a/src/core/bpf_program.h +++ b/src/core/bpf_program.h @@ -21,6 +21,7 @@ public: bool load(); bool attach(); + bool destroy(); void load_and_attach(); [[nodiscard]] bool is_loaded() const { return obj_ != nullptr; }