]> git.puffer.fish Git - matthieu/frr.git/commitdiff
pim6d: Implementing "clear ipv6 pim interfaces" command.
authorAbhishek N R <abnr@vmware.com>
Tue, 19 Jul 2022 06:44:47 +0000 (23:44 -0700)
committerAbhishek N R <abnr@vmware.com>
Tue, 19 Jul 2022 12:48:52 +0000 (05:48 -0700)
Signed-off-by: Abhishek N R <abnr@vmware.com>
doc/user/pimv6.rst
pimd/pim6_cmd.c
pimd/pim_cmd.c
pimd/pim_cmd_common.c
pimd/pim_cmd_common.h

index 9bbd6abd80ceed6cd8f4022a7c77102c880a4eaf..bda9eaec8011c615b9dbec76323bc169153c4e1e 100644 (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).
index b7a832681dfb45e64baa25f388a317fe87d2519b..d72a67243b91447be74ec583fbc7904a84284820 100644 (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);
index f62b90a9d6b99aad7fadb09b17c3b372156c98fb..9681493808139a77f1094b916bcc832eed2619ac 100644 (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;
 }
index f2974edae2034d3e74a3ed5b05c268bbef1975ed..b7bd7375c595218db0c8b0837b51887e60a1d5b3 100644 (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");
+       }
+}
index 1e770e6c8da552e7d1b0fb33e4c20f08e87565ed..02acb1685863075b4aaebb9fcc3907960182ac0d 100644 (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;
  */