summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDon Slice <dslice@cumulusnetworks.com>2017-02-14 09:15:40 -0800
committerDon Slice <dslice@cumulusnetworks.com>2017-05-17 08:19:51 -0400
commit1dac3a9619c8436f81c7b37f0252574b0b677dd0 (patch)
tree071dbab5f2065ee6ba264e2e02908cbf7fbb1868
parent63d825b0db90ba8a69c3da42a8fc163541495a13 (diff)
zebra: stop deregistering static nexthops unless removing the static
Problem reported was that with some overlapping static route configurations, when the link went down the less specific static was not re-installed after the link came back up. Determined that with the overlapping statics, we would recursively resolve the next-hop temporarily thru the more specific static route, but since the next-hop wasn't actually reachable, we would go through the code that clears the nht information for the static completely. This caused the nht code to no longer process the static route. After reviewing the process, there doesn't seem to be any reason that the static should be deregistered in that section of code. Removed the deregister and the problem is resolved and not addional failures seen in manual testing. zebra_test.py completed successfully and ospf and bgp smokes completed with no new failures. Ticket: CM-14873 Signed-off-by: Don Slice <dslice@cumulusnetworks.com> Reviewed-by: CCR-5696
-rw-r--r--zebra/zebra_rib.c2
1 files changed, 0 insertions, 2 deletions
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index e48da0479b..23c4c9ebea 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -366,7 +366,6 @@ nexthop_active_ipv4 (struct rib *rib, struct nexthop *nexthop, int set,
if (set)
{
UNSET_FLAG (nexthop->flags, NEXTHOP_FLAG_RECURSIVE);
- zebra_deregister_rnh_static_nexthops(rib->vrf_id, nexthop->resolved, top);
nexthops_free(nexthop->resolved);
nexthop->resolved = NULL;
rib->nexthop_mtu = 0;
@@ -597,7 +596,6 @@ nexthop_active_ipv6 (struct rib *rib, struct nexthop *nexthop, int set,
if (set)
{
UNSET_FLAG (nexthop->flags, NEXTHOP_FLAG_RECURSIVE);
- zebra_deregister_rnh_static_nexthops (rib->vrf_id, nexthop->resolved, top);
nexthops_free(nexthop->resolved);
nexthop->resolved = NULL;
}