summaryrefslogtreecommitdiff
path: root/pimd/pim_upstream.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@nvidia.com>2023-08-12 11:29:37 -0400
committerDonald Sharp <sharpd@nvidia.com>2023-08-14 11:08:00 -0400
commitfc6115ced768596bb317f15e078122efcfe705a7 (patch)
treee68cf7a495edf6aadfa7ec6fd861f523d59b9d43 /pimd/pim_upstream.c
parent35c4790aa7f2e9273fd223783554a1aedd0c9097 (diff)
pimd: Intentionally rescan oil when RPF fails on upstream creation
When pim is creating an upstream for a S,G that it has received *but* it has not received a route to the S, the oil is not scanned to see if it should inherit anything from the *,G that may be present when it cannot find the correct iif to use. When the nexthop tracking actually resolves the route, the oil is never rescanned and the S,G stream will be missing a correct oil list leading to absolute mayhem in the network. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Diffstat (limited to 'pimd/pim_upstream.c')
-rw-r--r--pimd/pim_upstream.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c
index a8d087bf49..fd99e77761 100644
--- a/pimd/pim_upstream.c
+++ b/pimd/pim_upstream.c
@@ -912,6 +912,7 @@ static struct pim_upstream *pim_upstream_new(struct pim_instance *pim,
false /*update_mroute*/);
rpf_result = pim_rpf_update(pim, up, NULL, __func__);
if (rpf_result == PIM_RPF_FAILURE) {
+ up->channel_oil->oil_inherited_rescan = 1;
if (PIM_DEBUG_PIM_TRACE)
zlog_debug(
"%s: Attempting to create upstream(%s), Unable to RPF for source",