diff options
| author | Anuradha Karuppiah <anuradhak@cumulusnetworks.com> | 2019-11-15 11:19:53 -0800 |
|---|---|---|
| committer | Anuradha Karuppiah <anuradhak@cumulusnetworks.com> | 2019-11-15 12:00:29 -0800 |
| commit | a749b9004136bd7c550c54f8f21d1e84b1569c20 (patch) | |
| tree | ab1ad5b213182edaf28976ca2b62b580403064f5 /pimd/pim_upstream.c | |
| parent | 9929a2a9af74fa96900d670e714e8fa613c44f45 (diff) | |
pimd: on some triggers use_rpt re-evaluated for all groups
RP config change is a big hammer and use_rpt/spt needs to be
re-evaluated on all existing (S,G) entries.
Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Diffstat (limited to 'pimd/pim_upstream.c')
| -rw-r--r-- | pimd/pim_upstream.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c index 316209c551..d841d10a07 100644 --- a/pimd/pim_upstream.c +++ b/pimd/pim_upstream.c @@ -627,6 +627,22 @@ void pim_upstream_update_use_rpt(struct pim_upstream *up, } } +/* some events like RP change require re-evaluation of SGrpt across + * all groups + */ +void pim_upstream_reeval_use_rpt(struct pim_instance *pim) +{ + struct pim_upstream *up; + struct listnode *node; + + for (ALL_LIST_ELEMENTS_RO(pim->upstream_list, node, up)) { + if (up->sg.src.s_addr == INADDR_ANY) + continue; + + pim_upstream_update_use_rpt(up, true /*update_mroute*/); + } +} + void pim_upstream_switch(struct pim_instance *pim, struct pim_upstream *up, enum pim_upstream_state new_state) { |
