summaryrefslogtreecommitdiff
path: root/pimd/pim_upstream.c
diff options
context:
space:
mode:
authorMobashshera Rasool <mrasool@vmware.com>2022-07-05 23:08:52 -0700
committerMobashshera Rasool <mrasool@vmware.com>2022-07-06 05:18:38 -0700
commit8d0f0b02f3322b13c33fb215cf78ceedc685c950 (patch)
tree20905402c2e3e25716c25d7c914591d86433d63c /pimd/pim_upstream.c
parente894ef7e77157f0a5d7a2be7b572a949c645dbe3 (diff)
pimd: During prune pending, behave as NOINFO state
Fixed ANVL Conformance PIM-SM 16.3 test case. When (S,G,rpt) prune is received, we were installing the mroute immediately with none as OIF. This leads to dropping the (S,G) traffic during prune pending time as well. Also we should not install the mroute if there is no change in the rpf update. These 2 things lead to the failure of the test case. Fixed it by blocking the installation in this scenario. When prune pending timer pops, it will take care of installing the mroute with none as OIF. Fixes: #11535 Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
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 54a7f59ca4..d447357c69 100644
--- a/pimd/pim_upstream.c
+++ b/pimd/pim_upstream.c
@@ -947,7 +947,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__);
}