diff options
Diffstat (limited to 'pimd/pim_iface.c')
| -rw-r--r-- | pimd/pim_iface.c | 13 | 
1 files changed, 10 insertions, 3 deletions
diff --git a/pimd/pim_iface.c b/pimd/pim_iface.c index 85e0fdf3af..5fa4715b05 100644 --- a/pimd/pim_iface.c +++ b/pimd/pim_iface.c @@ -1500,9 +1500,16 @@ void pim_if_create_pimreg(struct pim_instance *pim)  					       pim->vrf->name);  		pim->regiface->ifindex = PIM_OIF_PIM_REGISTER_VIF; -		if (!pim->regiface->info) -			pim_if_new(pim->regiface, false, false, true, -				   false /*vxlan_term*/); +		/* +		 * The pimreg interface might has been removed from +		 * kerenl with the VRF's deletion.  It must be +		 * recreated, so delete the old one first. +		 */ +		if (pim->regiface->info) +			pim_if_delete(pim->regiface); + +		pim_if_new(pim->regiface, false, false, true, +			   false /*vxlan_term*/);  		/*  		 * On vrf moves we delete the interface if there  | 
