]> git.puffer.fish Git - mirror/frr.git/commitdiff
isisd: Free created tables
authorDonald Sharp <sharpd@nvidia.com>
Sat, 14 Nov 2020 22:58:40 +0000 (17:58 -0500)
committerDonald Sharp <sharpd@nvidia.com>
Sat, 14 Nov 2020 23:20:21 +0000 (18:20 -0500)
On redistribution into isis we were creating a table for
handling the redistributed routes, but never cleaning them
up on shutdown properly.  Do so.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
isisd/isis_redist.c
isisd/isis_redist.h
isisd/isisd.c

index e6c7a734bdcc47ea30688443bf186cf2e29eba17..5714fa872ad8783a8182163b8e9a6426f5a4ab01 100644 (file)
@@ -380,6 +380,19 @@ static void isis_redist_update_zebra_subscriptions(struct isis *isis)
                }
 }
 
+void isis_redist_free(struct isis *isis)
+{
+       int i;
+
+       for (i = 0; i < REDIST_PROTOCOL_COUNT; i++) {
+               if (!isis->ext_info[i])
+                       continue;
+
+               route_table_finish(isis->ext_info[i]);
+               isis->ext_info[i] = NULL;
+       }
+}
+
 void isis_redist_set(struct isis_area *area, int level, int family, int type,
                     uint32_t metric, const char *routemap, int originate_type)
 {
index 0d2dc6a80342d255352de5dfecf76fc33001d6e7..afce922240e3e4cbb423c1d745b6b900acf5b1ba 100644 (file)
@@ -62,4 +62,5 @@ void isis_redist_set(struct isis_area *area, int level, int family, int type,
                     uint32_t metric, const char *routemap, int originate_type);
 void isis_redist_unset(struct isis_area *area, int level, int family, int type);
 
+void isis_redist_free(struct isis *isis);
 #endif
index 668b60e385586f1a604609f37425af0da305bc0d..950cdc281f1bab5ed154c0a93c2cb0636d8b12c5 100644 (file)
@@ -587,6 +587,7 @@ void isis_finish(struct isis *isis)
                        isis_vrf_unlink(isis, vrf);
        }
 
+       isis_redist_free(isis);
        list_delete(&isis->area_list);
        list_delete(&isis->init_circ_list);
        XFREE(MTYPE_ISIS, isis);