]> git.puffer.fish Git - mirror/frr.git/commitdiff
ospfd: ABR algorithm not propagating MAXAGE LSAs into area
authorJR Rivers <jrrivers@cumulusnetworks.com>
Mon, 24 Sep 2012 17:26:50 +0000 (17:26 +0000)
committerDavid Lamparter <equinox@opensourcerouting.org>
Thu, 25 Oct 2012 17:15:58 +0000 (10:15 -0700)
When a range (or sub-range) is deleted, the area is notified by propagating a
MAXAGE LSA.  This LSA stays in the database for a while to both insure
propagation as well as in the off chance that it's useful in the near future.

Unfortunately, the ABR algorithm was treating these MAXAGE LSAs as unchanged and
not propagating them within the areas.

Signed-off-by: JR Rivers <jrrivers@cumulusnetworks.com>
Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
Reviewed-by: Dinesh Dutt <ddutt@cumulusnetworks.com>
Reviewed-by: Shrijeet Mukherjee <shm@cumulusnetworks.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
ospfd/ospf_abr.c

index ef1048b23b61513c02d528c2e2bb1e195a062bd7..2876eaa71f80c69ccb27064a62ba9f582742b81e 100644 (file)
@@ -729,8 +729,9 @@ ospf_abr_announce_network_to_area (struct prefix_ipv4 *p, u_int32_t cost,
         zlog_debug ("ospf_abr_announce_network_to_area(): "
                   "old metric: %d, new metric: %d",
                GET_METRIC (sl->metric), cost);
-               
-      if (GET_METRIC (sl->metric) == cost)
+
+      if ((GET_METRIC (sl->metric) == cost) &&
+         ((old->flags & OSPF_LSA_IN_MAXAGE) == 0))
         {
           /* unchanged. simply reapprove it */
           if (IS_DEBUG_OSPF_EVENT)