diff options
| -rw-r--r-- | isisd/isis_cli.c | 41 | ||||
| -rw-r--r-- | isisd/isis_cli.h | 4 | ||||
| -rw-r--r-- | isisd/isis_northbound.c | 38 | ||||
| -rw-r--r-- | isisd/isis_vty_common.c | 26 | ||||
| -rw-r--r-- | isisd/isis_vty_fabricd.c | 26 | ||||
| -rw-r--r-- | isisd/isis_vty_isisd.c | 26 |
6 files changed, 105 insertions, 56 deletions
diff --git a/isisd/isis_cli.c b/isisd/isis_cli.c index c42e5f3c8a..36caae5703 100644 --- a/isisd/isis_cli.c +++ b/isisd/isis_cli.c @@ -406,6 +406,44 @@ void cli_show_isis_dynamic_hostname(struct vty *vty, struct lyd_node *dnode, vty_out(vty, " hostname dynamic\n"); } +/* + * XPath: /frr-isisd:isis/instance/overload + */ +DEFPY(set_overload_bit, set_overload_bit_cmd, "[no] set-overload-bit", + "Reset overload bit to accept transit traffic\n" + "Set overload bit to avoid any transit traffic\n") +{ + nb_cli_enqueue_change(vty, "./overload", + no ? NB_OP_DELETE : NB_OP_CREATE, NULL); + + return nb_cli_apply_changes(vty, NULL); +} + +void cli_show_isis_overload(struct vty *vty, struct lyd_node *dnode, + bool show_defaults) +{ + vty_out(vty, " set-overload-bit\n"); +} + +/* + * XPath: /frr-isisd:isis/instance/attached + */ +DEFPY(set_attached_bit, set_attached_bit_cmd, "[no] set-attached-bit", + "Reset attached bit\n" + "Set attached bit to identify as L1/L2 router for inter-area traffic\n") +{ + nb_cli_enqueue_change(vty, "./attached", + no ? NB_OP_DELETE : NB_OP_CREATE, NULL); + + return nb_cli_apply_changes(vty, NULL); +} + +void cli_show_isis_attached(struct vty *vty, struct lyd_node *dnode, + bool show_defaults) +{ + vty_out(vty, " set-attached-bit\n"); +} + void isis_cli_init(void) { install_element(CONFIG_NODE, &router_isis_cmd); @@ -421,6 +459,9 @@ void isis_cli_init(void) install_element(ISIS_NODE, &no_is_type_cmd); install_element(ISIS_NODE, &dynamic_hostname_cmd); + + install_element(ISIS_NODE, &set_overload_bit_cmd); + install_element(ISIS_NODE, &set_attached_bit_cmd); } #endif /* ifndef FABRICD */ diff --git a/isisd/isis_cli.h b/isisd/isis_cli.h index d0b03b9436..cdf71f650b 100644 --- a/isisd/isis_cli.h +++ b/isisd/isis_cli.h @@ -33,5 +33,9 @@ void cli_show_isis_is_type(struct vty *vty, struct lyd_node *dnode, bool show_defaults); void cli_show_isis_dynamic_hostname(struct vty *vty, struct lyd_node *dnode, bool show_defaults); +void cli_show_isis_attached(struct vty *vty, struct lyd_node *dnode, + bool show_defaults); +void cli_show_isis_overload(struct vty *vty, struct lyd_node *dnode, + bool show_defaults); #endif /* ISISD_ISIS_CLI_H_ */ diff --git a/isisd/isis_northbound.c b/isisd/isis_northbound.c index 64c9742a05..454d94a395 100644 --- a/isisd/isis_northbound.c +++ b/isisd/isis_northbound.c @@ -257,14 +257,28 @@ static int isis_instance_attached_create(enum nb_event event, const struct lyd_node *dnode, union nb_resource *resource) { - /* TODO: implement me. */ + struct isis_area *area; + + if (event != NB_EV_APPLY) + return NB_OK; + + area = yang_dnode_get_entry(dnode, true); + isis_area_attached_bit_set(area, true); + return NB_OK; } static int isis_instance_attached_delete(enum nb_event event, const struct lyd_node *dnode) { - /* TODO: implement me. */ + struct isis_area *area; + + if (event != NB_EV_APPLY) + return NB_OK; + + area = yang_dnode_get_entry(dnode, true); + isis_area_attached_bit_set(area, false); + return NB_OK; } @@ -275,14 +289,28 @@ static int isis_instance_overload_create(enum nb_event event, const struct lyd_node *dnode, union nb_resource *resource) { - /* TODO: implement me. */ + struct isis_area *area; + + if (event != NB_EV_APPLY) + return NB_OK; + + area = yang_dnode_get_entry(dnode, true); + isis_area_overload_bit_set(area, true); + return NB_OK; } static int isis_instance_overload_delete(enum nb_event event, const struct lyd_node *dnode) { - /* TODO: implement me. */ + struct isis_area *area; + + if (event != NB_EV_APPLY) + return NB_OK; + + area = yang_dnode_get_entry(dnode, true); + isis_area_overload_bit_set(area, false); + return NB_OK; } @@ -1732,11 +1760,13 @@ const struct frr_yang_module_info frr_isisd_info = { .xpath = "/frr-isisd:isis/instance/attached", .cbs.create = isis_instance_attached_create, .cbs.delete = isis_instance_attached_delete, + .cbs.cli_show = cli_show_isis_attached, }, { .xpath = "/frr-isisd:isis/instance/overload", .cbs.create = isis_instance_overload_create, .cbs.delete = isis_instance_overload_delete, + .cbs.cli_show = cli_show_isis_overload, }, { .xpath = "/frr-isisd:isis/instance/metric-style", diff --git a/isisd/isis_vty_common.c b/isisd/isis_vty_common.c index f5ca9c1dd3..62a01c1001 100644 --- a/isisd/isis_vty_common.c +++ b/isisd/isis_vty_common.c @@ -440,29 +440,6 @@ DEFUN (no_isis_bfd, return CMD_SUCCESS; } -DEFUN (set_overload_bit, - set_overload_bit_cmd, - "set-overload-bit", - "Set overload bit to avoid any transit traffic\n") -{ - VTY_DECLVAR_CONTEXT(isis_area, area); - - isis_area_overload_bit_set(area, true); - return CMD_SUCCESS; -} - -DEFUN (no_set_overload_bit, - no_set_overload_bit_cmd, - "no set-overload-bit", - "Reset overload bit to accept transit traffic\n" - "Reset overload bit\n") -{ - VTY_DECLVAR_CONTEXT(isis_area, area); - - isis_area_overload_bit_set(area, false); - return CMD_SUCCESS; -} - static int isis_vty_lsp_mtu_set(struct vty *vty, unsigned int lsp_mtu) { VTY_DECLVAR_CONTEXT(isis_area, area); @@ -871,9 +848,6 @@ void isis_vty_init(void) install_element(INTERFACE_NODE, &isis_bfd_cmd); install_element(INTERFACE_NODE, &no_isis_bfd_cmd); - install_element(ROUTER_NODE, &set_overload_bit_cmd); - install_element(ROUTER_NODE, &no_set_overload_bit_cmd); - install_element(ROUTER_NODE, &area_lsp_mtu_cmd); install_element(ROUTER_NODE, &no_area_lsp_mtu_cmd); diff --git a/isisd/isis_vty_fabricd.c b/isisd/isis_vty_fabricd.c index e420988f18..2d16573924 100644 --- a/isisd/isis_vty_fabricd.c +++ b/isisd/isis_vty_fabricd.c @@ -286,6 +286,29 @@ DEFUN (no_ip_router_isis, return CMD_SUCCESS; } +DEFUN (set_overload_bit, + set_overload_bit_cmd, + "set-overload-bit", + "Set overload bit to avoid any transit traffic\n") +{ + VTY_DECLVAR_CONTEXT(isis_area, area); + + isis_area_overload_bit_set(area, true); + return CMD_SUCCESS; +} + +DEFUN (no_set_overload_bit, + no_set_overload_bit_cmd, + "no set-overload-bit", + "Reset overload bit to accept transit traffic\n" + "Reset overload bit\n") +{ + VTY_DECLVAR_CONTEXT(isis_area, area); + + isis_area_overload_bit_set(area, false); + return CMD_SUCCESS; +} + void isis_vty_daemon_init(void) { install_element(ROUTER_NODE, &fabric_tier_cmd); @@ -298,4 +321,7 @@ void isis_vty_daemon_init(void) install_element(INTERFACE_NODE, &ip_router_isis_cmd); install_element(INTERFACE_NODE, &ip6_router_isis_cmd); install_element(INTERFACE_NODE, &no_ip_router_isis_cmd); + + install_element(ROUTER_NODE, &set_overload_bit_cmd); + install_element(ROUTER_NODE, &no_set_overload_bit_cmd); } diff --git a/isisd/isis_vty_isisd.c b/isisd/isis_vty_isisd.c index e5c7fc51f9..567441f185 100644 --- a/isisd/isis_vty_isisd.c +++ b/isisd/isis_vty_isisd.c @@ -557,29 +557,6 @@ DEFUN (no_metric_style, return CMD_SUCCESS; } -DEFUN (set_attached_bit, - set_attached_bit_cmd, - "set-attached-bit", - "Set attached bit to identify as L1/L2 router for inter-area traffic\n") -{ - VTY_DECLVAR_CONTEXT(isis_area, area); - - isis_area_attached_bit_set(area, true); - return CMD_SUCCESS; -} - -DEFUN (no_set_attached_bit, - no_set_attached_bit_cmd, - "no set-attached-bit", - NO_STR - "Reset attached bit\n") -{ - VTY_DECLVAR_CONTEXT(isis_area, area); - - isis_area_attached_bit_set(area, false); - return CMD_SUCCESS; -} - DEFUN (lsp_gen_interval_level, lsp_gen_interval_level_cmd, "lsp-gen-interval <level-1|level-2> (1-120)", @@ -757,9 +734,6 @@ void isis_vty_daemon_init(void) install_element(ROUTER_NODE, &metric_style_cmd); install_element(ROUTER_NODE, &no_metric_style_cmd); - install_element(ROUTER_NODE, &set_attached_bit_cmd); - install_element(ROUTER_NODE, &no_set_attached_bit_cmd); - install_element(ROUTER_NODE, &lsp_gen_interval_level_cmd); install_element(ROUTER_NODE, &no_lsp_gen_interval_level_cmd); |
