Loading...
Searching...
No Matches
Plugins: Extensions
Collaboration diagram for Plugins: Extensions:

## Topics

| Plugins: Extensions compilation support
| Plugins: Extensions parsing support
| Plugins: Extensions schema info printer support
| Plugins: Extensions schema parsed and compiled tree printer support

## 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.
#define | LY_STMT_NODE_MASK 0xFFFF
| Mask for a node statement.
#define | LY_STMT_OP_MASK (LY_STMT_ACTION | LY_STMT_RPC)
| Mask for an operation statement.
#define | LYPLG_EXT_API_VERSION 8
| Extensions API version.
#define | LYPLG_EXTENSIONS
| Macro to define plugin information in external plugins.

## Typedefs

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.
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.
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.
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.
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.

## Enumerations

enum

ly_stmt {
LY_STMT_NONE = 0 , LY_STMT_NOTIFICATION = 0x0001 , LY_STMT_INPUT = 0x0002 , LY_STMT_OUTPUT = 0x0004 ,
LY_STMT_ACTION = 0x0008 , LY_STMT_RPC = 0x0010 , LY_STMT_ANYDATA = 0x0020 , LY_STMT_ANYXML = 0x0040 ,
LY_STMT_AUGMENT = 0x0080 , LY_STMT_CASE = 0x0100 , LY_STMT_CHOICE = 0x0200 , LY_STMT_CONTAINER = 0x0400 ,
LY_STMT_GROUPING = 0x0800 , LY_STMT_LEAF = 0x1000 , LY_STMT_LEAF_LIST = 0x2000 , LY_STMT_LIST = 0x4000 ,
LY_STMT_USES = 0x8000 , LY_STMT_ARGUMENT = 0x10000 , LY_STMT_BASE = 0x20000 , LY_STMT_BELONGS_TO = 0x30000 ,
LY_STMT_BIT = 0x40000 , LY_STMT_CONFIG = 0x50000 , LY_STMT_CONTACT = 0x60000 , LY_STMT_DEFAULT = 0x70000 ,
LY_STMT_DESCRIPTION = 0x80000 , LY_STMT_DEVIATE = 0x90000 , LY_STMT_DEVIATION = 0xA0000 , LY_STMT_ENUM = 0xB0000 ,
LY_STMT_ERROR_APP_TAG = 0xC0000 , LY_STMT_ERROR_MESSAGE = 0xD0000 , LY_STMT_EXTENSION = 0xE0000 , LY_STMT_EXTENSION_INSTANCE = 0xF0000 ,
LY_STMT_FEATURE = 0x100000 , LY_STMT_FRACTION_DIGITS = 0x110000 , LY_STMT_IDENTITY = 0x120000 , LY_STMT_IF_FEATURE = 0x130000 ,
LY_STMT_IMPORT = 0x140000 , LY_STMT_INCLUDE = 0x150000 , LY_STMT_KEY = 0x160000 , LY_STMT_LENGTH = 0x170000 ,
LY_STMT_MANDATORY = 0x180000 , LY_STMT_MAX_ELEMENTS = 0x190000 , LY_STMT_MIN_ELEMENTS = 0x1A0000 , LY_STMT_MODIFIER = 0x1B0000 ,
LY_STMT_MODULE = 0x1C0000 , LY_STMT_MUST = 0x1D0000 , LY_STMT_NAMESPACE = 0x1E0000 , LY_STMT_ORDERED_BY = 0x1F0000 ,
LY_STMT_ORGANIZATION = 0x200000 , LY_STMT_PATH = 0x210000 , LY_STMT_PATTERN = 0x220000 , LY_STMT_POSITION = 0x230000 ,
LY_STMT_PREFIX = 0x240000 , LY_STMT_PRESENCE = 0x250000 , LY_STMT_RANGE = 0x260000 , LY_STMT_REFERENCE = 0x270000 ,
LY_STMT_REFINE = 0x280000 , LY_STMT_REQUIRE_INSTANCE = 0x290000 , LY_STMT_REVISION = 0x2A0000 , LY_STMT_REVISION_DATE = 0x2B0000 ,
LY_STMT_STATUS = 0x2C0000 , LY_STMT_SUBMODULE = 0x2D0000 , LY_STMT_TYPE = 0x2E0000 , LY_STMT_TYPEDEF = 0x2F0000 ,
LY_STMT_UNIQUE = 0x300000 , LY_STMT_UNITS = 0x310000 , LY_STMT_VALUE = 0x320000 , LY_STMT_WHEN = 0x330000 ,
LY_STMT_YANG_VERSION = 0x340000 , LY_STMT_YIN_ELEMENT = 0x350000 , LY_STMT_SYNTAX_SEMICOLON , LY_STMT_SYNTAX_LEFT_BRACE ,
LY_STMT_SYNTAX_RIGHT_BRACE , LY_STMT_ARG_TEXT , LY_STMT_ARG_VALUE
}

| List of YANG statements. 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 lyplg_ext_compile_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().
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.
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 enum ly_stmt | lyplg_ext_nodetype2stmt (uint16_t nodetype)
| Convert nodetype to statement identifier.
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.
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_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 freeing the created context.
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 const char * | lyplg_ext_stmt2str (enum ly_stmt stmt)
| Stringify statement identifier.

## Detailed Description

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.

## Data Structure Documentation

## lyplg_ext

struct lyplg_ext

Extension plugin implementing various aspects of a YANG extension.

Every plugin should have at least either ::parse() or ::compile() callback defined but other than that all the callbacks are optional.

Definition at line 932 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

## lyplg_ext_record

struct lyplg_ext_record

Definition at line 953 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.

## lysc_ext_instance

struct lysc_ext_instance

YANG extension compiled instance.

Definition at line 437 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)

## lysc_ext_substmt

struct lysc_ext_substmt

Structure representing a compiled known YANG substatement in an extension instance.

Definition at line 428 of file plugins_exts.h.

Data Fields
enum ly_stmt | stmt | compiled substatement
void ** | storage_p | pointer to the compiled storage of the statement according to the specific lys_ext_substmt::stmt

## lysp_ext_instance

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
struct lysp_ext_instance * | exts | list of the extension instances (sized array)
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)

## lysp_ext_substmt

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_p | pointer to the parsed storage of the statement according to the specific lys_ext_substmt::stmt

## lysp_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

## Macro Definition Documentation

## LY_STMT_DATA_NODE_MASK

#define LY_STMT_DATA_NODE_MASK

Value:
(LY_STMT_ANYDATA | LY_STMT_ANYXML | LY_STMT_CASE | LY_STMT_CHOICE | LY_STMT_CONTAINER |\
LY_STMT_LEAF | LY_STMT_LEAF_LIST | LY_STMT_LIST)
LY_STMT_LEAF
@ LY_STMT_LEAF
Definition plugins_exts.h:172
LY_STMT_ANYDATA
@ LY_STMT_ANYDATA
Definition plugins_exts.h:156
LY_STMT_CONTAINER
@ LY_STMT_CONTAINER
Definition plugins_exts.h:167
LY_STMT_ANYXML
@ LY_STMT_ANYXML
Definition plugins_exts.h:158
LY_STMT_CASE
@ LY_STMT_CASE
Definition plugins_exts.h:163
LY_STMT_LEAF_LIST
@ LY_STMT_LEAF_LIST
Definition plugins_exts.h:174
LY_STMT_CHOICE
@ LY_STMT_CHOICE
Definition plugins_exts.h:165
LY_STMT_LIST
@ LY_STMT_LIST
Definition plugins_exts.h:176

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.

## LY_STMT_NODE_MASK

#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.

## LY_STMT_OP_MASK

#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.

## LYPLG_EXT_API_VERSION

#define LYPLG_EXT_API_VERSION 8

Extensions API version.

Definition at line 112 of file plugins_exts.h.

## LYPLG_EXTENSIONS

#define LYPLG_EXTENSIONS

Value:
uint32_t plugins_extensions_apiver__ = LYPLG_EXT_API_VERSION; \
const struct lyplg_ext_record plugins_extensions__[]
LYPLG_EXT_API_VERSION
#define LYPLG_EXT_API_VERSION
Extensions API version.
Definition plugins_exts.h:112
lyplg_ext_record
Definition plugins_exts.h:953

Macro to define plugin information in external plugins.

Use as follows: LYPLG_EXTENSIONS = {{<filled information of lyplg_ext_record>}, ..., {0}};

Definition at line 460 of file plugins_exts.h.

## Typedef Documentation

## lyplg_ext_compile_free_clb

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.

Parameters

  [in] | ctx | libyang context.
  [in,out] | ext | Compiled extension structure to free.

Definition at line 916 of file plugins_exts.h.

## lyplg_ext_data_node_clb

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.

Parameters

  [in] | ext | Compiled extension instance.
  [in] | node | Data node to process.
  [in] | validate_options | Options used for the validation phase, see Data validation options.

Returns
  LY_SUCCESS on success.
  LY_ERR on error.

Definition at line 836 of file plugins_exts.h.

## lyplg_ext_data_snode_clb

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.

Parameters

  [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.

Returns
  LY_SUCCESS on success.
  LY_ENOT if the data are not described by `ext`.
  LY_ERR on error.

Definition at line 860 of file plugins_exts.h.

## lyplg_ext_data_validate_clb

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).

Parameters

  [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.

Returns
  LY_SUCCESS on success.
  LY_ERR on error.

Definition at line 883 of file plugins_exts.h.

## lyplg_ext_parse_free_clb

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.

Parameters

  [in] | ctx | libyang context.
  [in,out] | ext | Parsed extension structure to free.

Definition at line 896 of file plugins_exts.h.

## Enumeration Type Documentation

## ly_stmt

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.

Enumerator
LY_STMT_NONE |
LY_STMT_NOTIFICATION | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_node_notif * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - struct lysc_node_notif *
LY_STMT_INPUT | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_node_action_inout * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - struct lysc_node_action_inout *
LY_STMT_OUTPUT | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_node_action_inout * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - struct lysc_node_action_inout *
LY_STMT_ACTION | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_node_action * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - struct lysc_node_action *
LY_STMT_RPC | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_node_action * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - struct lysc_node_action *
LY_STMT_ANYDATA | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_node_anydata * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - struct lysc_node_anydata *
LY_STMT_ANYXML | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_node_anydata * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - struct lysc_node_anydata *
LY_STMT_AUGMENT | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_node_augment * ::lysc_ext_substmt.storage - not compiled lysc_ext_instance.parent - struct lysc_node *
LY_STMT_CASE | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_node_case * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - struct lysc_node_case *
LY_STMT_CHOICE | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_node_choice * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - struct lysc_node_choice *
LY_STMT_CONTAINER | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_node_container * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - struct lysc_node_container *
LY_STMT_GROUPING | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_node_grp * ::lysc_ext_substmt.storage - not compiled lysc_ext_instance.parent - struct lysc_node *
LY_STMT_LEAF | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_node_leaf * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - struct lysc_node_leaf *
LY_STMT_LEAF_LIST | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_node_leaflist * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - struct lysc_node_leaflist *
LY_STMT_LIST | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_node_list * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - struct lysc_node_list *
LY_STMT_USES | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_node_uses * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - struct lysc_node *
LY_STMT_ARGUMENT | ::lysp_ext_substmt.storage - const char * lysp_ext_instance.parent - struct lysp_ext * ::lysc_ext_substmt.storage - const char * lysc_ext_instance.parent - struct lysc_ext *
LY_STMT_BASE | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - const char **[] ::lysc_ext_substmt.storage - not compiled lysc_ext_instance.parent - struct lysc_ident *
LY_STMT_BELONGS_TO | ::lysp_ext_substmt.storage - const char * lysp_ext_instance.parent - struct lysp_submodule * ::lysc_ext_substmt.storage - not compiled lysc_ext_instance.parent - struct lysc_module *
LY_STMT_BIT | ::lysp_ext_substmt.storage - struct lysp_type_enum *[] lysp_ext_instance.parent - struct lysp_type_enum * ::lysc_ext_substmt.storage - struct lysc_type_bitenum_item *[] lysc_ext_instance.parent - struct lysc_type_bitenum_item *
LY_STMT_CONFIG | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - uint16_t * ::lysc_ext_substmt.storage - uint16_t * lysc_ext_instance.parent - struct lysc_node *
LY_STMT_CONTACT | ::lysp_ext_substmt.storage - const char * lysp_ext_instance.parent - struct lysp_(sub)module * ::lysc_ext_substmt.storage - const char * lysc_ext_instance.parent - struct lysc_module *
LY_STMT_DEFAULT | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_qname * ::lysc_ext_substmt.storage - not compiled lysc_ext_instance.parent - struct lysc_node *, struct lysc_type * (typedef)
LY_STMT_DESCRIPTION | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - const char * ::lysc_ext_substmt.storage - const char * lysc_ext_instance.parent - compiled parent statement
LY_STMT_DEVIATE | ::lysp_ext_substmt.storage - struct lysp_deviate *[] lysp_ext_instance.parent - struct lysp_deviate * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - not compiled
LY_STMT_DEVIATION | ::lysp_ext_substmt.storage - struct lysp_deviation *[] lysp_ext_instance.parent - struct lysp_deviation * ::lysc_ext_substmt.storage - not compiled lysc_ext_instance.parent - struct lysc_node *
LY_STMT_ENUM | ::lysp_ext_substmt.storage - struct lysp_type_enum *[] lysp_ext_instance.parent - struct lysp_type_enum * ::lysc_ext_substmt.storage - struct lysc_type_bitenum_item *[] lysc_ext_instance.parent - struct lysc_type_bitenum_item *
LY_STMT_ERROR_APP_TAG | ::lysp_ext_substmt.storage - const char * lysp_ext_instance.parent - struct lysp_restr * ::lysc_ext_substmt.storage - const char * lysc_ext_instance.parent - compiled restriction structure
LY_STMT_ERROR_MESSAGE | ::lysp_ext_substmt.storage - const char * lysp_ext_instance.parent - struct lysp_restr * ::lysc_ext_substmt.storage - const char * lysc_ext_instance.parent - compiled restriction structure
LY_STMT_EXTENSION | ::lysp_ext_substmt.storage - struct lysp_ext *[] lysp_ext_instance.parent - struct lysp_ext * ::lysc_ext_substmt.storage - not compiled explicitly lysc_ext_instance.parent - struct lysc_ext *
LY_STMT_EXTENSION_INSTANCE | ::lysp_ext_substmt.storage - struct lysp_ext_instance *[] ::lysc_ext_substmt.storage - struct lysc_ext_instance *[]
LY_STMT_FEATURE | ::lysp_ext_substmt.storage - struct lysp_feature *[] lysp_ext_instance.parent - struct lysp_feature * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - not compiled
LY_STMT_FRACTION_DIGITS | ::lysp_ext_substmt.storage - uint8_t * lysp_ext_instance.parent - struct lysp_type * ::lysc_ext_substmt.storage - uint8_t * lysc_ext_instance.parent - struct lysc_type *
LY_STMT_IDENTITY | ::lysp_ext_substmt.storage - struct lysp_ident *[] lysp_ext_instance.parent - struct lysp_ident * ::lysc_ext_substmt.storage - struct lysc_ident *[] lysc_ext_instance.parent - struct lysc_ident *
LY_STMT_IF_FEATURE | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_qname *[] ::lysc_ext_substmt.storage - no storage, evaluated when compiled lysc_ext_instance.parent - compiled parent statement
LY_STMT_IMPORT | ::lysp_ext_substmt.storage - struct lysp_import *[] lysp_ext_instance.parent - struct lysp_import * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - not compiled
LY_STMT_INCLUDE | ::lysp_ext_substmt.storage - struct lysp_include *[] lysp_ext_instance.parent - struct lysp_include * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - not compiled
LY_STMT_KEY | ::lysp_ext_substmt.storage - const char * lysp_ext_instance.parent - struct lysp_node_list * ::lysc_ext_substmt.storage - const char * lysc_ext_instance.parent - struct lysc_node_list *
LY_STMT_LENGTH | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_restr * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - struct lysc_range *
LY_STMT_MANDATORY | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - uint16_t * ::lysc_ext_substmt.storage - uint16_t * lysc_ext_instance.parent - struct lysc_node *
LY_STMT_MAX_ELEMENTS | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - uint32_t * ::lysc_ext_substmt.storage - uint32_t * lysc_ext_instance.parent - struct lysc_node_list *
LY_STMT_MIN_ELEMENTS | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - uint32_t * ::lysc_ext_substmt.storage - uint32_t * lysc_ext_instance.parent - struct lysc_node_list *
LY_STMT_MODIFIER | ::lysp_ext_substmt.storage - const char * lysp_ext_instance.parent - struct lysp_restr * ::lysc_ext_substmt.storage - const char * lysc_ext_instance.parent - struct lysc_pattern *
LY_STMT_MODULE | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_module * ::lysc_ext_substmt.storage - not compiled lysc_ext_instance.parent - struct lysc_module *
LY_STMT_MUST | ::lysp_ext_substmt.storage - struct lysp_restr *[] lysp_ext_instance.parent - struct lysp_restr * ::lysc_ext_substmt.storage - struct lysc_must *[] lysc_ext_instance.parent - struct lysc_must *
LY_STMT_NAMESPACE | ::lysp_ext_substmt.storage - const char * lysp_ext_instance.parent - struct lysp_module * ::lysc_ext_substmt.storage - const char * lysc_ext_instance.parent - struct lysc_module *
LY_STMT_ORDERED_BY | ::lysp_ext_substmt.storage - uint16_t * lysp_ext_instance.parent - struct lysp_node * ::lysc_ext_substmt.storage - uint16_t * lysc_ext_instance.parent - struct lysc_node *
LY_STMT_ORGANIZATION | ::lysp_ext_substmt.storage - const char * lysp_ext_instance.parent - struct lysp_(sub)module * ::lysc_ext_substmt.storage - const char * lysc_ext_instance.parent - struct lysc_module *
LY_STMT_PATH | ::lysp_ext_substmt.storage - struct lyxp_expr * lysp_ext_instance.parent - struct lysp_type * ::lysc_ext_substmt.storage - not compiled lysc_ext_instance.parent - struct lysc_type *
LY_STMT_PATTERN | ::lysp_ext_substmt.storage - struct lysp_restr *[] lysp_ext_instance.parent - struct lysp_restr * ::lysc_ext_substmt.storage - struct lysc_pattern **[] lysc_ext_instance.parent - struct lysc_pattern *
LY_STMT_POSITION | ::lysp_ext_substmt.storage - int64_t * lysp_ext_instance.parent - struct lysp_type_enum * ::lysc_ext_substmt.storage - int64_t * lysc_ext_instance.parent - struct lysc_type_bitenum_item *
LY_STMT_PREFIX | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - const char * ::lysc_ext_substmt.storage - not compiled lysc_ext_instance.parent - struct lysc_module *
LY_STMT_PRESENCE | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - const char * ::lysc_ext_substmt.storage - const char * lysc_ext_instance.parent - struct lysc_node_container *
LY_STMT_RANGE | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_restr * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - struct lysc_range *
LY_STMT_REFERENCE | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - const char * ::lysc_ext_substmt.storage - const char * lysc_ext_instance.parent - compiled parent statement
LY_STMT_REFINE | ::lysp_ext_substmt.storage - struct lysp_refine *[] lysp_ext_instance.parent - struct lysp_refine * ::lysc_ext_substmt.storage - not compiled lysc_ext_instance.parent - struct lysc_node *
LY_STMT_REQUIRE_INSTANCE | ::lysp_ext_substmt.storage - uint8_t * lysp_ext_instance.parent - struct lysp_type * ::lysc_ext_substmt.storage - uint8_t * lysc_ext_instance.parent - struct lysc_type *
LY_STMT_REVISION | ::lysp_ext_substmt.storage - struct lysp_revision *[] lysp_ext_instance.parent - struct lysp_revision * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - not compiled
LY_STMT_REVISION_DATE | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - const char * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - not compiled
LY_STMT_STATUS | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - uint16_t * ::lysc_ext_substmt.storage - uint16_t * lysc_ext_instance.parent - compiled parent statement
LY_STMT_SUBMODULE | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_submodule * ::lysc_ext_substmt.storage - not compiled lysc_ext_instance.parent - struct lysc_module *
LY_STMT_TYPE | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_type * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - struct lysc_type *
LY_STMT_TYPEDEF | ::lysp_ext_substmt.storage - struct lysp_tpdf *[] lysp_ext_instance.parent - struct lysp_tpdf * ::lysc_ext_substmt.storage - not compiled lysc_ext_instance.parent - struct lysc_type *
LY_STMT_UNIQUE | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_qname *[] ::lysc_ext_substmt.storage - not compiled lysc_ext_instance.parent - struct lysc_node_list *
LY_STMT_UNITS | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - const char * ::lysc_ext_substmt.storage - const char * lysc_ext_instance.parent - struct lysc_node *, struct lysc_type * (typedef)
LY_STMT_VALUE | ::lysp_ext_substmt.storage - int64_t * lysp_ext_instance.parent - struct lysp_type_enum * ::lysc_ext_substmt.storage - int64_t * lysc_ext_instance.parent - struct lysc_type_bitenum_item *
LY_STMT_WHEN | ::lysp_ext_substmt.storage and lysp_ext_instance.parent - struct lysp_when * ::lysc_ext_substmt.storage and lysc_ext_instance.parent - struct lysc_when *
LY_STMT_YANG_VERSION | ::lysp_ext_substmt.storage - uint8_t * lysp_ext_instance.parent - struct lysp_(sub)module * ::lysc_ext_substmt.storage - not compiled lysc_ext_instance.parent - struct lysc_module *
LY_STMT_YIN_ELEMENT | ::lysp_ext_substmt.storage - uint16_t * lysp_ext_instance.parent - struct lysp_ext * ::lysc_ext_substmt.storage - not compiled lysc_ext_instance.parent - struct lysc_ext *
LY_STMT_SYNTAX_SEMICOLON |
LY_STMT_SYNTAX_LEFT_BRACE |
LY_STMT_SYNTAX_RIGHT_BRACE |
LY_STMT_ARG_TEXT |
LY_STMT_ARG_VALUE |

Definition at line 143 of file plugins_exts.h.

## Function Documentation

## lyplg_ext_cfree_instance_substatements()

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().

Parameters

  [in] | ctx | libyang context
  [in] | substmts | Extension instance substatements to free.

## lyplg_ext_get_data()

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().

Parameters

  [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.

Returns
  LY_SUCCESS on success.
  LY_ERR on error.

## lyplg_ext_get_storage()

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.

Parameters

  [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.

Returns
  LY_SUCCESS on success.
  LY_ENOT if the substatement is not supported.

## lyplg_ext_insert()

LIBYANG_API_DECL LY_ERR lyplg_ext_insert | ( | struct lyd_node * | parent,
|  | struct lyd_node * | first )

Insert extension instance data into a parent.

Parameters

  [in] | parent | Parent node to insert into.
  [in] | first | First top-level sibling node to insert.

Returns
  LY_SUCCESS on success.
  LY_ERR error on error.

## lyplg_ext_nodetype2stmt()

LIBYANG_API_DECL enum ly_stmt lyplg_ext_nodetype2stmt | ( | uint16_t | nodetype | ) |

Convert nodetype to statement identifier.

Parameters

  [in] | nodetype | Nodetype to convert.

Returns
  Statement identifier representing the given `nodetype`.

## lyplg_ext_parsed_get_storage()

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.

Parameters

  [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.

Returns
  LY_SUCCESS on success.
  LY_ENOT if the substatement is not supported.

## lyplg_ext_pfree_instance_substatements()

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().

Parameters

  [in] | ctx | libyang context
  [in] | substmts | Extension instance substatements to free.

## lyplg_ext_schema_mount_create_context()

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 freeing the created context.

Parameters

  [in] | ext | Compiled extension instance.
  [out] | ctx | Context with modules loaded from the list found in the extension data.

Returns
  LY_ERR value.

## lyplg_ext_schema_mount_get_parent_ref()

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.

Parameters

  [in] | ext | Context allocated for extension.
  [out] | refs | Set of schema node matching parent-reference XPaths.

Returns
  LY_ERR value.

## lyplg_ext_stmt2str()

LIBYANG_API_DECL const char * lyplg_ext_stmt2str | ( | enum ly_stmt | stmt | ) |

Stringify statement identifier.

Parameters

  [in] | stmt | The statement identifier to stringify.

Returns
  Constant string representation of the given `stmt`.