summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2026-05-22 16:13:14 -0500
committerJohn Estabrook <jestabro@vyos.io>2026-05-26 16:37:17 -0500
commit02c748b9213f7d207d17e54f8d1208305e0c8e04 (patch)
treed89cba7167a4984b8f03f28f21cdfba132e9c7a6 /src
parent9de43599e2abcc2ea5846134e14349b9c3370606 (diff)
downloadvyos1x-config-02c748b9213f7d207d17e54f8d1208305e0c8e04.tar.gz
vyos1x-config-02c748b9213f7d207d17e54f8d1208305e0c8e04.zip
T8916: add missing descendents along paths in subtree_from_partial
Diffstat (limited to 'src')
-rw-r--r--src/config_diff.ml10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/config_diff.ml b/src/config_diff.ml
index c00705d..cbb4544 100644
--- a/src/config_diff.ml
+++ b/src/config_diff.ml
@@ -792,19 +792,19 @@ let subtree_from_partial reftree ctree result path =
| [] -> false
| _ -> (Vytree.exists[@alert "-exn"]) ctree p
in
- let clone_node tree p =
+ let clone_node ?(recurse=false) tree p =
if (Vytree.exists[@alert "-exn"]) tree p then
tree
else
if not ((Vytree.exists[@alert "-exn"]) ctree p) then
tree
else
- clone ~recurse:false ctree tree p
+ clone ~recurse:recurse ctree tree p
in
let clone_children tree p =
let children = Vytree.list_children ((Vytree.get[@alert "-exn"]) ctree p) in
let paths = List.map (fun n -> p @ [n]) children in
- List.fold_left clone_node tree paths
+ List.fold_left (clone_node ~recurse:true) tree paths
in
let rec aux acc path_done p =
if not (check_reftree (path_done @ p)) then
@@ -833,9 +833,7 @@ let subtree_from_partial reftree ctree result path =
else
(* [h] is a tag_value not present in the config tree *)
raise (Malformed_path (Util.string_of_list p'))
- | _, [] ->
- if (Config_tree.is_tag[@alert "-exn"]) ctree path_done then clone_children acc path_done
- else acc
+ | _, [] -> clone_children acc path_done
in aux result [] path