![]() |
libyang
2.0.7
libyang is YANG data modelling language parser and toolkit written (and providing API) in C.
|
Modules | |
Plugins: Extensions compilation support | |
Plugins: Extensions printer support | |
Data Structures | |
struct | lyplg_ext |
Extension plugin implementing various aspects of a YANG extension. More... | |
struct | lyplg_ext_record |
Macros | |
#define | LYPLG_EXT_API_VERSION 1 |
Extensions API version. More... | |
#define | LYPLG_EXTENSIONS |
Macro to define plugin information in external plugins. More... | |
Typedefs | |
typedef 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. The later structure is generally prepared and only the extension specific data are supposed to be added (if any). More... | |
typedef 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. More... | |
typedef 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 same extension plugin. More... | |
typedef 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. More... | |
Functions | |
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(). More... | |
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. More... | |
Structures and functions to for libyang plugins implementing specific YANG extensions defined in YANG modules. For more information, see Type Plugins.
This part of libyang API is available by including <libyang/plugins_ext.h>
header file.
struct lyplg_ext |
Extension plugin implementing various aspects of a YANG extension.
Definition at line 179 of file plugins_exts.h.
Data Fields | ||
---|---|---|
lyplg_ext_compile_clb | compile |
Callback to compile extension instance from the parsed data |
lyplg_ext_free_clb | free |
Free the extension instance specific data created by lyplg_ext.compile callback |
const char * | id |
Plugin identification (mainly for distinguish incompatible versions of the plugins for external tools) |
lyplg_ext_schema_printer_clb | sprinter |
Callback to print the compiled content (info format) of the extension instance |
lyplg_ext_data_validation_clb | validate |
Callback to decide if data instance is valid according to the schema. |
struct lyplg_ext_record |
Definition at line 187 of file plugins_exts.h.
Data Fields | ||
---|---|---|
const char * | module |
name of the module where the extension is defined |
const char * | name |
name of the extension |
struct lyplg_ext | plugin |
data to utilize plugin implementation |
const char * | revision |
optional module revision - if not specified, the plugin applies to any revision, which is not an optimal approach due to a possible future revisions of the module. Instead, there should be defined multiple items in the plugins list, each with the different revision, but all with the same pointer to the plugin functions. The only valid use case for the NULL revision is the case the module has no revision. |
#define LYPLG_EXT_API_VERSION 1 |
Extensions API version.
Definition at line 104 of file plugins_exts.h.
#define LYPLG_EXTENSIONS |
Macro to define plugin information in external plugins.
Use as follows: LYPLG_EXTENSIONS = {{<filled information of lyplg_ext_record>}, ..., {0}};
Definition at line 112 of file plugins_exts.h.
typedef 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. The later structure is generally prepared and only the extension specific data are supposed to be added (if any).
The parsed generic statements can be processed by the callback on its own or the lys_compile_extension_instance function can be used to let the compilation to libyang following the standard rules for processing the YANG statements.
[in] | cctx | Current compile context. |
[in] | p_ext | Parsed extension instance data. |
[in,out] | c_ext | Prepared compiled extension instance structure where an addition, extension-specific, data are supposed to be placed for later use (data validation or use of external tool). |
Definition at line 140 of file plugins_exts.h.
typedef 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.
The callback is used only for the extension instances placed in the data nodes or type (the lysc_ext_instance.parent_stmt value must be LY_STMT_IS_DATA_NODE() values or LY_STMT_TYPE):
[in] | ext | Extension instance to be checked. |
[in] | node | Data node connected with the extension instance. |
Definition at line 162 of file plugins_exts.h.
typedef 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 same extension plugin.
[in] | ctx | libyang context. |
[in,out] | ext | Compiled extension structure where the data to free are placed. |
Definition at line 148 of file plugins_exts.h.
typedef 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.
[in] | ctx | YANG printer context to provide output handler and other information for printing. |
[in] | ext | The compiled extension instance, mainly to access the extensions. |
[in,out] | flag | Flag to be shared with the caller regarding the opening brackets - 0 if the '{' not yet printed, 1 otherwise. |
Definition at line 174 of file plugins_exts.h.
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().
[in] | ctx | libyang context |
[in] | substmts | The sized array of extension instance's substatements. The whole array is freed except the storage places which are expected to be covered by the extension plugin. |
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.
[in] | ext | Compiled extension structure providing generic information about the extension/plugin causing the message. |
[in] | level | Log message level (error, warning, etc.) |
[in] | err_no | Error type code. |
[in] | path | Path relevant to the message. |
[in] | format | Format string to print. |