vtysh: fix entering configuration node in file-lock mode

When the config node is entered in file-lock mode, we should actually
remember it to correctly apply the workaround in `vtysh_exit`.
Otherwise, the file-lock mode is dropped once we exit any node one level
below the config node.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
This commit is contained in:
Igor Ryzhov 2023-09-28 02:45:05 +03:00
parent d3aa9adb8d
commit 1a09cf3894

View File

@ -2379,12 +2379,23 @@ DEFUNSH(VTYSH_REALLYALL, vtysh_disable, vtysh_disable_cmd, "disable",
} }
DEFUNSH(VTYSH_REALLYALL, vtysh_config_terminal, vtysh_config_terminal_cmd, DEFUNSH(VTYSH_REALLYALL, vtysh_config_terminal, vtysh_config_terminal_cmd,
"configure [terminal [file-lock]]", "configure [terminal]",
"Configuration from vty interface\n"
"Configuration terminal\n")
{
vty->node = CONFIG_NODE;
return CMD_SUCCESS;
}
DEFUNSH(VTYSH_REALLYALL, vtysh_config_terminal_file_lock,
vtysh_config_terminal_file_lock_cmd,
"configure terminal file-lock",
"Configuration from vty interface\n" "Configuration from vty interface\n"
"Configuration terminal\n" "Configuration terminal\n"
"Configuration with locked datastores\n") "Configuration with locked datastores\n")
{ {
vty->node = CONFIG_NODE; vty->node = CONFIG_NODE;
vty->vtysh_file_locked = true;
return CMD_SUCCESS; return CMD_SUCCESS;
} }
@ -5021,6 +5032,7 @@ void vtysh_init_vty(void)
if (!user_mode) if (!user_mode)
install_element(VIEW_NODE, &vtysh_enable_cmd); install_element(VIEW_NODE, &vtysh_enable_cmd);
install_element(ENABLE_NODE, &vtysh_config_terminal_cmd); install_element(ENABLE_NODE, &vtysh_config_terminal_cmd);
install_element(ENABLE_NODE, &vtysh_config_terminal_file_lock_cmd);
install_element(ENABLE_NODE, &vtysh_disable_cmd); install_element(ENABLE_NODE, &vtysh_disable_cmd);
/* "exit" command. */ /* "exit" command. */