diff options
author | Abhishek N R <abnr@vmware.com> | 2022-07-19 08:44:47 +0200 |
---|---|---|
committer | Abhishek N R <abnr@vmware.com> | 2022-07-19 14:48:52 +0200 |
commit | 23db4cbd3d6131c8235f6c92058e9b317d62c02c (patch) | |
tree | abc668a8562e41b26ef8da464be8c259d2243e8b /pimd | |
parent | Merge pull request #11632 from opensourcerouting/fix/address_family_bgp_str (diff) | |
download | frr-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.c | 20 | ||||
-rw-r--r-- | pimd/pim_cmd.c | 20 | ||||
-rw-r--r-- | pimd/pim_cmd_common.c | 10 | ||||
-rw-r--r-- | pimd/pim_cmd_common.h | 1 |
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; */ |