diff options
| author | Anuradha Karuppiah <anuradhak@cumulusnetworks.com> | 2020-02-06 09:30:51 -0800 | 
|---|---|---|
| committer | Anuradha Karuppiah <anuradhak@cumulusnetworks.com> | 2020-02-14 09:18:30 -0800 | 
| commit | 448139e704cced85b242990fcec161721dec5c1a (patch) | |
| tree | 97268d4d5da5de9329c3a1d131fb75247297d19c /pimd/pim_zebra.c | |
| parent | 664b2a31d62ecaa966bac39ac1243f0b59977dee (diff) | |
pimd: stop overloading SRC_IGMP upstream for vxlan local membership
A local membership is created on the vxlan termination device ipmr-lo. This
is done to -
1. Pull multicast vxlan tunnel traffic to the VTEP for termination by
triggering JoinDesired on the BUM multicast group.
2. Include the OIF in the mroute to signal to the dataplane component
that flow needs to be vxlan terminated.
Earlier we were overloading the PIM_UPSTREAM_FLAG_MASK_SRC_IGMP for
this local membership creation but that is creating confusion both in
the state machine and in the show outputs. To avoid that we use the
more apparent PIM_UPSTREAM_FLAG_MASK_SRC_VXLAN_TERM. With this change -
1. We get LHR functionality for VXLAN_TERM mroutes
2. OIF is populated with PIM_OIF_FLAG_PROTO_PIM only
Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Diffstat (limited to 'pimd/pim_zebra.c')
| -rw-r--r-- | pimd/pim_zebra.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/pimd/pim_zebra.c b/pimd/pim_zebra.c index 7eb648ab86..baa6216df2 100644 --- a/pimd/pim_zebra.c +++ b/pimd/pim_zebra.c @@ -547,7 +547,8 @@ static void igmp_source_forward_reevaluate_one(struct pim_instance *pim,  					"local membership add for %s as G is now ASM",  					pim_str_sg_dump(&sg));  			pim_ifchannel_local_membership_add( -				group->group_igmp_sock->interface, &sg); +				group->group_igmp_sock->interface, &sg, +				false /*is_vxlan*/);  		}  	}  } @@ -765,7 +766,8 @@ void igmp_source_forward_start(struct pim_instance *pim,  	  per-interface (S,G) state.  	 */  	if (!pim_ifchannel_local_membership_add( -						group->group_igmp_sock->interface, &sg)) { +						group->group_igmp_sock->interface, &sg, +						false /*is_vxlan*/)) {  		if (PIM_DEBUG_MROUTE)  			zlog_warn("%s: Failure to add local membership for %s",  				  __PRETTY_FUNCTION__, pim_str_sg_dump(&sg));  | 
