Merge pull request #11644 from AbhishekNR/clear_cmd_interface

pim6d: Implementing "clear ipv6 pim interfaces" command.
This commit is contained in:
Donald Sharp 2022-07-19 14:16:41 -04:00 committed by GitHub
commit a145324acf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 39 additions and 16 deletions

View File

@ -385,6 +385,10 @@ Clear commands reset various variables.
packet count, byte count and wrong interface to 0 and start count
up from this spot.
.. clicmd:: clear ipv6 pim interfaces
Reset PIMv6 interfaces.
.. clicmd:: clear ipv6 pim oil
Rescan PIMv6 OIL (output interface list).

View File

@ -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);

View File

@ -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;
}

View File

@ -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");
}
}

View File

@ -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;
*/