From 6bb043cd0f180303d97a6311e48ba9e8fc03aa5f Mon Sep 17 00:00:00 2001 From: Emanuele Di Pascale Date: Tue, 13 Nov 2018 17:51:47 +0100 Subject: [PATCH] isisd: retrofit the 'dynamic-hostname' command Signed-off-by: Emanuele Di Pascale --- isisd/isis_cli.c | 25 +++++++++++++++++++++++++ isisd/isis_cli.h | 2 ++ isisd/isis_northbound.c | 10 +++++++++- isisd/isis_vty_isisd.c | 28 ---------------------------- 4 files changed, 36 insertions(+), 29 deletions(-) diff --git a/isisd/isis_cli.c b/isisd/isis_cli.c index bb403650bc..c42e5f3c8a 100644 --- a/isisd/isis_cli.c +++ b/isisd/isis_cli.c @@ -383,6 +383,29 @@ void cli_show_isis_is_type(struct vty *vty, struct lyd_node *dnode, } } +/* + * XPath: /frr-isisd:isis/instance/dynamic-hostname + */ +DEFPY(dynamic_hostname, dynamic_hostname_cmd, "[no] hostname dynamic", + NO_STR + "Dynamic hostname for IS-IS\n" + "Dynamic hostname\n") +{ + nb_cli_enqueue_change(vty, "./dynamic-hostname", NB_OP_MODIFY, + no ? "false" : "true"); + + return nb_cli_apply_changes(vty, NULL); +} + +void cli_show_isis_dynamic_hostname(struct vty *vty, struct lyd_node *dnode, + bool show_defaults) +{ + if (!yang_dnode_get_bool(dnode, NULL)) + vty_out(vty, " no"); + + vty_out(vty, " hostname dynamic\n"); +} + void isis_cli_init(void) { install_element(CONFIG_NODE, &router_isis_cmd); @@ -396,6 +419,8 @@ void isis_cli_init(void) install_element(ISIS_NODE, &is_type_cmd); install_element(ISIS_NODE, &no_is_type_cmd); + + install_element(ISIS_NODE, &dynamic_hostname_cmd); } #endif /* ifndef FABRICD */ diff --git a/isisd/isis_cli.h b/isisd/isis_cli.h index ebec8f3a61..d0b03b9436 100644 --- a/isisd/isis_cli.h +++ b/isisd/isis_cli.h @@ -31,5 +31,7 @@ void cli_show_isis_area_address(struct vty *vty, struct lyd_node *dnode, bool show_defaults); 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); #endif /* ISISD_ISIS_CLI_H_ */ diff --git a/isisd/isis_northbound.c b/isisd/isis_northbound.c index 3c115b4354..64c9742a05 100644 --- a/isisd/isis_northbound.c +++ b/isisd/isis_northbound.c @@ -239,7 +239,14 @@ static int isis_instance_dynamic_hostname_modify(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_dynhostname_set(area, yang_dnode_get_bool(dnode, NULL)); + return NB_OK; } @@ -1719,6 +1726,7 @@ const struct frr_yang_module_info frr_isisd_info = { { .xpath = "/frr-isisd:isis/instance/dynamic-hostname", .cbs.modify = isis_instance_dynamic_hostname_modify, + .cbs.cli_show = cli_show_isis_dynamic_hostname, }, { .xpath = "/frr-isisd:isis/instance/attached", diff --git a/isisd/isis_vty_isisd.c b/isisd/isis_vty_isisd.c index b28d2c1708..e5c7fc51f9 100644 --- a/isisd/isis_vty_isisd.c +++ b/isisd/isis_vty_isisd.c @@ -580,31 +580,6 @@ DEFUN (no_set_attached_bit, return CMD_SUCCESS; } -DEFUN (dynamic_hostname, - dynamic_hostname_cmd, - "hostname dynamic", - "Dynamic hostname for IS-IS\n" - "Dynamic hostname\n") -{ - VTY_DECLVAR_CONTEXT(isis_area, area); - - isis_area_dynhostname_set(area, true); - return CMD_SUCCESS; -} - -DEFUN (no_dynamic_hostname, - no_dynamic_hostname_cmd, - "no hostname dynamic", - NO_STR - "Dynamic hostname for IS-IS\n" - "Dynamic hostname\n") -{ - VTY_DECLVAR_CONTEXT(isis_area, area); - - isis_area_dynhostname_set(area, false); - return CMD_SUCCESS; -} - DEFUN (lsp_gen_interval_level, lsp_gen_interval_level_cmd, "lsp-gen-interval (1-120)", @@ -785,9 +760,6 @@ void isis_vty_daemon_init(void) install_element(ROUTER_NODE, &set_attached_bit_cmd); install_element(ROUTER_NODE, &no_set_attached_bit_cmd); - install_element(ROUTER_NODE, &dynamic_hostname_cmd); - install_element(ROUTER_NODE, &no_dynamic_hostname_cmd); - install_element(ROUTER_NODE, &lsp_gen_interval_level_cmd); install_element(ROUTER_NODE, &no_lsp_gen_interval_level_cmd);