1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/**
* @file validation.h
* @author Michal Vasko <mvasko@cesnet.cz>
* @brief Validation routines.
*
* Copyright (c) 2019 - 2022 CESNET, z.s.p.o.
*
* This source code is licensed under BSD 3-Clause License (the "License").
* You may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://opensource.org/licenses/BSD-3-Clause
*/
;
;
;
;
;
/**
* @brief Add new changes into a diff. They are always merged.
*
* @param[in] node Node/subtree to add.
* @param[in] op Operation of the change.
* @param[in,out] diff Diff to update.
* @return LY_ERR value.
*/
LY_ERR ;
/**
* @brief Finish validation of nodes and attributes. Specifically, when (is processed first) and type validation.
*
* !! It is assumed autodeleted nodes cannot be in the unresolved node type set !!
*
* @param[in,out] tree Data tree, is updated if some nodes are autodeleted.
* @param[in] mod Module of the @p tree to take into consideration when deleting @p tree and moving it.
* If set, it is expected @p tree should point to the first node of @p mod. Otherwise it will simply be
* the first top-level sibling.
* @param[in] data_type Validate data type.
* @param[in] node_when Set with nodes with "when" conditions, can be NULL.
* @param[in] when_xp_opts Additional XPath options to use for evaluating "when".
* @param[in] node_types Set with nodes with unresolved types, can be NULL
* @param[in] meta_types Set with metadata with unresolved types, can be NULL.
* @param[in] ext_node Set with nodes with extensions to validate, can be NULL.
* @param[in] ext_val Set with extension data to validate, can be NULL.
* @param[in] val_opts Validation options, see @ref datavalidationoptions.
* @param[in,out] diff Validation diff.
* @return LY_ERR value.
*/
LY_ERR ;
/**
* @brief Validate new siblings. Specifically, check duplicated instances, autodelete default values and cases.
*
* !! It is assumed autodeleted nodes cannot yet be in the unresolved node type set !!
*
* @param[in,out] first First sibling.
* @param[in] sparent Schema parent of the siblings, NULL for top-level siblings.
* @param[in] mod Module of the siblings, NULL for nested siblings.
* @param[in] val_opts Validation options.
* @param[in,out] diff Validation diff.
* @return LY_ERR value.
*/
LY_ERR ;
/**
* @brief Validate data node with an extension instance, if any, by storing it in its unres set.
*
* @param[in] node Node to check for an extension instance with a node callback.
* @param[in,out] ext_node Set with data nodes to validate.
* @return LY_ERR value.
*/
LY_ERR ;
/**
* @brief Validate a data tree.
*
* @param[in,out] tree Data tree to validate, nodes may be autodeleted.
* @param[in] module Module whose data (and schema restrictions) to validate, NULL for all modules.
* @param[in] ctx libyang context.
* @param[in] val_opts Validation options, see @ref datavalidationoptions.
* @param[in] validate_subtree Whether subtree was already validated (as part of data parsing) or not (separate validation).
* @param[in] node_when_p Set of nodes with when conditions, if NULL a local set is used.
* @param[in] node_types_p Set of unres node types, if NULL a local set is used.
* @param[in] meta_types_p Set of unres metadata types, if NULL a local set is used.
* @param[in] ext_node_p Set of unres nodes with extensions to validate, if NULL a local set is used.
* @param[in] ext_val_p Set of unres extension data to validate, if NULL a local set is used.
* @param[out] diff Generated validation diff, not generated if NULL.
* @return LY_ERR value.
*/
LY_ERR ;
/* LY_VALIDATION_H_ */