This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.
Jacob Erlbeck jerlbeck at sysmocom.deThis patch removes an assertion of node > CONFIG_NODE and changes the function to handle all nodes properly. For the sake of completeness, the generic exit command implementation is extended to work properly with all nodes, too. --- src/vty/command.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/vty/command.c b/src/vty/command.c index 7f76ced..38a32cf 100644 --- a/src/vty/command.c +++ b/src/vty/command.c @@ -29,7 +29,6 @@ Boston, MA 02111-1307, USA. */ #include <errno.h> #define _XOPEN_SOURCE #include <unistd.h> -#include <assert.h> #include <ctype.h> #include <time.h> #include <sys/time.h> @@ -1884,21 +1883,31 @@ char **cmd_complete_command(vector vline, struct vty *vty, int *status) } /* return parent node */ -/* MUST eventually converge on CONFIG_NODE */ +/* + * MUST eventually converge either on CONFIG_NODE for every config node or + * on CONFIG_ENABLE for every other user defined node. + */ enum node_type vty_go_parent(struct vty *vty) { - assert(vty->node > CONFIG_NODE); - switch (vty->node) { + case AUTH_NODE: + case VIEW_NODE: + case ENABLE_NODE: case CONFIG_NODE: break; + case AUTH_ENABLE_NODE: + vty->node = VIEW_NODE; + break; + case CFG_LOG_NODE: case VTY_NODE: vty->node = CONFIG_NODE; break; default: + if (vty->node > CONFIG_NODE); + if (host.app_info->go_parent_cb) host.app_info->go_parent_cb(vty); else @@ -2267,6 +2276,7 @@ gDEFUN(config_exit, config_exit_cmd, "exit", "Exit current mode and down to previous mode\n") { switch (vty->node) { + case AUTH_NODE: case VIEW_NODE: case ENABLE_NODE: if (0) //vty_shell (vty)) -- 1.7.9.5