]> git.puffer.fish Git - matthieu/frr.git/commitdiff
pimd: Intentionally rescan oil when RPF fails on upstream creation
authorDonald Sharp <sharpd@nvidia.com>
Sat, 12 Aug 2023 15:29:37 +0000 (11:29 -0400)
committerDonald Sharp <sharpd@nvidia.com>
Mon, 14 Aug 2023 15:08:00 +0000 (11:08 -0400)
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>
pimd/pim_upstream.c

index a8d087bf4930c914e75917dcf01bafd274a9edfe..fd99e77761127056983e54901e4221f4e03abce6 100644 (file)
@@ -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",