]> git.puffer.fish Git - mirror/frr.git/commitdiff
ospf6d: Fix ospf6 redist with route-map 1582/head
authorChirag Shah <chirag@cumulusnetworks.com>
Thu, 28 Dec 2017 19:12:35 +0000 (11:12 -0800)
committerChirag Shah <chirag@cumulusnetworks.com>
Sat, 30 Dec 2017 18:56:53 +0000 (10:56 -0800)
When ospf6 configure with redistribute connected/protocol
with route-map. Upon restart of frr.service, ospf6 receives
redistribute update then route-map update.
During redistribute route update, since route-map info is not
filled, route is suppressed from injected as external route.

Fix: reset redistribute when route-map update received
matches with redistribution (type) and route-map name.

Ticket:CM-13800
Testing Done:
Configure ospf6 redistribute with route-map to inject
Type-2 external routes into database. Trigger frr restart
redistribute with route-map happens.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
ospf6d/ospf6_asbr.c

index c65578c11e34988c457d5283e23002bbb153661c..5fbf2dafa58e90859785dd59efff5b9d95b54ab9 100644 (file)
@@ -369,10 +369,21 @@ static void ospf6_asbr_routemap_update(const char *mapname)
                return;
 
        for (type = 0; type < ZEBRA_ROUTE_MAX; type++) {
-               if (ospf6->rmap[type].name)
+               if (ospf6->rmap[type].name) {
                        ospf6->rmap[type].map = route_map_lookup_by_name(
                                ospf6->rmap[type].name);
-               else
+
+                       if (mapname && ospf6->rmap[type].map &&
+                           (strcmp(ospf6->rmap[type].name, mapname) == 0)) {
+                               if (IS_OSPF6_DEBUG_ASBR)
+                                       zlog_debug("%s: route-map %s update, reset redist %s",
+                                                  __PRETTY_FUNCTION__, mapname,
+                                                  ZROUTE_NAME(type));
+
+                               ospf6_zebra_no_redistribute(type);
+                               ospf6_zebra_redistribute(type);
+                       }
+               } else
                        ospf6->rmap[type].map = NULL;
        }
 }