[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.
This commit is contained in:
Harald Welte 2010-05-14 19:11:04 +02:00
parent 93e90207f9
commit 54f7424b78
7 changed files with 39 additions and 0 deletions

View File

@ -15,5 +15,6 @@ struct buffer *vty_argv_to_buffer(int argc, const char *argv[], int base);
extern struct cmd_element cfg_description_cmd;
extern struct cmd_element cfg_no_description_cmd;
extern struct cmd_element ournode_exit_cmd;
extern struct cmd_element ournode_end_cmd;
#endif

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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",