diff options
Diffstat (limited to 'pbrd')
-rw-r--r-- | pbrd/pbr_debug.c | 74 | ||||
-rw-r--r-- | pbrd/pbr_debug.h | 24 | ||||
-rw-r--r-- | pbrd/pbr_vty.c | 60 |
3 files changed, 82 insertions, 76 deletions
diff --git a/pbrd/pbr_debug.c b/pbrd/pbr_debug.c index e9b4a5295..0978262b8 100644 --- a/pbrd/pbr_debug.c +++ b/pbrd/pbr_debug.c @@ -43,16 +43,7 @@ const char *pbr_debugs_conflines[] = { "debug pbr events", }; -/* - * Set or unset flags on all debugs for pbrd. - * - * flags - * The flags to set - * - * set - * Whether to set or unset the specified flags - */ -static void pbr_debug_set_all(uint32_t flags, bool set) +void pbr_debug_set_all(uint32_t flags, bool set) { for (unsigned int i = 0; i < array_size(pbr_debugs); i++) { DEBUG_FLAGS_SET(pbr_debugs[i], flags, set); @@ -81,7 +72,7 @@ static uint32_t pbr_debug_check_all(uint32_t flags) return mode; } -static int pbr_debug_config_write_helper(struct vty *vty, bool config) +int pbr_debug_config_write_helper(struct vty *vty, bool config) { uint32_t mode = DEBUG_MODE_ALL; @@ -104,70 +95,9 @@ int pbr_debug_config_write(struct vty *vty) return pbr_debug_config_write_helper(vty, true); } -/* PBR debugging CLI ------------------------------------------------------- */ -/* clang-format off */ - -DEFPY(debug_pbr, - debug_pbr_cmd, - "[no] debug pbr [{map$map|zebra$zebra|nht$nht|events$events}]", - NO_STR - DEBUG_STR - "Policy Based Routing\n" - "Policy maps\n" - "PBRD <-> Zebra communications\n" - "Nexthop tracking\n" - "Events\n") -{ - uint32_t mode = DEBUG_NODE2MODE(vty->node); - - if (map) - DEBUG_MODE_SET(&pbr_dbg_map, mode, !no); - if (zebra) - DEBUG_MODE_SET(&pbr_dbg_zebra, mode, !no); - if (nht) - DEBUG_MODE_SET(&pbr_dbg_nht, mode, !no); - if (events) - DEBUG_MODE_SET(&pbr_dbg_event, mode, !no); - - /* no specific debug --> act on all of them */ - if (strmatch(argv[argc - 1]->text, "pbr")) - pbr_debug_set_all(mode, !no); - - return CMD_SUCCESS; -} - -DEFUN_NOSH(show_debugging_pbr, - show_debugging_pbr_cmd, - "show debugging [pbr]", - SHOW_STR - DEBUG_STR - "Policy Based Routing\n") -{ - vty_out(vty, "PBR debugging status:\n"); - - pbr_debug_config_write_helper(vty, false); - - return CMD_SUCCESS; -} - -/* clang-format on */ -/* ------------------------------------------------------------------------- */ - -static struct cmd_node debug_node = {DEBUG_NODE, "", 1}; - struct debug_callbacks pbr_dbg_cbs = {.debug_set_all = pbr_debug_set_all}; void pbr_debug_init(void) { debug_init(&pbr_dbg_cbs); } - -void pbr_debug_init_vty(void) -{ - install_node(&debug_node, pbr_debug_config_write); - - install_element(VIEW_NODE, &debug_pbr_cmd); - install_element(CONFIG_NODE, &debug_pbr_cmd); - - install_element(VIEW_NODE, &show_debugging_pbr_cmd); -} diff --git a/pbrd/pbr_debug.h b/pbrd/pbr_debug.h index 274472462..e72fb88be 100644 --- a/pbrd/pbr_debug.h +++ b/pbrd/pbr_debug.h @@ -38,9 +38,29 @@ extern struct debug pbr_dbg_event; void pbr_debug_init(void); /* - * Install PBR debugging VTY commands. + * Set or unset flags on all debugs for pbrd. + * + * flags + * The flags to set + * + * set + * Whether to set or unset the specified flags + */ +void pbr_debug_set_all(uint32_t flags, bool set); + +/* + * Config write helper. + * + * vty + * Vty to write to + * + * config + * Whether we are writing to show run or saving config file + * + * Returns: + * 0 for convenience */ -void pbr_debug_init_vty(void); +int pbr_debug_config_write_helper(struct vty *vty, bool config); /* * Print PBR debugging configuration. diff --git a/pbrd/pbr_vty.c b/pbrd/pbr_vty.c index ae051ca96..bf3accae9 100644 --- a/pbrd/pbr_vty.c +++ b/pbrd/pbr_vty.c @@ -489,6 +489,58 @@ DEFPY (show_pbr_interface, return CMD_SUCCESS; } +/* PBR debugging CLI ------------------------------------------------------- */ +/* clang-format off */ + +static struct cmd_node debug_node = {DEBUG_NODE, "", 1}; + +DEFPY(debug_pbr, + debug_pbr_cmd, + "[no] debug pbr [{map$map|zebra$zebra|nht$nht|events$events}]", + NO_STR + DEBUG_STR + "Policy Based Routing\n" + "Policy maps\n" + "PBRD <-> Zebra communications\n" + "Nexthop tracking\n" + "Events\n") +{ + uint32_t mode = DEBUG_NODE2MODE(vty->node); + + if (map) + DEBUG_MODE_SET(&pbr_dbg_map, mode, !no); + if (zebra) + DEBUG_MODE_SET(&pbr_dbg_zebra, mode, !no); + if (nht) + DEBUG_MODE_SET(&pbr_dbg_nht, mode, !no); + if (events) + DEBUG_MODE_SET(&pbr_dbg_event, mode, !no); + + /* no specific debug --> act on all of them */ + if (strmatch(argv[argc - 1]->text, "pbr")) + pbr_debug_set_all(mode, !no); + + return CMD_SUCCESS; +} + +DEFUN_NOSH(show_debugging_pbr, + show_debugging_pbr_cmd, + "show debugging [pbr]", + SHOW_STR + DEBUG_STR + "Policy Based Routing\n") +{ + vty_out(vty, "PBR debugging status:\n"); + + pbr_debug_config_write_helper(vty, false); + + return CMD_SUCCESS; +} + +/* clang-format on */ +/* ------------------------------------------------------------------------- */ + + static struct cmd_node interface_node = { INTERFACE_NODE, "%s(config-if)# ", 1 /* vtysh ? yes */ }; @@ -573,6 +625,12 @@ void pbr_vty_init(void) install_node(&pbr_map_node, pbr_vty_map_config_write); + /* debug */ + install_node(&debug_node, pbr_debug_config_write); + install_element(VIEW_NODE, &debug_pbr_cmd); + install_element(CONFIG_NODE, &debug_pbr_cmd); + install_element(VIEW_NODE, &show_debugging_pbr_cmd); + install_default(PBRMAP_NODE); install_element(CONFIG_NODE, &pbr_map_cmd); @@ -586,6 +644,4 @@ void pbr_vty_init(void) install_element(VIEW_NODE, &show_pbr_map_cmd); install_element(VIEW_NODE, &show_pbr_interface_cmd); install_element(VIEW_NODE, &show_pbr_nexthop_group_cmd); - - pbr_debug_init_vty(); } |