summaryrefslogtreecommitdiff
path: root/pimd/pimd.c
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pimd.c')
-rw-r--r--pimd/pimd.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/pimd/pimd.c b/pimd/pimd.c
index 9058e14b0a..e76e202bd3 100644
--- a/pimd/pimd.c
+++ b/pimd/pimd.c
@@ -41,6 +41,7 @@
#include "pim_ssmpingd.h"
#include "pim_static.h"
#include "pim_rp.h"
+#include "pim_ssm.h"
#include "pim_zlookup.h"
#include "pim_nht.h"
@@ -184,6 +185,13 @@ pim_rp_list_hash_clean (void *data)
list_delete_all_node (pnc->upstream_list);
}
+void
+pim_prefix_list_update (struct prefix_list *plist)
+{
+ pim_rp_prefix_list_update (plist);
+ pim_ssm_prefix_list_update (plist);
+}
+
static void
pim_instance_terminate (void)
{
@@ -193,6 +201,7 @@ pim_instance_terminate (void)
hash_clean (pimg->rpf_hash, (void *) pim_rp_list_hash_clean);
hash_free (pimg->rpf_hash);
}
+ pim_ssm_terminate (pimg->ssm_info);
XFREE (MTYPE_PIM_PIM_INSTANCE, pimg);
}
@@ -235,6 +244,11 @@ pim_instance_init (vrf_id_t vrf_id, afi_t afi)
if (PIM_DEBUG_ZEBRA)
zlog_debug ("%s: NHT rpf hash init ", __PRETTY_FUNCTION__);
+ pim->ssm_info = pim_ssm_init (vrf_id);
+ if (!pim->ssm_info) {
+ pim_instance_terminate ();
+ return NULL;
+ }
return pim;
}