summaryrefslogtreecommitdiff
path: root/src/reference_tree.ml
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@vyos.io>2026-02-12 14:16:57 +0000
committerGitHub <noreply@github.com>2026-02-12 14:16:57 +0000
commit6ebd5d80f9a212beba6352494392ae811f66d64e (patch)
treebb70c867d45318ab5d15bbde87b0079d716c277f /src/reference_tree.ml
parent6cf3918875b11dd94f9dc380b4083cc4258da74c (diff)
parent5d201299b11e736e3a2c682e62d17cb9f2ef120a (diff)
downloadvyos1x-config-6ebd5d80f9a212beba6352494392ae811f66d64e.tar.gz
vyos1x-config-6ebd5d80f9a212beba6352494392ae811f66d64e.zip
Merge pull request #65 from jestabro/config-dict
T8232: Simplify and extend config_dict construction
Diffstat (limited to 'src/reference_tree.ml')
-rw-r--r--src/reference_tree.ml20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/reference_tree.ml b/src/reference_tree.ml
index 81e45cf..10cc833 100644
--- a/src/reference_tree.ml
+++ b/src/reference_tree.ml
@@ -94,6 +94,8 @@ let default_data = {
let default = Vytree.make default_data ""
+let make name = Vytree.make default_data name
+
(* Loading from XML *)
let node_type_of_string s =
@@ -602,6 +604,22 @@ let get_default_value reftree path =
let data = (Vytree.get_data[@alert "-exn"]) reftree path in
data.default_value
+let get_subtree ?(with_node=false) node path =
+ (* alert exn Vytree.get:
+ [Vytree.Empty_path] checked
+ [Vytree.Nonexistent_path] caught
+ *)
+ match path with
+ | [] -> node
+ | _ ->
+ try
+ let n = (Vytree.get[@alert "-exn"]) node path in
+ if with_node then
+ Vytree.make_full default_data "" [n]
+ else
+ Vytree.make_full default_data "" (Vytree.children_of_node n)
+ with Vytree.Nonexistent_path -> make ""
+
(* Convert from config path to reference tree path *)
let refpath reftree path =
let check_existence p =
@@ -933,7 +951,7 @@ let validate_tree_filter dir rt ct =
List.fold_left try_validate (p, (ctree, out)) l'
in
let tree, out =
- snd (Vytree.fold_tree_with_path validate_path_filter ([], (ct, "")) ct)
+ Vytree.fold_tree_with_path validate_path_filter ([], (ct, "")) ct
in
tree, out