#include "pim_static.h"
#include "pim_ssmpingd.h"
#include "pim_vty.h"
+#include "pim_bsm.h"
+#include "pim_mlag.h"
static void pim_instance_terminate(struct pim_instance *pim)
{
+ pim_vxlan_exit(pim);
+
if (pim->ssm_info) {
pim_ssm_terminate(pim->ssm_info);
pim->ssm_info = NULL;
}
if (pim->static_routes)
- list_delete_and_null(&pim->static_routes);
+ list_delete(&pim->static_routes);
- pim_rp_free(pim);
+ pim_instance_mlag_terminate(pim);
pim_upstream_terminate(pim);
+ pim_rp_free(pim);
+
+ pim_bsm_proc_free(pim);
+
/* Traverse and cleanup rpf_hash */
if (pim->rpf_hash) {
hash_clean(pim->rpf_hash, (void *)pim_rp_list_hash_clean);
pim->spt.switchover = PIM_SPT_IMMEDIATE;
pim->spt.plist = NULL;
- pim_msdp_init(pim, master);
+ pim_msdp_init(pim, router->master);
+ pim_vxlan_init(pim);
snprintf(hash_name, 64, "PIM %s RPF Hash", vrf->name);
pim->rpf_hash = hash_create_size(256, pim_rpf_hash_key, pim_rpf_equal,
pim->send_v6_secondary = 1;
- if (vrf->vrf_id == VRF_DEFAULT)
- pimg = pim;
-
pim_rp_init(pim);
+ pim_bsm_proc_init(pim);
+
pim_oil_init(pim);
pim_upstream_init(pim);
+ pim_instance_mlag_init(pim);
+
pim->last_route_change_time = -1;
return pim;
}
vrf->info = (void *)pim;
- if (vrf->vrf_id == VRF_DEFAULT)
- pimg = pim;
-
pim_ssmpingd_init(pim);
return 0;
}
pim_global_config_write_worker(pim, vty);
if (vrf->vrf_id != VRF_DEFAULT)
- vty_endframe(vty, "!\n");
+ vty_endframe(vty, " exit-vrf\n!\n");
}
return 0;