From: Vipin Kumar Date: Tue, 20 Oct 2015 22:17:07 +0000 (-0700) Subject: OSPF needs to handle the previously added redist update X-Git-Tag: frr-2.0-rc1~1231 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=9a89518f3b09ce0f0e766687fe86e367b575722c;p=matthieu%2Ffrr.git 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. --- 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);