libyang 3.4.2
libyang is YANG data modelling language parser and toolkit written (and providing API) in C.
Loading...
Searching...
No Matches
plugins_exts.h
Go to the documentation of this file.
1
16#ifndef LY_PLUGINS_EXTS_H_
17#define LY_PLUGINS_EXTS_H_
18
19#include "log.h"
20#include "parser_data.h"
21#include "plugins.h"
22#include "tree_data.h"
23#include "tree_edit.h"
24#include "tree_schema.h"
25
26struct ly_ctx;
27struct ly_in;
28struct lyd_node;
29struct lysc_ctx;
30struct lysc_ext_substmt;
31struct lysp_ctx;
32struct lyspr_ctx;
33struct lyspr_tree_ctx;
34
35#ifdef __cplusplus
36extern "C" {
37#endif
38
112#define LYPLG_EXT_API_VERSION 8
113
119#define LY_STMT_OP_MASK (LY_STMT_ACTION | LY_STMT_RPC)
120
126#define LY_STMT_DATA_NODE_MASK (LY_STMT_ANYDATA | LY_STMT_ANYXML | LY_STMT_CASE | LY_STMT_CHOICE | LY_STMT_CONTAINER |\
127 LY_STMT_LEAF | LY_STMT_LEAF_LIST | LY_STMT_LIST)
128
135#define LY_STMT_NODE_MASK 0xFFFF
136
145
146 LY_STMT_NOTIFICATION = 0x0001,
148 LY_STMT_INPUT = 0x0002,
150 LY_STMT_OUTPUT = 0x0004,
152 LY_STMT_ACTION = 0x0008,
154 LY_STMT_RPC = 0x0010,
156 LY_STMT_ANYDATA = 0x0020,
158 LY_STMT_ANYXML = 0x0040,
160 LY_STMT_AUGMENT = 0x0080,
163 LY_STMT_CASE = 0x0100,
165 LY_STMT_CHOICE = 0x0200,
167 LY_STMT_CONTAINER = 0x0400,
169 LY_STMT_GROUPING = 0x0800,
172 LY_STMT_LEAF = 0x1000,
174 LY_STMT_LEAF_LIST = 0x2000,
176 LY_STMT_LIST = 0x4000,
178 LY_STMT_USES = 0x8000,
181 LY_STMT_ARGUMENT = 0x10000,
185 LY_STMT_BASE = 0x20000,
188 LY_STMT_BELONGS_TO = 0x30000,
192 LY_STMT_BIT = 0x40000,
196 LY_STMT_CONFIG = 0x50000,
199 LY_STMT_CONTACT = 0x60000,
203 LY_STMT_DEFAULT = 0x70000,
206 LY_STMT_DESCRIPTION = 0x80000,
209 LY_STMT_DEVIATE = 0x90000,
212 LY_STMT_DEVIATION = 0xA0000,
216 LY_STMT_ENUM = 0xB0000,
220 LY_STMT_ERROR_APP_TAG = 0xC0000,
224 LY_STMT_ERROR_MESSAGE = 0xD0000,
228 LY_STMT_EXTENSION = 0xE0000,
234 LY_STMT_FEATURE = 0x100000,
237 LY_STMT_FRACTION_DIGITS = 0x110000,
241 LY_STMT_IDENTITY = 0x120000,
245 LY_STMT_IF_FEATURE = 0x130000,
248 LY_STMT_IMPORT = 0x140000,
251 LY_STMT_INCLUDE = 0x150000,
254 LY_STMT_KEY = 0x160000,
258 LY_STMT_LENGTH = 0x170000,
260 LY_STMT_MANDATORY = 0x180000,
263 LY_STMT_MAX_ELEMENTS = 0x190000,
266 LY_STMT_MIN_ELEMENTS = 0x1A0000,
269 LY_STMT_MODIFIER = 0x1B0000,
273 LY_STMT_MODULE = 0x1C0000,
276 LY_STMT_MUST = 0x1D0000,
280 LY_STMT_NAMESPACE = 0x1E0000,
284 LY_STMT_ORDERED_BY = 0x1F0000,
288 LY_STMT_ORGANIZATION = 0x200000,
292 LY_STMT_PATH = 0x210000,
296 LY_STMT_PATTERN = 0x220000,
300 LY_STMT_POSITION = 0x230000,
304 LY_STMT_PREFIX = 0x240000,
307 LY_STMT_PRESENCE = 0x250000,
310 LY_STMT_RANGE = 0x260000,
312 LY_STMT_REFERENCE = 0x270000,
315 LY_STMT_REFINE = 0x280000,
319 LY_STMT_REQUIRE_INSTANCE = 0x290000,
323 LY_STMT_REVISION = 0x2A0000,
326 LY_STMT_REVISION_DATE = 0x2B0000,
328 LY_STMT_STATUS = 0x2C0000,
331 LY_STMT_SUBMODULE = 0x2D0000,
334 LY_STMT_TYPE = 0x2E0000,
336 LY_STMT_TYPEDEF = 0x2F0000,
340 LY_STMT_UNIQUE = 0x300000,
343 LY_STMT_UNITS = 0x310000,
346 LY_STMT_VALUE = 0x320000,
350 LY_STMT_WHEN = 0x330000,
352 LY_STMT_YANG_VERSION = 0x340000,
356 LY_STMT_YIN_ELEMENT = 0x350000,
361 /* separated from the list of statements
362 * the following tokens are part of the syntax and parsers have to work
363 * with them, but they are not a standard YANG statements
364 */
368
369 /*
370 * YIN-specific tokens, still they are part of the syntax, but not the standard statements
371 */
375
379struct lysp_stmt {
380 const char *stmt;
381 const char *arg;
385 struct lysp_stmt *next;
386 struct lysp_stmt *child;
387 uint16_t flags;
388 enum ly_stmt kw;
389};
390
396 void **storage_p;
398};
399
424
430 void **storage_p;
432};
433
453
460#define LYPLG_EXTENSIONS \
461 uint32_t plugins_extensions_apiver__ = LYPLG_EXT_API_VERSION; \
462 const struct lyplg_ext_record plugins_extensions__[]
463
484typedef LY_ERR (*lyplg_ext_parse_clb)(struct lysp_ctx *pctx, struct lysp_ext_instance *ext);
485
496LIBYANG_API_DECL void lyplg_ext_parse_log(const struct lysp_ctx *pctx, const struct lysp_ext_instance *ext,
497 LY_LOG_LEVEL level, LY_ERR err, const char *format, ...);
498
505LIBYANG_API_DECL const struct lysp_module *lyplg_ext_parse_get_cur_pmod(const struct lysp_ctx *pctx);
506
519LIBYANG_API_DECL LY_ERR lyplg_ext_parse_extension_instance(struct lysp_ctx *pctx, struct lysp_ext_instance *ext);
520
538#define LYS_COMPILE_GROUPING 0x01
543#define LYS_COMPILE_DISABLED 0x02
546#define LYS_COMPILE_NO_CONFIG 0x04
547#define LYS_COMPILE_NO_DISABLED 0x08
549#define LYS_COMPILE_RPC_INPUT (LYS_IS_INPUT | LYS_COMPILE_NO_CONFIG)
550#define LYS_COMPILE_RPC_OUTPUT (LYS_IS_OUTPUT | LYS_COMPILE_NO_CONFIG)
551#define LYS_COMPILE_NOTIFICATION (LYS_IS_NOTIF | LYS_COMPILE_NO_CONFIG)
570typedef LY_ERR (*lyplg_ext_compile_clb)(struct lysc_ctx *cctx, const struct lysp_ext_instance *extp,
571 struct lysc_ext_instance *ext);
572
582LIBYANG_API_DECL void lyplg_ext_compile_log(const struct lysc_ctx *cctx, const struct lysc_ext_instance *ext,
583 LY_LOG_LEVEL level, LY_ERR err, const char *format, ...);
584
594LIBYANG_API_DECL void lyplg_ext_compile_log_path(const char *path, const struct lysc_ext_instance *ext,
595 LY_LOG_LEVEL level, LY_ERR err, const char *format, ...);
596
603LIBYANG_API_DEF void lyplg_ext_compile_log_err(const struct ly_err_item *eitem, const struct lysc_ext_instance *ext);
604
611LIBYANG_API_DECL struct ly_ctx *lyplg_ext_compile_get_ctx(const struct lysc_ctx *ctx);
612
619LIBYANG_API_DECL uint32_t *lyplg_ext_compile_get_options(const struct lysc_ctx *ctx);
620
627LIBYANG_API_DECL const struct lys_module *lyplg_ext_compile_get_cur_mod(const struct lysc_ctx *ctx);
628
635LIBYANG_API_DECL struct lysp_module *lyplg_ext_compile_get_pmod(const struct lysc_ctx *ctx);
636
652LIBYANG_API_DECL LY_ERR lyplg_ext_compile_extension_instance(struct lysc_ctx *ctx, const struct lysp_ext_instance *extp,
653 struct lysc_ext_instance *ext);
654
675typedef LY_ERR (*lyplg_ext_sprinter_info_clb)(struct lyspr_ctx *ctx, struct lysc_ext_instance *ext, ly_bool *flag);
676
684LIBYANG_API_DECL struct ly_out **lyplg_ext_print_get_out(const struct lyspr_ctx *ctx);
685
692LIBYANG_API_DECL uint32_t *lyplg_ext_print_get_options(const struct lyspr_ctx *ctx);
693
700LIBYANG_API_DECL uint16_t *lyplg_ext_print_get_level(const struct lyspr_ctx *ctx);
701
712LIBYANG_API_DECL void lyplg_ext_print_info_extension_instance(struct lyspr_ctx *ctx, const struct lysc_ext_instance *ext,
713 ly_bool *flag);
714
743typedef LY_ERR (*lyplg_ext_sprinter_ctree_clb)(struct lysc_ext_instance *ext, const struct lyspr_tree_ctx *ctx,
744 const char **flags, const char **add_opts);
745
758typedef LY_ERR (*lyplg_ext_sprinter_ctree_override_clb)(const struct lysc_node *node, const void *plugin_priv,
759 ly_bool *skip, const char **flags, const char **add_opts);
760
769LIBYANG_API_DECL LY_ERR lyplg_ext_sprinter_ctree_add_ext_nodes(const struct lyspr_tree_ctx *ctx,
771
780LIBYANG_API_DECL LY_ERR lyplg_ext_sprinter_ctree_add_nodes(const struct lyspr_tree_ctx *ctx, struct lysc_node *nodes,
782
791LIBYANG_API_DECL LY_ERR lyplg_ext_sprinter_tree_set_priv(const struct lyspr_tree_ctx *ctx, void *plugin_priv,
792 void (*free_clb)(void *plugin_priv));
793
797typedef LY_ERR (*lyplg_ext_sprinter_ptree_clb)(struct lysp_ext_instance *ext, const struct lyspr_tree_ctx *ctx,
798 const char **flags, const char **add_opts);
799
803typedef LY_ERR (*lyplg_ext_sprinter_ptree_override_clb)(const struct lysp_node *node, const void *plugin_priv,
804 ly_bool *skip, const char **flags, const char **add_opts);
805
809LIBYANG_API_DECL LY_ERR lyplg_ext_sprinter_ptree_add_ext_nodes(const struct lyspr_tree_ctx *ctx,
811
815LIBYANG_API_DECL LY_ERR lyplg_ext_sprinter_ptree_add_nodes(const struct lyspr_tree_ctx *ctx, struct lysp_node *nodes,
817
820/*
821 * data node
822 */
823
836typedef LY_ERR (*lyplg_ext_data_node_clb)(struct lysc_ext_instance *ext, struct lyd_node *node, uint32_t validate_options);
837
838/*
839 * snode
840 */
841
861 const struct lysc_node *sparent, const char *prefix, size_t prefix_len, LY_VALUE_FORMAT format, void *prefix_data,
862 const char *name, size_t name_len, const struct lysc_node **snode);
863
864/*
865 * validate
866 */
867
883typedef LY_ERR (*lyplg_ext_data_validate_clb)(struct lysc_ext_instance *ext, struct lyd_node *sibling,
884 const struct lyd_node *dep_tree, enum lyd_type data_type, uint32_t val_opts, struct lyd_node **diff);
885
886/*
887 * parse free
888 */
889
896typedef void (*lyplg_ext_parse_free_clb)(const struct ly_ctx *ctx, struct lysp_ext_instance *ext);
897
904LIBYANG_API_DECL void lyplg_ext_pfree_instance_substatements(const struct ly_ctx *ctx, struct lysp_ext_substmt *substmts);
905
906/*
907 * compile free
908 */
909
916typedef void (*lyplg_ext_compile_free_clb)(const struct ly_ctx *ctx, struct lysc_ext_instance *ext);
917
924LIBYANG_API_DECL void lyplg_ext_cfree_instance_substatements(const struct ly_ctx *ctx, struct lysc_ext_substmt *substmts);
925
952
954 /* plugin identification */
955 const char *module;
956 const char *revision;
961 const char *name;
963 /* runtime data */
965};
966
973LIBYANG_API_DECL const char *lyplg_ext_stmt2str(enum ly_stmt stmt);
974
981LIBYANG_API_DECL enum ly_stmt lyplg_ext_nodetype2stmt(uint16_t nodetype);
982
994LIBYANG_API_DECL LY_ERR lyplg_ext_get_storage(const struct lysc_ext_instance *ext, int stmt, uint32_t storage_size,
995 const void **storage);
996
1008LIBYANG_API_DECL LY_ERR lyplg_ext_parsed_get_storage(const struct lysc_ext_instance *ext, int stmt,
1009 uint32_t storage_size, const void **storage);
1010
1021LIBYANG_API_DECL LY_ERR lyplg_ext_get_data(const struct ly_ctx *ctx, const struct lysc_ext_instance *ext, void **ext_data,
1022 ly_bool *ext_data_free);
1023
1032LIBYANG_API_DECL LY_ERR lyplg_ext_insert(struct lyd_node *parent, struct lyd_node *first);
1033
1041LIBYANG_API_DECL LY_ERR lyplg_ext_schema_mount_get_parent_ref(const struct lysc_ext_instance *ext, struct ly_set **refs);
1042
1051LIBYANG_API_DECL LY_ERR lyplg_ext_schema_mount_create_context(const struct lysc_ext_instance *ext, struct ly_ctx **ctx);
1052
1055#ifdef __cplusplus
1056}
1057#endif
1058
1059#endif /* LY_PLUGINS_EXTS_H_ */
libyang context handler.
lyd_type
LY_ERR
libyang's error codes returned by the libyang functions.
Definition log.h:237
Libyang full error structure.
Definition log.h:282
LY_LOG_LEVEL
Verbosity levels of the libyang logger.
Definition log.h:88
Structure to hold a set of (not necessary somehow connected) objects. Usually used for lyd_node,...
Definition set.h:47
LIBYANG_API_DEF void lyplg_ext_compile_log_err(const struct ly_err_item *eitem, const struct lysc_ext_instance *ext)
Log a message from an extension plugin using the compiled extension instance and a generated error it...
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.
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.
LIBYANG_API_DECL struct ly_ctx * lyplg_ext_compile_get_ctx(const struct lysc_ctx *ctx)
YANG schema compilation context getter for libyang 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.
LIBYANG_API_DECL uint32_t * lyplg_ext_compile_get_options(const struct lysc_ctx *ctx)
YANG schema compilation context getter for compilation options.
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, const char *format,...)
Log a message from an extension plugin using the compiled extension instance with an explicit error p...
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....
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, const char *format,...)
Log a message from an extension plugin using the compiled extension instance.
const char * argument
uint64_t parent_stmt_index
lyplg_ext_data_node_clb node
enum ly_stmt stmt
const struct lyplg_ext_record * record
const char * name
const char *const char * revision
struct lysp_ext_instance * exts
lyplg_ext_data_snode_clb snode
const char * arg
LY_VALUE_FORMAT format
const char * argument
struct lysp_stmt * child
uint16_t flags
const char * id
struct lysp_ext_substmt * substmts
lyplg_ext_sprinter_info_clb printer_info
enum ly_stmt parent_stmt
LY_VALUE_FORMAT format
lyplg_ext_compile_free_clb cfree
struct lysc_ext_substmt * substmts
struct lysp_stmt * child
enum ly_stmt kw
struct lyplg_ext plugin
struct lys_module *struct lysc_ext_instance * exts
lyplg_ext_parse_clb parse
lyplg_ext_sprinter_ctree_clb printer_ctree
lyplg_ext_data_validate_clb validate
struct lysc_ext * def
uint64_t parent_stmt_index
const char * stmt
lyplg_ext_parse_free_clb pfree
enum ly_stmt stmt
struct lysp_ext * def
struct lysp_stmt * next
enum ly_stmt parent_stmt
lyplg_ext_compile_clb compile
void * prefix_data
const char * name
lyplg_ext_sprinter_ptree_clb printer_ptree
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.
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....
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.
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.
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.
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.
ly_stmt
List of YANG statements.
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.
LIBYANG_API_DECL enum ly_stmt lyplg_ext_nodetype2stmt(uint16_t nodetype)
Convert nodetype to statement identifier.
LIBYANG_API_DECL LY_ERR lyplg_ext_insert(struct lyd_node *parent, struct lyd_node *first)
Insert extension instance data into a parent.
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....
LIBYANG_API_DECL const char * lyplg_ext_stmt2str(enum ly_stmt stmt)
Stringify statement identifier.
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 lyplg_ext_compile_extension_instance().
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.
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 lyplg_ext_parse_extension_instance().
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().
@ LY_STMT_REVISION
@ LY_STMT_MUST
@ LY_STMT_ARGUMENT
@ LY_STMT_ENUM
@ LY_STMT_LEAF
@ LY_STMT_ERROR_APP_TAG
@ LY_STMT_MAX_ELEMENTS
@ LY_STMT_REFERENCE
@ LY_STMT_REVISION_DATE
@ LY_STMT_SYNTAX_LEFT_BRACE
@ LY_STMT_UNIQUE
@ LY_STMT_REQUIRE_INSTANCE
@ LY_STMT_DEVIATION
@ LY_STMT_IMPORT
@ LY_STMT_CONTACT
@ LY_STMT_LENGTH
@ LY_STMT_IF_FEATURE
@ LY_STMT_SYNTAX_RIGHT_BRACE
@ LY_STMT_ANYDATA
@ LY_STMT_CONTAINER
@ LY_STMT_PATTERN
@ LY_STMT_POSITION
@ LY_STMT_PREFIX
@ LY_STMT_WHEN
@ LY_STMT_BELONGS_TO
@ LY_STMT_ORGANIZATION
@ LY_STMT_AUGMENT
@ LY_STMT_SUBMODULE
@ LY_STMT_ANYXML
@ LY_STMT_MIN_ELEMENTS
@ LY_STMT_SYNTAX_SEMICOLON
@ LY_STMT_NAMESPACE
@ LY_STMT_YANG_VERSION
@ LY_STMT_MANDATORY
@ LY_STMT_PATH
@ LY_STMT_EXTENSION
@ LY_STMT_CASE
@ LY_STMT_MODULE
@ LY_STMT_ERROR_MESSAGE
@ LY_STMT_OUTPUT
@ LY_STMT_REFINE
@ LY_STMT_IDENTITY
@ LY_STMT_TYPEDEF
@ LY_STMT_NONE
@ LY_STMT_ARG_VALUE
@ LY_STMT_DESCRIPTION
@ LY_STMT_ARG_TEXT
@ LY_STMT_CONFIG
@ LY_STMT_RANGE
@ LY_STMT_ORDERED_BY
@ LY_STMT_INCLUDE
@ LY_STMT_YIN_ELEMENT
@ LY_STMT_EXTENSION_INSTANCE
@ LY_STMT_BIT
@ LY_STMT_FRACTION_DIGITS
@ LY_STMT_ACTION
@ LY_STMT_MODIFIER
@ LY_STMT_TYPE
@ LY_STMT_BASE
@ LY_STMT_LEAF_LIST
@ LY_STMT_FEATURE
@ LY_STMT_RPC
@ LY_STMT_DEVIATE
@ LY_STMT_UNITS
@ LY_STMT_GROUPING
@ LY_STMT_KEY
@ LY_STMT_NOTIFICATION
@ LY_STMT_CHOICE
@ LY_STMT_VALUE
@ LY_STMT_USES
@ LY_STMT_PRESENCE
@ LY_STMT_STATUS
@ LY_STMT_INPUT
@ LY_STMT_LIST
@ LY_STMT_DEFAULT
Extension plugin implementing various aspects of a YANG extension.
YANG extension compiled instance.
Structure representing a compiled known YANG substatement in an extension instance.
YANG extension parsed instance.
Structure representing a parsed known YANG substatement in an extension instance.
Structure representing a generic parsed YANG substatement in an extension instance.
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.
LY_ERR(* lyplg_ext_parse_clb)(struct lysp_ctx *pctx, struct lysp_ext_instance *ext)
Callback for parsing extension instance substatements.
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, const char *format,...)
Log a message from an extension plugin using the parsed extension instance.
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.
LIBYANG_API_DECL uint16_t * lyplg_ext_print_get_level(const struct lyspr_ctx *ctx)
YANG printer context getter for printer indentation level.
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.
LIBYANG_API_DECL struct ly_out ** lyplg_ext_print_get_out(const struct lyspr_ctx *ctx)
YANG printer context getter for output handler.
LIBYANG_API_DECL uint32_t * lyplg_ext_print_get_options(const struct lyspr_ctx *ctx)
YANG printer context getter for printer options.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
uint16_t flags
uint16_t flags
const char * name
struct ly_ctx * ctx
Available YANG schema tree structures representing YANG module.
Compiled YANG extension-stmt.
Compiled YANG data node.
YANG extension-stmt.
Printable YANG schema tree structure representing YANG module.
Generic YANG data node.
LY_VALUE_FORMAT
All kinds of supported value formats and prefix mappings to modules.
Definition tree.h:234
#define LY_ARRAY_COUNT_TYPE
Type (i.e. size) of the sized array's size counter.
Definition tree.h:104
Logger manipulation routines and error definitions.
uint8_t ly_bool
Type to indicate boolean value.
Definition log.h:35
Parser input structure specifying where the data are read.
Printer output structure specifying where the data are printed.
Data parsers for libyang.
Plugins manipulation.
libyang representation of YANG data trees.
struct lyd_node_inner * parent
Definition tree_data.h:806
Generic structure for a data node.
Definition tree_data.h:799
libyang generic macros and functions to modify YANG schema or data trees. Intended for internal use a...
libyang representation of YANG schema trees.