summaryrefslogtreecommitdiff
path: root/src/session.ml
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2025-04-06 22:02:52 -0500
committerJohn Estabrook <jestabro@vyos.io>2025-04-11 13:32:31 -0500
commitb109872b5c29f401ecf059c7d763f14d8ed51134 (patch)
tree347b6bc11d0b006251a49af706d20c9edf30530c /src/session.ml
parent9e8feea52140222c689af1439eb7be63a9e121da (diff)
downloadvyconf-b109872b5c29f401ecf059c7d763f14d8ed51134.tar.gz
vyconf-b109872b5c29f401ecf059c7d763f14d8ed51134.zip
T7321: add session_changed check
Diffstat (limited to 'src/session.ml')
-rw-r--r--src/session.ml10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/session.ml b/src/session.ml
index 953df25..8cfe355 100644
--- a/src/session.ml
+++ b/src/session.ml
@@ -1,4 +1,5 @@
module CT = Vyos1x.Config_tree
+module CD = Vyos1x.Config_diff
module VT = Vyos1x.Vytree
module RT = Vyos1x.Reference_tree
module D = Directories
@@ -110,6 +111,15 @@ let delete w s path =
let discard w s =
{s with proposed_config=w.running_config}
+let session_changed w s =
+ (* structural equality test requires consistent ordering, which is
+ * practised, but may be unreliable; test actual difference
+ *)
+ let diff = CD.diff_tree [] w.running_config s.proposed_config in
+ let add_tree = CT.get_subtree diff ["add"] in
+ let del_tree = CT.get_subtree diff ["del"] in
+ (del_tree <> CT.default) || (add_tree <> CT.default)
+
let load w s file =
let ct = Vyos1x.Config_file.load_config file in
match ct with