]> git.puffer.fish Git - matthieu/frr.git/commitdiff
OSPF needs to handle the previously added redist update
authorVipin Kumar <vipin@cumulusnetworks.com>
Tue, 20 Oct 2015 22:17:07 +0000 (15:17 -0700)
committerVipin Kumar <vipin@cumulusnetworks.com>
Tue, 20 Oct 2015 22:17:07 +0000 (15:17 -0700)
Ticket: CM-7388
Reviewed By: Donald, Vivek
Testing Done: Cherry picking from 2.5.4, no testing on 3.0 yet

OSPF needs to handle the previously added redist update/raplace semantics.
Update has no new message type, it comes as ADD message.

ospfd/ospf_zebra.c

index fff38a34a315c568e008fe9d6b3b0cc378d3805d..8c152cdf72f8fa7559b75d7b5223fc07bca41e66 100644 (file)
@@ -1024,6 +1024,7 @@ ospf_zebra_read_ipv4 (int command, struct zclient *zclient,
   struct prefix_ipv4 p;
   struct external_info *ei;
   struct ospf *ospf;
+  int i;
 
   s = zclient->ibuf;
   ifindex = 0;
@@ -1086,6 +1087,15 @@ ospf_zebra_read_ipv4 (int command, struct zclient *zclient,
       if (ospf->dtag[api.type] > 0)
        api.tag = ospf->dtag[api.type];
 
+      /*
+       * Given zebra sends update for a prefix via ADD message, it should
+       * be considered as an implicit DEL for that prefix with other source
+       * types.
+       */
+      for (i = 0; i < ZEBRA_ROUTE_MAX; i++)
+        if (i != api.type)
+          ospf_external_info_delete(i, api.instance, p);
+
       ei = ospf_external_info_add (api.type, api.instance, p, ifindex,
                                    nexthop, api.tag);