summaryrefslogtreecommitdiff
path: root/pimd/pimd.c
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pimd.c')
-rw-r--r--pimd/pimd.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/pimd/pimd.c b/pimd/pimd.c
index 91cf17d747..58adff85d8 100644
--- a/pimd/pimd.c
+++ b/pimd/pimd.c
@@ -73,9 +73,19 @@ int32_t qpim_register_probe_time = PIM_REGISTER_PROBE_TIME_DEFAULT;
void pim_prefix_list_update(struct prefix_list *plist)
{
- pim_rp_prefix_list_update(plist);
- pim_ssm_prefix_list_update(plist);
- pim_upstream_spt_prefix_list_update(pimg, plist);
+ struct pim_instance *pim;
+ struct vrf *vrf;
+
+ RB_FOREACH(vrf, vrf_name_head, &vrfs_by_name)
+ {
+ pim = vrf->info;
+ if (!pim)
+ continue;
+
+ pim_rp_prefix_list_update(pim, plist);
+ pim_ssm_prefix_list_update(plist);
+ pim_upstream_spt_prefix_list_update(pim, plist);
+ }
}
static void pim_free()
@@ -85,7 +95,6 @@ static void pim_free()
pim_oil_terminate();
pim_if_terminate();
- pim_rp_free();
pim_route_map_terminate();
@@ -98,8 +107,6 @@ void pim_init()
{
qpim_rp_keep_alive_time = PIM_RP_KEEPALIVE_PERIOD;
- pim_rp_init();
-
if (!inet_aton(PIM_ALL_PIM_ROUTERS, &qpim_all_pim_routers_addr)) {
zlog_err(
"%s %s: could not solve %s to group address: errno=%d: %s",