]> git.puffer.fish Git - matthieu/frr.git/commitdiff
*: Cleanup keychain on shutdown
authorDonald Sharp <sharpd@nvidia.com>
Wed, 15 Nov 2023 19:36:24 +0000 (14:36 -0500)
committerDonald Sharp <sharpd@nvidia.com>
Tue, 21 Nov 2023 17:41:18 +0000 (12:41 -0500)
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
eigrpd/eigrp_main.c
lib/keychain.c
lib/keychain.h
ospf6d/ospf6_main.c
ospfd/ospfd.c
ripd/rip_main.c

index 6d7443b7914ea6fb32f48b1e3d57f787942bb2b5..634bf1772e00dbba03c54549902d1341d03d41c3 100644 (file)
@@ -96,6 +96,8 @@ static void sigint(void)
        zlog_notice("Terminating on signal");
        eigrp_terminate();
 
+       keychain_terminate();
+
        exit(0);
 }
 
index 640746bb419487b24ee9f00d13e36ff516c7948f..f4df71b7e921c0c49ac51acb87b38a7a4c5f411e 100644 (file)
@@ -1187,6 +1187,20 @@ static const struct cmd_variable_handler keychain_var_handlers[] = {
        {.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();
index be93275a5d23797786fd53c26df29c688e9bbd8b..c96b74ecce19177be054f486b67717ab4221294d 100644 (file)
@@ -82,6 +82,7 @@ struct key {
 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 *);
index 2a189f14182018059165505eb15f4bed1e4d6147..b61c8f9a5f7d9016a4b1ef74a209318c20682567 100644 (file)
@@ -104,7 +104,10 @@ static void __attribute__((noreturn)) ospf6_exit(int status)
        }
 
        ospf6_master_delete();
+
        frr_fini();
+
+       keychain_terminate();
        exit(status);
 }
 
index c46d2e278e319b701684e2198c29ef04ce8ef2b6..fa7cbe6e958b4e2d4680c09f26648bb6133e69d6 100644 (file)
@@ -680,6 +680,8 @@ void ospf_terminate(void)
        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
index 3f52bebe956f41d330b2fcaf0a5726be784aedc9..cb23098a7e26615961936a0ae9d044d488dfca22 100644 (file)
@@ -85,6 +85,8 @@ static void sigint(void)
        rip_zclient_stop();
 
        route_map_finish();
+
+       keychain_terminate();
        frr_fini();
 
        exit(0);