diff --git a/daemon/kernel.c b/daemon/kernel.c index 191d21e52..7d89ecb40 100644 --- a/daemon/kernel.c +++ b/daemon/kernel.c @@ -139,6 +139,14 @@ int kernel_setup_table(unsigned int id) { return 0; } +void kernel_shutdown_table(void) { + if (!kernel.is_open) + return; + // ignore errors + close(kernel.fd); + kernel_delete_table(kernel.table); +} + int kernel_add_stream(struct rtpengine_target_info *mti) { struct rtpengine_command_add_target cmd; diff --git a/daemon/main.c b/daemon/main.c index e66bba102..841c3f16a 100644 --- a/daemon/main.c +++ b/daemon/main.c @@ -1456,6 +1456,7 @@ int main(int argc, char **argv) { #ifndef WITHOUT_NFTABLES nftables_shutdown(rtpe_config.nftables_chain, rtpe_config.nftables_base_chain); #endif + kernel_shutdown_table(); return 0; } diff --git a/include/kernel.h b/include/kernel.h index 14bc910db..a44a34fe7 100644 --- a/include/kernel.h +++ b/include/kernel.h @@ -35,6 +35,7 @@ extern struct kernel_interface kernel; int kernel_setup_table(unsigned int); +void kernel_shutdown_table(void); int kernel_add_stream(struct rtpengine_target_info *); int kernel_add_destination(struct rtpengine_destination_info *);