diff FEATURE support for state list merging
diff --git a/src/diff.c b/src/diff.c
index 05c79d9..3a447d6 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -1427,6 +1427,11 @@
ret = lyd_diff_merge_replace(diff_node, cur_op, src_diff);
break;
case LYD_DIFF_OP_CREATE:
+ if ((cur_op == LYD_DIFF_OP_CREATE) && lysc_is_dup_inst_list(diff_node->schema)) {
+ /* special case of creating duplicate state (leaf-)list instances */
+ goto add_diff;
+ }
+
ret = lyd_diff_merge_create(diff_node, cur_op, src_diff, options);
break;
case LYD_DIFF_OP_DELETE:
@@ -1456,6 +1461,7 @@
LY_CHECK_RET(lyd_diff_merge_r(child, diff_parent, diff_cb, cb_data, options, diff));
}
} else {
+add_diff:
/* add new diff node with all descendants */
LY_CHECK_RET(lyd_dup_single(src_diff, (struct lyd_node_inner *)diff_parent, LYD_DUP_RECURSIVE | LYD_DUP_WITH_FLAGS,
&diff_node));