]> git.proxmox.com Git - mirror_frr.git/blobdiff - pimd/pim_join.c
pimd: Fix where we handle the inherited_olist for ifchannel
[mirror_frr.git] / pimd / pim_join.c
index c12fc588ffe84654a7ce0dd0a2ae2cd39681fba9..c0535c4844ce43eeccf9d36d1ddd56bdd0a05d49 100644 (file)
@@ -95,35 +95,6 @@ static void recv_join(struct interface *ifp,
   pim_ifchannel_join_add(ifp, neigh->source_addr, upstream,
                         sg, source_flags, holdtime);
 
-  if (sg->src.s_addr == INADDR_ANY)
-    {
-      struct pim_upstream *up = pim_upstream_find (sg);
-      struct pim_upstream *child;
-      struct listnode *up_node;
-
-      /*
-       * If we are unable to create upstream information
-       * Due to any number of reasons it is possible
-       * That we might have not created the ifchannel
-       * and upstream above.  So just fall out gracefully
-       */
-      if (!up)
-       return;
-
-      for (ALL_LIST_ELEMENTS_RO (up->sources, up_node, child))
-        {
-         if (PIM_DEBUG_PIM_TRACE)
-           zlog_debug("%s %s: Join(S,G)=%s from %s",
-                      __FILE__, __PRETTY_FUNCTION__,
-                      child->sg_str, up->sg_str);
-
-         if (pim_upstream_evaluate_join_desired (child))
-           {
-             pim_channel_add_oif (child->channel_oil, ifp, PIM_OIF_FLAG_PROTO_PIM);
-             pim_upstream_switch (child, PIM_UPSTREAM_JOINED);
-           }
-        }
-    }
 }
 
 static void recv_prune(struct interface *ifp,
@@ -160,44 +131,6 @@ static void recv_prune(struct interface *ifp,
 
   pim_ifchannel_prune(ifp, upstream, sg, source_flags, holdtime);
 
-  if (sg->src.s_addr == INADDR_ANY)
-    {
-      struct pim_upstream *up = pim_upstream_find (sg);
-      struct pim_upstream *child;
-      struct listnode *up_node;
-
-      /*
-       * If up is not found then there is nothing
-       * to do here (see recv_join above)
-       */
-      if (!up)
-       return;
-
-      for (ALL_LIST_ELEMENTS_RO (up->sources, up_node, child))
-        {
-         struct channel_oil *c_oil = child->channel_oil;
-         struct pim_ifchannel *ch = pim_ifchannel_find (ifp, &child->sg);
-         struct pim_interface *pim_ifp = ifp->info;
-
-         if (PIM_DEBUG_PIM_TRACE)
-           zlog_debug("%s %s: Prune(S,G)=%s from %s",
-                      __FILE__, __PRETTY_FUNCTION__,
-                      child->sg_str, up->sg_str);
-         if (!c_oil)
-           continue;
-
-         if (!pim_upstream_evaluate_join_desired (child))
-           pim_channel_del_oif (c_oil, ifp, PIM_OIF_FLAG_PROTO_PIM);
-
-         /*
-          * If the S,G has no if channel and the c_oil still
-          * has output here then the *,G was supplying the implied
-          * if channel.  So remove it.
-          */
-         if (!ch && c_oil->oil.mfcc_ttls[pim_ifp->mroute_vif_index])
-           pim_channel_del_oif (c_oil, ifp, PIM_OIF_FLAG_PROTO_PIM);
-        }
-    }
 }
 
 int pim_joinprune_recv(struct interface *ifp,