Merge pull request #18203 from FRRouting/mergify/bp/dev/10.3/pr-14227

pimd: Fix for data packet loss when FHR is LHR and RP (backport #14227)
This commit is contained in:
Donald Sharp 2025-02-20 16:20:09 -05:00 committed by GitHub
commit 24dbcbb31e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -186,7 +186,8 @@ int pim_register_stop_recv(struct interface *ifp, uint8_t *buf, int buf_size)
*/ */
for (ALL_LIST_ELEMENTS_RO(up->sources, up_node, child)) { for (ALL_LIST_ELEMENTS_RO(up->sources, up_node, child)) {
if (PIM_DEBUG_PIM_REG) if (PIM_DEBUG_PIM_REG)
zlog_debug("Executing Reg stop for %s", zlog_debug(
"Executing Reg stop for upstream child %s",
child->sg_str); child->sg_str);
pim_reg_stop_upstream(pim, child); pim_reg_stop_upstream(pim, child);
@ -208,7 +209,8 @@ int pim_register_stop_recv(struct interface *ifp, uint8_t *buf, int buf_size)
frr_each (rb_pim_upstream, &pim->upstream_head, up) { frr_each (rb_pim_upstream, &pim->upstream_head, up) {
if (pim_addr_cmp(up->sg.grp, sg.grp) == 0) { if (pim_addr_cmp(up->sg.grp, sg.grp) == 0) {
if (PIM_DEBUG_PIM_REG) if (PIM_DEBUG_PIM_REG)
zlog_debug("Executing Reg stop for %s", zlog_debug(
"Executing Reg stop for upstream %s",
up->sg_str); up->sg_str);
pim_reg_stop_upstream(pim, up); 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) if ((upstream->sptbit == PIM_UPSTREAM_SPTBIT_TRUE) ||
|| ((SwitchToSptDesiredOnRp(pim, &sg)) (PIM_UPSTREAM_FLAG_TEST_FHR(upstream->flags) && i_am_rp) ||
&& pim_upstream_inherited_olist(pim, upstream) == 0)) { ((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); pim_register_stop_send(ifp, &sg, dest_addr, src_addr);
sentRegisterStop = 1; sentRegisterStop = 1;
} else { } else {