summaryrefslogtreecommitdiffstats
path: root/pimd/pim_upstream.c
diff options
context:
space:
mode:
authorJafar Al-Gharaibeh <jafar@atcorp.com>2022-07-14 19:24:35 +0200
committerGitHub <noreply@github.com>2022-07-14 19:24:35 +0200
commit6286ce45bc8891a8c45c6e2fc541a6abfc083123 (patch)
treead54d76ac9c0e3a28edb2d39af72d79180c2528d /pimd/pim_upstream.c
parentMerge pull request #11598 from patrasar/pim_get_instance (diff)
parentpimd: During prune pending, behave as NOINFO state (diff)
downloadfrr-6286ce45bc8891a8c45c6e2fc541a6abfc083123.tar.xz
frr-6286ce45bc8891a8c45c6e2fc541a6abfc083123.zip
Merge pull request #11536 from mobash-rasool/temp1
pimd: During prune pending, behave as NOINFO state (conformance issue)
Diffstat (limited to 'pimd/pim_upstream.c')
-rw-r--r--pimd/pim_upstream.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c
index 4dcdee34f..25e7e5270 100644
--- a/pimd/pim_upstream.c
+++ b/pimd/pim_upstream.c
@@ -930,7 +930,16 @@ static struct pim_upstream *pim_upstream_new(struct pim_instance *pim,
__func__, up->sg_str);
}
- if (up->rpf.source_nexthop.interface) {
+ /* Consider a case where (S,G,rpt) prune is received and this
+ * upstream is getting created due to that, then as per RFC
+ * until prune pending time we need to behave same as NOINFO
+ * state, therefore do not install if OIF is NULL until then
+ * This is for PIM Conformance PIM-SM 16.3 fix
+ * When the prune pending timer pop, this mroute will get
+ * installed with none as OIF */
+ if (up->rpf.source_nexthop.interface &&
+ !(pim_upstream_empty_inherited_olist(up) && (ch != NULL) &&
+ PIM_IF_FLAG_TEST_S_G_RPT(ch->flags))) {
pim_upstream_mroute_iif_update(up->channel_oil,
__func__);
}