Skip to content

Commit

Permalink
Merge pull request #14498 from idryzhov/fix-conf-t-file-lock
Browse files Browse the repository at this point in the history
Fixes for `file-lock` mode of configuration node
  • Loading branch information
ton31337 authored Sep 28, 2023
2 parents 52cc7f1 + 1a09cf3 commit 0af4541
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 4 deletions.
4 changes: 2 additions & 2 deletions lib/command.c
Original file line number Diff line number Diff line change
Expand Up @@ -1316,8 +1316,8 @@ DEFUN (config_terminal,
config_terminal_cmd,
"configure [terminal [file-lock]]",
"Configuration from vty interface\n"
"Configuration with locked datastores\n"
"Configuration terminal\n")
"Configuration terminal\n"
"Configuration with locked datastores\n")
{
return vty_config_enter(vty, false, false, argc == 3);
}
Expand Down
8 changes: 8 additions & 0 deletions lib/vty.c
Original file line number Diff line number Diff line change
Expand Up @@ -2890,6 +2890,12 @@ int vty_config_enter(struct vty *vty, bool private_config, bool exclusive,
}
assert(vty->mgmt_locked_candidate_ds);
assert(vty->mgmt_locked_running_ds);

/*
* As datastores are locked explicitly, we don't need implicit
* commits and should allow pending changes.
*/
vty->pending_allowed = true;
}

vty->node = CONFIG_NODE;
Expand Down Expand Up @@ -2946,6 +2952,8 @@ int vty_config_node_exit(struct vty *vty)

/* TODO: could we check for un-commited changes here? */

vty->pending_allowed = false;

if (vty->mgmt_locked_running_ds)
vty_mgmt_unlock_running_inline(vty);

Expand Down
16 changes: 14 additions & 2 deletions vtysh/vtysh.c
Original file line number Diff line number Diff line change
Expand Up @@ -2379,15 +2379,26 @@ DEFUNSH(VTYSH_REALLYALL, vtysh_disable, vtysh_disable_cmd, "disable",
}

DEFUNSH(VTYSH_REALLYALL, vtysh_config_terminal, vtysh_config_terminal_cmd,
"configure [terminal [file-lock]]",
"configure [terminal]",
"Configuration from vty interface\n"
"Configuration with locked datastores\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 terminal\n"
"Configuration with locked datastores\n")
{
vty->node = CONFIG_NODE;
vty->vtysh_file_locked = true;
return CMD_SUCCESS;
}

static int vtysh_exit(struct vty *vty)
{
struct cmd_node *cnode = vector_lookup(cmdvec, vty->node);
Expand Down Expand Up @@ -5021,6 +5032,7 @@ void vtysh_init_vty(void)
if (!user_mode)
install_element(VIEW_NODE, &vtysh_enable_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);

/* "exit" command. */
Expand Down

0 comments on commit 0af4541

Please sign in to comment.