summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2017-10-25 11:13:42 -0400
committerDonald Sharp <sharpd@cumulusnetworks.com>2017-10-25 11:13:42 -0400
commit62d52dedf08e47fb65674209cf5b7f9d62eb7e4f (patch)
tree2fa480b1efcf8c6f6178594c22ad791bb065cc87
parenta37ef435e9514a455931ddbac090e9bea0943bb5 (diff)
zebra: Add Hidden 'zebra zapi-packets (1-10000)' command
Allow the end user to specify how many packets we want to process at one time coming down the zapi, before we yield and let other things process. This is a Hidden command because it is not necessarily something that we want end users to be able to play with Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
-rw-r--r--zebra/zebra_vty.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/zebra/zebra_vty.c b/zebra/zebra_vty.c
index 21a3331f33..e6563c4f54 100644
--- a/zebra/zebra_vty.c
+++ b/zebra/zebra_vty.c
@@ -2696,6 +2696,33 @@ DEFUN (ip_zebra_import_table_distance,
return ret;
}
+DEFUN_HIDDEN (zebra_packet_process,
+ zebra_packet_process_cmd,
+ "zebra zapi-packets (1-10000)",
+ ZEBRA_STR
+ "Zapi Protocol\n"
+ "Number of packets to process before relinquishing thread\n")
+{
+ uint32_t packets = strtoul(argv[2]->arg, NULL, 10);
+
+ zebrad.packets_to_process = packets;
+
+ return CMD_SUCCESS;
+}
+
+DEFUN_HIDDEN (no_zebra_packet_process,
+ no_zebra_packet_process_cmd,
+ "no zebra zapi-packets [(1-10000)]",
+ NO_STR
+ ZEBRA_STR
+ "Zapi Protocol\n"
+ "Number of packets to process before relinquishing thread\n")
+{
+ zebrad.packets_to_process = ZEBRA_ZAPI_PACKETS_TO_PROCESS;
+
+ return CMD_SUCCESS;
+}
+
DEFUN_HIDDEN (zebra_workqueue_timer,
zebra_workqueue_timer_cmd,
"zebra work-queue (0-10000)",
@@ -2770,6 +2797,10 @@ static int config_write_protocol(struct vty *vty)
if (zebrad.ribq->spec.hold != ZEBRA_RIB_PROCESS_HOLD_TIME)
vty_out(vty, "zebra work-queue %u\n", zebrad.ribq->spec.hold);
+ if (zebrad.packets_to_process != ZEBRA_ZAPI_PACKETS_TO_PROCESS)
+ vty_out(vty,
+ "zebra zapi-packets %u\n", zebrad.packets_to_process);
+
enum multicast_mode ipv4_multicast_mode = multicast_mode_ipv4_get();
if (ipv4_multicast_mode != MCAST_NO_CONFIG)
@@ -2813,6 +2844,8 @@ void zebra_vty_init(void)
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(CONFIG_NODE, &zebra_packet_process_cmd);
+ install_element(CONFIG_NODE, &no_zebra_packet_process_cmd);
install_element(VIEW_NODE, &show_vrf_cmd);
install_element(VIEW_NODE, &show_ip_route_cmd);