diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2018-07-31 18:27:54 -0400 |
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2018-07-31 18:27:54 -0400 |
| commit | cc67ccf9f3922e60e91634d4c10939031a9a2272 (patch) | |
| tree | b292fc9062d85ca2bea850bb6f2be0ecd4d4c9c2 /pimd/pim_nht.c | |
| parent | 74389231689bfbe8a22159190943c39255bd40e5 (diff) | |
pimd: Abstract a RPF change for upstream handling
Abstract the RPF change for upstream handling code so
that we do not have two copies of the code.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'pimd/pim_nht.c')
| -rw-r--r-- | pimd/pim_nht.c | 54 |
1 files changed, 2 insertions, 52 deletions
diff --git a/pimd/pim_nht.c b/pimd/pim_nht.c index f24bf0ac81..74dfed0455 100644 --- a/pimd/pim_nht.c +++ b/pimd/pim_nht.c @@ -300,59 +300,9 @@ static int pim_update_upstream_nh_helper(struct hash_backet *backet, void *arg) } } - if (rpf_result == PIM_RPF_CHANGED) { - struct pim_neighbor *nbr; + if (rpf_result == PIM_RPF_CHANGED) + pim_zebra_upstream_rpf_changed(pim, up, &old); - nbr = pim_neighbor_find(old.source_nexthop.interface, - old.rpf_addr.u.prefix4); - if (nbr) - pim_jp_agg_remove_group(nbr->upstream_jp_agg, up); - - /* - * We have detected a case where we might need to rescan - * the inherited o_list so do it. - */ - if (up->channel_oil && up->channel_oil->oil_inherited_rescan) { - pim_upstream_inherited_olist_decide(pim, up); - up->channel_oil->oil_inherited_rescan = 0; - } - - if (up->join_state == PIM_UPSTREAM_JOINED) { - /* - * If we come up real fast we can be here - * where the mroute has not been installed - * so install it. - */ - if (up->channel_oil && !up->channel_oil->installed) - pim_mroute_add(up->channel_oil, - __PRETTY_FUNCTION__); - - /* - * RFC 4601: 4.5.7. Sending (S,G) Join/Prune Messages - * - * Transitions from Joined State - * - * RPF'(S,G) changes not due to an Assert - * - * The upstream (S,G) state machine remains in Joined - * state. Send Join(S,G) to the new upstream - * neighbor, which is the new value of RPF'(S,G). - * Send Prune(S,G) to the old upstream neighbor, which - * is the old value of RPF'(S,G). Set the Join - * Timer (JT) to expire after t_periodic seconds. - */ - pim_jp_agg_switch_interface(&old, &up->rpf, up); - - pim_upstream_join_timer_restart(up, &old); - } /* up->join_state == PIM_UPSTREAM_JOINED */ - - /* - * FIXME can join_desired actually be changed by - * pim_rpf_update() returning PIM_RPF_CHANGED ? - */ - pim_upstream_update_join_desired(pim, up); - - } /* PIM_RPF_CHANGED */ if (PIM_DEBUG_PIM_NHT) { zlog_debug("%s: NHT upstream %s(%s) old ifp %s new ifp %s", |
