mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-06 07:27:09 +00:00
Merge pull request #1363 from donaldsharp/z_improvements
Z improvements
This commit is contained in:
commit
453a5340a8
@ -358,6 +358,7 @@ struct cmd_node {
|
||||
#define PCE_STR "PCE Router Information specific commands\n"
|
||||
#define MPLS_STR "MPLS information\n"
|
||||
#define WATCHFRR_STR "watchfrr information\n"
|
||||
#define ZEBRA_STR "Zebra information\n"
|
||||
|
||||
#define CONF_BACKUP_EXT ".sav"
|
||||
|
||||
|
@ -256,7 +256,7 @@ DEFUN (show_zebra,
|
||||
SHOW_STR
|
||||
IPV6_STR
|
||||
OSPF6_STR
|
||||
"Zebra information\n")
|
||||
ZEBRA_STR)
|
||||
{
|
||||
int i;
|
||||
if (zclient == NULL) {
|
||||
|
@ -1182,7 +1182,7 @@ DEFUN (debug_ospf_zebra,
|
||||
"debug ospf zebra [<interface|redistribute>]",
|
||||
DEBUG_STR
|
||||
OSPF_STR
|
||||
"OSPF Zebra information\n"
|
||||
ZEBRA_STR
|
||||
"Zebra interface\n"
|
||||
"Zebra redistribute\n")
|
||||
{
|
||||
@ -1195,7 +1195,7 @@ DEFUN (debug_ospf_instance_zebra,
|
||||
DEBUG_STR
|
||||
OSPF_STR
|
||||
"Instance ID\n"
|
||||
"OSPF Zebra information\n"
|
||||
ZEBRA_STR
|
||||
"Zebra interface\n"
|
||||
"Zebra redistribute\n")
|
||||
{
|
||||
@ -1245,7 +1245,7 @@ DEFUN (no_debug_ospf_zebra,
|
||||
NO_STR
|
||||
DEBUG_STR
|
||||
OSPF_STR
|
||||
"OSPF Zebra information\n"
|
||||
ZEBRA_STR
|
||||
"Zebra interface\n"
|
||||
"Zebra redistribute\n")
|
||||
{
|
||||
@ -1259,7 +1259,7 @@ DEFUN (no_debug_ospf_instance_zebra,
|
||||
DEBUG_STR
|
||||
OSPF_STR
|
||||
"Instance ID\n"
|
||||
"OSPF Zebra information\n"
|
||||
ZEBRA_STR
|
||||
"Zebra interface\n"
|
||||
"Zebra redistribute\n")
|
||||
{
|
||||
|
@ -53,6 +53,7 @@
|
||||
/* Zebra instance */
|
||||
struct zebra_t zebrad = {
|
||||
.rtm_table_default = 0,
|
||||
.packets_to_process = ZEBRA_ZAPI_PACKETS_TO_PROCESS,
|
||||
};
|
||||
|
||||
/* process id. */
|
||||
|
@ -1413,7 +1413,7 @@ DEFUN (show_zebra_fpm_stats,
|
||||
show_zebra_fpm_stats_cmd,
|
||||
"show zebra fpm stats",
|
||||
SHOW_STR
|
||||
"Zebra information\n"
|
||||
ZEBRA_STR
|
||||
"Forwarding Path Manager information\n"
|
||||
"Statistics\n")
|
||||
{
|
||||
@ -1428,7 +1428,7 @@ DEFUN (clear_zebra_fpm_stats,
|
||||
clear_zebra_fpm_stats_cmd,
|
||||
"clear zebra fpm stats",
|
||||
CLEAR_STR
|
||||
"Zebra information\n"
|
||||
ZEBRA_STR
|
||||
"Clear Forwarding Path Manager information\n"
|
||||
"Statistics\n")
|
||||
{
|
||||
|
@ -57,12 +57,6 @@ DEFINE_HOOK(rib_update, (struct route_node * rn, const char *reason),
|
||||
/* Should we allow non Quagga processes to delete our routes */
|
||||
extern int allow_delete;
|
||||
|
||||
/* Hold time for RIB process, should be very minimal.
|
||||
* it is useful to able to set it otherwise for testing, hence exported
|
||||
* as global here for test-rig code.
|
||||
*/
|
||||
int rib_process_hold_time = 10;
|
||||
|
||||
/* Each route type's string and default distance value. */
|
||||
static const struct {
|
||||
int key;
|
||||
@ -1899,7 +1893,7 @@ static void rib_queue_init(struct zebra_t *zebra)
|
||||
zebra->ribq->spec.completion_func = &meta_queue_process_complete;
|
||||
/* XXX: TODO: These should be runtime configurable via vty */
|
||||
zebra->ribq->spec.max_retries = 3;
|
||||
zebra->ribq->spec.hold = rib_process_hold_time;
|
||||
zebra->ribq->spec.hold = ZEBRA_RIB_PROCESS_HOLD_TIME;
|
||||
|
||||
if (!(zebra->mq = meta_queue_new())) {
|
||||
zlog_err("%s: could not initialise meta queue!", __func__);
|
||||
|
@ -392,7 +392,7 @@ DEFUN (no_set_src,
|
||||
DEFUN (zebra_route_map_timer,
|
||||
zebra_route_map_timer_cmd,
|
||||
"zebra route-map delay-timer (0-600)",
|
||||
"Zebra information\n"
|
||||
ZEBRA_STR
|
||||
"Set route-map parameters\n"
|
||||
"Time to wait before route-map updates are processed\n"
|
||||
"0 means event-driven updates are disabled\n")
|
||||
@ -410,7 +410,7 @@ DEFUN (no_zebra_route_map_timer,
|
||||
no_zebra_route_map_timer_cmd,
|
||||
"no zebra route-map delay-timer [(0-600)]",
|
||||
NO_STR
|
||||
"Zebra information\n"
|
||||
ZEBRA_STR
|
||||
"Set route-map parameters\n"
|
||||
"Reset delay-timer to default value, 30 secs\n"
|
||||
"0 means event-driven updates are disabled\n")
|
||||
|
@ -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;
|
||||
|
||||
@ -2186,6 +2187,59 @@ 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)",
|
||||
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]",
|
||||
@ -2231,6 +2285,13 @@ 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);
|
||||
|
||||
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)
|
||||
@ -2272,6 +2333,10 @@ 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(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_route_cmd);
|
||||
|
@ -2387,7 +2387,7 @@ static int zebra_client_read(struct thread *thread)
|
||||
uint8_t marker, version;
|
||||
vrf_id_t vrf_id;
|
||||
struct zebra_vrf *zvrf;
|
||||
int packets = 10;
|
||||
int packets = zebrad.packets_to_process;
|
||||
|
||||
/* Get thread data. Reset reading thread because I'm running. */
|
||||
sock = THREAD_FD(thread);
|
||||
@ -2841,7 +2841,7 @@ DEFUN (show_zebra,
|
||||
show_zebra_cmd,
|
||||
"show zebra",
|
||||
SHOW_STR
|
||||
"Zebra information\n")
|
||||
ZEBRA_STR)
|
||||
{
|
||||
struct vrf *vrf;
|
||||
|
||||
@ -2866,7 +2866,7 @@ DEFUN (show_zebra_client,
|
||||
show_zebra_client_cmd,
|
||||
"show zebra client",
|
||||
SHOW_STR
|
||||
"Zebra information\n"
|
||||
ZEBRA_STR
|
||||
"Client information\n")
|
||||
{
|
||||
struct listnode *node;
|
||||
@ -2883,7 +2883,7 @@ DEFUN (show_zebra_client_summary,
|
||||
show_zebra_client_summary_cmd,
|
||||
"show zebra client summary",
|
||||
SHOW_STR
|
||||
"Zebra information brief\n"
|
||||
ZEBRA_STR
|
||||
"Client information brief\n"
|
||||
"Brief Summary\n")
|
||||
{
|
||||
|
@ -132,11 +132,15 @@ struct zebra_t {
|
||||
u_int32_t rtm_table_default;
|
||||
|
||||
/* rib work queue */
|
||||
#define ZEBRA_RIB_PROCESS_HOLD_TIME 10
|
||||
struct work_queue *ribq;
|
||||
struct meta_queue *mq;
|
||||
|
||||
/* LSP work queue */
|
||||
struct work_queue *lsp_process_q;
|
||||
|
||||
#define ZEBRA_ZAPI_PACKETS_TO_PROCESS 10
|
||||
u_int32_t packets_to_process;
|
||||
};
|
||||
extern struct zebra_t zebrad;
|
||||
extern unsigned int multipath_num;
|
||||
|
Loading…
Reference in New Issue
Block a user