]> git.proxmox.com Git - mirror_frr.git/blobdiff - pimd/pim_tib.c
Merge pull request #11887 from SaiGomathiN/igmptogm
[mirror_frr.git] / pimd / pim_tib.c
index 838f11211e012136071c6b90b7e97ca32423e5b8..3b73c430b03336d24945ca271a5ad28679942a90 100644 (file)
@@ -22,6 +22,7 @@
 #include "pim_tib.h"
 
 #include "pimd.h"
+#include "pim_instance.h"
 #include "pim_iface.h"
 #include "pim_upstream.h"
 #include "pim_oil.h"
@@ -33,7 +34,7 @@ tib_sg_oil_setup(struct pim_instance *pim, pim_sgaddr sg, struct interface *oif)
        struct pim_interface *pim_oif = oif->info;
        int input_iface_vif_index = 0;
        pim_addr vif_source;
-       struct prefix src, grp;
+       struct prefix grp;
        struct pim_nexthop nexthop;
        struct pim_upstream *up = NULL;
 
@@ -42,20 +43,19 @@ tib_sg_oil_setup(struct pim_instance *pim, pim_sgaddr sg, struct interface *oif)
                return pim_channel_oil_add(pim, &sg, __func__);
        }
 
-       pim_addr_to_prefix(&src, vif_source); // RP or Src addr
        pim_addr_to_prefix(&grp, sg.grp);
 
        up = pim_upstream_find(pim, &sg);
        if (up) {
                memcpy(&nexthop, &up->rpf.source_nexthop,
                       sizeof(struct pim_nexthop));
-               pim_ecmp_nexthop_lookup(pim, &nexthop, &src, &grp, 0);
+               pim_ecmp_nexthop_lookup(pim, &nexthop, vif_source, &grp, 0);
                if (nexthop.interface)
                        input_iface_vif_index = pim_if_find_vifindex_by_ifindex(
                                pim, nexthop.interface->ifindex);
        } else
                input_iface_vif_index =
-                       pim_ecmp_fib_lookup_if_vif_index(pim, &src, &grp);
+                       pim_ecmp_fib_lookup_if_vif_index(pim, vif_source, &grp);
 
        if (PIM_DEBUG_ZEBRA)
                zlog_debug("%s: NHT %pSG vif_source %pPAs vif_index:%d",
@@ -110,8 +110,8 @@ bool tib_sg_gm_join(struct pim_instance *pim, pim_sgaddr sg,
        if (PIM_I_am_DR(pim_oif) || PIM_I_am_DualActive(pim_oif)) {
                int result;
 
-               result = pim_channel_add_oif(*oilp, oif,
-                                            PIM_OIF_FLAG_PROTO_IGMP, __func__);
+               result = pim_channel_add_oif(*oilp, oif, PIM_OIF_FLAG_PROTO_GM,
+                                            __func__);
                if (result) {
                        if (PIM_DEBUG_MROUTE)
                                zlog_warn("%s: add_oif() failed with return=%d",
@@ -136,7 +136,7 @@ bool tib_sg_gm_join(struct pim_instance *pim, pim_sgaddr sg,
                                "%s: Failure to add local membership for %pSG",
                                __func__, &sg);
 
-               pim_channel_del_oif(*oilp, oif, PIM_OIF_FLAG_PROTO_IGMP,
+               pim_channel_del_oif(*oilp, oif, PIM_OIF_FLAG_PROTO_GM,
                                    __func__);
                return false;
        }
@@ -160,7 +160,7 @@ void tib_sg_gm_prune(struct pim_instance *pim, pim_sgaddr sg,
         fixes the issue without ill effect, similar to
         pim_forward_stop below.
        */
-       result = pim_channel_del_oif(*oilp, oif, PIM_OIF_FLAG_PROTO_IGMP,
+       result = pim_channel_del_oif(*oilp, oif, PIM_OIF_FLAG_PROTO_GM,
                                     __func__);
        if (result) {
                if (PIM_DEBUG_IGMP_TRACE)