summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/vty/command.c28
-rw-r--r--tests/vty/vty_test.c6
-rw-r--r--tests/vty/vty_test.ok4
3 files changed, 5 insertions, 33 deletions
diff --git a/src/vty/command.c b/src/vty/command.c
index 33862c0d..52c71913 100644
--- a/src/vty/command.c
+++ b/src/vty/command.c
@@ -2111,12 +2111,10 @@ int
cmd_execute_command(vector vline, struct vty *vty, struct cmd_element **cmd,
int vtysh)
{
- int ret, saved_ret, tried = 0;
+ int ret;
enum node_type onode;
- void *oindex;
onode = vty->node;
- oindex = vty->index;
if (cmd_try_do_shortcut(vty->node, vector_slot(vline, 0))) {
vector shifted_vline;
@@ -2139,29 +2137,7 @@ cmd_execute_command(vector vline, struct vty *vty, struct cmd_element **cmd,
return ret;
}
- saved_ret = ret = cmd_execute_command_real(vline, vty, cmd);
-
- if (vtysh)
- return saved_ret;
-
- /* Go to parent for config nodes to attempt to find the right command */
- while (ret != CMD_SUCCESS && ret != CMD_WARNING
- && is_config_child(vty)) {
- vty_go_parent(vty);
- ret = cmd_execute_command_real(vline, vty, cmd);
- tried = 1;
- if (ret == CMD_SUCCESS || ret == CMD_WARNING) {
- /* succesfull command, leave the node as is */
- return ret;
- }
- }
- /* no command succeeded, reset the vty to the original node and
- return the error for this node */
- if (tried) {
- vty->node = onode;
- vty->index = oindex;
- }
- return saved_ret;
+ return cmd_execute_command_real(vline, vty, cmd);
}
/* Execute command by argument readline. */
diff --git a/tests/vty/vty_test.c b/tests/vty/vty_test.c
index 1e1b495a..d84bf419 100644
--- a/tests/vty/vty_test.c
+++ b/tests/vty/vty_test.c
@@ -155,14 +155,12 @@ static void test_node_tree_structure(void)
OSMO_ASSERT(vty->node == ENABLE_NODE);
- /* Check searching the parents nodes for matching commands. */
+ /* Check for not searching the parent node for matching commands. */
OSMO_ASSERT(do_vty_command(vty, "configure terminal") == CMD_SUCCESS);
OSMO_ASSERT(vty->node == CONFIG_NODE);
OSMO_ASSERT(do_vty_command(vty, "log stderr") == CMD_SUCCESS);
OSMO_ASSERT(vty->node == CFG_LOG_NODE);
- OSMO_ASSERT(do_vty_command(vty, "line vty") == CMD_SUCCESS);
- OSMO_ASSERT(vty->node == VTY_NODE);
- OSMO_ASSERT(do_vty_command(vty, "log stderr") == CMD_SUCCESS);
+ OSMO_ASSERT(do_vty_command(vty, "line vty") == CMD_ERR_NO_MATCH);
OSMO_ASSERT(vty->node == CFG_LOG_NODE);
OSMO_ASSERT(do_vty_command(vty, "end") == CMD_SUCCESS);
OSMO_ASSERT(vty->node == ENABLE_NODE);
diff --git a/tests/vty/vty_test.ok b/tests/vty/vty_test.ok
index a9e283d9..2b6d5a67 100644
--- a/tests/vty/vty_test.ok
+++ b/tests/vty/vty_test.ok
@@ -36,9 +36,7 @@ Returned: 0, Current node: 4 '%s(config)# '
Going to execute 'log stderr'
Returned: 0, Current node: 7 '%s(config-log)# '
Going to execute 'line vty'
-Returned: 0, Current node: 9 '%s(config-line)# '
-Going to execute 'log stderr'
-Returned: 0, Current node: 7 '%s(config-log)# '
+Returned: 2, Current node: 7 '%s(config-log)# '
Going to execute 'end'
Returned: 0, Current node: 3 '%s# '
Going to execute 'exit'