aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmocom/vty/command.h5
-rw-r--r--src/ctrl/control_vty.c1
-rw-r--r--src/gb/gprs_bssgp_vty.c1
-rw-r--r--src/gb/gprs_ns_vty.c1
-rw-r--r--src/vty/command.c42
-rw-r--r--src/vty/logging_vty.c1
-rw-r--r--src/vty/stats_vty.c1
-rw-r--r--src/vty/vty.c1
-rw-r--r--tests/vty/vty_test.c3
9 files changed, 31 insertions, 25 deletions
diff --git a/include/osmocom/vty/command.h b/include/osmocom/vty/command.h
index 58f248fe..8fbdb7b7 100644
--- a/include/osmocom/vty/command.h
+++ b/include/osmocom/vty/command.h
@@ -27,6 +27,8 @@
#include <sys/types.h>
#include "vector.h"
+#include <osmocom/core/defs.h>
+
/*! \defgroup command VTY Command
* @{
* \file command.h */
@@ -363,9 +365,6 @@ void install_element(int node_type, struct cmd_element *);
void install_element_ve(struct cmd_element *cmd);
void sort_node(void);
-/* This is similar to install_default() but it also creates
- * 'exit' and 'end' commands.
- */
void vty_install_default(int node_type);
/* Concatenates argv[shift] through argv[argc-1] into a single NUL-terminated
diff --git a/src/ctrl/control_vty.c b/src/ctrl/control_vty.c
index 97f42de5..a968bc01 100644
--- a/src/ctrl/control_vty.c
+++ b/src/ctrl/control_vty.c
@@ -82,7 +82,6 @@ int ctrl_vty_init(void *ctx)
ctrl_vty_ctx = ctx;
install_element(CONFIG_NODE, &cfg_ctrl_cmd);
install_node(&ctrl_node, config_write_ctrl);
- vty_install_default(L_CTRL_NODE);
install_element(L_CTRL_NODE, &cfg_ctrl_bind_addr_cmd);
return 0;
diff --git a/src/gb/gprs_bssgp_vty.c b/src/gb/gprs_bssgp_vty.c
index dc786a14..f7878469 100644
--- a/src/gb/gprs_bssgp_vty.c
+++ b/src/gb/gprs_bssgp_vty.c
@@ -211,7 +211,6 @@ int bssgp_vty_init(void)
install_element(CONFIG_NODE, &cfg_bssgp_cmd);
install_node(&bssgp_node, config_write_bssgp);
- vty_install_default(L_BSSGP_NODE);
return 0;
}
diff --git a/src/gb/gprs_ns_vty.c b/src/gb/gprs_ns_vty.c
index 4bd50970..f94d9c2c 100644
--- a/src/gb/gprs_ns_vty.c
+++ b/src/gb/gprs_ns_vty.c
@@ -594,7 +594,6 @@ int gprs_ns_vty_init(struct gprs_ns_inst *nsi)
install_element(CONFIG_NODE, &cfg_ns_cmd);
install_node(&ns_node, config_write_ns);
- vty_install_default(L_NS_NODE);
install_element(L_NS_NODE, &cfg_nse_nsvci_cmd);
install_element(L_NS_NODE, &cfg_nse_remoteip_cmd);
install_element(L_NS_NODE, &cfg_nse_remoteport_cmd);
diff --git a/src/vty/command.c b/src/vty/command.c
index 8ad2e975..21b26b4e 100644
--- a/src/vty/command.c
+++ b/src/vty/command.c
@@ -149,8 +149,10 @@ static const char *node_name_from_prompt(const char *prompt, char *name_buf, siz
return name_buf;
}
-/*! Install top node of command vector. */
-void install_node(struct cmd_node *node, int (*func) (struct vty *))
+static void install_basic_node_commands(int node);
+
+/*! Install top node of command vector, without adding basic node commands. */
+static void install_node_bare(struct cmd_node *node, int (*func) (struct vty *))
{
vector_set_index(cmdvec, node->node, node);
node->func = func;
@@ -159,6 +161,13 @@ void install_node(struct cmd_node *node, int (*func) (struct vty *))
node_name_from_prompt(node->prompt, node->name, sizeof(node->name));
}
+/*! Install top node of command vector. */
+void install_node(struct cmd_node *node, int (*func) (struct vty *))
+{
+ install_node_bare(node, func);
+ install_basic_node_commands(node->node);
+}
+
/* Compare two command's string. Used in sort_node (). */
static int cmp_node(const void *p, const void *q)
{
@@ -3599,8 +3608,23 @@ void host_config_set(const char *filename)
host.config = talloc_strdup(tall_vty_cmd_ctx, filename);
}
+/*! Deprecated, now happens implicitly when calling install_node().
+ * Users of the API may still attempt to call this function, hence
+ * leave it here as a no-op. */
void install_default(int node)
{
+}
+
+/*! Deprecated, now happens implicitly when calling install_node().
+ * Users of the API may still attempt to call this function, hence
+ * leave it here as a no-op. */
+void vty_install_default(int node)
+{
+}
+
+/*! Install common commands like 'exit' and 'list'. */
+static void install_basic_node_commands(int node)
+{
install_element(node, &config_help_cmd);
install_element(node, &config_list_cmd);
@@ -3609,11 +3633,6 @@ void install_default(int node)
install_element(node, &config_write_memory_cmd);
install_element(node, &config_write_cmd);
install_element(node, &show_running_config_cmd);
-}
-
-void vty_install_default(int node)
-{
- install_default(node);
install_element(node, &config_exit_cmd);
@@ -3681,10 +3700,10 @@ void cmd_init(int terminal)
host.motdfile = NULL;
/* Install top nodes. */
- install_node(&view_node, NULL);
+ install_node_bare(&view_node, NULL);
install_node(&enable_node, NULL);
- install_node(&auth_node, NULL);
- install_node(&auth_enable_node, NULL);
+ install_node_bare(&auth_node, NULL);
+ install_node_bare(&auth_enable_node, NULL);
install_node(&config_node, config_write_host);
/* Each node's basic commands. */
@@ -3701,7 +3720,6 @@ void cmd_init(int terminal)
}
if (terminal) {
- vty_install_default(ENABLE_NODE);
install_element(ENABLE_NODE, &config_disable_cmd);
install_element(ENABLE_NODE, &config_terminal_cmd);
install_element (ENABLE_NODE, &copy_runningconfig_startupconfig_cmd);
@@ -3714,8 +3732,6 @@ void cmd_init(int terminal)
install_element(ENABLE_NODE, &config_terminal_length_cmd);
install_element(ENABLE_NODE, &config_terminal_no_length_cmd);
install_element(ENABLE_NODE, &echo_cmd);
-
- vty_install_default(CONFIG_NODE);
}
install_element(CONFIG_NODE, &hostname_cmd);
diff --git a/src/vty/logging_vty.c b/src/vty/logging_vty.c
index 01480b10..0ab76861 100644
--- a/src/vty/logging_vty.c
+++ b/src/vty/logging_vty.c
@@ -776,7 +776,6 @@ void logging_vty_add_cmds()
install_element_ve(&show_alarms_cmd);
install_node(&cfg_log_node, config_write_log);
- vty_install_default(CFG_LOG_NODE);
install_element(CFG_LOG_NODE, &logging_fltr_all_cmd);
install_element(CFG_LOG_NODE, &logging_use_clr_cmd);
install_element(CFG_LOG_NODE, &logging_prnt_timestamp_cmd);
diff --git a/src/vty/stats_vty.c b/src/vty/stats_vty.c
index 57cdd308..a4c73fa0 100644
--- a/src/vty/stats_vty.c
+++ b/src/vty/stats_vty.c
@@ -594,7 +594,6 @@ void osmo_stats_vty_add_cmds()
install_element(CONFIG_NODE, &cfg_stats_interval_cmd);
install_node(&cfg_stats_node, config_write_stats);
- vty_install_default(CFG_STATS_NODE);
install_element(CFG_STATS_NODE, &cfg_stats_reporter_local_ip_cmd);
install_element(CFG_STATS_NODE, &cfg_no_stats_reporter_local_ip_cmd);
diff --git a/src/vty/vty.c b/src/vty/vty.c
index 3d9c0d64..aef73b3a 100644
--- a/src/vty/vty.c
+++ b/src/vty/vty.c
@@ -1798,7 +1798,6 @@ void vty_init(struct vty_app_info *app_info)
install_element(ENABLE_NODE, &terminal_monitor_cmd);
install_element(ENABLE_NODE, &terminal_no_monitor_cmd);
- vty_install_default(VTY_NODE);
install_element(VTY_NODE, &vty_login_cmd);
install_element(VTY_NODE, &no_vty_login_cmd);
install_element(VTY_NODE, &vty_bind_cmd);
diff --git a/tests/vty/vty_test.c b/tests/vty/vty_test.c
index fe50e4c2..2542baf3 100644
--- a/tests/vty/vty_test.c
+++ b/tests/vty/vty_test.c
@@ -386,17 +386,14 @@ void test_vty_add_cmds()
{
install_element(CONFIG_NODE, &cfg_level1_cmd);
install_node(&level1_node, NULL);
- vty_install_default(LEVEL1_NODE);
install_element(LEVEL1_NODE, &cfg_level1_child_cmd);
install_element(LEVEL1_NODE, &cfg_level2_cmd);
install_node(&level2_node, NULL);
- vty_install_default(LEVEL2_NODE);
install_element(LEVEL2_NODE, &cfg_level2_child_cmd);
install_element(LEVEL2_NODE, &cfg_level3_cmd);
install_node(&level3_node, NULL);
- vty_install_default(LEVEL3_NODE);
install_element(LEVEL3_NODE, &cfg_level3_child_cmd);
}