summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--isisd/isis_snmp.c8
-rw-r--r--lib/agentx.c5
-rw-r--r--lib/smux.h1
3 files changed, 14 insertions, 0 deletions
diff --git a/isisd/isis_snmp.c b/isisd/isis_snmp.c
index f9e3780e29..83a06b6998 100644
--- a/isisd/isis_snmp.c
+++ b/isisd/isis_snmp.c
@@ -2826,6 +2826,13 @@ static int isis_snmp_init(struct event_loop *tm)
return 0;
}
+static int isis_snmp_terminate(void)
+{
+ smux_terminate();
+
+ return 0;
+}
+
/*
* ISIS notification functions: we have one function per notification
*/
@@ -3448,6 +3455,7 @@ static int isis_snmp_module_init(void)
hook_register(isis_circuit_del_hook, isis_circuit_snmp_id_free);
hook_register(frr_late_init, isis_snmp_init);
+ hook_register(frr_fini, isis_snmp_terminate);
return 0;
}
diff --git a/lib/agentx.c b/lib/agentx.c
index 19f2a6b7fc..2e621d06a4 100644
--- a/lib/agentx.c
+++ b/lib/agentx.c
@@ -377,4 +377,9 @@ void smux_events_update(void)
agentx_events_update();
}
+void smux_terminate(void)
+{
+ if (events)
+ list_delete(&events);
+}
#endif /* SNMP_AGENTX */
diff --git a/lib/smux.h b/lib/smux.h
index 8ec847afd0..0ed41410f5 100644
--- a/lib/smux.h
+++ b/lib/smux.h
@@ -101,6 +101,7 @@ extern bool smux_enabled(void);
extern void libagentx_init(void);
extern void smux_init(struct event_loop *tm);
+extern void smux_terminate(void);
extern void smux_agentx_enable(void);
extern void smux_register_mib(const char *, struct variable *, size_t, int,
oid[], size_t);