diff options
-rw-r--r-- | src/vty/command.c | 28 | ||||
-rw-r--r-- | tests/vty/vty_test.c | 6 | ||||
-rw-r--r-- | tests/vty/vty_test.ok | 4 |
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' |