summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2017-05-15 11:16:14 -0400
committerDonald Sharp <sharpd@cumulusnetworks.com>2017-07-24 13:51:34 -0400
commit18d8291fa294db2ed4ec90b23bb7c0ce4920b6a8 (patch)
treeb173c9d032cac17c530dc1603d6a4fb07cedae08
parentea3d967be001d54c2cda0e35ed3527bda61c762c (diff)
pimd: Create pim_get_pim_instance
Create function to get the pim instance from the vrf_id Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
-rw-r--r--pimd/pim_iface.c4
-rw-r--r--pimd/pimd.c10
-rw-r--r--pimd/pimd.h2
3 files changed, 13 insertions, 3 deletions
diff --git a/pimd/pim_iface.c b/pimd/pim_iface.c
index 817c644406..a6b25511c8 100644
--- a/pimd/pim_iface.c
+++ b/pimd/pim_iface.c
@@ -103,7 +103,6 @@ static void *if_list_clean(struct pim_interface *pim_ifp)
struct pim_interface *pim_if_new(struct interface *ifp, int igmp, int pim)
{
struct pim_interface *pim_ifp;
- struct vrf *vrf;
zassert(ifp);
zassert(!ifp->info);
@@ -115,8 +114,7 @@ struct pim_interface *pim_if_new(struct interface *ifp, int igmp, int pim)
}
pim_ifp->options = 0;
- vrf = vrf_info_lookup(ifp->vrf_id);
- pim_ifp->pim = vrf->info;
+ pim_ifp->pim = pim_get_pim_instance(ifp->vrf_id);
pim_ifp->mroute_vif_index = -1;
pim_ifp->igmp_version = IGMP_DEFAULT_VERSION;
diff --git a/pimd/pimd.c b/pimd/pimd.c
index 5b5ba068c5..b687a943a8 100644
--- a/pimd/pimd.c
+++ b/pimd/pimd.c
@@ -170,6 +170,16 @@ void pim_prefix_list_update(struct prefix_list *plist)
pim_upstream_spt_prefix_list_update(plist);
}
+struct pim_instance *pim_get_pim_instance(vrf_id_t vrf_id)
+{
+ struct vrf *vrf = vrf_lookup_by_id(vrf_id);
+
+ if (vrf)
+ return vrf->info;
+
+ return NULL;
+}
+
static void pim_instance_terminate(struct pim_instance *pim)
{
/* Traverse and cleanup rpf_hash */
diff --git a/pimd/pimd.h b/pimd/pimd.h
index b96d9d4b9d..06ca4343f6 100644
--- a/pimd/pimd.h
+++ b/pimd/pimd.h
@@ -270,4 +270,6 @@ extern void pim_route_map_terminate(void);
void pim_vrf_init(void);
void pim_prefix_list_update(struct prefix_list *plist);
+struct pim_instance *pim_get_pim_instance(vrf_id_t vrf_id);
+
#endif /* PIMD_H */