]> git.puffer.fish Git - mirror/frr.git/commitdiff
lib, bgpd, nhrpd: Cleanup memory in lib/resolver on shutdown
authorDonald Sharp <sharpd@nvidia.com>
Sat, 16 Dec 2023 14:18:41 +0000 (09:18 -0500)
committerDonald Sharp <sharpd@nvidia.com>
Sat, 16 Dec 2023 14:18:41 +0000 (09:18 -0500)
This memory was not being cleaned up on shutdown.  Fix this.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
bgpd/bgp_bmp.c
lib/resolver.c
lib/resolver.h
nhrpd/nhrp_main.c

index fee02de720f05e3763c466f9eb73c897f3247cc0..6a55432e149768b5ed46605cca1f5c1d77dd8627 100644 (file)
@@ -2884,6 +2884,12 @@ static int bmp_route_update(struct bgp *bgp, afi_t afi, safi_t safi,
        return 0;
 }
 
+static int bgp_bmp_early_fini(void)
+{
+       resolver_terminate();
+
+       return 0;
+}
 
 static int bgp_bmp_module_init(void)
 {
@@ -2896,6 +2902,7 @@ static int bgp_bmp_module_init(void)
        hook_register(bgp_inst_delete, bmp_bgp_del);
        hook_register(frr_late_init, bgp_bmp_init);
        hook_register(bgp_route_update, bmp_route_update);
+       hook_register(frr_early_fini, bgp_bmp_early_fini);
        return 0;
 }
 
index 99bf356eb3e648c5a3a7e68c4806051041e2aa5a..d8245e3816cdf963050d44b8987ef3341a4843c9 100644 (file)
@@ -335,3 +335,8 @@ void resolver_init(struct event_loop *tm)
        install_element(CONFIG_NODE, &debug_resolver_cmd);
        install_element(ENABLE_NODE, &debug_resolver_cmd);
 }
+
+void resolver_terminate(void)
+{
+       ares_destroy(state.channel);
+}
index 87e8ecdc4ae6ba62c66f508e74d719988de10d40..882f960a450ceb98d0812794896769b641fdc4ca 100644 (file)
@@ -23,6 +23,7 @@ struct resolver_query {
 };
 
 void resolver_init(struct event_loop *tm);
+void resolver_terminate(void);
 void resolver_resolve(struct resolver_query *query, int af, vrf_id_t vrf_id,
                      const char *hostname,
                      void (*cb)(struct resolver_query *, const char *, int,
index 73af78cbf0f8fcb1f6ef592c8e2edd9d558336f4..983a03282b770d9603114dba2ddfc88aa887b70b 100644 (file)
@@ -92,6 +92,8 @@ static void nhrp_request_stop(void)
        nhrp_vc_terminate();
 
        debugf(NHRP_DEBUG_COMMON, "Done.");
+
+       resolver_terminate();
        frr_fini();
 
        exit(0);