diff options
| author | Jafar Al-Gharaibeh <jafar@atcorp.com> | 2022-03-23 12:17:27 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-23 12:17:27 -0500 |
| commit | c4cb7b1172259bccde4dc4f3c49ac34a11bb609f (patch) | |
| tree | f03373194f3a1917707a2e29f2e26421254b3bad | |
| parent | 116f0dd90507c71a557214877c9c4df5a6a77e12 (diff) | |
| parent | 6d0a6ede82d7e02581c4fb9f585239d2358bd45e (diff) | |
Merge pull request #10844 from mobash-rasool/fixes
pimd: correct prefix-list ssm range update for exclude mode
| -rw-r--r-- | pimd/pim_igmp.c | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/pimd/pim_igmp.c b/pimd/pim_igmp.c index aa6b30c624..57c4cdc470 100644 --- a/pimd/pim_igmp.c +++ b/pimd/pim_igmp.c @@ -131,12 +131,27 @@ void igmp_source_forward_reevaluate_all(struct pim_instance *pim) struct listnode *srcnode; struct gm_source *src; - /* scan group sources */ - for (ALL_LIST_ELEMENTS_RO(grp->group_source_list, - srcnode, src)) { - igmp_source_forward_reevaluate_one(pim, src); - } /* scan group sources */ - } /* scan igmp groups */ + /* + * RFC 4604 + * section 2.2.1 + * EXCLUDE mode does not apply to SSM addresses, + * and an SSM-aware router will ignore + * MODE_IS_EXCLUDE and CHANGE_TO_EXCLUDE_MODE + * requests in the SSM range. + */ + if (pim_is_grp_ssm(pim, grp->group_addr) && + grp->group_filtermode_isexcl) { + igmp_group_delete(grp); + } else { + /* scan group sources */ + for (ALL_LIST_ELEMENTS_RO( + grp->group_source_list, srcnode, + src)) { + igmp_source_forward_reevaluate_one(pim, + src); + } /* scan group sources */ + } + } /* scan igmp groups */ RB_FOREACH_SAFE (ch, pim_ifchannel_rb, &pim_ifp->ifchannel_rb, ch_temp) { |
