summaryrefslogtreecommitdiffstats
path: root/pimd
diff options
context:
space:
mode:
authorAbhishek N R <abnr@vmware.com>2022-07-19 08:44:47 +0200
committerAbhishek N R <abnr@vmware.com>2022-07-19 14:48:52 +0200
commit23db4cbd3d6131c8235f6c92058e9b317d62c02c (patch)
treeabc668a8562e41b26ef8da464be8c259d2243e8b /pimd
parentMerge pull request #11632 from opensourcerouting/fix/address_family_bgp_str (diff)
downloadfrr-23db4cbd3d6131c8235f6c92058e9b317d62c02c.tar.xz
frr-23db4cbd3d6131c8235f6c92058e9b317d62c02c.zip
pim6d: Implementing "clear ipv6 pim interfaces" command.
Signed-off-by: Abhishek N R <abnr@vmware.com>
Diffstat (limited to 'pimd')
-rw-r--r--pimd/pim6_cmd.c20
-rw-r--r--pimd/pim_cmd.c20
-rw-r--r--pimd/pim_cmd_common.c10
-rw-r--r--pimd/pim_cmd_common.h1
4 files changed, 35 insertions, 16 deletions
diff --git a/pimd/pim6_cmd.c b/pimd/pim6_cmd.c
index b7a832681..d72a67243 100644
--- a/pimd/pim6_cmd.c
+++ b/pimd/pim6_cmd.c
@@ -1309,6 +1309,25 @@ DEFPY (clear_ipv6_mroute_count,
return clear_ip_mroute_count_command(vty, name);
}
+DEFPY (clear_ipv6_pim_interfaces,
+ clear_ipv6_pim_interfaces_cmd,
+ "clear ipv6 pim [vrf NAME] interfaces",
+ CLEAR_STR
+ IPV6_STR
+ CLEAR_IP_PIM_STR
+ VRF_CMD_HELP_STR
+ "Reset PIM interfaces\n")
+{
+ struct vrf *v = pim_cmd_lookup(vty, vrf);
+
+ if (!v)
+ return CMD_WARNING;
+
+ clear_pim_interfaces(v->info);
+
+ return CMD_SUCCESS;
+}
+
DEFPY (clear_ipv6_pim_bsr_db,
clear_ipv6_pim_bsr_db_cmd,
"clear ipv6 pim [vrf NAME] bsr-data",
@@ -1599,6 +1618,7 @@ void pim_cmd_init(void)
install_element(ENABLE_NODE, &clear_ipv6_pim_oil_cmd);
install_element(ENABLE_NODE, &clear_ipv6_mroute_count_cmd);
install_element(ENABLE_NODE, &clear_ipv6_pim_bsr_db_cmd);
+ install_element(ENABLE_NODE, &clear_ipv6_pim_interfaces_cmd);
install_element(ENABLE_NODE, &debug_pimv6_cmd);
install_element(ENABLE_NODE, &debug_pimv6_nht_cmd);
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c
index f62b90a9d..968149380 100644
--- a/pimd/pim_cmd.c
+++ b/pimd/pim_cmd.c
@@ -1521,17 +1521,6 @@ static void clear_igmp_interfaces(struct pim_instance *pim)
pim_if_addr_add_all(ifp);
}
-static void clear_pim_interfaces(struct pim_instance *pim)
-{
- struct interface *ifp;
-
- FOR_ALL_INTERFACES (pim->vrf, ifp) {
- if (ifp->info) {
- pim_neighbor_delete_all(ifp, "interface cleared");
- }
- }
-}
-
static void clear_interfaces(struct pim_instance *pim)
{
clear_igmp_interfaces(pim);
@@ -1670,7 +1659,7 @@ DEFPY (clear_ip_mroute,
return CMD_SUCCESS;
}
-DEFUN (clear_ip_pim_interfaces,
+DEFPY (clear_ip_pim_interfaces,
clear_ip_pim_interfaces_cmd,
"clear ip pim [vrf NAME] interfaces",
CLEAR_STR
@@ -1679,13 +1668,12 @@ DEFUN (clear_ip_pim_interfaces,
VRF_CMD_HELP_STR
"Reset PIM interfaces\n")
{
- int idx = 2;
- struct vrf *vrf = pim_cmd_lookup_vrf(vty, argv, argc, &idx);
+ struct vrf *v = pim_cmd_lookup(vty, vrf);
- if (!vrf)
+ if (!v)
return CMD_WARNING;
- clear_pim_interfaces(vrf->info);
+ clear_pim_interfaces(v->info);
return CMD_SUCCESS;
}
diff --git a/pimd/pim_cmd_common.c b/pimd/pim_cmd_common.c
index f2974edae..b7bd7375c 100644
--- a/pimd/pim_cmd_common.c
+++ b/pimd/pim_cmd_common.c
@@ -4902,3 +4902,13 @@ int pim_show_interface_traffic_helper(const char *vrf, const char *if_name,
return CMD_SUCCESS;
}
+
+void clear_pim_interfaces(struct pim_instance *pim)
+{
+ struct interface *ifp;
+
+ FOR_ALL_INTERFACES (pim->vrf, ifp) {
+ if (ifp->info)
+ pim_neighbor_delete_all(ifp, "interface cleared");
+ }
+}
diff --git a/pimd/pim_cmd_common.h b/pimd/pim_cmd_common.h
index 1e770e6c8..02acb1685 100644
--- a/pimd/pim_cmd_common.h
+++ b/pimd/pim_cmd_common.h
@@ -184,6 +184,7 @@ void pim_show_interface_traffic(struct pim_instance *pim, struct vty *vty,
bool uj);
int pim_show_interface_traffic_helper(const char *vrf, const char *if_name,
struct vty *vty, bool uj);
+void clear_pim_interfaces(struct pim_instance *pim);
/*
* Special Macro to allow us to get the correct pim_instance;
*/