]> git.puffer.fish Git - mirror/frr.git/commitdiff
isisd: del routes when area is unconfigured 4411/head
authorEmanuele Di Pascale <emanuele@voltanet.io>
Tue, 28 May 2019 14:46:06 +0000 (16:46 +0200)
committerChristian Franke <chris@opensourcerouting.org>
Wed, 29 May 2019 11:52:03 +0000 (13:52 +0200)
attempt to fix #4399

Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
isisd/isis_route.c
isisd/isisd.c

index 82005c911ea19db0db484fcede61ed9cf4eeff91..281eaf11bc962c5ff8b72b326cc5ba9e70ec1da3 100644 (file)
@@ -543,7 +543,8 @@ void isis_route_verify_merge(struct isis_area *area,
                                                ISIS_ROUTE_FLAG_ZEBRA_SYNCED
                                        );
                                        continue;
-                               } else {
+                               } else if (CHECK_FLAG(rinfo->flag,
+                                                     ISIS_ROUTE_FLAG_ACTIVE)) {
                                        /* Clear the ZEBRA_SYNCED flag on the L1
                                         * route when L2 wins, otherwise L1
                                         * won't get reinstalled when it
@@ -553,6 +554,11 @@ void isis_route_verify_merge(struct isis_area *area,
                                                mrinfo->flag,
                                                ISIS_ROUTE_FLAG_ZEBRA_SYNCED
                                        );
+                               } else if (
+                                       CHECK_FLAG(
+                                               mrinfo->flag,
+                                               ISIS_ROUTE_FLAG_ZEBRA_SYNCED)) {
+                                       continue;
                                }
                        }
                        mrnode->info = rnode->info;
index 07be68d9aede9be778753614a220877d901375af..0b7d44ea1c1a3d248e6c2e604d03430e5ade2c11 100644 (file)
@@ -272,7 +272,7 @@ int isis_area_destroy(const char *area_tag)
        lsp_db_fini(&area->lspdb[1]);
 
        /* invalidate and verify to delete all routes from zebra */
-       isis_area_invalidate_routes(area, ISIS_LEVEL1 & ISIS_LEVEL2);
+       isis_area_invalidate_routes(area, area->is_type);
        isis_area_verify_routes(area);
 
        spftree_area_del(area);