diff options
| -rw-r--r-- | pimd/pim_register.c | 19 | 
1 files changed, 12 insertions, 7 deletions
diff --git a/pimd/pim_register.c b/pimd/pim_register.c index b149b5a2a9..ad0c71a234 100644 --- a/pimd/pim_register.c +++ b/pimd/pim_register.c @@ -186,8 +186,9 @@ int pim_register_stop_recv(struct interface *ifp, uint8_t *buf, int buf_size)  		 */  		for (ALL_LIST_ELEMENTS_RO(up->sources, up_node, child)) {  			if (PIM_DEBUG_PIM_REG) -				zlog_debug("Executing Reg stop for %s", -					   child->sg_str); +				zlog_debug( +					"Executing Reg stop for upstream child %s", +					child->sg_str);  			pim_reg_stop_upstream(pim, child);  		} @@ -208,8 +209,9 @@ int pim_register_stop_recv(struct interface *ifp, uint8_t *buf, int buf_size)  		frr_each (rb_pim_upstream, &pim->upstream_head, up) {  			if (pim_addr_cmp(up->sg.grp, sg.grp) == 0) {  				if (PIM_DEBUG_PIM_REG) -					zlog_debug("Executing Reg stop for %s", -						   up->sg_str); +					zlog_debug( +						"Executing Reg stop for upstream %s", +						up->sg_str);  				pim_reg_stop_upstream(pim, up);  			}  		} @@ -682,9 +684,12 @@ int pim_register_recv(struct interface *ifp, pim_addr dest_addr,  			}  		} -		if ((upstream->sptbit == PIM_UPSTREAM_SPTBIT_TRUE) -		    || ((SwitchToSptDesiredOnRp(pim, &sg)) -			&& pim_upstream_inherited_olist(pim, upstream) == 0)) { +		if ((upstream->sptbit == PIM_UPSTREAM_SPTBIT_TRUE) || +		    (PIM_UPSTREAM_FLAG_TEST_FHR(upstream->flags) && i_am_rp) || +		    ((SwitchToSptDesiredOnRp(pim, &sg)) && +		     pim_upstream_inherited_olist(pim, upstream) == 0)) { +			zlog_debug("sending pim register stop message :  %s ", +				   upstream->sg_str);  			pim_register_stop_send(ifp, &sg, dest_addr, src_addr);  			sentRegisterStop = 1;  		} else {  | 
