diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c index 8b54bcf019..ce26d2b398 100644 --- a/pimd/pim_upstream.c +++ b/pimd/pim_upstream.c @@ -865,12 +865,16 @@ static struct pim_upstream *pim_upstream_new(struct pim_instance *pim, pim_upstream_fill_static_iif(up, incoming); pim_ifp = up->rpf.source_nexthop.interface->info; assert(pim_ifp); + pim_upstream_update_use_rpt(up, + false /*update_mroute*/); pim_upstream_mroute_iif_update(up->channel_oil, __func__); if (PIM_UPSTREAM_FLAG_TEST_SRC_NOCACHE(up->flags)) pim_upstream_keep_alive_timer_start( up, pim->keep_alive_time); } else if (up->upstream_addr.s_addr != INADDR_ANY) { + pim_upstream_update_use_rpt(up, + false /*update_mroute*/); rpf_result = pim_rpf_update(pim, up, NULL, __func__); if (rpf_result == PIM_RPF_FAILURE) { if (PIM_DEBUG_PIM_TRACE) @@ -881,12 +885,9 @@ static struct pim_upstream *pim_upstream_new(struct pim_instance *pim, if (up->rpf.source_nexthop.interface) { pim_ifp = up->rpf.source_nexthop.interface->info; - if (pim_ifp) - pim_upstream_mroute_iif_update(up->channel_oil, - __func__); + pim_upstream_mroute_iif_update(up->channel_oil, + __func__); } - pim_upstream_update_use_rpt(up, - false /*update_mroute*/); } listnode_add_sort(pim->upstream_list, up);