aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2010-05-14 19:11:04 +0200
committerHarald Welte <laforge@gnumonks.org>2010-05-14 19:11:04 +0200
commit54f7424b78d8c3032e05d3f4d68e7ebf3bf92200 (patch)
tree2683db641b081a839eddd106542bc8d7a698a66b /openbsc/src
parent93e90207f90ec5c5a022501d2c1a45fa5b398662 (diff)
[VTY] Introduce "end" command that works from any level in config
Using "end" you can always return to the "enable" level, and from there the "show" commands are available. So no more need for exit/exit/exit/exit/disable.
Diffstat (limited to 'openbsc/src')
-rw-r--r--openbsc/src/gprs/gb_proxy_vty.c1
-rw-r--r--openbsc/src/gprs/gprs_ns_vty.c1
-rw-r--r--openbsc/src/gprs/sgsn_vty.c1
-rw-r--r--openbsc/src/mgcp/mgcp_vty.c1
-rw-r--r--openbsc/src/vty_interface.c4
-rw-r--r--openbsc/src/vty_interface_cmds.c30
6 files changed, 38 insertions, 0 deletions
diff --git a/openbsc/src/gprs/gb_proxy_vty.c b/openbsc/src/gprs/gb_proxy_vty.c
index babb089db..a8501d11c 100644
--- a/openbsc/src/gprs/gb_proxy_vty.c
+++ b/openbsc/src/gprs/gb_proxy_vty.c
@@ -159,6 +159,7 @@ int gbproxy_vty_init(void)
install_node(&gbproxy_node, config_write_gbproxy);
install_default(GBPROXY_NODE);
install_element(GBPROXY_NODE, &ournode_exit_cmd);
+ install_element(GBPROXY_NODE, &ournode_end_cmd);
install_element(GBPROXY_NODE, &cfg_nsip_bss_local_ip_cmd);
install_element(GBPROXY_NODE, &cfg_nsip_bss_local_port_cmd);
install_element(GBPROXY_NODE, &cfg_nsip_sgsn_ip_cmd);
diff --git a/openbsc/src/gprs/gprs_ns_vty.c b/openbsc/src/gprs/gprs_ns_vty.c
index b18e65171..410c35f6b 100644
--- a/openbsc/src/gprs/gprs_ns_vty.c
+++ b/openbsc/src/gprs/gprs_ns_vty.c
@@ -283,6 +283,7 @@ int gprs_ns_vty_init(struct gprs_ns_inst *nsi)
install_node(&ns_node, config_write_ns);
install_default(NS_NODE);
install_element(NS_NODE, &ournode_exit_cmd);
+ install_element(NS_NODE, &ournode_end_cmd);
install_element(NS_NODE, &cfg_nse_nsvci_cmd);
install_element(NS_NODE, &cfg_nse_remoteip_cmd);
install_element(NS_NODE, &cfg_nse_remoteport_cmd);
diff --git a/openbsc/src/gprs/sgsn_vty.c b/openbsc/src/gprs/sgsn_vty.c
index 4dc62573c..d56a27904 100644
--- a/openbsc/src/gprs/sgsn_vty.c
+++ b/openbsc/src/gprs/sgsn_vty.c
@@ -127,6 +127,7 @@ int sgsn_vty_init(void)
install_node(&sgsn_node, config_write_sgsn);
install_default(SGSN_NODE);
install_element(SGSN_NODE, &ournode_exit_cmd);
+ install_element(SGSN_NODE, &ournode_end_cmd);
install_element(SGSN_NODE, &cfg_nsip_local_ip_cmd);
install_element(SGSN_NODE, &cfg_nsip_local_port_cmd);
diff --git a/openbsc/src/mgcp/mgcp_vty.c b/openbsc/src/mgcp/mgcp_vty.c
index 6d2aff074..2804ce9b7 100644
--- a/openbsc/src/mgcp/mgcp_vty.c
+++ b/openbsc/src/mgcp/mgcp_vty.c
@@ -245,6 +245,7 @@ int mgcp_vty_init(void)
install_node(&mgcp_node, config_write_mgcp);
install_default(MGCP_NODE);
install_element(MGCP_NODE, &ournode_exit_cmd);
+ install_element(MGCP_NODE, &ournode_end_cmd);
install_element(MGCP_NODE, &cfg_mgcp_local_ip_cmd);
install_element(MGCP_NODE, &cfg_mgcp_bts_ip_cmd);
install_element(MGCP_NODE, &cfg_mgcp_bind_ip_cmd);
diff --git a/openbsc/src/vty_interface.c b/openbsc/src/vty_interface.c
index 1823132ed..89dabe3d5 100644
--- a/openbsc/src/vty_interface.c
+++ b/openbsc/src/vty_interface.c
@@ -1955,6 +1955,7 @@ int bsc_vty_init(struct gsm_network *net)
install_node(&net_node, config_write_net);
install_default(GSMNET_NODE);
install_element(GSMNET_NODE, &ournode_exit_cmd);
+ install_element(GSMNET_NODE, &ournode_end_cmd);
install_element(GSMNET_NODE, &cfg_net_ncc_cmd);
install_element(GSMNET_NODE, &cfg_net_mnc_cmd);
install_element(GSMNET_NODE, &cfg_net_name_short_cmd);
@@ -1988,6 +1989,7 @@ int bsc_vty_init(struct gsm_network *net)
install_node(&bts_node, config_write_bts);
install_default(BTS_NODE);
install_element(BTS_NODE, &ournode_exit_cmd);
+ install_element(BTS_NODE, &ournode_end_cmd);
install_element(BTS_NODE, &cfg_bts_type_cmd);
install_element(BTS_NODE, &cfg_description_cmd);
install_element(BTS_NODE, &cfg_no_description_cmd);
@@ -2026,6 +2028,7 @@ int bsc_vty_init(struct gsm_network *net)
install_node(&trx_node, dummy_config_write);
install_default(TRX_NODE);
install_element(TRX_NODE, &ournode_exit_cmd);
+ install_element(TRX_NODE, &ournode_end_cmd);
install_element(TRX_NODE, &cfg_trx_arfcn_cmd);
install_element(TRX_NODE, &cfg_description_cmd);
install_element(TRX_NODE, &cfg_no_description_cmd);
@@ -2039,6 +2042,7 @@ int bsc_vty_init(struct gsm_network *net)
install_node(&ts_node, dummy_config_write);
install_default(TS_NODE);
install_element(TS_NODE, &ournode_exit_cmd);
+ install_element(TS_NODE, &ournode_end_cmd);
install_element(TS_NODE, &cfg_ts_pchan_cmd);
install_element(TS_NODE, &cfg_ts_e1_subslot_cmd);
diff --git a/openbsc/src/vty_interface_cmds.c b/openbsc/src/vty_interface_cmds.c
index 134a8d3a3..a2d3258c0 100644
--- a/openbsc/src/vty_interface_cmds.c
+++ b/openbsc/src/vty_interface_cmds.c
@@ -120,6 +120,36 @@ gDEFUN(ournode_exit,
return CMD_SUCCESS;
}
+/* End of configuration. */
+gDEFUN(ournode_end,
+ ournode_end_cmd, "end", "End current mode and change to enable mode.")
+{
+ switch (vty->node) {
+ case VIEW_NODE:
+ case ENABLE_NODE:
+ /* Nothing to do. */
+ break;
+ case CONFIG_NODE:
+ case GSMNET_NODE:
+ case BTS_NODE:
+ case TRX_NODE:
+ case TS_NODE:
+ case MGCP_NODE:
+ case GBPROXY_NODE:
+ case SGSN_NODE:
+ case NS_NODE:
+ case VTY_NODE:
+ vty_config_unlock(vty);
+ vty->node = ENABLE_NODE;
+ vty->index = NULL;
+ vty->index_sub = NULL;
+ break;
+ default:
+ break;
+ }
+ return CMD_SUCCESS;
+}
+
DEFUN(enable_logging,
enable_logging_cmd,
"logging enable",