From 50cfb780d229919fbe6b49fde627becdd3cd3d97 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Wed, 25 Aug 2010 13:23:53 +0800 Subject: vty: Move the assumption of the config nodes into a function Move the assumption that something is a child of the CONFIG_NODE into a new function. The next step will be to use something else for that. --- src/vty/command.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/vty/command.c b/src/vty/command.c index 598e63cc..bec28a0d 100644 --- a/src/vty/command.c +++ b/src/vty/command.c @@ -139,6 +139,12 @@ static int cmp_desc(const void *p, const void *q) return strcmp(a->cmd, b->cmd); } +static int is_config(struct vty *vty) +{ + /* Assume that everything above CONFIG_NODE is a config node */ + return vty->node > CONFIG_NODE; +} + /* Sort each node's command element according to command string. */ void sort_node() { @@ -1947,9 +1953,9 @@ cmd_execute_command(vector vline, struct vty *vty, struct cmd_element **cmd, if (vtysh) return saved_ret; - /* This assumes all nodes above CONFIG_NODE are childs of CONFIG_NODE */ + /* Go to parent for config nodes to attempt to find the right command */ while (ret != CMD_SUCCESS && ret != CMD_WARNING - && vty->node > CONFIG_NODE) { + && is_config(vty)) { vty_go_parent(vty); ret = cmd_execute_command_real(vline, vty, cmd); tried = 1; @@ -2097,7 +2103,7 @@ int config_from_file(struct vty *vty, FILE * fp) /* Try again with setting node to CONFIG_NODE */ while (ret != CMD_SUCCESS && ret != CMD_WARNING && ret != CMD_ERR_NOTHING_TODO - && vty->node != CONFIG_NODE) { + && vty->node != CONFIG_NODE && is_config(vty)) { vty_go_parent(vty); ret = cmd_execute_command_strict(vline, vty, NULL); } -- cgit v1.2.3