summaryrefslogtreecommitdiff
path: root/src/cstore/cstore.cpp
diff options
context:
space:
mode:
authorAn-Cheng Huang <ancheng@vyatta.com>2010-08-20 13:29:49 -0700
committerAn-Cheng Huang <ancheng@vyatta.com>2010-08-20 13:29:49 -0700
commitcbd1770462b2325372f90ef9200110dc66245377 (patch)
tree0bc0e2e3cb08576d20acc727d9a4e4521ea01428 /src/cstore/cstore.cpp
parent6c98b67a95f4bc35a801720dcca8460a75dcaed7 (diff)
downloadvyatta-cfg-cbd1770462b2325372f90ef9200110dc66245377.tar.gz
vyatta-cfg-cbd1770462b2325372f90ef9200110dc66245377.zip
handle "changed" status properly
* original backend implementation uses unionfs-specific "changes only" dir to determine "changed" status. this breaks when it involves deactivated nodes. * new library design uses explicit per-node "changed" marker. however, since previously "commit" only handles a root "changed" marker, the new library could not implement this scheme and used a workaround instead. * now add API functions for "commit" to properly clean up "changed" markers. * modify "commit" to use these API functions and remove the workaround from the new library.
Diffstat (limited to 'src/cstore/cstore.cpp')
-rw-r--r--src/cstore/cstore.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/cstore/cstore.cpp b/src/cstore/cstore.cpp
index ebf9585..0634988 100644
--- a/src/cstore/cstore.cpp
+++ b/src/cstore/cstore.cpp
@@ -1791,6 +1791,22 @@ Cstore::markCfgPathChanged(const vector<string>& path_comps)
return true;
}
+/* unmark "changed" status of specified path in working config.
+ * this is used, e.g., at the end of "commit" to reset a subtree.
+ * note: unmarking a node means all of its descendants are also unmarked,
+ * i.e., they become "unchanged".
+ * return true if successful. otherwise return false.
+ */
+bool
+Cstore::unmarkCfgPathChanged(const vector<string>& path_comps)
+{
+ SAVE_PATHS;
+ append_cfg_path(path_comps);
+ bool ret = unmark_changed_with_descendants();
+ RESTORE_PATHS;
+ return ret;
+}
+
////// protected functions
void