summaryrefslogtreecommitdiff
path: root/pimd/pim_iface.c
diff options
context:
space:
mode:
authorMobashshera Rasool <mrasool@vmware.com>2023-06-01 01:56:41 -0700
committerMobashshera Rasool <mrasool@vmware.com>2023-06-06 23:59:55 -0700
commit692b1f3e97f282362cd57e0e236423fc761a96b9 (patch)
tree186026a2024cd455f9124de7b9c8e9293cb63464 /pimd/pim_iface.c
parente7356fdba11691483d3e927d74aa50ffc62e900b (diff)
pimd, pim6d: Rename and move api pim_cmd_interface_delete
Rename pim_cmd_interface_delete to pim_pim_interface_delete and move the api to pimd/pim_iface.c Changed the return type of the api from int to void. Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
Diffstat (limited to 'pimd/pim_iface.c')
-rw-r--r--pimd/pim_iface.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/pimd/pim_iface.c b/pimd/pim_iface.c
index 82548454a5..a83b8af014 100644
--- a/pimd/pim_iface.c
+++ b/pimd/pim_iface.c
@@ -1775,3 +1775,27 @@ static void pim_if_membership_clear(struct interface *ifp)
pim_ifchannel_membership_clear(ifp);
}
+
+void pim_pim_interface_delete(struct interface *ifp)
+{
+ struct pim_interface *pim_ifp = ifp->info;
+
+ if (!pim_ifp)
+ return;
+
+ pim_ifp->pim_enable = false;
+
+ pim_if_membership_clear(ifp);
+
+ /*
+ * pim_sock_delete() removes all neighbors from
+ * pim_ifp->pim_neighbor_list.
+ */
+ pim_sock_delete(ifp, "pim unconfigured on interface");
+ pim_upstream_nh_if_update(pim_ifp->pim, ifp);
+
+ if (!pim_ifp->gm_enable) {
+ pim_if_addr_del_all(ifp);
+ pim_if_delete(ifp);
+ }
+}