]> git.puffer.fish Git - matthieu/frr.git/commitdiff
isisd: Fix LSPs not being regenerated after adjacency change
authorMichael Zingg <michael.zingg@zhaw.ch>
Fri, 26 Oct 2012 09:18:19 +0000 (11:18 +0200)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 30 Mar 2016 00:26:09 +0000 (20:26 -0400)
In isisd LSP's are not regenerated after a change in adjacency if
lsp-gen-interval has expired.
I have tested this on Debian 6.0 with zebra and level1 isisd with point
to point links. This problem is also listed in Test ISIS-18.3 on the
opensourcerouting.org wiki:
http://confluence.isc.org/display/osr/ANVL+ISIS+Compliance+Test+Plan
http://confluence.isc.org/display/osr/ANVL+ISIS+Results

isisd/isis_lsp.c

index f2a7923d577ef0b65139def54a7613c95251d9e5..d0642ff5eb79ff4dc78470a5d19922c076d9435e 100644 (file)
@@ -1783,7 +1783,18 @@ lsp_regenerate_schedule (struct isis_area *area, int level, int all_pseudo)
         }
       else
         {
-          lsp_regenerate (area, lvl);
+          /*
+           * lsps are not regenerated if lsp_regenerate function is called
+           * directly. However if the lsp_regenerate call is queued for
+           * later execution it works.
+           */
+          area->lsp_regenerate_pending[lvl - 1] = 1;
+          if (lvl == IS_LEVEL_1)
+            THREAD_TIMER_ON (master, area->t_lsp_refresh[lvl - 1],
+                             lsp_l1_refresh, area, 0);
+          else if (lvl == IS_LEVEL_2)
+            THREAD_TIMER_ON (master, area->t_lsp_refresh[lvl - 1],
+                             lsp_l2_refresh, area, 0);
         }
     }