diff --git a/pimd/pim6_cmd.c b/pimd/pim6_cmd.c index e88a832cc3..0a913f812d 100644 --- a/pimd/pim6_cmd.c +++ b/pimd/pim6_cmd.c @@ -42,6 +42,7 @@ #include "pim_nht.h" #include "pim_bsm.h" #include "pim_iface.h" +#include "pim_zebra.h" #ifndef VTYSH_EXTRACT_PL #include "pimd/pim6_cmd_clippy.c" @@ -1972,6 +1973,25 @@ DEFPY (clear_ipv6_mroute, return CMD_SUCCESS; } +DEFPY (clear_ipv6_pim_oil, + clear_ipv6_pim_oil_cmd, + "clear ipv6 pim [vrf NAME]$name oil", + CLEAR_STR + IPV6_STR + CLEAR_IP_PIM_STR + VRF_CMD_HELP_STR + "Rescan PIMv6 OIL (output interface list)\n") +{ + struct vrf *v = pim_cmd_lookup(vty, name); + + if (!v) + return CMD_WARNING; + + pim_scan_oil(v->info); + + return CMD_SUCCESS; +} + void pim_cmd_init(void) { if_cmd_init(pim_interface_config_write); @@ -2081,4 +2101,5 @@ void pim_cmd_init(void) install_element(ENABLE_NODE, &clear_ipv6_pim_statistics_cmd); install_element(ENABLE_NODE, &clear_ipv6_mroute_cmd); + install_element(ENABLE_NODE, &clear_ipv6_pim_oil_cmd); } diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index 5c6c1e3d00..60d2ec3e2f 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -1924,22 +1924,21 @@ DEFUN (clear_ip_pim_interface_traffic, return CMD_SUCCESS; } -DEFUN (clear_ip_pim_oil, +DEFPY (clear_ip_pim_oil, clear_ip_pim_oil_cmd, - "clear ip pim [vrf NAME] oil", + "clear ip pim [vrf NAME]$name oil", CLEAR_STR IP_STR CLEAR_IP_PIM_STR VRF_CMD_HELP_STR "Rescan PIM OIL (output interface list)\n") { - int idx = 2; - struct vrf *vrf = pim_cmd_lookup_vrf(vty, argv, argc, &idx); + struct vrf *v = pim_cmd_lookup(vty, name); - if (!vrf) + if (!v) return CMD_WARNING; - pim_scan_oil(vrf->info); + pim_scan_oil(v->info); return CMD_SUCCESS; }