From: Donald Sharp Date: Fri, 19 May 2017 00:11:24 +0000 (-0400) Subject: pimd: Have pim_if_find_by_vif_index iterate over all vrf's X-Git-Tag: frr-4.0-dev~468^2~123 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=da82728dbf709881ad21464ee239ba5e32d196dc;p=mirror%2Ffrr.git pimd: Have pim_if_find_by_vif_index iterate over all vrf's Signed-off-by: Donald Sharp --- diff --git a/pimd/pim_iface.c b/pimd/pim_iface.c index 52dc0e781b..778fc74bf5 100644 --- a/pimd/pim_iface.c +++ b/pimd/pim_iface.c @@ -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; + } } }