![]() |
libyang 2.1.4
libyang is YANG data modelling language parser and toolkit written (and providing API) in C.
|
Modules | |
Schema compile flags | |
Data Structures | |
struct | lyplg_ext |
Extension plugin implementing various aspects of a YANG extension. More... | |
struct | lyplg_ext_record |
struct | lysc_ext_instance |
YANG extension compiled instance. More... | |
struct | lysc_ext_substmt |
Structure representing a compiled known YANG substatement in an extension instance. More... | |
struct | lysp_ext_instance |
YANG extension parsed instance. More... | |
struct | lysp_ext_substmt |
Structure representing a parsed known YANG substatement in an extension instance. More... | |
struct | lysp_stmt |
Structure representing a generic parsed YANG substatement in an extension instance. More... | |
Macros | |
#define | LY_STMT_DATA_NODE_MASK |
Mask for a data node statement. More... | |
#define | LY_STMT_NODE_MASK 0xFFFF |
Mask for a node statement. More... | |
#define | LY_STMT_OP_MASK (LY_STMT_ACTION | LY_STMT_RPC) |
Mask for an operation statement. More... | |
#define | LYPLG_EXT_API_VERSION 6 |
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 *extp, struct lysc_ext_instance *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 void(* | lyplg_ext_compile_free_clb) (const struct ly_ctx *ctx, struct lysc_ext_instance *ext) |
Callback to free the extension-specific data created by its compilation. More... | |
typedef LY_ERR(* | lyplg_ext_data_node_clb) (struct lysc_ext_instance *ext, struct lyd_node *node, uint32_t validate_options) |
Callback called for all data nodes connected to the extension instance. More... | |
typedef LY_ERR(* | lyplg_ext_data_snode_clb) (struct lysc_ext_instance *ext, const struct lyd_node *parent, const struct lysc_node *sparent, const char *prefix, size_t prefix_len, LY_VALUE_FORMAT format, void *prefix_data, const char *name, size_t name_len, const struct lysc_node **snode) |
Callback for getting a schema node for a new YANG instance data described by an extension instance. Needed only if the extension instance supports some nested standard YANG data. More... | |
typedef LY_ERR(* | lyplg_ext_data_validate_clb) (struct lysc_ext_instance *ext, struct lyd_node *sibling, const struct lyd_node *dep_tree, enum lyd_type data_type, uint32_t val_opts, struct lyd_node **diff) |
Callback for validating parsed YANG instance data described by an extension instance. More... | |
typedef LY_ERR(* | lyplg_ext_parse_clb) (struct lysp_ctx *pctx, struct lysp_ext_instance *ext) |
Callback for parsing extension instance substatements. More... | |
typedef void(* | lyplg_ext_parse_free_clb) (const struct ly_ctx *ctx, struct lysp_ext_instance *ext) |
Callback to free the extension-specific data created by its parsing. More... | |
typedef LY_ERR(* | lyplg_ext_sprinter_ctree_clb) (struct lysc_ext_instance *ext, const struct lyspr_tree_ctx *ctx, const char **flags, const char **add_opts) |
Callback to print parent node of ext or to print the contents of the extension. More... | |
typedef LY_ERR(* | lyplg_ext_sprinter_ctree_override_clb) (const struct lysc_node *node, const void *plugin_priv, ly_bool *skip, const char **flags, const char **add_opts) |
Callback for rewriting the tree-diagram form of a specific node. More... | |
typedef LY_ERR(* | lyplg_ext_sprinter_info_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... | |
typedef LY_ERR(* | lyplg_ext_sprinter_ptree_clb) (struct lysp_ext_instance *ext, const struct lyspr_tree_ctx *ctx, const char **flags, const char **add_opts) |
Callback to print parent node of ext or to print the contents of the extension. More... | |
typedef LY_ERR(* | lyplg_ext_sprinter_ptree_override_clb) (const struct lysp_node *node, const void *plugin_priv, ly_bool *skip, const char **flags, const char **add_opts) |
Callback for rewriting the tree-diagram form of a specific node. More... | |
Functions | |
LIBYANG_API_DECL void | lyplg_ext_cfree_instance_substatements (const struct ly_ctx *ctx, struct lysc_ext_substmt *substmts) |
Free the extension instance's data compiled with ::lys_compile_extension_instance(). More... | |
LIBYANG_API_DECL LY_ERR | lyplg_ext_compile_extension_instance (struct lysc_ctx *ctx, const struct lysp_ext_instance *extp, struct lysc_ext_instance *ext) |
Compile substatements of an extension instance. More... | |
LIBYANG_API_DECL struct ly_ctx * | lyplg_ext_compile_get_ctx (const struct lysc_ctx *ctx) |
YANG schema compilation context getter for libyang context. More... | |
LIBYANG_API_DECL const struct lys_module * | lyplg_ext_compile_get_cur_mod (const struct lysc_ctx *ctx) |
YANG schema compilation context getter for current module. More... | |
LIBYANG_API_DECL uint32_t * | lyplg_ext_compile_get_options (const struct lysc_ctx *ctx) |
YANG schema compilation context getter for compilation options. More... | |
LIBYANG_API_DECL struct lysp_module * | lyplg_ext_compile_get_pmod (const struct lysc_ctx *ctx) |
YANG schema compilation context getter for currently processed module. More... | |
LIBYANG_API_DECL void | lyplg_ext_compile_log (const struct lysc_ctx *cctx, const struct lysc_ext_instance *ext, LY_LOG_LEVEL level, LY_ERR err_no, const char *format,...) |
Log a message from an extension plugin using the compiled extension instance. More... | |
LIBYANG_API_DECL void | lyplg_ext_compile_log_path (const char *path, const struct lysc_ext_instance *ext, LY_LOG_LEVEL level, LY_ERR err_no, const char *format,...) |
Log a message from an extension plugin using the compiled extension instance with an explicit error path. More... | |
LIBYANG_API_DECL LY_ERR | lyplg_ext_get_data (const struct ly_ctx *ctx, const struct lysc_ext_instance *ext, void **ext_data, ly_bool *ext_data_free) |
Get specific run-time extension instance data from a callback set by ly_ctx_set_ext_data_clb(). More... | |
LIBYANG_API_DECL LY_ERR | lyplg_ext_get_storage (const struct lysc_ext_instance *ext, int stmt, uint32_t storage_size, const void **storage) |
Get compiled ext instance storage for a specific statement. More... | |
LIBYANG_API_DECL LY_ERR | lyplg_ext_insert (struct lyd_node *parent, struct lyd_node *first) |
Insert extension instance data into a parent. More... | |
LIBYANG_API_DECL enum ly_stmt | lyplg_ext_nodetype2stmt (uint16_t nodetype) |
Convert nodetype to statement identifier. More... | |
LIBYANG_API_DECL LY_ERR | lyplg_ext_parse_extension_instance (struct lysp_ctx *pctx, struct lysp_ext_instance *ext) |
Parse substatements of an extension instance. More... | |
LIBYANG_API_DECL const struct lysp_module * | lyplg_ext_parse_get_cur_pmod (const struct lysp_ctx *pctx) |
Get current parsed module from a parse context. More... | |
LIBYANG_API_DECL void | lyplg_ext_parse_log (const struct lysp_ctx *pctx, const struct lysp_ext_instance *ext, LY_LOG_LEVEL level, LY_ERR err_no, const char *format,...) |
Log a message from an extension plugin using the parsed extension instance. More... | |
LIBYANG_API_DECL LY_ERR | lyplg_ext_parsed_get_storage (const struct lysc_ext_instance *ext, int stmt, uint32_t storage_size, const void **storage) |
Get parsed ext instance storage for a specific statement. More... | |
LIBYANG_API_DECL void | lyplg_ext_pfree_instance_substatements (const struct ly_ctx *ctx, struct lysp_ext_substmt *substmts) |
Free the extension instance's data parsed with ::lys_parse_extension_instance(). More... | |
LIBYANG_API_DECL uint16_t * | lyplg_ext_print_get_level (const struct lyspr_ctx *ctx) |
YANG printer context getter for printer indentation level. More... | |
LIBYANG_API_DECL uint32_t * | lyplg_ext_print_get_options (const struct lyspr_ctx *ctx) |
YANG printer context getter for printer options. More... | |
LIBYANG_API_DECL struct ly_out ** | lyplg_ext_print_get_out (const struct lyspr_ctx *ctx) |
YANG printer context getter for output handler. More... | |
LIBYANG_API_DECL void | lyplg_ext_print_info_extension_instance (struct lyspr_ctx *ctx, const struct lysc_ext_instance *ext, ly_bool *flag) |
Print substatements of an extension instance in info format (compiled YANG). More... | |
LIBYANG_API_DECL LY_ERR | lyplg_ext_schema_mount_create_context (const struct lysc_ext_instance *ext, struct ly_ctx **ctx) |
Allocate a new context for a particular instance of the yangmnt:mount-point extension. Caller is responsible for destroying the resulting context. More... | |
LIBYANG_API_DECL LY_ERR | lyplg_ext_schema_mount_get_parent_ref (const struct lysc_ext_instance *ext, struct ly_set **refs) |
Expand parent-reference xpath expressions. More... | |
LIBYANG_API_DECL LY_ERR | lyplg_ext_sprinter_ctree_add_ext_nodes (const struct lyspr_tree_ctx *ctx, struct lysc_ext_instance *ext, lyplg_ext_sprinter_ctree_override_clb clb) |
Registration of printing a group of nodes, which is already in the extension. More... | |
LIBYANG_API_DECL LY_ERR | lyplg_ext_sprinter_ctree_add_nodes (const struct lyspr_tree_ctx *ctx, struct lysc_node *nodes, lyplg_ext_sprinter_ctree_override_clb clb) |
Registration of printing the group of nodes which were defined in the plugin. More... | |
LIBYANG_API_DECL LY_ERR | lyplg_ext_sprinter_ptree_add_ext_nodes (const struct lyspr_tree_ctx *ctx, struct lysp_ext_instance *ext, lyplg_ext_sprinter_ptree_override_clb clb) |
Registration of printing a group of nodes, which is already in the extension. More... | |
LIBYANG_API_DECL LY_ERR | lyplg_ext_sprinter_ptree_add_nodes (const struct lyspr_tree_ctx *ctx, struct lysp_node *nodes, lyplg_ext_sprinter_ptree_override_clb clb) |
Registration of printing the group of nodes which were defined in the plugin. More... | |
LIBYANG_API_DECL LY_ERR | lyplg_ext_sprinter_tree_set_priv (const struct lyspr_tree_ctx *ctx, void *plugin_priv, void(*free_clb)(void *plugin_priv)) |
Registration of plugin-private data defined by the plugin that is shared between override_clb calls. More... | |
LIBYANG_API_DECL const char * | lyplg_ext_stmt2str (enum ly_stmt stmt) |
Stringify statement identifier. 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 892 of file plugins_exts.h.
Data Fields | ||
---|---|---|
lyplg_ext_compile_free_clb | cfree |
free the extension-specific data created by its compilation |
lyplg_ext_compile_clb | compile |
callback to compile extension instance from the parsed data |
const char * | id |
plugin identification (mainly for distinguish incompatible versions of the plugins for external tools) |
lyplg_ext_data_node_clb | node |
callback to validate most relevant data instance for the extension instance |
lyplg_ext_parse_clb | parse |
callback to parse the extension instance substatements |
lyplg_ext_parse_free_clb | pfree |
free the extension-specific data created by its parsing |
lyplg_ext_sprinter_ctree_clb | printer_ctree |
callback to print tree format of compiled node containing the compiled content of the extension instance |
lyplg_ext_sprinter_info_clb | printer_info |
callback to print the compiled content (info format) of the extension instance |
lyplg_ext_sprinter_ptree_clb | printer_ptree |
callback to print tree format of parsed node containing the parsed content of the extension instance |
lyplg_ext_data_snode_clb | snode |
callback to get schema node for nested YANG data |
lyplg_ext_data_validate_clb | validate |
callback to validate parsed data instances according to the extension definition |
struct lyplg_ext_record |
Definition at line 913 of file plugins_exts.h.
Data Fields | ||
---|---|---|
const char * | module |
name of the module where the extension is defined |
const char * | name |
YANG 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. |
struct lysc_ext_instance |
YANG extension compiled instance.
Definition at line 436 of file plugins_exts.h.
Data Fields | ||
---|---|---|
const char * | argument |
optional value of the extension's argument |
void * | compiled |
private plugin compiled data |
struct lysc_ext * | def |
pointer to the extension definition |
struct lysc_ext_instance * | exts |
list of the extension instances (sized array) |
struct lys_module * | module |
module where the extension instantiated is defined |
void * | parent |
pointer to the parent element holding the extension instance(s), use lysc_ext_instance::parent_stmt to access the value/structure |
enum ly_stmt | parent_stmt |
type of the parent statement |
uint64_t | parent_stmt_index |
index of the stamenet in case the parent does not point to the parent statement directly and it is an array |
struct lysc_ext_substmt * | substmts |
list of supported known YANG statements with the pointer to their compiled data (sized array) |
struct lysc_ext_substmt |
Structure representing a compiled known YANG substatement in an extension instance.
Definition at line 427 of file plugins_exts.h.
Data Fields | ||
---|---|---|
enum ly_stmt | stmt |
compiled substatement |
void * | storage |
pointer to the compiled storage of the statement according to the specific lys_ext_substmt::stmt |
struct lysp_ext_instance |
YANG extension parsed instance.
Definition at line 403 of file plugins_exts.h.
Data Fields | ||
---|---|---|
const char * | argument |
optional value of the extension's argument |
struct lysp_stmt * | child |
list of generic (unknown) YANG statements |
struct lysp_ext * | def |
pointer to the extension definition |
uint16_t | flags |
LYS_INTERNAL value (Schema nodes flags) |
LY_VALUE_FORMAT | format |
prefix format of the extension name/argument (LY_VALUE_XML is YIN format) |
const char * | name |
extension identifier, including possible prefix |
void * | parent |
pointer to the parent statement holding the extension instance(s), use lysp_ext_instance::parent_stmt to access the value/structure |
enum ly_stmt | parent_stmt |
type of the parent statement |
uint64_t | parent_stmt_index |
index of the stamenet in case the parent does not point to the parent statement directly and it is an array |
void * | parsed |
private plugin parsed data |
void * | prefix_data |
format-specific data for prefix resolution (see ly_resolve_prefix()) |
const struct lyplg_ext_record * | record |
extension definition plugin record, if any |
struct lysp_ext_substmt * | substmts |
list of supported known YANG statements with the pointer to their parsed data (sized array) |
struct lysp_ext_substmt |
Structure representing a parsed known YANG substatement in an extension instance.
Definition at line 394 of file plugins_exts.h.
Data Fields | ||
---|---|---|
enum ly_stmt | stmt |
parsed substatement |
void * | storage |
pointer to the parsed storage of the statement according to the specific lys_ext_substmt::stmt |
struct lysp_stmt |
Structure representing a generic parsed YANG substatement in an extension instance.
Definition at line 379 of file plugins_exts.h.
Data Fields | ||
---|---|---|
const char * | arg |
statement's argument |
struct lysp_stmt * | child |
list of the statement's substatements (linked list) |
uint16_t | flags |
statement flags, can be set to LYS_YIN_ATTR |
LY_VALUE_FORMAT | format |
prefix format of the identifier/argument (LY_VALUE_XML is YIN format) |
enum ly_stmt | kw |
numeric respresentation of the stmt value |
struct lysp_stmt * | next |
link to the next statement |
void * | prefix_data |
Format-specific data for prefix resolution (see ly_resolve_prefix()) |
const char * | stmt |
identifier of the statement |
#define LY_STMT_DATA_NODE_MASK |
Mask for a data node statement.
This mask matches anydata, anyxml, case, choice, container, leaf, leaf-list, and list.
Definition at line 126 of file plugins_exts.h.
#define LY_STMT_NODE_MASK 0xFFFF |
Mask for a node statement.
This mask matches notification, input, output, action, RPC, anydata, anyxml, augment, case, choice, container, grouping, leaf, leaf-list, list, and uses.
Definition at line 135 of file plugins_exts.h.
#define LY_STMT_OP_MASK (LY_STMT_ACTION | LY_STMT_RPC) |
Mask for an operation statement.
This mask matches action and RPC.
Definition at line 119 of file plugins_exts.h.
#define LYPLG_EXT_API_VERSION 6 |
Extensions API version.
Definition at line 112 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 459 of file plugins_exts.h.
typedef LY_ERR(* lyplg_ext_compile_clb) (struct lysc_ctx *cctx, const struct lysp_ext_instance *extp, struct lysc_ext_instance *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] | extp | Parsed extension instance data. |
[in,out] | 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 557 of file plugins_exts.h.
typedef void(* lyplg_ext_compile_free_clb) (const struct ly_ctx *ctx, struct lysc_ext_instance *ext) |
Callback to free the extension-specific data created by its compilation.
[in] | ctx | libyang context. |
[in,out] | ext | Compiled extension structure to free. |
Definition at line 879 of file plugins_exts.h.
typedef LY_ERR(* lyplg_ext_data_node_clb) (struct lysc_ext_instance *ext, struct lyd_node *node, uint32_t validate_options) |
Callback called for all data nodes connected to the extension instance.
Can be used for additional data node validation. Is called only after the whole data tree is created and standard validation succeeds. Not called when parsing data and LYD_PARSE_ONLY is used.
[in] | ext | Compiled extension instance. |
[in] | node | Data node to process. |
[in] | validate_options | Options used for the validation phase, see Data validation options. |
Definition at line 799 of file plugins_exts.h.
typedef LY_ERR(* lyplg_ext_data_snode_clb) (struct lysc_ext_instance *ext, const struct lyd_node *parent, const struct lysc_node *sparent, const char *prefix, size_t prefix_len, LY_VALUE_FORMAT format, void *prefix_data, const char *name, size_t name_len, const struct lysc_node **snode) |
Callback for getting a schema node for a new YANG instance data described by an extension instance. Needed only if the extension instance supports some nested standard YANG data.
[in] | ext | Compiled extension instance. |
[in] | parent | Parsed parent data node. Set if sparent is NULL. |
[in] | sparent | Schema parent node. Set if parent is NULL. |
[in] | prefix | Element prefix, if any. |
[in] | prefix_len | Length of prefix . |
[in] | format | Format of prefix . |
[in] | prefix_data | Format-specific prefix data. |
[in] | name | Element name. |
[in] | name_len | Length of name . |
[out] | snode | Schema node to use for parsing the node. |
ext
. Definition at line 823 of file plugins_exts.h.
typedef LY_ERR(* lyplg_ext_data_validate_clb) (struct lysc_ext_instance *ext, struct lyd_node *sibling, const struct lyd_node *dep_tree, enum lyd_type data_type, uint32_t val_opts, struct lyd_node **diff) |
Callback for validating parsed YANG instance data described by an extension instance.
This callback is used only for nested data definition (with a standard YANG schema parent).
[in] | ext | Compiled extension instance. |
[in] | sibling | First sibling with schema node returned by lyplg_ext_data_snode_clb. |
[in] | dep_tree | Tree to be used for validating references from the operation subtree, if operation. |
[in] | data_type | Validated data type, can be LYD_TYPE_DATA_YANG, LYD_TYPE_RPC_YANG, LYD_TYPE_NOTIF_YANG, or LYD_TYPE_REPLY_YANG. |
[in] | val_opts | Validation options, see Data validation options. |
[out] | diff | Optional diff with any changes made by the validation. |
Definition at line 846 of file plugins_exts.h.
typedef LY_ERR(* lyplg_ext_parse_clb) (struct lysp_ctx *pctx, struct lysp_ext_instance *ext) |
Callback for parsing extension instance substatements.
All known YANG substatements can easily be parsed using ::lys_parse_extension_instance.
[in] | pctx | Parse context. |
[in,out] | ext | Parsed extension instance data. |
Definition at line 478 of file plugins_exts.h.
typedef void(* lyplg_ext_parse_free_clb) (const struct ly_ctx *ctx, struct lysp_ext_instance *ext) |
Callback to free the extension-specific data created by its parsing.
[in] | ctx | libyang context. |
[in,out] | ext | Parsed extension structure to free. |
Definition at line 859 of file plugins_exts.h.
typedef LY_ERR(* lyplg_ext_sprinter_ctree_clb) (struct lysc_ext_instance *ext, const struct lyspr_tree_ctx *ctx, const char **flags, const char **add_opts) |
Callback to print parent node of ext
or to print the contents of the extension.
Function is called in two different cases. If the printer_tree needs the tree-diagram form of a parent node, then ctx
is set to NULL. In the second case, if printer_tree needs to print the contents of the extension, then ctx
is set and function must prepare the nodes that should be printed using the lyplg_ext_sprinter_tree* functions.
[in] | ext | Extension instance. |
[in,out] | ctx | Context for the tree printer. Extension contents can be inserted into it by functions lyplg_ext_sprinter_ctree_add_ext_nodes(), lyplg_ext_sprinter_ctree_add_nodes() or by their ptree alternatives. It parameter is set to NULL, then flags and add_opts are used by printer_tree. |
[out] | flags | Optional override tree-diagram <flags> in a parent node. If ctx is set, ignore this parameter. |
[out] | add_opts | Additional tree-diagram <opts> string in a parent node which is printed before <opts>. If ctx is set, ignore this parameter. |
Definition at line 708 of file plugins_exts.h.
typedef LY_ERR(* lyplg_ext_sprinter_ctree_override_clb) (const struct lysc_node *node, const void *plugin_priv, ly_bool *skip, const char **flags, const char **add_opts) |
Callback for rewriting the tree-diagram form of a specific node.
If this callback is set, then it is called for each node that belongs to the extension instance.
[in] | node | Node whose tree-diagram form can be modified by the function. |
[in,out] | plugin_priv | Private context set by plugin. |
[out] | skip | Flag set to 1 removes the node from printed diagram. |
[out] | flags | Override tree-diagram <flags> string in the node . |
[out] | add_opts | Additional tree-diagram <opts> string in the node which is printed before <opts>. |
Definition at line 723 of file plugins_exts.h.
typedef LY_ERR(* lyplg_ext_sprinter_info_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 647 of file plugins_exts.h.
typedef LY_ERR(* lyplg_ext_sprinter_ptree_clb) (struct lysp_ext_instance *ext, const struct lyspr_tree_ctx *ctx, const char **flags, const char **add_opts) |
Callback to print parent node of ext
or to print the contents of the extension.
Function is called in two different cases. If the printer_tree needs the tree-diagram form of a parent node, then ctx
is set to NULL. In the second case, if printer_tree needs to print the contents of the extension, then ctx
is set and function must prepare the nodes that should be printed using the lyplg_ext_sprinter_tree* functions.
[in] | ext | Extension instance. |
[in,out] | ctx | Context for the tree printer. Extension contents can be inserted into it by functions lyplg_ext_sprinter_ctree_add_ext_nodes(), lyplg_ext_sprinter_ctree_add_nodes() or by their ptree alternatives. It parameter is set to NULL, then flags and add_opts are used by printer_tree. |
[out] | flags | Optional override tree-diagram <flags> in a parent node. If ctx is set, ignore this parameter. |
[out] | add_opts | Additional tree-diagram <opts> string in a parent node which is printed before <opts>. If ctx is set, ignore this parameter. |
Definition at line 762 of file plugins_exts.h.
typedef LY_ERR(* lyplg_ext_sprinter_ptree_override_clb) (const struct lysp_node *node, const void *plugin_priv, ly_bool *skip, const char **flags, const char **add_opts) |
Callback for rewriting the tree-diagram form of a specific node.
If this callback is set, then it is called for each node that belongs to the extension instance.
[in] | node | Node whose tree-diagram form can be modified by the function. |
[in,out] | plugin_priv | Private context set by plugin. |
[out] | skip | Flag set to 1 removes the node from printed diagram. |
[out] | flags | Override tree-diagram <flags> string in the node . |
[out] | add_opts | Additional tree-diagram <opts> string in the node which is printed before <opts>. |
Definition at line 768 of file plugins_exts.h.
enum ly_stmt |
List of YANG statements.
Their description mentions what types are stored for each statement. Note that extension instance storage always stores a pointer to the type, not the type itself.
Definition at line 143 of file plugins_exts.h.
LIBYANG_API_DECL void lyplg_ext_cfree_instance_substatements | ( | const 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 | Extension instance substatements to free. |
LIBYANG_API_DECL LY_ERR lyplg_ext_compile_extension_instance | ( | struct lysc_ctx * | ctx, |
const struct lysp_ext_instance * | extp, | ||
struct lysc_ext_instance * | ext | ||
) |
Compile substatements of an extension instance.
Uses standard libyang schema compiler to transform YANG statements into the compiled schema structures. The plugins are supposed to use this function when the extension instance's substatements are supposed to be compiled in a standard way (or if just the Schema compile flags are enough to modify the compilation process).
[in] | ctx | Compile context. |
[in] | extp | Parsed representation of the extension instance being processed. |
[in,out] | ext | Compiled extension instance with the prepared lysc_ext_instance.substmts array, which will be updated by storing the compiled data. |
LIBYANG_API_DECL struct ly_ctx * lyplg_ext_compile_get_ctx | ( | const struct lysc_ctx * | ctx | ) |
YANG schema compilation context getter for libyang context.
[in] | ctx | YANG schema compilation context. |
LIBYANG_API_DECL const struct lys_module * lyplg_ext_compile_get_cur_mod | ( | const struct lysc_ctx * | ctx | ) |
YANG schema compilation context getter for current module.
[in] | ctx | YANG schema compilation context. |
LIBYANG_API_DECL uint32_t * lyplg_ext_compile_get_options | ( | const struct lysc_ctx * | ctx | ) |
YANG schema compilation context getter for compilation options.
[in] | ctx | YANG schema compilation context. |
LIBYANG_API_DECL struct lysp_module * lyplg_ext_compile_get_pmod | ( | const struct lysc_ctx * | ctx | ) |
YANG schema compilation context getter for currently processed module.
[in] | ctx | YANG schema compilation context. |
LIBYANG_API_DECL void lyplg_ext_compile_log | ( | const struct lysc_ctx * | cctx, |
const struct lysc_ext_instance * | ext, | ||
LY_LOG_LEVEL | level, | ||
LY_ERR | err_no, | ||
const char * | format, | ||
... | |||
) |
Log a message from an extension plugin using the compiled extension instance.
[in] | cctx | Optional compile context to generate the path from. |
[in] | ext | Compiled extension instance. |
[in] | level | Log message level (error, warning, etc.) |
[in] | err_no | Error type code. |
[in] | format | Format string to print. |
LIBYANG_API_DECL void lyplg_ext_compile_log_path | ( | const char * | path, |
const struct lysc_ext_instance * | ext, | ||
LY_LOG_LEVEL | level, | ||
LY_ERR | err_no, | ||
const char * | format, | ||
... | |||
) |
Log a message from an extension plugin using the compiled extension instance with an explicit error path.
[in] | path | Log error path to use. |
[in] | ext | Compiled extension instance. |
[in] | level | Log message level (error, warning, etc.) |
[in] | err_no | Error type code. |
[in] | format | Format string to print. |
LIBYANG_API_DECL LY_ERR lyplg_ext_get_data | ( | const struct ly_ctx * | ctx, |
const struct lysc_ext_instance * | ext, | ||
void ** | ext_data, | ||
ly_bool * | ext_data_free | ||
) |
Get specific run-time extension instance data from a callback set by ly_ctx_set_ext_data_clb().
[in] | ctx | Context with the callback. |
[in] | ext | Compiled extension instance. |
[out] | ext_data | Provided extension instance data. |
[out] | ext_data_free | Whether the extension instance should free ext_data or not. |
LIBYANG_API_DECL LY_ERR lyplg_ext_get_storage | ( | const struct lysc_ext_instance * | ext, |
int | stmt, | ||
uint32_t | storage_size, | ||
const void ** | storage | ||
) |
Get compiled ext instance storage for a specific statement.
[in] | ext | Compiled ext instance. |
[in] | stmt | Compiled statement. Can be a mask when the first match is returned, it is expected the storage is the same for all the masked statements. |
[in] | storage_size | Size of the value at storage address (dereferenced). |
[out] | storage | Compiled ext instance substatement storage, NULL if was not compiled. |
Insert extension instance data into a parent.
[in] | parent | Parent node to insert into. |
[in] | first | First top-level sibling node to insert. |
LIBYANG_API_DECL enum ly_stmt lyplg_ext_nodetype2stmt | ( | uint16_t | nodetype | ) |
Convert nodetype to statement identifier.
[in] | nodetype | Nodetype to convert. |
nodetype
. LIBYANG_API_DECL LY_ERR lyplg_ext_parse_extension_instance | ( | struct lysp_ctx * | pctx, |
struct lysp_ext_instance * | ext | ||
) |
Parse substatements of an extension instance.
Uses standard libyang schema compiler to transform YANG statements into the parsed schema structures. The plugins are supposed to use this function when the extension instance's substatements can be parsed in a standard way.
[in] | pctx | Parse context. |
[in,out] | ext | Parsed extension instance with the prepared lysp_ext_instance.substmts array, which will be updated by storing the parsed data. |
LIBYANG_API_DECL const struct lysp_module * lyplg_ext_parse_get_cur_pmod | ( | const struct lysp_ctx * | pctx | ) |
Get current parsed module from a parse context.
[in] | pctx | Parse context. |
LIBYANG_API_DECL void lyplg_ext_parse_log | ( | const struct lysp_ctx * | pctx, |
const struct lysp_ext_instance * | ext, | ||
LY_LOG_LEVEL | level, | ||
LY_ERR | err_no, | ||
const char * | format, | ||
... | |||
) |
Log a message from an extension plugin using the parsed extension instance.
[in] | pctx | Parse context to use. |
[in] | ext | Parsed extensiopn instance. |
[in] | level | Log message level (error, warning, etc.) |
[in] | err_no | Error type code. |
[in] | format | Format string to print. |
[in] | ... | Format variable parameters. |
LIBYANG_API_DECL LY_ERR lyplg_ext_parsed_get_storage | ( | const struct lysc_ext_instance * | ext, |
int | stmt, | ||
uint32_t | storage_size, | ||
const void ** | storage | ||
) |
Get parsed ext instance storage for a specific statement.
[in] | ext | Compiled ext instance. |
[in] | stmt | Parsed statement. Can be a mask when the first match is returned, it is expected the storage is the same for all the masked statements. |
[in] | storage_size | Size of the value at storage address (dereferenced). |
[out] | storage | Parsed ext instance substatement storage, NULL if was not parsed. |
LIBYANG_API_DECL void lyplg_ext_pfree_instance_substatements | ( | const struct ly_ctx * | ctx, |
struct lysp_ext_substmt * | substmts | ||
) |
Free the extension instance's data parsed with ::lys_parse_extension_instance().
[in] | ctx | libyang context |
[in] | substmts | Extension instance substatements to free. |
LIBYANG_API_DECL uint16_t * lyplg_ext_print_get_level | ( | const struct lyspr_ctx * | ctx | ) |
YANG printer context getter for printer indentation level.
[in] | ctx | YANG printer context. |
LIBYANG_API_DECL uint32_t * lyplg_ext_print_get_options | ( | const struct lyspr_ctx * | ctx | ) |
YANG printer context getter for printer options.
[in] | ctx | YANG printer context. |
LIBYANG_API_DECL struct ly_out ** lyplg_ext_print_get_out | ( | const struct lyspr_ctx * | ctx | ) |
YANG printer context getter for output handler.
[in] | ctx | YANG printer context. |
LIBYANG_API_DECL void lyplg_ext_print_info_extension_instance | ( | struct lyspr_ctx * | ctx, |
const struct lysc_ext_instance * | ext, | ||
ly_bool * | flag | ||
) |
Print substatements of an extension instance in info format (compiled YANG).
Generic function to access YANG printer functions from the extension plugins (lyplg_ext_sprinter_info_clb).
[in] | ctx | YANG printer context to provide output handler and other information for printing. |
[in] | ext | The compiled extension instance to access the extensions and substatements data. |
[in,out] | flag | Flag to be shared with the caller regarding the opening brackets - 0 if the '{' not yet printed, 1 otherwise. |
LIBYANG_API_DECL LY_ERR lyplg_ext_schema_mount_create_context | ( | const struct lysc_ext_instance * | ext, |
struct ly_ctx ** | ctx | ||
) |
Allocate a new context for a particular instance of the yangmnt:mount-point extension. Caller is responsible for destroying the resulting context.
[in] | ext | Compiled extension instance. |
[out] | ctx | A context with modules loaded from the list found in the extension data. |
LIBYANG_API_DECL LY_ERR lyplg_ext_schema_mount_get_parent_ref | ( | const struct lysc_ext_instance * | ext, |
struct ly_set ** | refs | ||
) |
Expand parent-reference xpath expressions.
[in] | ext | Context allocated for extension. |
[out] | refs | Set of schema node matching parent-reference XPaths. |
LIBYANG_API_DECL LY_ERR lyplg_ext_sprinter_ctree_add_ext_nodes | ( | const struct lyspr_tree_ctx * | ctx, |
struct lysc_ext_instance * | ext, | ||
lyplg_ext_sprinter_ctree_override_clb | clb | ||
) |
Registration of printing a group of nodes, which is already in the extension.
[in] | ctx | Context of printer_tree in which the group of nodes is saved and later printed. |
[in] | ext | Extension in which the group of nodes will be searched. |
[in] | clb | Override function that will be applied to each delivered node. |
LIBYANG_API_DECL LY_ERR lyplg_ext_sprinter_ctree_add_nodes | ( | const struct lyspr_tree_ctx * | ctx, |
struct lysc_node * | nodes, | ||
lyplg_ext_sprinter_ctree_override_clb | clb | ||
) |
Registration of printing the group of nodes which were defined in the plugin.
[in] | ctx | Context of printer_tree in which the group of nodes is saved and later printed. |
[in] | nodes | Points to the first node in group. |
[in] | clb | Override function that will be applied to each delivered node. |
LIBYANG_API_DECL LY_ERR lyplg_ext_sprinter_ptree_add_ext_nodes | ( | const struct lyspr_tree_ctx * | ctx, |
struct lysp_ext_instance * | ext, | ||
lyplg_ext_sprinter_ptree_override_clb | clb | ||
) |
Registration of printing a group of nodes, which is already in the extension.
[in] | ctx | Context of printer_tree in which the group of nodes is saved and later printed. |
[in] | ext | Extension in which the group of nodes will be searched. |
[in] | clb | Override function that will be applied to each delivered node. |
LIBYANG_API_DECL LY_ERR lyplg_ext_sprinter_ptree_add_nodes | ( | const struct lyspr_tree_ctx * | ctx, |
struct lysp_node * | nodes, | ||
lyplg_ext_sprinter_ptree_override_clb | clb | ||
) |
Registration of printing the group of nodes which were defined in the plugin.
[in] | ctx | Context of printer_tree in which the group of nodes is saved and later printed. |
[in] | nodes | Points to the first node in group. |
[in] | clb | Override function that will be applied to each delivered node. |
LIBYANG_API_DECL LY_ERR lyplg_ext_sprinter_tree_set_priv | ( | const struct lyspr_tree_ctx * | ctx, |
void * | plugin_priv, | ||
void(*)(void *plugin_priv) | free_clb | ||
) |
Registration of plugin-private data defined by the plugin that is shared between override_clb calls.
[in] | ctx | Context of printer_tree in which plugin-private data will be saved. |
[in] | plugin_priv | Plugin-private data shared between oberride_clb calls. |
[in] | free_clb | Release function for plugin_priv . |
LIBYANG_API_DECL const char * lyplg_ext_stmt2str | ( | enum ly_stmt | stmt | ) |
Stringify statement identifier.
[in] | stmt | The statement identifier to stringify. |
stmt
.