]> git.proxmox.com Git - mirror_frr.git/blobdiff - zebra/zebra_vty.c
zebra: Allow user to specify work-queue processing hold time
[mirror_frr.git] / zebra / zebra_vty.c
index d86cc88b42a308a801e2ead1d4d7b7a50fa42bf5..21a3331f3345806aac6af47d90db65c1b3e71437 100644 (file)
@@ -44,6 +44,7 @@
 #include "lib/json.h"
 #include "zebra/zebra_vxlan.h"
 #include "zebra/zebra_vty_clippy.c"
+#include "zebra/zserv.h"
 
 extern int allow_delete;
 
@@ -2695,6 +2696,32 @@ DEFUN (ip_zebra_import_table_distance,
        return ret;
 }
 
+DEFUN_HIDDEN (zebra_workqueue_timer,
+             zebra_workqueue_timer_cmd,
+             "zebra work-queue (0-10000)",
+             ZEBRA_STR
+             "Work Queue\n"
+             "Time in milliseconds\n")
+{
+       uint32_t timer = strtoul(argv[2]->arg, NULL, 10);
+       zebrad.ribq->spec.hold = timer;
+
+       return CMD_SUCCESS;
+}
+
+DEFUN_HIDDEN (no_zebra_workqueue_timer,
+             no_zebra_workqueue_timer_cmd,
+             "no zebra work-queue [(0-10000)]",
+             NO_STR
+             ZEBRA_STR
+             "Work Queue\n"
+             "Time in milliseconds\n")
+{
+       zebrad.ribq->spec.hold = ZEBRA_RIB_PROCESS_HOLD_TIME;
+
+       return CMD_SUCCESS;
+}
+
 DEFUN (no_ip_zebra_import_table,
        no_ip_zebra_import_table_cmd,
        "no ip import-table (1-252) [distance (1-255)] [route-map NAME]",
@@ -2740,6 +2767,9 @@ static int config_write_protocol(struct vty *vty)
        if (zebra_rnh_ipv6_default_route)
                vty_out(vty, "ipv6 nht resolve-via-default\n");
 
+       if (zebrad.ribq->spec.hold != ZEBRA_RIB_PROCESS_HOLD_TIME)
+               vty_out(vty, "zebra work-queue %u\n", zebrad.ribq->spec.hold);
+
        enum multicast_mode ipv4_multicast_mode = multicast_mode_ipv4_get();
 
        if (ipv4_multicast_mode != MCAST_NO_CONFIG)
@@ -2781,6 +2811,8 @@ void zebra_vty_init(void)
        install_element(CONFIG_NODE, &ip_route_cmd);
        install_element(CONFIG_NODE, &ip_zebra_import_table_distance_cmd);
        install_element(CONFIG_NODE, &no_ip_zebra_import_table_cmd);
+       install_element(CONFIG_NODE, &zebra_workqueue_timer_cmd);
+       install_element(CONFIG_NODE, &no_zebra_workqueue_timer_cmd);
 
        install_element(VIEW_NODE, &show_vrf_cmd);
        install_element(VIEW_NODE, &show_ip_route_cmd);