libyang  2.0.7
libyang is YANG data modelling language parser and toolkit written (and providing API) in C.
plugins_exts.h
Go to the documentation of this file.
1 
15 #ifndef LY_PLUGINS_EXTS_H_
16 #define LY_PLUGINS_EXTS_H_
17 
18 #include "log.h"
19 #include "plugins.h"
20 #include "tree_edit.h"
21 #include "tree_schema.h"
22 
23 #include "plugins_exts_compile.h"
24 #include "plugins_exts_print.h"
25 
26 struct ly_ctx;
27 struct lyd_node;
28 struct lysc_ctx;
29 struct lysc_ext_instance;
30 struct lysc_ext_substmt;
31 struct lysp_ext_instance;
32 struct lyspr_ctx;
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
104 #define LYPLG_EXT_API_VERSION 1
105 
112 #define LYPLG_EXTENSIONS \
113  uint32_t plugins_extensions_apiver__ = LYPLG_EXT_API_VERSION; \
114  const struct lyplg_ext_record plugins_extensions__[]
115 
124 
140 typedef LY_ERR (*lyplg_ext_compile_clb)(struct lysc_ctx *cctx, const struct lysp_ext_instance *p_ext, struct lysc_ext_instance *c_ext);
141 
148 typedef void (*lyplg_ext_free_clb)(struct ly_ctx *ctx, struct lysc_ext_instance *ext);
149 
162 typedef LY_ERR (*lyplg_ext_data_validation_clb)(struct lysc_ext_instance *ext, struct lyd_node *node);
163 
174 typedef LY_ERR (*lyplg_ext_schema_printer_clb)(struct lyspr_ctx *ctx, struct lysc_ext_instance *ext, ly_bool *flag);
175 
179 struct lyplg_ext {
180  const char *id;
185 };
186 
188  /* plugin identification */
189  const char *module;
190  const char *revision;
195  const char *name;
197  /* runtime data */
198  struct lyplg_ext plugin;
199 };
200 
210 void lyplg_ext_log(const struct lysc_ext_instance *ext, LY_LOG_LEVEL level, LY_ERR err_no, const char *path,
211  const char *format, ...);
212 
215 #ifdef __cplusplus
216 }
217 #endif
218 
219 #endif /* LY_PLUGINS_EXTS_H_ */
libyang context handler.
LY_ERR
libyang's error codes returned by the libyang functions.
Definition: log.h:242
LY_LOG_LEVEL
Verbosity levels of the libyang logger.
Definition: log.h:86
lyplg_ext_free_clb free
Definition: plugins_exts.h:184
lyplg_ext_data_validation_clb validate
Definition: plugins_exts.h:182
const char * id
Definition: plugins_exts.h:180
const char * revision
Definition: plugins_exts.h:190
const char * module
Definition: plugins_exts.h:189
struct lyplg_ext plugin
Definition: plugins_exts.h:198
lyplg_ext_schema_printer_clb sprinter
Definition: plugins_exts.h:183
lyplg_ext_compile_clb compile
Definition: plugins_exts.h:181
const char * name
Definition: plugins_exts.h:195
LY_ERR(* lyplg_ext_schema_printer_clb)(struct lyspr_ctx *ctx, struct lysc_ext_instance *ext, ly_bool *flag)
Callback to print the compiled extension instance's private data in the INFO format.
Definition: plugins_exts.h:174
void(* lyplg_ext_free_clb)(struct ly_ctx *ctx, struct lysc_ext_instance *ext)
Callback to free the extension specific data created by the lyplg_ext_compile_clb callback of the sam...
Definition: plugins_exts.h:148
void lyplg_ext_instance_substatements_free(struct ly_ctx *ctx, struct lysc_ext_substmt *substmts)
Free the extension instance's data compiled with lys_compile_extension_instance().
LY_ERR(* lyplg_ext_data_validation_clb)(struct lysc_ext_instance *ext, struct lyd_node *node)
Callback to decide if data instance is valid according to the schema.
Definition: plugins_exts.h:162
LY_ERR(* lyplg_ext_compile_clb)(struct lysc_ctx *cctx, const struct lysp_ext_instance *p_ext, struct lysc_ext_instance *c_ext)
Callback to compile extension from the lysp_ext_instance to the lysc_ext_instance....
Definition: plugins_exts.h:140
void lyplg_ext_log(const struct lysc_ext_instance *ext, LY_LOG_LEVEL level, LY_ERR err_no, const char *path, const char *format,...)
Provide a log message from an extension plugin.
Extension plugin implementing various aspects of a YANG extension.
Definition: plugins_exts.h:179
YANG extension instance.
Definition: tree_schema.h:1425
Description of the extension instance substatements.
Definition: tree_schema.h:1415
YANG extension instance.
Definition: tree_schema.h:523
Logger manipulation routines and error definitions.
uint8_t ly_bool
Type to indicate boolean value.
Definition: log.h:25
Plugins manipulation.
libyang support for YANG extensions implementation - schema compilation related items.
libyang support for YANG extensions implementation - schema print related items.
Generic structure for a data node.
Definition: tree_data.h:754
libyang generic macros and functions to modify YANG schema or data trees. Intended for internal use a...
libyang representation of YANG schema trees.