Signed-off-by: Donald Sharp <sharpd@nvidia.com>
zlog_notice("Terminating on signal");
eigrp_terminate();
+ keychain_terminate();
+
exit(0);
}
{.completions = NULL}
};
+void keychain_terminate(void)
+{
+ struct keychain *keychain;
+
+ while (listcount(keychain_list)) {
+ keychain = listgetdata(listhead(keychain_list));
+
+ listnode_delete(keychain_list, keychain);
+ keychain_delete(keychain);
+ }
+
+ list_delete(&keychain_list);
+}
+
void keychain_init(void)
{
keychain_list = list_new();
DECLARE_QOBJ_TYPE(key);
extern void keychain_init(void);
+extern void keychain_terminate(void);
extern struct keychain *keychain_lookup(const char *);
extern struct key *key_lookup_for_accept(const struct keychain *, uint32_t);
extern struct key *key_match_for_accept(const struct keychain *, const char *);
}
ospf6_master_delete();
+
frr_fini();
+
+ keychain_terminate();
exit(status);
}
ospf_vrf_terminate();
route_map_finish();
+
+ keychain_terminate();
/* Deliberately go back up, hopefully to thread scheduler, as
* One or more ospf_finish()'s may have deferred shutdown to a timer
* thread
rip_zclient_stop();
route_map_finish();
+
+ keychain_terminate();
frr_fini();
exit(0);