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.
This commit is contained in:
Vipin Kumar 2015-10-20 15:17:07 -07:00
parent 3607212c76
commit 9a89518f3b

View File

@ -1024,6 +1024,7 @@ ospf_zebra_read_ipv4 (int command, struct zclient *zclient,
struct prefix_ipv4 p; struct prefix_ipv4 p;
struct external_info *ei; struct external_info *ei;
struct ospf *ospf; struct ospf *ospf;
int i;
s = zclient->ibuf; s = zclient->ibuf;
ifindex = 0; ifindex = 0;
@ -1086,6 +1087,15 @@ ospf_zebra_read_ipv4 (int command, struct zclient *zclient,
if (ospf->dtag[api.type] > 0) if (ospf->dtag[api.type] > 0)
api.tag = ospf->dtag[api.type]; 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, ei = ospf_external_info_add (api.type, api.instance, p, ifindex,
nexthop, api.tag); nexthop, api.tag);