]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Have pim_if_find_by_vif_index iterate over all vrf's
authorDonald Sharp <sharpd@cumulusnetworks.com>
Fri, 19 May 2017 00:11:24 +0000 (20:11 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 24 Jul 2017 17:51:35 +0000 (13:51 -0400)
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_iface.c

index 52dc0e781b01857d2a2be6ae07231db404dad16d..778fc74bf53546579543e5c5de556755459118c7 100644 (file)
@@ -1079,18 +1079,29 @@ void pim_if_del_vif_all()
        }
 }
 
+// DBS - VRF Revist
 struct interface *pim_if_find_by_vif_index(ifindex_t vif_index)
 {
        struct listnode *ifnode;
        struct interface *ifp;
+       struct pim_instance *pim;
+       struct vrf *vrf;
 
-       for (ALL_LIST_ELEMENTS_RO(vrf_iflist(pimg->vrf_id), ifnode, ifp)) {
-               if (ifp->info) {
-                       struct pim_interface *pim_ifp;
-                       pim_ifp = ifp->info;
+       RB_FOREACH(vrf, vrf_name_head, &vrfs_by_name)
+       {
+               pim = vrf->info;
+               if (!pim)
+                       continue;
+
+               for (ALL_LIST_ELEMENTS_RO(vrf_iflist(pim->vrf_id), ifnode,
+                                         ifp)) {
+                       if (ifp->info) {
+                               struct pim_interface *pim_ifp;
+                               pim_ifp = ifp->info;
 
-                       if (vif_index == pim_ifp->mroute_vif_index)
-                               return ifp;
+                               if (vif_index == pim_ifp->mroute_vif_index)
+                                       return ifp;
+                       }
                }
        }