summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--isisd/isis_cli.c25
-rw-r--r--isisd/isis_cli.h2
-rw-r--r--isisd/isis_northbound.c10
-rw-r--r--isisd/isis_vty_isisd.c28
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 <level-1|level-2> (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);