libyang  2.1.111
libyang is YANG data modelling language parser and toolkit written (and providing API) in C.
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
parser_data.h
Go to the documentation of this file.
1 
16 #ifndef LY_PARSER_DATA_H_
17 #define LY_PARSER_DATA_H_
18 
19 #include "tree_data.h"
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 struct ly_in;
26 
139 /* note: keep the lower 16bits free for use by LYD_VALIDATE_ flags. They are not supposed to be combined together,
140  * but since they are used (as a separate parameter) together in some functions, we want to keep them in a separated
141  * range to be able detect that the caller put wrong flags into the parser/validate options parameter. */
142 #define LYD_PARSE_ONLY 0x010000
145 #define LYD_PARSE_STRICT 0x020000
147 #define LYD_PARSE_OPAQ 0x040000
149 #define LYD_PARSE_NO_STATE 0x080000
151 #define LYD_PARSE_LYB_MOD_UPDATE 0x100000
154 #define LYD_PARSE_ORDERED 0x200000
160 #define LYD_PARSE_SUBTREE 0x400000
163 #define LYD_PARSE_WHEN_TRUE 0x800000
166 #define LYD_PARSE_NO_NEW 0x1000000
170 #define LYD_PARSE_OPTS_MASK 0xFFFF0000
197 #define LYD_VALIDATE_NO_STATE 0x0001
199 #define LYD_VALIDATE_PRESENT 0x0002
200 #define LYD_VALIDATE_MULTI_ERROR 0x0004
201 #define LYD_VALIDATE_OPERATIONAL 0x0008
203 #define LYD_VALIDATE_NO_DEFAULTS 0x0010
207 #define LYD_VALIDATE_OPTS_MASK 0x0000FFFF
224 LIBYANG_API_DECL LY_ERR lyd_parse_data(const struct ly_ctx *ctx, struct lyd_node *parent, struct ly_in *in, LYD_FORMAT format,
225  uint32_t parse_options, uint32_t validate_options, struct lyd_node **tree);
226 
241 LIBYANG_API_DECL LY_ERR lyd_parse_data_mem(const struct ly_ctx *ctx, const char *data, LYD_FORMAT format, uint32_t parse_options,
242  uint32_t validate_options, struct lyd_node **tree);
243 
259 LIBYANG_API_DECL LY_ERR lyd_parse_data_fd(const struct ly_ctx *ctx, int fd, LYD_FORMAT format, uint32_t parse_options,
260  uint32_t validate_options, struct lyd_node **tree);
261 
276 LIBYANG_API_DECL LY_ERR lyd_parse_data_path(const struct ly_ctx *ctx, const char *path, LYD_FORMAT format,
277  uint32_t parse_options, uint32_t validate_options, struct lyd_node **tree);
278 
298 LIBYANG_API_DECL LY_ERR lyd_parse_ext_data(const struct lysc_ext_instance *ext, struct lyd_node *parent, struct ly_in *in,
299  LYD_FORMAT format, uint32_t parse_options, uint32_t validate_options, struct lyd_node **tree);
300 
312 enum lyd_type {
313  LYD_TYPE_DATA_YANG = 0, /* generic YANG instance data */
314  LYD_TYPE_RPC_YANG, /* instance of a YANG RPC/action request with only "input" data children,
315  including all parents and optional top-level "action" element in case of an action */
316  LYD_TYPE_NOTIF_YANG, /* instance of a YANG notification, including all parents in case of a nested one */
317  LYD_TYPE_REPLY_YANG, /* instance of a YANG RPC/action reply with only "output" data children,
318  including all parents in case of an action */
319 
320  LYD_TYPE_RPC_NETCONF, /* complete NETCONF RPC invocation as defined for
321  [RPC](https://tools.ietf.org/html/rfc7950#section-7.14.4) and
322  [action](https://tools.ietf.org/html/rfc7950#section-7.15.2) */
323  LYD_TYPE_NOTIF_NETCONF, /* complete NETCONF notification message as defined for
324  [notification](https://tools.ietf.org/html/rfc7950#section-7.16.2) */
325  LYD_TYPE_REPLY_NETCONF, /* complete NETCONF RPC reply as defined for
326  [RPC](https://tools.ietf.org/html/rfc7950#section-7.14.4) and
327  [action](https://tools.ietf.org/html/rfc7950#section-7.15.2) */
328 
329  LYD_TYPE_RPC_RESTCONF, /* message-body of a RESTCONF operation input parameters
330  ([ref](https://www.rfc-editor.org/rfc/rfc8040.html#section-3.6.1)) */
331  LYD_TYPE_NOTIF_RESTCONF, /* RESTCONF JSON notification data
332  ([ref](https://www.rfc-editor.org/rfc/rfc8040.html#section-6.4)), to parse
333  a notification in XML, use ::LYD_TYPE_NOTIF_NETCONF */
334  LYD_TYPE_REPLY_RESTCONF /* message-body of a RESTCONF operation output parameters
335  ([ref](https://www.rfc-editor.org/rfc/rfc8040.html#section-3.6.2)) */
336 };
400 LIBYANG_API_DECL LY_ERR lyd_parse_op(const struct ly_ctx *ctx, struct lyd_node *parent, struct ly_in *in, LYD_FORMAT format,
401  enum lyd_type data_type, struct lyd_node **tree, struct lyd_node **op);
402 
443 LIBYANG_API_DECL LY_ERR lyd_parse_ext_op(const struct lysc_ext_instance *ext, struct lyd_node *parent, struct ly_in *in,
444  LYD_FORMAT format, enum lyd_type data_type, struct lyd_node **tree, struct lyd_node **op);
445 
459 LIBYANG_API_DECL LY_ERR lyd_validate_all(struct lyd_node **tree, const struct ly_ctx *ctx, uint32_t val_opts,
460  struct lyd_node **diff);
461 
475 LIBYANG_API_DECL LY_ERR lyd_validate_module(struct lyd_node **tree, const struct lys_module *module, uint32_t val_opts,
476  struct lyd_node **diff);
477 
490 LIBYANG_API_DECL LY_ERR lyd_validate_op(struct lyd_node *op_tree, const struct lyd_node *dep_tree, enum lyd_type data_type,
491  struct lyd_node **diff);
492 
495 #ifdef __cplusplus
496 }
497 #endif
498 
499 #endif /* LY_PARSER_DATA_H_ */
Generic structure for a data node.
Definition: tree_data.h:781
YANG extension compiled instance.
Definition: plugins_exts.h:436
LIBYANG_API_DECL LY_ERR lyd_validate_module(struct lyd_node **tree, const struct lys_module *module, uint32_t val_opts, struct lyd_node **diff)
Fully validate a data tree of a module.
LIBYANG_API_DECL LY_ERR lyd_parse_ext_op(const struct lysc_ext_instance *ext, struct lyd_node *parent, struct ly_in *in, LYD_FORMAT format, enum lyd_type data_type, struct lyd_node **tree, struct lyd_node **op)
Parse extension data into an operation data tree following only the specification from the given exte...
struct lyd_node_inner * parent
Definition: tree_data.h:788
LIBYANG_API_DECL LY_ERR lyd_validate_op(struct lyd_node *op_tree, const struct lyd_node *dep_tree, enum lyd_type data_type, struct lyd_node **diff)
Validate an RPC/action request, reply, or notification. Only the operation data tree (input/output/no...
LIBYANG_API_DECL LY_ERR lyd_validate_all(struct lyd_node **tree, const struct ly_ctx *ctx, uint32_t val_opts, struct lyd_node **diff)
Fully validate a data tree.
libyang representation of YANG data trees.
Parser input structure specifying where the data are read.
LYD_FORMAT
Data input/output formats supported by libyang parser and printer functions.
Definition: tree_data.h:533
lyd_type
Definition: parser_data.h:333
Available YANG schema tree structures representing YANG module.
Definition: tree_schema.h:2100
LIBYANG_API_DECL LY_ERR lyd_parse_ext_data(const struct lysc_ext_instance *ext, struct lyd_node *parent, struct ly_in *in, LYD_FORMAT format, uint32_t parse_options, uint32_t validate_options, struct lyd_node **tree)
Parse (and validate) data from the input handler as an extension data tree following the schema tree ...
LIBYANG_API_DECL LY_ERR lyd_parse_data_path(const struct ly_ctx *ctx, const char *path, LYD_FORMAT format, uint32_t parse_options, uint32_t validate_options, struct lyd_node **tree)
Parse (and validate) input data as a YANG data tree.
LIBYANG_API_DECL LY_ERR lyd_parse_op(const struct ly_ctx *ctx, struct lyd_node *parent, struct ly_in *in, LYD_FORMAT format, enum lyd_type data_type, struct lyd_node **tree, struct lyd_node **op)
Parse YANG data into an operation data tree. Specific parsing flags LYD_PARSE_ONLY, LYD_PARSE_STRICT and no validation flags are used.
LY_ERR
libyang's error codes returned by the libyang functions.
Definition: log.h:254
LIBYANG_API_DECL LY_ERR lyd_parse_data_mem(const struct ly_ctx *ctx, const char *data, LYD_FORMAT format, uint32_t parse_options, uint32_t validate_options, struct lyd_node **tree)
Parse (and validate) input data as a YANG data tree.
libyang context handler.
LIBYANG_API_DECL LY_ERR lyd_parse_data_fd(const struct ly_ctx *ctx, int fd, LYD_FORMAT format, uint32_t parse_options, uint32_t validate_options, struct lyd_node **tree)
Parse (and validate) input data as a YANG data tree.