From: Igor Ryzhov Date: Wed, 27 Sep 2023 23:41:16 +0000 (+0300) Subject: vty: fix working in file-lock mode X-Git-Tag: docker/9.0.2~35^2~1 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=8a1ca709f855769ebda3189a74d04d090be9aee1;p=matthieu%2Ffrr.git vty: fix working in file-lock mode When the configuration node is entered in file-lock mode, candidate and running datastores are locked. Any configuration change is followed by an implicit commit which leads to a crash of mgmtd, because double lock is prohibited by an assert. When working in file-lock mode, we shouldn't do implicit commits which is disabled by allowing pending configuration changes. Signed-off-by: Igor Ryzhov (cherry picked from commit d3aa9adb8da2a3d2fc4c7d926e2135c261bd2764) --- diff --git a/lib/vty.c b/lib/vty.c index 23aa2d1f38..6217cfe73c 100644 --- a/lib/vty.c +++ b/lib/vty.c @@ -2884,6 +2884,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; @@ -2940,6 +2946,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);