From 9a89518f3b09ce0f0e766687fe86e367b575722c Mon Sep 17 00:00:00 2001 From: Vipin Kumar Date: Tue, 20 Oct 2015 15:17:07 -0700 Subject: [PATCH] OSPF needs to handle the previously added redist update 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 | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ospfd/ospf_zebra.c b/ospfd/ospf_zebra.c index fff38a34a3..8c152cdf72 100644 --- a/ospfd/ospf_zebra.c +++ b/ospfd/ospf_zebra.c @@ -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); -- 2.39.5