validation NEW state data checking
Separate flag for validation and parsers.
The reason is to allow not validating
parsed data but checking for state data
such as for <get-config> reply.
diff --git a/src/validation.c b/src/validation.c
index eb28b7c..80766f9 100644
--- a/src/validation.c
+++ b/src/validation.c
@@ -782,6 +782,11 @@
break;
}
+ if ((val_opts & LYD_VALOPT_NO_STATE) && (node->schema->flags & LYS_CONFIG_R)) {
+ LOGVAL(node->schema->module->ctx, LY_VLOG_LYD, node, LY_VCODE_INSTATE, node->schema->name);
+ return LY_EVALID;
+ }
+
/* node's schema if-features */
if ((snode = lysc_node_is_disabled(node->schema, 1))) {
LOGVAL(node->schema->module->ctx, LY_VLOG_LYD, node, LY_VCODE_NOIFF, snode->name);
@@ -790,7 +795,7 @@
/* TODO node's must */
/* TODO node status */
- /* TODO list all keys existence */
+ /* TODO list all keys existence (take LYD_OPT_EMPTY_INST into consideration) */
/* node value including if-feature is checked by plugins */
}
@@ -921,6 +926,11 @@
LY_CHECK_ARG_RET(NULL, tree, *tree || ctx || (modules && mod_count), LY_EINVAL);
+ if (val_opts & ~LYD_VALOPT_MASK) {
+ LOGERR(ctx, LY_EINVAL, "Some invalid flags passed to validation.");
+ return LY_EINVAL;
+ }
+
next = *tree;
while (1) {
if (val_opts & LYD_VALOPT_DATA_ONLY) {