]> git.puffer.fish Git - matthieu/frr.git/commit
pimd: Figure neighbors -vs- paths when doing RPF
authorDonald Sharp <sharpd@cumulusnetworks.com>
Fri, 6 Jul 2018 13:03:23 +0000 (09:03 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Sat, 7 Jul 2018 13:02:07 +0000 (09:02 -0400)
commit1996712744f009ed6d4281f7686429dab3f75960
treebd2b635c50e744024a843b69c18d0dd9a4e8c2c8
parent57695eb6efb3520249aaa05ce653b119f53a9316
pimd: Figure neighbors -vs- paths when doing RPF

When we are looking up a RPF with a ecmp path, there
are situations where we are failing to find a path change
because we were not considering the actual number of neighbors
we have available to us at the start of the loop.

Example:

Suppose 2 way ecmp with a neighbor on each path.  We have
multiple upstreams that are strewn across both paths.
If we loose a pim neighbor on one of the paths we would
initiate a rescan of the upstreams.  If the neighbor
we lost happened to be the last ecmp path we rescanned
we would not successfully find a new path and leave
the upstream stranded.

This code change looks at the number of available neighbors
that we have -vs- the number of paths we have and chooses
the smaller of the two for figuring out what to do.

There probably exist other failure scenarios as well that
I am missing here and quite frankly the current code muddies
the water between a RPF lookup failure -vs- a RPF lookup succeeded
and there are no paths.  Further work is needed here imo.

Additionally this idea of a pim_ecmp_nexthop_lookup and
pim_ecmp_nexthop_search is bogus.  They are the same function and
should be merged at some point in time.

Ticket: CM-21599
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_nht.c