vty: Fixed vty_down_level to move down from config nodes

When using ^D at config nodes above the CONFIG_NODE, the
go_parent_cb function is used to go down by one node. This
is equivalent to "exit" command.

Written-by: Andreas.Eversberg <jolly@eversberg.eu>
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
This commit is contained in:
Andreas.Eversberg 2011-11-10 23:09:35 +01:00 committed by Harald Welte
parent dc3be0a653
commit f948dbc442
2 changed files with 6 additions and 3 deletions

View File

@ -176,6 +176,7 @@ int vty_shell_serv (struct vty *);
void vty_hello (struct vty *);
void *vty_current_index(struct vty *);
int vty_current_node(struct vty *vty);
enum node_type vty_go_parent(struct vty *vty);
extern void *tall_vty_ctx;

View File

@ -802,9 +802,11 @@ static void vty_backward_word(struct vty *vty)
static void vty_down_level(struct vty *vty)
{
vty_out(vty, "%s", VTY_NEWLINE);
/* FIXME: we need to call the exit function of the specific node
* in question, not this generic one that doesn't know all nodes */
(*config_exit_cmd.func) (NULL, vty, 0, NULL);
/* call the exit function of the specific node */
if (vty->node > CONFIG_NODE)
vty_go_parent(vty);
else
(*config_exit_cmd.func) (NULL, vty, 0, NULL);
vty_prompt(vty);
vty->cp = 0;
}