]> git.proxmox.com Git - mirror_frr.git/blobdiff - pimd/pim_upstream.c
Merge pull request #5494 from opensourcerouting/mlag-module
[mirror_frr.git] / pimd / pim_upstream.c
index dc45832f26d6bf55da78f828ac5bd2fc09283b9c..a0387cdd4a9c58644e2fff5e59773ae40556bf29 100644 (file)
@@ -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)
@@ -880,13 +884,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);
@@ -1811,14 +1811,16 @@ void pim_upstream_find_new_rpf(struct pim_instance *pim)
                                zlog_debug(
                                        "%s: Upstream %s without a path to send join, checking",
                                        __PRETTY_FUNCTION__, up->sg_str);
-                       old.source_nexthop.interface = up->rpf.source_nexthop.interface;
+                       old.source_nexthop.interface =
+                               up->rpf.source_nexthop.interface;
                        rpf_result = pim_rpf_update(pim, up, &old, __func__);
                        if (rpf_result == PIM_RPF_CHANGED ||
                                        (rpf_result == PIM_RPF_FAILURE &&
                                         old.source_nexthop.interface))
                                pim_zebra_upstream_rpf_changed(pim, up, &old);
                        /* update kernel multicast forwarding cache (MFC) */
-                       pim_upstream_mroute_iif_update(up->channel_oil, __func__);
+                       pim_upstream_mroute_iif_update(up->channel_oil,
+                                       __func__);
                }
        }
        pim_zebra_update_all_interfaces(pim);