pimd: compute inherited_olist before checking for (S,G,rpt) prune dec…#20521
pimd: compute inherited_olist before checking for (S,G,rpt) prune dec…#20521Jafaral merged 1 commit intoFRRouting:masterfrom
Conversation
pimd/pim_join.c
Outdated
| __func__, &group->group, &rpf->rpf_addr, | ||
| rpf->source_nexthop.interface->name); | ||
|
|
||
| struct pim_jp_sources *first_src = listgetdata(listhead(group->sources)); |
There was a problem hiding this comment.
From my perspective, doesn't this fix belong in pim_ifchannel_prune? The decision is that we should check the inherited_olist upon reception of a prune and when we move from state to state. This is a forwarding (upstream) decision based upon the reception of the S,G rpt prune, such that we can determine whether or not the inherited_olist has anything in it all based upon the (*
,G), (S,G) and (S,G, rpt) state on the particular interface. In other words why do you think this is a send time decision for the upstream? Instead of a reception time for the S,G rpt prune?
9830ce9 to
6ad1bdc
Compare
|
ci:rerun |
nabahr
left a comment
There was a problem hiding this comment.
Looks good besides a couple small things.
…ision Problem description: 1) In some corner cases in PIM, incorrect (S,G,rpt) prunes were sent causing traffic blackholing to downstream receivers. 2) The inherited_olist emptiness check was performed before the list was computed due to lazy population of channel_oil, causing it to incorrectly appear empty and prune is incorrectly propogated. Fix: Ensure inherited_olist is computed before checking for emptiness during (S,G,rpt) prune decision. Signed-off-by: harini <hnattamaisub@nvidia.com>
|
@Mergifyio backport stable/10.5 stable/10.4 |
✅ Backports have been createdDetails
|
pimd: compute inherited_olist before checking for (S,G,rpt) prune dec… (backport #20521)
pimd: compute inherited_olist before checking for (S,G,rpt) prune dec… (backport #20521)
…ision
Problem description:
traffic blackholing to downstream receivers.
computed due to lazy population of channel_oil, causing it to incorrectly
appear empty and prune is incorrectly propogated.
Fix:
Ensure inherited_olist is computed before checking for emptiness during (S,G,rpt) prune decision.