diff options
Diffstat (limited to 'pimd/pim_instance.c')
| -rw-r--r-- | pimd/pim_instance.c | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/pimd/pim_instance.c b/pimd/pim_instance.c index 4e4e5a6ce8..3945c5923d 100644 --- a/pimd/pim_instance.c +++ b/pimd/pim_instance.c @@ -15,6 +15,7 @@ #include "pim_ssm.h" #include "pim_rpf.h" #include "pim_rp.h" +#include "pim_nht.h" #include "pim_mroute.h" #include "pim_oil.h" #include "pim_static.h" @@ -46,14 +47,15 @@ static void pim_instance_terminate(struct pim_instance *pim) pim_bsm_proc_free(pim); - /* Traverse and cleanup rpf_hash */ - hash_clean_and_free(&pim->rpf_hash, (void *)pim_rp_list_hash_clean); + pim_nht_terminate(pim); pim_if_terminate(pim); pim_oil_terminate(pim); +#if PIM_IPV == 4 pim_msdp_exit(pim); +#endif /* PIM_IPV == 4 */ close(pim->reg_sock); @@ -73,7 +75,6 @@ static void pim_instance_terminate(struct pim_instance *pim) static struct pim_instance *pim_instance_init(struct vrf *vrf) { struct pim_instance *pim; - char hash_name[64]; pim = XCALLOC(MTYPE_PIM_PIM_INSTANCE, sizeof(struct pim_instance)); @@ -91,15 +92,12 @@ static struct pim_instance *pim_instance_init(struct vrf *vrf) pim->spt.switchover = PIM_SPT_IMMEDIATE; pim->spt.plist = NULL; +#if PIM_IPV == 4 pim_msdp_init(pim, router->master); +#endif /* PIM_IPV == 4 */ pim_vxlan_init(pim); - snprintf(hash_name, sizeof(hash_name), "PIM %s RPF Hash", vrf->name); - pim->rpf_hash = hash_create_size(256, pim_rpf_hash_key, pim_rpf_equal, - hash_name); - - if (PIM_DEBUG_ZEBRA) - zlog_debug("%s: NHT rpf hash init ", __func__); + pim_nht_init(pim); pim->ssm_info = pim_ssm_init(); @@ -126,11 +124,6 @@ static struct pim_instance *pim_instance_init(struct vrf *vrf) if (pim->reg_sock < 0) assert(0); - /* MSDP global timer defaults. */ - pim->msdp.hold_time = PIM_MSDP_PEER_HOLD_TIME; - pim->msdp.keep_alive = PIM_MSDP_PEER_KA_TIME; - pim->msdp.connection_retry = PIM_MSDP_PEER_CONNECT_RETRY_TIME; - #if PIM_IPV == 4 pim_autorp_init(pim); #endif |
