summaryrefslogtreecommitdiff
path: root/pimd/pim_zebra.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2019-06-21 19:33:14 -0400
committerGitHub <noreply@github.com>2019-06-21 19:33:14 -0400
commit4bcf44412a8c96a3e88c0192a94a2006cd45f538 (patch)
tree12cc936cbdbfebaa1394a3528347a8ebb52a84a8 /pimd/pim_zebra.c
parenta9617f89c5e759ca63110f514969ca16349e281a (diff)
parent50d06d9e561affb999a1a7c893e260f50d4fe1c6 (diff)
Merge pull request #4518 from sarav511/dr_lhr
pimd: fix DR at LHR scenario where non DR is connected to RP
Diffstat (limited to 'pimd/pim_zebra.c')
-rw-r--r--pimd/pim_zebra.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/pimd/pim_zebra.c b/pimd/pim_zebra.c
index e09163a527..4cebc43a0a 100644
--- a/pimd/pim_zebra.c
+++ b/pimd/pim_zebra.c
@@ -1045,10 +1045,12 @@ void igmp_source_forward_start(struct pim_instance *pim,
* Protect IGMP against adding looped MFC
* entries created by both source and receiver
* attached to the same interface. See TODO
- * T22.
+ * T22. Block only when the intf is non DR
+ * DR must create upstream.
*/
- if (input_iface_vif_index ==
- pim_oif->mroute_vif_index) {
+ if ((input_iface_vif_index ==
+ pim_oif->mroute_vif_index) &&
+ !(PIM_I_am_DR(pim_oif))) {
/* ignore request for looped MFC entry
*/
if (PIM_DEBUG_IGMP_TRACE) {