summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Ryzhov <iryzhov@nfware.com>2023-11-16 20:00:07 +0100
committerMergify <37929162+mergify[bot]@users.noreply.github.com>2023-11-20 20:19:45 +0000
commitae1640befd4a4d07bae1b18694d90ef51173e4f6 (patch)
treed143649ace9da9be0f78cd3129baae6d4d106161
parent5f46d4ac50c6369f3912d2a0f98c619472856014 (diff)
vtysh: clean vtysh_file_locked when exiting config node
The flag should be cleared to make sure it's not reused the next time we enter the config node. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com> (cherry picked from commit 40def43dfa889b43f343498dae0cd196420a4023)
-rw-r--r--vtysh/vtysh.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c
index bd283803fe..e87a69d821 100644
--- a/vtysh/vtysh.c
+++ b/vtysh/vtysh.c
@@ -1652,6 +1652,7 @@ static int vtysh_end(void)
/* Nothing to do. */
break;
default:
+ vty->vtysh_file_locked = false;
vty->node = ENABLE_NODE;
break;
}
@@ -2396,14 +2397,18 @@ static int vtysh_exit(struct vty *vty)
vty->node = cnode->parent_node;
if (vty->node == CONFIG_NODE) {
+ bool locked = vty->vtysh_file_locked;
+
/* resync in case one of the daemons is somewhere else */
vtysh_execute("end");
/* NOTE: a rather expensive thing to do, can we avoid it? */
- if (vty->vtysh_file_locked)
+ if (locked)
vtysh_execute("configure terminal file-lock");
else
vtysh_execute("configure terminal");
+ } else if (vty->node == ENABLE_NODE) {
+ vty->vtysh_file_locked = false;
}
return CMD_SUCCESS;