From cd07912073c951b4bbb871ed2653af1be2cfc714 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 28 Apr 2024 11:55:11 +0200 Subject: Adding upstream version 2.1.30. Signed-off-by: Daniel Baumann --- doc/build.dox | 139 + doc/cesnet-style.css | 106 + doc/compat_report.html | 7645 ++++++++++++++++++++++++++++++++++++++++++++++++ doc/logo.png | Bin 0 -> 2792 bytes doc/transition.dox | 408 +++ 5 files changed, 8298 insertions(+) create mode 100644 doc/build.dox create mode 100644 doc/cesnet-style.css create mode 100644 doc/compat_report.html create mode 100644 doc/logo.png create mode 100644 doc/transition.dox (limited to 'doc') diff --git a/doc/build.dox b/doc/build.dox new file mode 100644 index 0000000..77fd165 --- /dev/null +++ b/doc/build.dox @@ -0,0 +1,139 @@ +/** + * @page build Building libyang + * + * [TOC] + * + * libyang utilizes CMake build system to detect necessary dependencies, checkout the build environment and prepare Makefiles + * for the compilation of the library and acompanied tools. + * + * @section buildRequirements Requirements + * + * @subsection buildRequirementsCompile Building Requirements + * + * - C compiler (gcc, clang, ...) + * - CMake >= 2.8.12 + * - libpcre2 (including headers - devel package) >= 10.30 + * + * @subsubsection buildRequirementsCompileOptional Optional Requirements + * + * - doxygen (for generating documentation) + * - cmocka >= 1.0.0 (for tests) + * - valgrind (for enhanced testing) + * - gcov (for code coverage) + * - lcov (for code coverage) + * - genhtml (for code coverage) + * + * @subsection buildRequirementsRun Runtime Requirements + * + * - libpcre2 (runtime package) >= 10.30 + * + * @section buildCommands Building + * + * To simply build libyang library and the accompanied tools with the default settings, follow these steps (the `#` character + * indicates command(s) to run with `root` privileges): + * + * $ mkdir build; cd build + * $ cmake .. + * $ make + * # make install + * + * The default settings can be changed with various CMake variables set via command line or using e.g. `ccmake(1)` tool. + * The following sections introduces those variables and explain their meaning. + * + * @section buildTypes Build Types + * + * There are several build types according to the primary goal of using the built binaries. + * + * @subsection buildTypesRelese Release + * + * Build type to produce final binaries for production use without any debug option. The compiler flags are set as follows: + * + * -Wall -Wextra -Wno-missing-field-initializers -std=c99 -O3 -DNDEBUG + * + * Here is the list of the selected additional options available in the *Release* build type. + * + * Option | Description | Default + * ----------------------|------------------------------------------------------------------------------------|-------- + * ENABLE_BUILD_TESTS | Build tests. | OFF + * ENABLE_VALGRIND_TESTS | Build tests with valgrind. | OFF + * ENABLE_COVERAGE | Build code coverage report from tests. | OFF + * ENABLE_FUZZ_TARGETS | Build target programs suitable for fuzzing with AFL. | OFF + * ENABLE_STATIC | Build static (.a) library | OFF + * INTERNAL_DOCS | Include developers notes and internal API description into generated Documentation | OFF + * + * Here is the list of available important targets for the `make(1)` tool: + * + * Target | Description + * -------|------------------------------------------------------------------------------------------------------------ + * all | Default target, builds libyang library (.so), `yanglint(1)` and `yangre(1)`. + * clean | Removes files generated by the make process. + * cclean | Extends the `clean` target by removing all the cmake generated files. + * doc | Generate HTML documentation. Requires `doxygen(1)`. + * + * @subsection buildTypesDebug Debug + * + * `Debug` is the default build type, the produced binaries include additional debug information and the prepared tests are + * also built. The compiler flags are set as follows: + * + * -Wall -Wextra -Wno-missing-field-initializers -std=c99 -g3 -O0 + * + * Here is the list of the selected additional options available in the *Debug* build type. + * + * Option | Description | Default + * ----------------------|------------------------------------------------------------------------------------|-------- + * ENABLE_BUILD_TESTS | Build tests. | ON + * ENABLE_VALGRIND_TESTS | Build tests with valgrind. | ON + * ENABLE_COVERAGE | Build code coverage report from tests. | OFF + * ENABLE_FUZZ_TARGETS | Build target programs suitable for fuzzing with AFL. | OFF + * ENABLE_STATIC | Build static (.a) library | OFF + * INTERNAL_DOCS | Include developers notes and internal API description into generated Documentation | OFF + * + * Here is the list of available important targets for the `make(1)` tool: + * + * Target | Description + * -------------|------------------------------------------------------------------------------------------------------ + * all | Default target, builds libyang library (.so), `yanglint(1)` and `yangre(1)`. + * clean | Removes files generated by the make process. + * cclean | Extends the `clean` target by removing all the cmake generated files. + * doc | Generate HTML documentation. Requires `doxygen(1)`. + * test | Run implementation tests. Requires `cmocka` (and `valgrind(1)` for part of the tests). + * format | Reformat source codes using `uncrustify(1)`. + * format-check | Dry-run of the `format` target. + * + * @subsection buildTypesABICheck ABICheck + * + * Special build type to perform check of the ABI/API compatibility and generate reports. In addition to the basic + * requirements, the build type requires some of the ABI Laboratory tools: + * `abi-dumper(1)` and `abi-compliance-checker(1)`. + * + * The compiler flags are set as follows: + * + * -Wall -Wextra -Wno-missing-field-initializers -std=c99 -g -Og + * + * All the additional options are switched OFF and the settings should not be changed. + * + * Here is the list of available important targets for the `make(1)` tool: + * + * Target | Description + * -------------|------------------------------------------------------------------------------------------------------ + * all | Default target, builds libyang library (.so), `yanglint(1)` and `yangre(1)`. + * clean | Removes files generated by the make process. + * cclean | Extends the `clean` target by removing all the cmake generated files. + * doc | Generate HTML documentation. Requires `doxygen(1)`. + * abi-check | Check the backward compatibility of the API/ABI changes. Requires `abi-compliance-checker(1)` and `abi-dump(1)`. + * abi-dump | Helper target for `abi-check` generating API/ABI reports. Requires `abi-dump(1)`. + + * @subsection buildTypesDocOnly DocOnly + * + * Special build type to avoid any requirements except those for building documentation. There are no compiler flags set + * since the build type does not allow building any binary output. The settings of the additional options should not be + * changed. + * + * Here is the list of available important targets for the `make(1)` tool: + * + * Target | Description + * -------------|------------------------------------------------------------------------------------------------------ + * all | Default target, does nothing. + * doc | Generate HTML documentation. Requires `doxygen(1)`. + * + */ diff --git a/doc/cesnet-style.css b/doc/cesnet-style.css new file mode 100644 index 0000000..296c260 --- /dev/null +++ b/doc/cesnet-style.css @@ -0,0 +1,106 @@ +/* CESNET blue: #0068a2 */ + +body { + background-color: #fff; +} + +div.header { + background-image: none; + background-color: #fff; +} + +div.contents { + background-color: #fff; + padding: 1.618em 3.236em; + max-width: 60em; + margin: auto; + margin-left: 0; + text-align: justify; +} + +.sm-dox { + background-image: none; + background-color: #0068a2; + border-bottom: 1px solid white; +} + +.sm-dox a { + background-image: none; + border-right: 1px solid white; + color: white; + text-shadow: none; +} + +.sm-dox a:hover { + background-image: none; + background-color: rgba(0,0,0,0.3); +} + +.sm-dox ul a:hover { + background-image: none; + background-color: #ddd; + text-shadow: none; + color: #555; +} + +.navpath ul { + background-image: none; + background-color: #0068a2; +} + +.navpath li.footer { + color: white; +} +img.footer { + height: 20px; +} + +.navpath li.navelem a { + color: white; + text-shadow: none; +} + +#side-nav { + background-color: #343131; +} + +#nav-tree::-webkit-scrollbar { + width: 5px; +} + +#nav-tree::-webkit-scrollbar-track { + background: #333; + border-radius: 50px; + } + +#nav-tree::-webkit-scrollbar-thumb { + background: #ccc; + border-radius: 50px; +} + +#nav-tree { + background: none; +} + +#nav-tree .item { + padding-top: 10px; + padding-bottom: 10px; +} + +#nav-tree .item:hover { + background-color: rgba(255,255,255,0.2); +} + +#nav-tree a { + color: #fff; + font-size: 1.2em; +} + +#nav-tree .selected { + background-image: none; + background-color: #0068a2; +} + +#nav-tree-contents { + margin: 0; +} diff --git a/doc/compat_report.html b/doc/compat_report.html new file mode 100644 index 0000000..5bcf4d9 --- /dev/null +++ b/doc/compat_report.html @@ -0,0 +1,7645 @@ + + + + + + + + + +libyang.so: 1.9.19 to 2.0.0 compatibility report + + + +

API compatibility report for the libyang.so object between 1.9.19 and 2.0.0 versions on x86_64

+ +
+
+

Test Info


+ + + + + + + +
Module Namelibyang.so
Version #11.9.19
Version #22.0.0
Archx86_64
GCC Version7.5.0
SubjectBinary Compatibility
+

Test Results


+ + + + + + + +
Total Header Files7
Total Source Files11
Total Objects1
Total Symbols / Types174 / 22
Compatibility18.8%
+

Problem Summary


+ + + + + + + + + + +
SeverityCount
Added Symbols-153
Removed SymbolsHigh114
Problems with
Data Types
High17
Medium37
Low90
Problems with
Symbols
High18
Medium57
Low57
Problems with
Constants
Low0
Other Changes
in Data Types
-7
+ +

Added Symbols  153 


+context.h, libyang.so.2.0.0
+ly_ctx_get_module_implemented ( struct ly_ctx const* ctx, char const* name )
+ly_ctx_get_module_implemented_ns ( struct ly_ctx const* ctx, char const* ns )
+ly_ctx_get_module_latest ( struct ly_ctx const* ctx, char const* name )
+ly_ctx_get_module_latest_ns ( struct ly_ctx const* ctx, char const* ns )
+ly_ctx_get_module_ns ( struct ly_ctx const* ctx, char const* ns, char const* revision )
+ly_ctx_get_yanglib_data ( struct ly_ctx const* ctx, struct lyd_node** root_p )
+ly_ctx_get_yanglib_id ( struct ly_ctx const* ctx )
+ly_ctx_reset_latests ( struct ly_ctx* ctx )
+ly_ctx_set_options ( struct ly_ctx* ctx, uint16_t option )
+ly_ctx_unset_options ( struct ly_ctx* ctx, uint16_t option )
+ly_ctx_unset_searchdir ( struct ly_ctx* ctx, char const* value )
+ly_ctx_unset_searchdir_last ( struct ly_ctx* ctx, uint32_t count )
+
+in.h, libyang.so.2.0.0
+ly_in_fd ( struct ly_in* in, int fd )
+ly_in_file ( struct ly_in* in, FILE* f )
+ly_in_filepath ( struct ly_in* in, char const* filepath, size_t len )
+ly_in_free ( struct ly_in* in, ly_bool destroy )
+ly_in_memory ( struct ly_in* in, char const* str )
+ly_in_new_fd ( int fd, struct ly_in** in )
+ly_in_new_file ( FILE* f, struct ly_in** in )
+ly_in_new_filepath ( char const* filepath, size_t len, struct ly_in** in )
+ly_in_new_memory ( char const* str, struct ly_in** in )
+ly_in_parsed ( struct ly_in const* in )
+ly_in_reset ( struct ly_in* in )
+ly_in_type ( struct ly_in const* in )
+
+log.h, libyang.so.2.0.0
+ly_err_last ( struct ly_ctx const* ctx )
+ly_errcode ( struct ly_ctx const* ctx )
+ly_log_dbg_groups ( uint32_t dbg_groups )
+ly_log_level ( enum LY_LOG_LEVEL level )
+
+out.h, libyang.so.2.0.0
+ly_out_clb ( struct ly_out* out, ly_write_clb writeclb )
+ly_out_clb_arg ( struct ly_out* out, void* arg )
+ly_out_fd ( struct ly_out* out, int fd )
+ly_out_file ( struct ly_out* out, FILE* f )
+ly_out_filepath ( struct ly_out* out, char const* filepath )
+ly_out_free ( struct ly_out* out, void(*clb_arg_destructor)(void*), ly_bool destroy )
+ly_out_new_clb ( ly_write_clb writeclb, void* user_data, struct ly_out** out )
+ly_out_new_fd ( int fd, struct ly_out** out )
+ly_out_new_file ( FILE* f, struct ly_out** out )
+ly_out_new_filepath ( char const* filepath, struct ly_out** out )
+ly_out_new_memory ( char** strp, size_t size, struct ly_out** out )
+ly_out_printed ( struct ly_out const* out )
+ly_out_reset ( struct ly_out* out )
+ly_out_type ( struct ly_out const* out )
+ly_print ( struct ly_out* out, char const* format, ... )
+ly_print_flush ( struct ly_out* out )
+ly_write ( struct ly_out* out, char const* buf, size_t len )
+
+parser_data.h, libyang.so.2.0.0
+lyd_parse_data ( struct ly_ctx const* ctx, struct ly_in* in, enum LYD_FORMAT format, uint32_t parse_options, uint32_t validate_options, struct lyd_node** tree )
+lyd_parse_data_fd ( struct ly_ctx const* ctx, int fd, enum LYD_FORMAT format, uint32_t parse_options, uint32_t validate_options, struct lyd_node** tree )
+lyd_parse_data_mem ( struct ly_ctx const* ctx, char const* data, enum LYD_FORMAT format, uint32_t parse_options, uint32_t validate_options, struct lyd_node** tree )
+lyd_parse_data_path ( struct ly_ctx const* ctx, char const* path, enum LYD_FORMAT format, uint32_t parse_options, uint32_t validate_options, struct lyd_node** tree )
+lyd_parse_notif ( struct ly_ctx const* ctx, struct ly_in* in, enum LYD_FORMAT format, struct lyd_node** tree, struct lyd_node** ntf )
+lyd_parse_reply ( struct lyd_node const* request, struct ly_in* in, enum LYD_FORMAT format, struct lyd_node** tree, struct lyd_node** op )
+lyd_parse_rpc ( struct ly_ctx const* ctx, struct ly_in* in, enum LYD_FORMAT format, struct lyd_node** tree, struct lyd_node** op )
+lyd_validate_all ( struct lyd_node** tree, struct ly_ctx const* ctx, uint32_t val_opts, struct lyd_node** diff )
+lyd_validate_module ( struct lyd_node** tree, struct lys_module const* module, uint32_t val_opts, struct lyd_node** diff )
+lyd_validate_op ( struct lyd_node* op_tree, struct lyd_node const* tree, enum LYD_VALIDATE_OP op, struct lyd_node** diff )
+
+parser_schema.h, libyang.so.2.0.0
+lys_parse ( struct ly_ctx* ctx, struct ly_in* in, enum LYS_INFORMAT format, char const** features, struct lys_module const** module )
+
+plugins_types.h, libyang.so.2.0.0
+ly_err_free ( void* ptr )
+ly_err_new ( enum LY_LOG_LEVEL level, enum LY_ERR no, enum LY_VECODE vecode, char* msg, char* path, char* apptag )
+ly_type_identity_isderived ( struct lysc_ident* base, struct lysc_ident* der )
+ly_type_parse_dec64 ( uint8_t fraction_digits, char const* value, size_t value_len, int64_t* ret, struct ly_err_item** err )
+ly_type_parse_int ( char const* datatype, int base, int64_t min, int64_t max, char const* value, size_t value_len, int64_t* ret, struct ly_err_item** err )
+ly_type_parse_uint ( char const* datatype, int base, uint64_t max, char const* value, size_t value_len, uint64_t* ret, struct ly_err_item** err )
+ly_type_print_get_prefix ( struct lys_module const* mod, enum LY_PREFIX_FORMAT format, void* prefix_data )
+ly_type_store_resolve_prefix ( struct ly_ctx const* ctx, char const* prefix, size_t prefix_len, enum LY_PREFIX_FORMAT format, void* prefix_data )
+ly_type_validate_patterns ( struct lysc_pattern** patterns, char const* str, size_t str_len, struct ly_err_item** err )
+ly_type_validate_range ( enum LY_DATA_TYPE basetype, struct lysc_range* range, int64_t value, char const* strval, struct ly_err_item** err )
+lysc_prefixes_compile ( char const* str, size_t str_len, struct lysp_module const* prefix_mod, struct lysc_prefix** prefixes )
+lysc_prefixes_dup ( struct lysc_prefix const* orig, struct lysc_prefix** dup )
+lysc_prefixes_free ( struct lysc_prefix* prefixes )
+
+printer_data.h, libyang.so.2.0.0
+lyd_print_all ( struct ly_out* out, struct lyd_node const* root, enum LYD_FORMAT format, uint32_t options )
+lyd_print_tree ( struct ly_out* out, struct lyd_node const* root, enum LYD_FORMAT format, uint32_t options )
+
+printer_schema.h, libyang.so.2.0.0
+lys_print_module ( struct ly_out* out, struct lys_module const* module, enum LYS_OUTFORMAT format, size_t UNUSED_line_length, uint32_t options )
+lys_print_node ( struct ly_out* out, struct lysc_node const* node, enum LYS_OUTFORMAT format, size_t UNUSED_line_length, uint32_t options )
+lys_print_submodule ( struct ly_out* out, struct lys_module const* module, struct lysp_submodule const* submodule, enum LYS_OUTFORMAT format, size_t UNUSED_line_length, uint32_t options )
+
+set.h, libyang.so.2.0.0
+ly_set_erase ( struct ly_set* set, void(*destructor)(void*) )
+
+tree_data.h, libyang.so.2.0.0
+lyd_any_copy_value ( struct lyd_node* trg, union lyd_any_value const* value, enum LYD_ANYDATA_VALUETYPE value_type )
+lyd_change_meta ( struct lyd_meta* meta, char const* val_str )
+lyd_change_term ( struct lyd_node* term, char const* val_str )
+lyd_child ( struct lyd_node const* node )
+lyd_child_no_keys ( struct lyd_node const* node )
+lyd_compare_meta ( struct lyd_meta const* meta1, struct lyd_meta const* meta2 )
+lyd_compare_siblings ( struct lyd_node const* node1, struct lyd_node const* node2, uint32_t options )
+lyd_compare_single ( struct lyd_node const* node1, struct lyd_node const* node2, uint32_t options )
+lyd_diff_apply_all ( struct lyd_node** data, struct lyd_node const* diff )
+lyd_diff_apply_module ( struct lyd_node** data, struct lyd_node const* diff, struct lys_module const* mod, lyd_diff_cb diff_cb, void* cb_data )
+lyd_diff_merge_all ( struct lyd_node** diff, struct lyd_node const* src_diff )
+lyd_diff_merge_module ( struct lyd_node** diff, struct lyd_node const* src_diff, struct lys_module const* mod, lyd_diff_cb diff_cb, void* cb_data )
+lyd_diff_merge_tree ( struct lyd_node** diff_first, struct lyd_node* diff_parent, struct lyd_node const* src_sibling, lyd_diff_cb diff_cb, void* cb_data )
+lyd_diff_reverse_all ( struct lyd_node const* src_diff, struct lyd_node** diff )
+lyd_diff_siblings ( struct lyd_node const* first, struct lyd_node const* second, uint16_t options, struct lyd_node** diff )
+lyd_diff_tree ( struct lyd_node const* first, struct lyd_node const* second, uint16_t options, struct lyd_node** diff )
+lyd_dup_meta_single ( struct lyd_meta const* meta, struct lyd_node* node, struct lyd_meta** dup )
+lyd_dup_siblings ( struct lyd_node const* node, struct lyd_node_inner* parent, uint32_t options, struct lyd_node** dup )
+lyd_dup_single ( struct lyd_node const* node, struct lyd_node_inner* parent, uint32_t options, struct lyd_node** dup )
+lyd_find_meta ( struct lyd_meta const* first, struct lys_module const* module, char const* name )
+lyd_find_sibling_first ( struct lyd_node const* siblings, struct lyd_node const* target, struct lyd_node** match )
+lyd_find_xpath ( struct lyd_node const* ctx_node, char const* xpath, struct ly_set** set )
+lyd_free_all ( struct lyd_node* node )
+lyd_free_attr_siblings ( struct ly_ctx const* ctx, struct lyd_attr* attr )
+lyd_free_attr_single ( struct ly_ctx const* ctx, struct lyd_attr* attr )
+lyd_free_meta_siblings ( struct lyd_meta* meta )
+lyd_free_meta_single ( struct lyd_meta* meta )
+lyd_free_siblings ( struct lyd_node* node )
+lyd_free_tree ( struct lyd_node* node )
+lyd_insert_child ( struct lyd_node* parent, struct lyd_node* node )
+lyd_is_default ( struct lyd_node const* node )
+lyd_merge_siblings ( struct lyd_node** target, struct lyd_node const* source, uint16_t options )
+lyd_merge_tree ( struct lyd_node** target, struct lyd_node const* source, uint16_t options )
+lyd_new_any ( struct lyd_node* parent, struct lys_module const* module, char const* name, void const* value, enum LYD_ANYDATA_VALUETYPE value_type, ly_bool output, struct lyd_node** node )
+lyd_new_attr ( struct lyd_node* parent, char const* module_name, char const* name, char const* val_str, struct lyd_attr** attr )
+lyd_new_implicit_all ( struct lyd_node** tree, struct ly_ctx const* ctx, uint32_t implicit_options, struct lyd_node** diff )
+lyd_new_implicit_module ( struct lyd_node** tree, struct lys_module const* module, uint32_t implicit_options, struct lyd_node** diff )
+lyd_new_implicit_tree ( struct lyd_node* tree, uint32_t implicit_options, struct lyd_node** diff )
+lyd_new_inner ( struct lyd_node* parent, struct lys_module const* module, char const* name, ly_bool output, struct lyd_node** node )
+lyd_new_list ( struct lyd_node* parent, struct lys_module const* module, char const* name, ly_bool output, struct lyd_node** node, ... )
+lyd_new_list2 ( struct lyd_node* parent, struct lys_module const* module, char const* name, char const* keys, ly_bool output, struct lyd_node** node )
+lyd_new_meta ( struct lyd_node* parent, struct lys_module const* module, char const* name, char const* val_str, struct lyd_meta** meta )
+lyd_new_opaq ( struct lyd_node* parent, struct ly_ctx const* ctx, char const* name, char const* value, char const* module_name, struct lyd_node** node )
+lyd_new_path2 ( struct lyd_node* parent, struct ly_ctx const* ctx, char const* path, void const* value, enum LYD_ANYDATA_VALUETYPE value_type, uint32_t options, struct lyd_node** new_parent, struct lyd_node** new_node )
+lyd_new_term ( struct lyd_node* parent, struct lys_module const* module, char const* name, char const* val_str, ly_bool output, struct lyd_node** node )
+lyd_owner_module ( struct lyd_node const* node )
+lyd_parent ( struct lyd_node const* node )
+lyd_target ( struct ly_path const* path, struct lyd_node const* tree )
+lyd_unlink_tree ( struct lyd_node* node )
+lyd_value_compare ( struct lyd_node_term const* node, char const* value, size_t value_len )
+lyd_value_validate ( struct ly_ctx const* ctx, struct lyd_node_term const* node, char const* value, size_t value_len, struct lyd_node const* tree, struct lysc_type const** realtype )
+
+tree_schema.h, libyang.so.2.0.0
+lyext_parent2str ( enum LYEXT_PARENT type )
+lys_feature_value ( struct lys_module const* module, char const* feature )
+lys_find_child ( struct lysc_node const* parent, struct lys_module const* module, char const* name, size_t name_len, uint16_t nodetype, uint32_t options )
+lys_find_expr_atoms ( struct lysc_node const* ctx_node, struct lys_module const* cur_mod, struct lyxp_expr const* expr, struct lysc_prefix const* prefixes, uint32_t options, struct ly_set** set )
+lys_find_lypath_atoms ( struct ly_path const* path, struct ly_set** set )
+lys_find_path_atoms ( struct ly_ctx const* ctx, struct lysc_node const* ctx_node, char const* path, ly_bool output, struct ly_set** set )
+lys_find_xpath ( struct lysc_node const* ctx_node, char const* xpath, uint32_t options, struct ly_set** set )
+lys_find_xpath_atoms ( struct lysc_node const* ctx_node, char const* xpath, uint32_t options, struct ly_set** set )
+lys_nodetype2str ( uint16_t nodetype )
+lys_value_validate ( struct ly_ctx const* ctx, struct lysc_node const* node, char const* value, size_t value_len )
+lysc_iffeature_value ( struct lysc_iffeature const* iff )
+lysc_module_dfs_full ( struct lys_module const* mod, lysc_dfs_clb dfs_clb, void* data )
+lysc_node_actions ( struct lysc_node const* node )
+lysc_node_children ( struct lysc_node const* node, uint16_t flags )
+lysc_node_children_full ( struct lysc_node const* node, uint16_t flags )
+lysc_node_notifs ( struct lysc_node const* node )
+lysc_node_parent_full ( struct lysc_node const* node )
+lysc_path ( struct lysc_node const* node, enum LYSC_PATH_TYPE pathtype, char* buffer, size_t buflen )
+lysc_set_private ( struct lysc_node const* node, void* priv, void** prev_priv_p )
+lysc_tree_dfs_full ( struct lysc_node const* root, lysc_dfs_clb dfs_clb, void* data )
+lysp_feature_next ( struct lysp_feature const* last, struct lysp_module const* pmod, uint32_t* idx )
+lysp_node_actions ( struct lysp_node const* node )
+lysp_node_children ( struct lysp_node const* node )
+lysp_node_groupings ( struct lysp_node const* node )
+lysp_node_notifs ( struct lysp_node const* node )
+lysp_node_typedefs ( struct lysp_node const* node )
+lyxp_get_expr ( struct lyxp_expr const* path )
+
+to the top
+

Removed Symbols  114 


+extensions.h, libyang.so.1.9.19
+lyext_vlog ( struct ly_ctx const* ctx, enum LY_VECODE vecode, char const* plugin, char const* function, enum LYEXT_VLOG_ELEM elem_type, void const* elem, char const* format, ... )
+lys_iffeature_free ( struct ly_ctx* ctx, struct lys_iffeature* iffeature, uint8_t iffeature_size, int shallow, void(*private_destructor)(struct lys_node const*, void*) )
+
+libyang.h, libyang.so.1.9.19
+ly_ctx_clean ( struct ly_ctx* ctx, void(*private_destructor)(struct lys_node const*, void*) )
+ly_ctx_find_path ( struct ly_ctx* ctx, char const* path )
+ly_ctx_get_disabled_module_iter ( struct ly_ctx const* ctx, uint32_t* idx )
+ly_ctx_get_module_by_ns ( struct ly_ctx const* ctx, char const* ns, char const* revision, int implemented )
+ly_ctx_get_module_data_clb ( struct ly_ctx const* ctx, void** user_data )
+ly_ctx_get_module_older ( struct ly_ctx const* ctx, struct lys_module const* module )
+ly_ctx_get_node ( struct ly_ctx const* ctx, struct lys_node const* start, char const* nodeid, int output )
+ly_ctx_get_submodule ( struct ly_ctx const* ctx, char const* module, char const* revision, char const* submodule, char const* sub_revision )
+ly_ctx_get_submodule2 ( struct lys_module const* main_module, char const* submodule )
+ly_ctx_info ( struct ly_ctx* ctx )
+ly_ctx_new_ylmem ( char const* search_dir, char const* data, enum LYD_FORMAT format, int options )
+ly_ctx_new_ylpath ( char const* search_dir, char const* path, enum LYD_FORMAT format, int options )
+ly_ctx_remove_module ( struct lys_module const* module, void(*private_destructor)(struct lys_node const*, void*) )
+ly_ctx_set_allimplemented ( struct ly_ctx* ctx )
+ly_ctx_set_disable_searchdir_cwd ( struct ly_ctx* ctx )
+ly_ctx_set_disable_searchdirs ( struct ly_ctx* ctx )
+ly_ctx_set_module_data_clb ( struct ly_ctx* ctx, ly_module_data_clb clb, void* user_data )
+ly_ctx_set_prefer_searchdirs ( struct ly_ctx* ctx )
+ly_ctx_set_trusted ( struct ly_ctx* ctx )
+ly_ctx_unset_allimplemented ( struct ly_ctx* ctx )
+ly_ctx_unset_disable_searchdir_cwd ( struct ly_ctx* ctx )
+ly_ctx_unset_disable_searchdirs ( struct ly_ctx* ctx )
+ly_ctx_unset_prefer_searchdirs ( struct ly_ctx* ctx )
+ly_ctx_unset_searchdirs ( struct ly_ctx* ctx, int index )
+ly_ctx_unset_trusted ( struct ly_ctx* ctx )
+ly_errno_glob_address ( )
+ly_path_data2schema ( struct ly_ctx* ctx, char const* data_path )
+ly_path_xml2json ( struct ly_ctx* ctx, char const* xml_path, struct lyxml_elem* xml )
+ly_verb ( enum LY_LOG_LEVEL level )
+ly_verb_dbg ( int dbg_groups )
+
+tree_data.h, libyang.so.1.9.19
+lyd_change_leaf ( struct lyd_node_leaf_list* leaf, char const* val_str )
+lyd_dec64_to_double ( struct lyd_node const* node )
+lyd_diff ( struct lyd_node* first, struct lyd_node* second, int options )
+lyd_dup ( struct lyd_node const* node, int options )
+lyd_dup_to_ctx ( struct lyd_node const* node, int options, struct ly_ctx* ctx )
+lyd_dup_withsiblings ( struct lyd_node const* node, int options )
+lyd_find_instance ( struct lyd_node const* data, struct lys_node const* schema )
+lyd_find_path ( struct lyd_node const* ctx_node, char const* path )
+lyd_find_sibling ( struct lyd_node const* siblings, struct lyd_node const* target, struct lyd_node** match )
+lyd_find_sibling_set ( struct lyd_node const* siblings, struct lyd_node const* target, struct ly_set** set )
+lyd_free ( struct lyd_node* node )
+lyd_free_attr ( struct ly_ctx* ctx, struct lyd_node* parent, struct lyd_attr* attr, int recursive )
+lyd_free_diff ( struct lyd_difflist* diff )
+lyd_free_val_diff ( struct lyd_difflist* diff )
+lyd_free_withsiblings ( struct lyd_node* node )
+lyd_insert ( struct lyd_node* parent, struct lyd_node* node )
+lyd_insert_attr ( struct lyd_node* parent, struct lys_module const* mod, char const* name, char const* value )
+lyd_leaf_type ( struct lyd_node_leaf_list const* leaf )
+lyd_merge ( struct lyd_node* target, struct lyd_node const* source, int options )
+lyd_merge_to_ctx ( struct lyd_node** trg, struct lyd_node const* src, int options, struct ly_ctx* ctx )
+lyd_new ( struct lyd_node* parent, struct lys_module const* module, char const* name )
+lyd_new_anydata ( struct lyd_node* parent, struct lys_module const* module, char const* name, void* value, enum LYD_ANYDATA_VALUETYPE value_type )
+lyd_new_leaf ( struct lyd_node* parent, struct lys_module const* module, char const* name, char const* val_str )
+lyd_new_output ( struct lyd_node* parent, struct lys_module const* module, char const* name )
+lyd_new_output_anydata ( struct lyd_node* parent, struct lys_module const* module, char const* name, void* value, enum LYD_ANYDATA_VALUETYPE value_type )
+lyd_new_output_leaf ( struct lyd_node* parent, struct lys_module const* module, char const* name, char const* val_str )
+lyd_new_yangdata ( struct lys_module const* module, char const* name_template, char const* name )
+lyd_node_module ( struct lyd_node const* node )
+lyd_node_should_print ( struct lyd_node const* node, int options )
+lyd_parse_fd ( struct ly_ctx* ctx, int fd, enum LYD_FORMAT format, int options, ... )
+lyd_parse_mem ( struct ly_ctx* ctx, char const* data, enum LYD_FORMAT format, int options, ... )
+lyd_parse_path ( struct ly_ctx* ctx, char const* path, enum LYD_FORMAT format, int options, ... )
+lyd_parse_xml ( struct ly_ctx* ctx, struct lyxml_elem** root, int options, ... )
+lyd_schema_sort ( struct lyd_node* sibling, int recursive )
+lyd_unlink ( struct lyd_node* node )
+lyd_validate ( struct lyd_node** node, int options, void* var_arg, ... )
+lyd_validate_modules ( struct lyd_node** node, struct lys_module const** modules, int mod_count, int options, ... )
+lyd_validate_value ( struct lys_node* node, char const* value )
+lyd_value_type ( struct lys_node* node, char const* value, struct lys_type** type )
+lyd_wd_default ( struct lyd_node_leaf_list* node )
+
+tree_schema.h, libyang.so.1.9.19
+ly_clean_plugins ( )
+ly_get_loaded_plugins ( )
+ly_load_plugins ( )
+ly_register_exts ( struct lyext_plugin_list* plugin, char const* log_name )
+ly_register_types ( struct lytype_plugin_list* plugin, char const* log_name )
+lys_data_path ( struct lys_node const* node )
+lys_data_path_pattern ( struct lys_node const* node, char const* placeholder )
+lys_ext_complex_get_substmt ( enum LY_STMT stmt, struct lys_ext_instance_complex* ext, struct lyext_substmt** info )
+lys_ext_instance_presence ( struct lys_ext* def, struct lys_ext_instance** ext, uint8_t ext_size )
+lys_ext_instance_substmt ( struct lys_ext_instance const* ext )
+lys_features_disable ( struct lys_module const* module, char const* feature )
+lys_features_disable_force ( struct lys_module const* module, char const* feature )
+lys_features_enable ( struct lys_module const* module, char const* feature )
+lys_features_enable_force ( struct lys_module const* module, char const* feature )
+lys_features_list ( struct lys_module const* module, uint8_t** states )
+lys_features_state ( struct lys_module const* module, char const* feature )
+lys_getnext_union_type ( struct lys_type const* last, struct lys_type const* type )
+lys_iffeature_value ( struct lys_iffeature const* iff )
+lys_implemented_module ( struct lys_module const* mod )
+lys_is_disabled ( struct lys_node const* node, int recursive )
+lys_is_key ( struct lys_node_leaf const* node, uint8_t* index )
+lys_main_module ( struct lys_module const* module )
+lys_node_module ( struct lys_node const* node )
+lys_node_xpath_atomize ( struct lys_node const* node, int options )
+lys_parent ( struct lys_node const* node )
+lys_path ( struct lys_node const* node, int options )
+lys_set_disabled ( struct lys_module const* module )
+lys_set_enabled ( struct lys_module const* module )
+lys_set_private ( struct lys_node const* node, void* priv )
+lys_xpath_atomize ( struct lys_node const* ctx_node, enum lyxp_node_type ctx_node_type, char const* expr, int options )
+
+xml.h, libyang.so.1.9.19
+lyxml_dup ( struct ly_ctx* ctx, struct lyxml_elem* root )
+lyxml_free ( struct ly_ctx* ctx, struct lyxml_elem* elem )
+lyxml_free_withsiblings ( struct ly_ctx* ctx, struct lyxml_elem* elem )
+lyxml_get_attr ( struct lyxml_elem const* elem, char const* name, char const* ns )
+lyxml_get_ns ( struct lyxml_elem const* elem, char const* prefix )
+lyxml_parse_mem ( struct ly_ctx* ctx, char const* data, int options )
+lyxml_parse_path ( struct ly_ctx* ctx, char const* filename, int options )
+lyxml_print_clb ( ssize_t(*writeclb)(void*, void const*, size_t), void* arg, struct lyxml_elem const* elem, int options )
+lyxml_print_fd ( int fd, struct lyxml_elem const* elem, int options )
+lyxml_print_file ( FILE* stream, struct lyxml_elem const* elem, int options )
+lyxml_print_mem ( char** strp, struct lyxml_elem const* elem, int options )
+lyxml_unlink ( struct ly_ctx* ctx, struct lyxml_elem* elem )
+
+to the top
+ +

Problems with Data Types, High Severity  17 


+tree_schema.h
+ +[+] struct lys_module  17  +
+ + +
+to the top
+ +

Problems with Symbols, High Severity  18 


+libyang.h, libyang.so.1.9.19
+ +[+] ly_ctx_new ( char const* search_dir, int options )  1  +
+ + +[+] ly_set_add ( struct ly_set* set, void* node, int options )  1  +
+ + +[+] ly_set_log_clb ( void(*clb)(LY_LOG_LEVEL, char const*, char const*), int path )  1  +
+ + +[+] ly_set_merge ( struct ly_set* trg, struct ly_set* src, int options )  1  +
+ +
+tree_data.h, libyang.so.1.9.19
+ +[+] lyd_find_sibling_val ( struct lyd_node const* siblings, struct lys_node const* schema, char const* key_or_value, struct lyd_node** match )  1  +
+ + +[+] lyd_new_path ( struct lyd_node* data_tree, struct ly_ctx const* ctx, char const* path, void* value, enum LYD_ANYDATA_VALUETYPE value_type, int options )  2  +
+ +
+tree_schema.h, libyang.so.1.9.19
+ +[+] lys_find_path ( struct lys_module const* cur_module, struct lys_node const* cur_node, char const* path )  4  +
+ + +[+] lys_print_clb ( ssize_t(*writeclb)(void*, void const*, size_t), void* arg, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_fd ( int fd, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_file ( FILE* f, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_mem ( char** strp, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_path ( char const* path, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_search_localfile ( char const*const* searchpaths, int cwd, char const* name, char const* revision, char** localfile, LYS_INFORMAT* format )  1  +
+ + +[+] lys_set_implemented ( struct lys_module const* module )  1  +
+ +
+to the top
+ +

Problems with Data Types, Medium Severity  37 


+libyang.h
+ +[+] enum LY_ERR  3  +
+ + +
+tree_data.h
+ +[+] struct lyd_node  11  +
+ + +
+tree_schema.h
+ +[+] enum LYS_INFORMAT  1  +
+ + + +[+] enum LYS_OUTFORMAT  2  +
+ + + +[+] struct lys_module  20  +
+ + +
+to the top
+ +

Problems with Symbols, Medium Severity  57 


+dict.h, libyang.so.1.9.19
+ +[+] lydict_insert ( struct ly_ctx* ctx, char const* value, size_t len )  3  +
+ + +[+] lydict_insert_zc ( struct ly_ctx* ctx, char* value )  3  +
+ +
+libyang.h, libyang.so.1.9.19
+ +[+] ly_ctx_get_module ( struct ly_ctx const* ctx, char const* name, char const* revision, int implemented )  1  +
+ + +[+] ly_ctx_get_options ( struct ly_ctx* ctx )  1  +
+ + +[+] ly_ctx_load_module ( struct ly_ctx* ctx, char const* name, char const* revision )  1  +
+ + +[+] ly_ctx_new ( char const* search_dir, int options )  3  +
+ + +[+] ly_set_add ( struct ly_set* set, void* node, int options )  1  +
+ + +[+] ly_set_clean ( struct ly_set* set )  2  +
+ + +[+] ly_set_contains ( struct ly_set const* set, void* node )  2  +
+ + +[+] ly_set_dup ( struct ly_set const* set )  4  +
+ + +[+] ly_set_free ( struct ly_set* set )  1  +
+ + +[+] ly_set_merge ( struct ly_set* trg, struct ly_set* src, int options )  1  +
+ + +[+] ly_set_new ( )  3  +
+ + +[+] ly_set_rm ( struct ly_set* set, void* node )  1  +
+ + +[+] ly_set_rm_index ( struct ly_set* set, unsigned int index )  1  +
+ +
+tree_data.h, libyang.so.1.9.19
+ +[+] lyd_find_sibling_val ( struct lyd_node const* siblings, struct lys_node const* schema, char const* key_or_value, struct lyd_node** match )  1  +
+ + +[+] lyd_insert_sibling ( struct lyd_node** sibling, struct lyd_node* node )  2  +
+ + +[+] lyd_new_path ( struct lyd_node* data_tree, struct ly_ctx const* ctx, char const* path, void* value, enum LYD_ANYDATA_VALUETYPE value_type, int options )  2  +
+ + +[+] lyd_path ( struct lyd_node const* node )  3  +
+ +
+tree_schema.h, libyang.so.1.9.19
+ +[+] lys_find_path ( struct lys_module const* cur_module, struct lys_node const* cur_node, char const* path )  2  +
+ + +[+] lys_getnext ( struct lys_node const* last, struct lys_node const* parent, struct lys_module const* module, int options )  4  +
+ + +[+] lys_parse_fd ( struct ly_ctx* ctx, int fd, enum LYS_INFORMAT format )  3  +
+ + +[+] lys_parse_mem ( struct ly_ctx* ctx, char const* data, enum LYS_INFORMAT format )  3  +
+ + +[+] lys_parse_path ( struct ly_ctx* ctx, char const* path, enum LYS_INFORMAT format )  3  +
+ + +[+] lys_print_clb ( ssize_t(*writeclb)(void*, void const*, size_t), void* arg, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_fd ( int fd, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_file ( FILE* f, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_mem ( char** strp, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_path ( char const* path, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_set_implemented ( struct lys_module const* module )  1  +
+ +
+to the top
+ +

Problems with Data Types, Low Severity  90 


+libyang.h
+ +[+] enum LY_VECODE  77  +
+ + + +[+] struct ly_set  3  +
+ + + +[+] typedef ly_module_imp_clb  1  +
+ + +
+tree_data.h
+ +[+] struct lyd_node  5  +
+ + +
+tree_schema.h
+ +[+] enum LYS_OUTFORMAT  2  +
+ + + +[+] struct lys_module  2  +
+ + +
+to the top
+ +

Problems with Symbols, Low Severity  57 


+dict.h, libyang.so.1.9.19
+ +[+] lydict_insert ( struct ly_ctx* ctx, char const* value, size_t len )  1  +
+ + +[+] lydict_insert_zc ( struct ly_ctx* ctx, char* value )  1  +
+ + +[+] lydict_remove ( struct ly_ctx* ctx, char const* value )  1  +
+ +
+libyang.h, libyang.so.1.9.19
+ +[+] ly_ctx_destroy ( struct ly_ctx* ctx, void(*private_destructor)(struct lys_node const*, void*) )  1  +
+ + +[+] ly_ctx_get_module ( struct ly_ctx const* ctx, char const* name, char const* revision, int implemented )  1  +
+ + +[+] ly_ctx_get_module_iter ( struct ly_ctx const* ctx, uint32_t* idx )  1  +
+ + +[+] ly_ctx_get_options ( struct ly_ctx* ctx )  1  +
+ + +[+] ly_ctx_internal_modules_count ( struct ly_ctx* ctx )  2  +
+ + +[+] ly_ctx_set_searchdir ( struct ly_ctx* ctx, char const* search_dir )  1  +
+ + +[+] ly_get_log_clb ( )  1  +
+ + +[+] ly_log_options ( int opts )  2  +
+ + +[+] ly_set_add ( struct ly_set* set, void* node, int options )  2  +
+ + +[+] ly_set_contains ( struct ly_set const* set, void* node )  1  +
+ + +[+] ly_set_log_clb ( void(*clb)(LY_LOG_LEVEL, char const*, char const*), int path )  1  +
+ + +[+] ly_set_merge ( struct ly_set* trg, struct ly_set* src, int options )  1  +
+ + +[+] ly_set_rm ( struct ly_set* set, void* node )  2  +
+ + +[+] ly_set_rm_index ( struct ly_set* set, unsigned int index )  2  +
+ +
+tree_data.h, libyang.so.1.9.19
+ +[+] lyd_find_sibling_val ( struct lyd_node const* siblings, struct lys_node const* schema, char const* key_or_value, struct lyd_node** match )  1  +
+ + +[+] lyd_first_sibling ( struct lyd_node* node )  1  +
+ + +[+] lyd_insert_after ( struct lyd_node* sibling, struct lyd_node* node )  1  +
+ + +[+] lyd_insert_before ( struct lyd_node* sibling, struct lyd_node* node )  1  +
+ + +[+] lyd_insert_sibling ( struct lyd_node** sibling, struct lyd_node* node )  2  +
+ + +[+] lyd_list_pos ( struct lyd_node const* node )  2  +
+ + +[+] lyd_new_path ( struct lyd_node* data_tree, struct ly_ctx const* ctx, char const* path, void* value, enum LYD_ANYDATA_VALUETYPE value_type, int options )  5  +
+ + +[+] lyd_print_clb ( ssize_t(*writeclb)(void*, void const*, size_t), void* arg, struct lyd_node const* root, enum LYD_FORMAT format, int options )  4  +
+ + +[+] lyd_print_fd ( int fd, struct lyd_node const* root, enum LYD_FORMAT format, int options )  2  +
+ + +[+] lyd_print_file ( FILE* f, struct lyd_node const* root, enum LYD_FORMAT format, int options )  2  +
+ + +[+] lyd_print_mem ( char** strp, struct lyd_node const* root, enum LYD_FORMAT format, int options )  2  +
+ + +[+] lyd_print_path ( char const* path, struct lyd_node const* root, enum LYD_FORMAT format, int options )  2  +
+ +
+tree_schema.h, libyang.so.1.9.19
+ +[+] lys_getnext ( struct lys_node const* last, struct lys_node const* parent, struct lys_module const* module, int options )  1  +
+ + +[+] lys_print_clb ( ssize_t(*writeclb)(void*, void const*, size_t), void* arg, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  3  +
+ + +[+] lys_print_fd ( int fd, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_file ( FILE* f, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_mem ( char** strp, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_path ( char const* path, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_search_localfile ( char const*const* searchpaths, int cwd, char const* name, char const* revision, char** localfile, LYS_INFORMAT* format )  1  +
+ + +[+] lys_set_implemented ( struct lys_module const* module )  1  +
+ +
+to the top
+ +

Other Changes in Data Types  7 


+libyang.h
+ +[+] enum LY_ERR  6  +
+ + +
+tree_schema.h
+ +[+] enum LYS_OUTFORMAT  1  +
+ + +
+to the top
+

Header Files  7 


+
+dict.h
+extensions.h
+libyang.h
+tree_data.h
+tree_schema.h
+user_types.h
+xml.h
+
+
to the top
+

Source Files  11 


+
+common.c
+context.c
+hash_table.c
+log.c
+parser_lyb.c
+parser_xml.c
+plugins.c
+printer.c
+tree_data.c
+tree_schema.c
+xml.c
+
+
to the top
+

Objects  1 


+
+libyang.so.1.9.19
+
+
to the top
+


+

Test Info


+ + + + + + +
Module Namelibyang.so
Version #11.9.19
Version #22.0.0
Archx86_64
SubjectSource Compatibility
+

Test Results


+ + + + + + + +
Total Header Files7
Total Source Files11
Total Objects1
Total Symbols / Types174 / 22
Compatibility14.1%
+

Problem Summary


+ + + + + + + + + + + +
SeverityCount
Added Symbols-154
Removed SymbolsHigh114
Problems with
Data Types
High112
Medium2
Low9
Problems with
Symbols
High13
Medium47
Low52
Problems with
Constants
Low0
Other Changes
in Data Types
-24
Other Changes
in Symbols
-10
+ +

Added Symbols  154 


+context.h
+ly_ctx_get_module_implemented ( struct ly_ctx const* ctx, char const* name )
+ly_ctx_get_module_implemented_ns ( struct ly_ctx const* ctx, char const* ns )
+ly_ctx_get_module_latest ( struct ly_ctx const* ctx, char const* name )
+ly_ctx_get_module_latest_ns ( struct ly_ctx const* ctx, char const* ns )
+ly_ctx_get_module_ns ( struct ly_ctx const* ctx, char const* ns, char const* revision )
+ly_ctx_get_yanglib_data ( struct ly_ctx const* ctx, struct lyd_node** root_p )
+ly_ctx_get_yanglib_id ( struct ly_ctx const* ctx )
+ly_ctx_reset_latests ( struct ly_ctx* ctx )
+ly_ctx_set_options ( struct ly_ctx* ctx, uint16_t option )
+ly_ctx_unset_options ( struct ly_ctx* ctx, uint16_t option )
+ly_ctx_unset_searchdir ( struct ly_ctx* ctx, char const* value )
+ly_ctx_unset_searchdir_last ( struct ly_ctx* ctx, uint32_t count )
+
+in.h
+ly_in_fd ( struct ly_in* in, int fd )
+ly_in_file ( struct ly_in* in, FILE* f )
+ly_in_filepath ( struct ly_in* in, char const* filepath, size_t len )
+ly_in_free ( struct ly_in* in, ly_bool destroy )
+ly_in_memory ( struct ly_in* in, char const* str )
+ly_in_new_fd ( int fd, struct ly_in** in )
+ly_in_new_file ( FILE* f, struct ly_in** in )
+ly_in_new_filepath ( char const* filepath, size_t len, struct ly_in** in )
+ly_in_new_memory ( char const* str, struct ly_in** in )
+ly_in_parsed ( struct ly_in const* in )
+ly_in_reset ( struct ly_in* in )
+ly_in_type ( struct ly_in const* in )
+
+log.h
+ly_err_last ( struct ly_ctx const* ctx )
+ly_errcode ( struct ly_ctx const* ctx )
+ly_log_dbg_groups ( uint32_t dbg_groups )
+ly_log_level ( enum LY_LOG_LEVEL level )
+
+out.h
+ly_out_clb ( struct ly_out* out, ly_write_clb writeclb )
+ly_out_clb_arg ( struct ly_out* out, void* arg )
+ly_out_fd ( struct ly_out* out, int fd )
+ly_out_file ( struct ly_out* out, FILE* f )
+ly_out_filepath ( struct ly_out* out, char const* filepath )
+ly_out_free ( struct ly_out* out, void(*clb_arg_destructor)(void*), ly_bool destroy )
+ly_out_new_clb ( ly_write_clb writeclb, void* user_data, struct ly_out** out )
+ly_out_new_fd ( int fd, struct ly_out** out )
+ly_out_new_file ( FILE* f, struct ly_out** out )
+ly_out_new_filepath ( char const* filepath, struct ly_out** out )
+ly_out_new_memory ( char** strp, size_t size, struct ly_out** out )
+ly_out_printed ( struct ly_out const* out )
+ly_out_reset ( struct ly_out* out )
+ly_out_type ( struct ly_out const* out )
+ly_print ( struct ly_out* out, char const* format, ... )
+ly_print_flush ( struct ly_out* out )
+ly_write ( struct ly_out* out, char const* buf, size_t len )
+
+parser_data.h
+lyd_parse_data ( struct ly_ctx const* ctx, struct ly_in* in, enum LYD_FORMAT format, uint32_t parse_options, uint32_t validate_options, struct lyd_node** tree )
+lyd_parse_data_fd ( struct ly_ctx const* ctx, int fd, enum LYD_FORMAT format, uint32_t parse_options, uint32_t validate_options, struct lyd_node** tree )
+lyd_parse_data_mem ( struct ly_ctx const* ctx, char const* data, enum LYD_FORMAT format, uint32_t parse_options, uint32_t validate_options, struct lyd_node** tree )
+lyd_parse_data_path ( struct ly_ctx const* ctx, char const* path, enum LYD_FORMAT format, uint32_t parse_options, uint32_t validate_options, struct lyd_node** tree )
+lyd_parse_notif ( struct ly_ctx const* ctx, struct ly_in* in, enum LYD_FORMAT format, struct lyd_node** tree, struct lyd_node** ntf )
+lyd_parse_reply ( struct lyd_node const* request, struct ly_in* in, enum LYD_FORMAT format, struct lyd_node** tree, struct lyd_node** op )
+lyd_parse_rpc ( struct ly_ctx const* ctx, struct ly_in* in, enum LYD_FORMAT format, struct lyd_node** tree, struct lyd_node** op )
+lyd_validate_all ( struct lyd_node** tree, struct ly_ctx const* ctx, uint32_t val_opts, struct lyd_node** diff )
+lyd_validate_module ( struct lyd_node** tree, struct lys_module const* module, uint32_t val_opts, struct lyd_node** diff )
+lyd_validate_op ( struct lyd_node* op_tree, struct lyd_node const* tree, enum LYD_VALIDATE_OP op, struct lyd_node** diff )
+
+parser_schema.h
+lys_parse ( struct ly_ctx* ctx, struct ly_in* in, enum LYS_INFORMAT format, char const** features, struct lys_module const** module )
+
+plugins_types.h
+ly_builtin_type_plugins [data]
+ly_err_free ( void* ptr )
+ly_err_new ( enum LY_LOG_LEVEL level, enum LY_ERR no, enum LY_VECODE vecode, char* msg, char* path, char* apptag )
+ly_type_identity_isderived ( struct lysc_ident* base, struct lysc_ident* der )
+ly_type_parse_dec64 ( uint8_t fraction_digits, char const* value, size_t value_len, int64_t* ret, struct ly_err_item** err )
+ly_type_parse_int ( char const* datatype, int base, int64_t min, int64_t max, char const* value, size_t value_len, int64_t* ret, struct ly_err_item** err )
+ly_type_parse_uint ( char const* datatype, int base, uint64_t max, char const* value, size_t value_len, uint64_t* ret, struct ly_err_item** err )
+ly_type_print_get_prefix ( struct lys_module const* mod, enum LY_PREFIX_FORMAT format, void* prefix_data )
+ly_type_store_resolve_prefix ( struct ly_ctx const* ctx, char const* prefix, size_t prefix_len, enum LY_PREFIX_FORMAT format, void* prefix_data )
+ly_type_validate_patterns ( struct lysc_pattern** patterns, char const* str, size_t str_len, struct ly_err_item** err )
+ly_type_validate_range ( enum LY_DATA_TYPE basetype, struct lysc_range* range, int64_t value, char const* strval, struct ly_err_item** err )
+lysc_prefixes_compile ( char const* str, size_t str_len, struct lysp_module const* prefix_mod, struct lysc_prefix** prefixes )
+lysc_prefixes_dup ( struct lysc_prefix const* orig, struct lysc_prefix** dup )
+lysc_prefixes_free ( struct lysc_prefix* prefixes )
+
+printer_data.h
+lyd_print_all ( struct ly_out* out, struct lyd_node const* root, enum LYD_FORMAT format, uint32_t options )
+lyd_print_tree ( struct ly_out* out, struct lyd_node const* root, enum LYD_FORMAT format, uint32_t options )
+
+printer_schema.h
+lys_print_module ( struct ly_out* out, struct lys_module const* module, enum LYS_OUTFORMAT format, size_t UNUSED_line_length, uint32_t options )
+lys_print_node ( struct ly_out* out, struct lysc_node const* node, enum LYS_OUTFORMAT format, size_t UNUSED_line_length, uint32_t options )
+lys_print_submodule ( struct ly_out* out, struct lys_module const* module, struct lysp_submodule const* submodule, enum LYS_OUTFORMAT format, size_t UNUSED_line_length, uint32_t options )
+
+set.h
+ly_set_erase ( struct ly_set* set, void(*destructor)(void*) )
+
+tree_data.h
+lyd_any_copy_value ( struct lyd_node* trg, union lyd_any_value const* value, enum LYD_ANYDATA_VALUETYPE value_type )
+lyd_change_meta ( struct lyd_meta* meta, char const* val_str )
+lyd_change_term ( struct lyd_node* term, char const* val_str )
+lyd_child ( struct lyd_node const* node )
+lyd_child_no_keys ( struct lyd_node const* node )
+lyd_compare_meta ( struct lyd_meta const* meta1, struct lyd_meta const* meta2 )
+lyd_compare_siblings ( struct lyd_node const* node1, struct lyd_node const* node2, uint32_t options )
+lyd_compare_single ( struct lyd_node const* node1, struct lyd_node const* node2, uint32_t options )
+lyd_diff_apply_all ( struct lyd_node** data, struct lyd_node const* diff )
+lyd_diff_apply_module ( struct lyd_node** data, struct lyd_node const* diff, struct lys_module const* mod, lyd_diff_cb diff_cb, void* cb_data )
+lyd_diff_merge_all ( struct lyd_node** diff, struct lyd_node const* src_diff )
+lyd_diff_merge_module ( struct lyd_node** diff, struct lyd_node const* src_diff, struct lys_module const* mod, lyd_diff_cb diff_cb, void* cb_data )
+lyd_diff_merge_tree ( struct lyd_node** diff_first, struct lyd_node* diff_parent, struct lyd_node const* src_sibling, lyd_diff_cb diff_cb, void* cb_data )
+lyd_diff_reverse_all ( struct lyd_node const* src_diff, struct lyd_node** diff )
+lyd_diff_siblings ( struct lyd_node const* first, struct lyd_node const* second, uint16_t options, struct lyd_node** diff )
+lyd_diff_tree ( struct lyd_node const* first, struct lyd_node const* second, uint16_t options, struct lyd_node** diff )
+lyd_dup_meta_single ( struct lyd_meta const* meta, struct lyd_node* node, struct lyd_meta** dup )
+lyd_dup_siblings ( struct lyd_node const* node, struct lyd_node_inner* parent, uint32_t options, struct lyd_node** dup )
+lyd_dup_single ( struct lyd_node const* node, struct lyd_node_inner* parent, uint32_t options, struct lyd_node** dup )
+lyd_find_meta ( struct lyd_meta const* first, struct lys_module const* module, char const* name )
+lyd_find_sibling_first ( struct lyd_node const* siblings, struct lyd_node const* target, struct lyd_node** match )
+lyd_find_xpath ( struct lyd_node const* ctx_node, char const* xpath, struct ly_set** set )
+lyd_free_all ( struct lyd_node* node )
+lyd_free_attr_siblings ( struct ly_ctx const* ctx, struct lyd_attr* attr )
+lyd_free_attr_single ( struct ly_ctx const* ctx, struct lyd_attr* attr )
+lyd_free_meta_siblings ( struct lyd_meta* meta )
+lyd_free_meta_single ( struct lyd_meta* meta )
+lyd_free_siblings ( struct lyd_node* node )
+lyd_free_tree ( struct lyd_node* node )
+lyd_insert_child ( struct lyd_node* parent, struct lyd_node* node )
+lyd_is_default ( struct lyd_node const* node )
+lyd_merge_siblings ( struct lyd_node** target, struct lyd_node const* source, uint16_t options )
+lyd_merge_tree ( struct lyd_node** target, struct lyd_node const* source, uint16_t options )
+lyd_new_any ( struct lyd_node* parent, struct lys_module const* module, char const* name, void const* value, enum LYD_ANYDATA_VALUETYPE value_type, ly_bool output, struct lyd_node** node )
+lyd_new_attr ( struct lyd_node* parent, char const* module_name, char const* name, char const* val_str, struct lyd_attr** attr )
+lyd_new_implicit_all ( struct lyd_node** tree, struct ly_ctx const* ctx, uint32_t implicit_options, struct lyd_node** diff )
+lyd_new_implicit_module ( struct lyd_node** tree, struct lys_module const* module, uint32_t implicit_options, struct lyd_node** diff )
+lyd_new_implicit_tree ( struct lyd_node* tree, uint32_t implicit_options, struct lyd_node** diff )
+lyd_new_inner ( struct lyd_node* parent, struct lys_module const* module, char const* name, ly_bool output, struct lyd_node** node )
+lyd_new_list ( struct lyd_node* parent, struct lys_module const* module, char const* name, ly_bool output, struct lyd_node** node, ... )
+lyd_new_list2 ( struct lyd_node* parent, struct lys_module const* module, char const* name, char const* keys, ly_bool output, struct lyd_node** node )
+lyd_new_meta ( struct lyd_node* parent, struct lys_module const* module, char const* name, char const* val_str, struct lyd_meta** meta )
+lyd_new_opaq ( struct lyd_node* parent, struct ly_ctx const* ctx, char const* name, char const* value, char const* module_name, struct lyd_node** node )
+lyd_new_path2 ( struct lyd_node* parent, struct ly_ctx const* ctx, char const* path, void const* value, enum LYD_ANYDATA_VALUETYPE value_type, uint32_t options, struct lyd_node** new_parent, struct lyd_node** new_node )
+lyd_new_term ( struct lyd_node* parent, struct lys_module const* module, char const* name, char const* val_str, ly_bool output, struct lyd_node** node )
+lyd_owner_module ( struct lyd_node const* node )
+lyd_parent ( struct lyd_node const* node )
+lyd_target ( struct ly_path const* path, struct lyd_node const* tree )
+lyd_unlink_tree ( struct lyd_node* node )
+lyd_value_compare ( struct lyd_node_term const* node, char const* value, size_t value_len )
+lyd_value_validate ( struct ly_ctx const* ctx, struct lyd_node_term const* node, char const* value, size_t value_len, struct lyd_node const* tree, struct lysc_type const** realtype )
+
+tree_schema.h
+lyext_parent2str ( enum LYEXT_PARENT type )
+lys_feature_value ( struct lys_module const* module, char const* feature )
+lys_find_child ( struct lysc_node const* parent, struct lys_module const* module, char const* name, size_t name_len, uint16_t nodetype, uint32_t options )
+lys_find_expr_atoms ( struct lysc_node const* ctx_node, struct lys_module const* cur_mod, struct lyxp_expr const* expr, struct lysc_prefix const* prefixes, uint32_t options, struct ly_set** set )
+lys_find_lypath_atoms ( struct ly_path const* path, struct ly_set** set )
+lys_find_path_atoms ( struct ly_ctx const* ctx, struct lysc_node const* ctx_node, char const* path, ly_bool output, struct ly_set** set )
+lys_find_xpath ( struct lysc_node const* ctx_node, char const* xpath, uint32_t options, struct ly_set** set )
+lys_find_xpath_atoms ( struct lysc_node const* ctx_node, char const* xpath, uint32_t options, struct ly_set** set )
+lys_nodetype2str ( uint16_t nodetype )
+lys_value_validate ( struct ly_ctx const* ctx, struct lysc_node const* node, char const* value, size_t value_len )
+lysc_iffeature_value ( struct lysc_iffeature const* iff )
+lysc_module_dfs_full ( struct lys_module const* mod, lysc_dfs_clb dfs_clb, void* data )
+lysc_node_actions ( struct lysc_node const* node )
+lysc_node_children ( struct lysc_node const* node, uint16_t flags )
+lysc_node_children_full ( struct lysc_node const* node, uint16_t flags )
+lysc_node_notifs ( struct lysc_node const* node )
+lysc_node_parent_full ( struct lysc_node const* node )
+lysc_path ( struct lysc_node const* node, enum LYSC_PATH_TYPE pathtype, char* buffer, size_t buflen )
+lysc_set_private ( struct lysc_node const* node, void* priv, void** prev_priv_p )
+lysc_tree_dfs_full ( struct lysc_node const* root, lysc_dfs_clb dfs_clb, void* data )
+lysp_feature_next ( struct lysp_feature const* last, struct lysp_module const* pmod, uint32_t* idx )
+lysp_node_actions ( struct lysp_node const* node )
+lysp_node_children ( struct lysp_node const* node )
+lysp_node_groupings ( struct lysp_node const* node )
+lysp_node_notifs ( struct lysp_node const* node )
+lysp_node_typedefs ( struct lysp_node const* node )
+lyxp_get_expr ( struct lyxp_expr const* path )
+
+to the top
+

Removed Symbols  114 


+extensions.h
+lyext_vlog ( struct ly_ctx const* ctx, enum LY_VECODE vecode, char const* plugin, char const* function, enum LYEXT_VLOG_ELEM elem_type, void const* elem, char const* format, ... )
+lys_iffeature_free ( struct ly_ctx* ctx, struct lys_iffeature* iffeature, uint8_t iffeature_size, int shallow, void(*private_destructor)(struct lys_node const*, void*) )
+
+libyang.h
+ly_ctx_clean ( struct ly_ctx* ctx, void(*private_destructor)(struct lys_node const*, void*) )
+ly_ctx_find_path ( struct ly_ctx* ctx, char const* path )
+ly_ctx_get_disabled_module_iter ( struct ly_ctx const* ctx, uint32_t* idx )
+ly_ctx_get_module_by_ns ( struct ly_ctx const* ctx, char const* ns, char const* revision, int implemented )
+ly_ctx_get_module_data_clb ( struct ly_ctx const* ctx, void** user_data )
+ly_ctx_get_module_older ( struct ly_ctx const* ctx, struct lys_module const* module )
+ly_ctx_get_node ( struct ly_ctx const* ctx, struct lys_node const* start, char const* nodeid, int output )
+ly_ctx_get_submodule ( struct ly_ctx const* ctx, char const* module, char const* revision, char const* submodule, char const* sub_revision )
+ly_ctx_get_submodule2 ( struct lys_module const* main_module, char const* submodule )
+ly_ctx_info ( struct ly_ctx* ctx )
+ly_ctx_new_ylmem ( char const* search_dir, char const* data, enum LYD_FORMAT format, int options )
+ly_ctx_new_ylpath ( char const* search_dir, char const* path, enum LYD_FORMAT format, int options )
+ly_ctx_remove_module ( struct lys_module const* module, void(*private_destructor)(struct lys_node const*, void*) )
+ly_ctx_set_allimplemented ( struct ly_ctx* ctx )
+ly_ctx_set_disable_searchdir_cwd ( struct ly_ctx* ctx )
+ly_ctx_set_disable_searchdirs ( struct ly_ctx* ctx )
+ly_ctx_set_module_data_clb ( struct ly_ctx* ctx, ly_module_data_clb clb, void* user_data )
+ly_ctx_set_prefer_searchdirs ( struct ly_ctx* ctx )
+ly_ctx_set_trusted ( struct ly_ctx* ctx )
+ly_ctx_unset_allimplemented ( struct ly_ctx* ctx )
+ly_ctx_unset_disable_searchdir_cwd ( struct ly_ctx* ctx )
+ly_ctx_unset_disable_searchdirs ( struct ly_ctx* ctx )
+ly_ctx_unset_prefer_searchdirs ( struct ly_ctx* ctx )
+ly_ctx_unset_searchdirs ( struct ly_ctx* ctx, int index )
+ly_ctx_unset_trusted ( struct ly_ctx* ctx )
+ly_errno_glob_address ( )
+ly_path_data2schema ( struct ly_ctx* ctx, char const* data_path )
+ly_path_xml2json ( struct ly_ctx* ctx, char const* xml_path, struct lyxml_elem* xml )
+ly_verb ( enum LY_LOG_LEVEL level )
+ly_verb_dbg ( int dbg_groups )
+
+tree_data.h
+lyd_change_leaf ( struct lyd_node_leaf_list* leaf, char const* val_str )
+lyd_dec64_to_double ( struct lyd_node const* node )
+lyd_diff ( struct lyd_node* first, struct lyd_node* second, int options )
+lyd_dup ( struct lyd_node const* node, int options )
+lyd_dup_to_ctx ( struct lyd_node const* node, int options, struct ly_ctx* ctx )
+lyd_dup_withsiblings ( struct lyd_node const* node, int options )
+lyd_find_instance ( struct lyd_node const* data, struct lys_node const* schema )
+lyd_find_path ( struct lyd_node const* ctx_node, char const* path )
+lyd_find_sibling ( struct lyd_node const* siblings, struct lyd_node const* target, struct lyd_node** match )
+lyd_find_sibling_set ( struct lyd_node const* siblings, struct lyd_node const* target, struct ly_set** set )
+lyd_free ( struct lyd_node* node )
+lyd_free_attr ( struct ly_ctx* ctx, struct lyd_node* parent, struct lyd_attr* attr, int recursive )
+lyd_free_diff ( struct lyd_difflist* diff )
+lyd_free_val_diff ( struct lyd_difflist* diff )
+lyd_free_withsiblings ( struct lyd_node* node )
+lyd_insert ( struct lyd_node* parent, struct lyd_node* node )
+lyd_insert_attr ( struct lyd_node* parent, struct lys_module const* mod, char const* name, char const* value )
+lyd_leaf_type ( struct lyd_node_leaf_list const* leaf )
+lyd_merge ( struct lyd_node* target, struct lyd_node const* source, int options )
+lyd_merge_to_ctx ( struct lyd_node** trg, struct lyd_node const* src, int options, struct ly_ctx* ctx )
+lyd_new ( struct lyd_node* parent, struct lys_module const* module, char const* name )
+lyd_new_anydata ( struct lyd_node* parent, struct lys_module const* module, char const* name, void* value, enum LYD_ANYDATA_VALUETYPE value_type )
+lyd_new_leaf ( struct lyd_node* parent, struct lys_module const* module, char const* name, char const* val_str )
+lyd_new_output ( struct lyd_node* parent, struct lys_module const* module, char const* name )
+lyd_new_output_anydata ( struct lyd_node* parent, struct lys_module const* module, char const* name, void* value, enum LYD_ANYDATA_VALUETYPE value_type )
+lyd_new_output_leaf ( struct lyd_node* parent, struct lys_module const* module, char const* name, char const* val_str )
+lyd_new_yangdata ( struct lys_module const* module, char const* name_template, char const* name )
+lyd_node_module ( struct lyd_node const* node )
+lyd_node_should_print ( struct lyd_node const* node, int options )
+lyd_parse_fd ( struct ly_ctx* ctx, int fd, enum LYD_FORMAT format, int options, ... )
+lyd_parse_mem ( struct ly_ctx* ctx, char const* data, enum LYD_FORMAT format, int options, ... )
+lyd_parse_path ( struct ly_ctx* ctx, char const* path, enum LYD_FORMAT format, int options, ... )
+lyd_parse_xml ( struct ly_ctx* ctx, struct lyxml_elem** root, int options, ... )
+lyd_schema_sort ( struct lyd_node* sibling, int recursive )
+lyd_unlink ( struct lyd_node* node )
+lyd_validate ( struct lyd_node** node, int options, void* var_arg, ... )
+lyd_validate_modules ( struct lyd_node** node, struct lys_module const** modules, int mod_count, int options, ... )
+lyd_validate_value ( struct lys_node* node, char const* value )
+lyd_value_type ( struct lys_node* node, char const* value, struct lys_type** type )
+lyd_wd_default ( struct lyd_node_leaf_list* node )
+
+tree_schema.h
+ly_clean_plugins ( )
+ly_get_loaded_plugins ( )
+ly_load_plugins ( )
+ly_register_exts ( struct lyext_plugin_list* plugin, char const* log_name )
+ly_register_types ( struct lytype_plugin_list* plugin, char const* log_name )
+lys_data_path ( struct lys_node const* node )
+lys_data_path_pattern ( struct lys_node const* node, char const* placeholder )
+lys_ext_complex_get_substmt ( enum LY_STMT stmt, struct lys_ext_instance_complex* ext, struct lyext_substmt** info )
+lys_ext_instance_presence ( struct lys_ext* def, struct lys_ext_instance** ext, uint8_t ext_size )
+lys_ext_instance_substmt ( struct lys_ext_instance const* ext )
+lys_features_disable ( struct lys_module const* module, char const* feature )
+lys_features_disable_force ( struct lys_module const* module, char const* feature )
+lys_features_enable ( struct lys_module const* module, char const* feature )
+lys_features_enable_force ( struct lys_module const* module, char const* feature )
+lys_features_list ( struct lys_module const* module, uint8_t** states )
+lys_features_state ( struct lys_module const* module, char const* feature )
+lys_getnext_union_type ( struct lys_type const* last, struct lys_type const* type )
+lys_iffeature_value ( struct lys_iffeature const* iff )
+lys_implemented_module ( struct lys_module const* mod )
+lys_is_disabled ( struct lys_node const* node, int recursive )
+lys_is_key ( struct lys_node_leaf const* node, uint8_t* index )
+lys_main_module ( struct lys_module const* module )
+lys_node_module ( struct lys_node const* node )
+lys_node_xpath_atomize ( struct lys_node const* node, int options )
+lys_parent ( struct lys_node const* node )
+lys_path ( struct lys_node const* node, int options )
+lys_set_disabled ( struct lys_module const* module )
+lys_set_enabled ( struct lys_module const* module )
+lys_set_private ( struct lys_node const* node, void* priv )
+lys_xpath_atomize ( struct lys_node const* ctx_node, enum lyxp_node_type ctx_node_type, char const* expr, int options )
+
+xml.h
+lyxml_dup ( struct ly_ctx* ctx, struct lyxml_elem* root )
+lyxml_free ( struct ly_ctx* ctx, struct lyxml_elem* elem )
+lyxml_free_withsiblings ( struct ly_ctx* ctx, struct lyxml_elem* elem )
+lyxml_get_attr ( struct lyxml_elem const* elem, char const* name, char const* ns )
+lyxml_get_ns ( struct lyxml_elem const* elem, char const* prefix )
+lyxml_parse_mem ( struct ly_ctx* ctx, char const* data, int options )
+lyxml_parse_path ( struct ly_ctx* ctx, char const* filename, int options )
+lyxml_print_clb ( ssize_t(*writeclb)(void*, void const*, size_t), void* arg, struct lyxml_elem const* elem, int options )
+lyxml_print_fd ( int fd, struct lyxml_elem const* elem, int options )
+lyxml_print_file ( FILE* stream, struct lyxml_elem const* elem, int options )
+lyxml_print_mem ( char** strp, struct lyxml_elem const* elem, int options )
+lyxml_unlink ( struct ly_ctx* ctx, struct lyxml_elem* elem )
+
+to the top
+ +

Problems with Data Types, High Severity  112 


+libyang.h
+ +[+] enum LY_VECODE  77  +
+ + + +[+] struct ly_set  2  +
+ + +
+tree_data.h
+ +[+] struct lyd_node  6  +
+ + +
+tree_schema.h
+ +[+] enum LYS_OUTFORMAT  2  +
+ + + +[+] struct lys_module  25  +
+ + +
+to the top
+ +

Problems with Symbols, High Severity  13 


+libyang.h
+ +[+] ly_set_add ( struct ly_set* set, void* node, int options )  1  +
+ + +[+] ly_set_merge ( struct ly_set* trg, struct ly_set* src, int options )  1  +
+ +
+tree_data.h
+ +[+] lyd_find_sibling_val ( struct lyd_node const* siblings, struct lys_node const* schema, char const* key_or_value, struct lyd_node** match )  1  +
+ +
+tree_schema.h
+ +[+] lys_find_path ( struct lys_module const* cur_module, struct lys_node const* cur_node, char const* path )  4  +
+ + +[+] lys_print_clb ( ssize_t(*writeclb)(void*, void const*, size_t), void* arg, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_fd ( int fd, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_file ( FILE* f, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_mem ( char** strp, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_path ( char const* path, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_set_implemented ( struct lys_module const* module )  1  +
+ +
+to the top
+ +

Problems with Data Types, Medium Severity  2 


+tree_data.h
+ +[+] struct lyd_node  2  +
+ + +
+to the top
+ +

Problems with Symbols, Medium Severity  47 


+dict.h
+ +[+] lydict_insert ( struct ly_ctx* ctx, char const* value, size_t len )  2  +
+ + +[+] lydict_insert_zc ( struct ly_ctx* ctx, char* value )  2  +
+ +
+libyang.h
+ +[+] ly_ctx_get_module ( struct ly_ctx const* ctx, char const* name, char const* revision, int implemented )  1  +
+ + +[+] ly_ctx_load_module ( struct ly_ctx* ctx, char const* name, char const* revision )  1  +
+ + +[+] ly_ctx_new ( char const* search_dir, int options )  2  +
+ + +[+] ly_set_add ( struct ly_set* set, void* node, int options )  1  +
+ + +[+] ly_set_clean ( struct ly_set* set )  2  +
+ + +[+] ly_set_contains ( struct ly_set const* set, void* node )  1  +
+ + +[+] ly_set_dup ( struct ly_set const* set )  3  +
+ + +[+] ly_set_free ( struct ly_set* set )  1  +
+ + +[+] ly_set_merge ( struct ly_set* trg, struct ly_set* src, int options )  1  +
+ + +[+] ly_set_new ( )  2  +
+ + +[+] ly_set_rm ( struct ly_set* set, void* node )  1  +
+ + +[+] ly_set_rm_index ( struct ly_set* set, unsigned int index )  1  +
+ +
+tree_data.h
+ +[+] lyd_find_sibling_val ( struct lyd_node const* siblings, struct lys_node const* schema, char const* key_or_value, struct lyd_node** match )  1  +
+ + +[+] lyd_insert_sibling ( struct lyd_node** sibling, struct lyd_node* node )  2  +
+ + +[+] lyd_new_path ( struct lyd_node* data_tree, struct ly_ctx const* ctx, char const* path, void* value, enum LYD_ANYDATA_VALUETYPE value_type, int options )  2  +
+ + +[+] lyd_path ( struct lyd_node const* node )  3  +
+ +
+tree_schema.h
+ +[+] lys_find_path ( struct lys_module const* cur_module, struct lys_node const* cur_node, char const* path )  2  +
+ + +[+] lys_getnext ( struct lys_node const* last, struct lys_node const* parent, struct lys_module const* module, int options )  4  +
+ + +[+] lys_parse_fd ( struct ly_ctx* ctx, int fd, enum LYS_INFORMAT format )  2  +
+ + +[+] lys_parse_mem ( struct ly_ctx* ctx, char const* data, enum LYS_INFORMAT format )  2  +
+ + +[+] lys_parse_path ( struct ly_ctx* ctx, char const* path, enum LYS_INFORMAT format )  2  +
+ + +[+] lys_print_clb ( ssize_t(*writeclb)(void*, void const*, size_t), void* arg, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_fd ( int fd, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_file ( FILE* f, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_mem ( char** strp, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_path ( char const* path, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_set_implemented ( struct lys_module const* module )  1  +
+ +
+to the top
+ +

Problems with Data Types, Low Severity  9 


+libyang.h
+ +[+] typedef ly_module_imp_clb  1  +
+ + +
+tree_data.h
+ +[+] struct lyd_node  2  +
+ + +
+tree_schema.h
+ +[+] struct lys_module  6  +
+ + +
+to the top
+ +

Problems with Symbols, Low Severity  52 


+dict.h
+ +[+] lydict_insert ( struct ly_ctx* ctx, char const* value, size_t len )  1  +
+ + +[+] lydict_insert_zc ( struct ly_ctx* ctx, char* value )  1  +
+ +
+libyang.h
+ +[+] ly_ctx_destroy ( struct ly_ctx* ctx, void(*private_destructor)(struct lys_node const*, void*) )  1  +
+ + +[+] ly_ctx_get_module ( struct ly_ctx const* ctx, char const* name, char const* revision, int implemented )  1  +
+ + +[+] ly_ctx_get_options ( struct ly_ctx* ctx )  1  +
+ + +[+] ly_ctx_internal_modules_count ( struct ly_ctx* ctx )  1  +
+ + +[+] ly_ctx_new ( char const* search_dir, int options )  2  +
+ + +[+] ly_ctx_set_searchdir ( struct ly_ctx* ctx, char const* search_dir )  1  +
+ + +[+] ly_get_log_clb ( )  1  +
+ + +[+] ly_log_options ( int opts )  2  +
+ + +[+] ly_set_add ( struct ly_set* set, void* node, int options )  1  +
+ + +[+] ly_set_contains ( struct ly_set const* set, void* node )  1  +
+ + +[+] ly_set_dup ( struct ly_set const* set )  1  +
+ + +[+] ly_set_log_clb ( void(*clb)(LY_LOG_LEVEL, char const*, char const*), int path )  1  +
+ + +[+] ly_set_merge ( struct ly_set* trg, struct ly_set* src, int options )  1  +
+ + +[+] ly_set_new ( )  1  +
+ + +[+] ly_set_rm ( struct ly_set* set, void* node )  1  +
+ + +[+] ly_set_rm_index ( struct ly_set* set, unsigned int index )  1  +
+ +
+tree_data.h
+ +[+] lyd_find_sibling_val ( struct lyd_node const* siblings, struct lys_node const* schema, char const* key_or_value, struct lyd_node** match )  1  +
+ + +[+] lyd_insert_after ( struct lyd_node* sibling, struct lyd_node* node )  1  +
+ + +[+] lyd_insert_before ( struct lyd_node* sibling, struct lyd_node* node )  1  +
+ + +[+] lyd_insert_sibling ( struct lyd_node** sibling, struct lyd_node* node )  2  +
+ + +[+] lyd_list_pos ( struct lyd_node const* node )  1  +
+ + +[+] lyd_new_path ( struct lyd_node* data_tree, struct ly_ctx const* ctx, char const* path, void* value, enum LYD_ANYDATA_VALUETYPE value_type, int options )  4  +
+ + +[+] lyd_print_clb ( ssize_t(*writeclb)(void*, void const*, size_t), void* arg, struct lyd_node const* root, enum LYD_FORMAT format, int options )  2  +
+ + +[+] lyd_print_fd ( int fd, struct lyd_node const* root, enum LYD_FORMAT format, int options )  2  +
+ + +[+] lyd_print_file ( FILE* f, struct lyd_node const* root, enum LYD_FORMAT format, int options )  2  +
+ + +[+] lyd_print_mem ( char** strp, struct lyd_node const* root, enum LYD_FORMAT format, int options )  2  +
+ + +[+] lyd_print_path ( char const* path, struct lyd_node const* root, enum LYD_FORMAT format, int options )  2  +
+ +
+tree_schema.h
+ +[+] lys_getnext ( struct lys_node const* last, struct lys_node const* parent, struct lys_module const* module, int options )  1  +
+ + +[+] lys_parse_fd ( struct ly_ctx* ctx, int fd, enum LYS_INFORMAT format )  1  +
+ + +[+] lys_parse_mem ( struct ly_ctx* ctx, char const* data, enum LYS_INFORMAT format )  1  +
+ + +[+] lys_parse_path ( struct ly_ctx* ctx, char const* path, enum LYS_INFORMAT format )  1  +
+ + +[+] lys_print_clb ( ssize_t(*writeclb)(void*, void const*, size_t), void* arg, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_fd ( int fd, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_file ( FILE* f, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_mem ( char** strp, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_print_path ( char const* path, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ + +[+] lys_search_localfile ( char const*const* searchpaths, int cwd, char const* name, char const* revision, char** localfile, LYS_INFORMAT* format )  2  +
+ + +[+] lys_set_implemented ( struct lys_module const* module )  1  +
+ +
+to the top
+ +

Other Changes in Data Types  24 


+libyang.h
+ +[+] enum LY_ERR  9  +
+ + +
+tree_data.h
+ +[+] struct lyd_node  5  +
+ + +
+tree_schema.h
+ +[+] enum LYS_INFORMAT  1  +
+ + + +[+] enum LYS_OUTFORMAT  3  +
+ + + +[+] struct lys_module  6  +
+ + +
+to the top
+ +

Other Changes in Symbols  10 


+libyang.h
+ +[+] ly_ctx_get_module_iter ( struct ly_ctx const* ctx, uint32_t* idx )  1  +
+ + +[+] ly_set_add ( struct ly_set* set, void* node, int options )  1  +
+ + +[+] ly_set_contains ( struct ly_set const* set, void* node )  1  +
+ + +[+] ly_set_rm ( struct ly_set* set, void* node )  1  +
+ +
+tree_data.h
+ +[+] lyd_list_pos ( struct lyd_node const* node )  1  +
+ + +[+] lyd_new_path ( struct lyd_node* data_tree, struct ly_ctx const* ctx, char const* path, void* value, enum LYD_ANYDATA_VALUETYPE value_type, int options )  3  +
+ + +[+] lyd_print_clb ( ssize_t(*writeclb)(void*, void const*, size_t), void* arg, struct lyd_node const* root, enum LYD_FORMAT format, int options )  1  +
+ +
+tree_schema.h
+ +[+] lys_print_clb ( ssize_t(*writeclb)(void*, void const*, size_t), void* arg, struct lys_module const* module, enum LYS_OUTFORMAT format, char const* target_node, int line_length, int options )  1  +
+ +
+to the top
+

Header Files  7 


+
+dict.h
+extensions.h
+libyang.h
+tree_data.h
+tree_schema.h
+user_types.h
+xml.h
+
+
to the top
+

Source Files  11 


+
+common.c
+context.c
+hash_table.c
+log.c
+parser_lyb.c
+parser_xml.c
+plugins.c
+printer.c
+tree_data.c
+tree_schema.c
+xml.c
+
+
to the top
+

Objects  1 


+
+libyang.so.1.9.19
+
+
to the top
+



+ +
+ + diff --git a/doc/logo.png b/doc/logo.png new file mode 100644 index 0000000..13878b7 Binary files /dev/null and b/doc/logo.png differ diff --git a/doc/transition.dox b/doc/transition.dox new file mode 100644 index 0000000..fb0c638 --- /dev/null +++ b/doc/transition.dox @@ -0,0 +1,408 @@ +/** + * @page transition Transition Manual (1.x -> 2.0) + * + * [TOC] + * + * Rewriting libyang codebase and creating libyang version 2.0 was motivated mainly by improving long term maintainability. + * Especially some of the features and design decisions become killers for further development and maintaining the libyang + * codebase. On the other hand, most of the principles introduced in libyang 1.x to handle YANG schemas and manipulate + * instantiated data have proved successful. Therefore, we have decided to keep the basic mechanisms from version 1.x and + * remove the problematic features and modify the improper design decisions. Despite the vision to keep with the mechanisms + * also the API, the new version became a great opportunity to clean up the API and improve its usability mainly by unifying + * how the libyang functions are used. So, in the end, this manual is not just a description of the removed features listing + * removed, modified or added functions. The API should be even better prepared for adding new features and functions. + * Shortly, almost everything has changed at least a little, so you cannot move from version 1.x to 2.0 just by replacing + * code snippets. However, we believe that the change is good and libyang 2.0 is simply better. + * + * In this Manual, we want to introduce the differences between libyang 1.x and 2.0. It is intended for the transition + * from 1.x to 2.0, so if you are new to libyang, simply go to the @ref howto section, this Manual is not for you. + * + * The complete generated list of changes (without any additional notes) can be found in + * the compatibility report. + * + * @section transitionGeneral General Changes + * + * + * @subsection transitionGeneralErros Errors Handling + * + * The most visible change is probably the changed approach to handling errors. While libyang 1.x was using variable + * *ly_errno* to provide error information in case the called function failed, there is no such variable in libyang 2.0. + * On the other hand, most API functions now return ::LY_ERR values directly stating the result. In addition, in case + * the error is somehow connected with the [context](@ref howtoContext), more detailed error information can be obtained + * from the context handler itself. Mainly this change is responsible for the backward incompatibility of almost all + * functions between versions 1.x and 2.0. + * + * Here is the overview of the changed / removed / added functions connected with errors and logging. + * + * libyang 1.x | libyang 2.0 | Notes + * :-------------------------|:-------------------------------------|:------------------------------------------------------- + * - | ::ly_err_last() | New API for handling errors. + * - | ::ly_errcode() | ^ + * ly_verb_dbg() | ::ly_log_dbg_groups() | Rename to align with the names of the accepted values. + * ly_verb() | ::ly_log_level() | ^ + * + * More information about error handling in libyang 2.0 can be found at @ref howtoErrors page. + * + * @subsection transitionGeneralInOut Input / Output Processing + * + * libyang 2.0 introduces input (::ly_in) and output (::ly_out) handlers covering the specific input sources for parsers and + * output targets for printers. They are supposed mainly to simplify parser's and printer's API to avoid the need for + * separate functions for each source/target. The handlers can be used repeatedly to split the inputs or join the outputs. + * + * More information can be found at @ref howtoInput and @ref howtoOutput pages. + * + * + * @subsection transitionGeneralOutputFormatting Output Formatting + * + * In libyang 1.x, there was an inconsistency in printing schemas and data. While the schemas were always printed formatted, + * the data were printed by default without additional indentation. It is clearly visible in the YIN format of the schema, + * which is XML, and the XML encoding of the data. While there was a possibility to format data output with the LYP_FORMAT + * flag, it wasn't possible to change schema output formatting. + * + * libyang 2.0 unifies the behavior of all printers. By default, all the output formats are formatted now. Both, the data as + * well as the schema printers, accept the option to remove additional formatting (different for the specific format, usually + * indentations and blank lines): ::LYD_PRINT_SHRINK for the data printer and ::LYS_PRINT_SHRINK for the schema printer. + * + * + * @subsection transitionGeneralXPath Addressing + * + * If you compare the @ref howtoXPath page from libyang 1.x and 2.0 documentation, you will be probably confused since they + * seem very different. In fact, we have tried to simplify the API by removing the original Schema path format from the + * public API. Since this format is used in YANG format, libyang still supports it internally, but it is not possible to use + * it anywhere in the API. The new formats XPath and Path, mentioned at the @ref howtoXPath page, are both the Data paths + * used in libyang 1.x. The Path format is a subset of XPath format limited to refer to a single node. + * + * This change was reflected in functions serving to get a node based on the specified path. Unfortunately, when comparing + * old and new API, the transition can be confusing since the names are sometimes overloaded (be careful mainly of + * ::lys_find_path()). The following table depicts the changes, but probably a better approach is to handle the functions as + * a completely new API. + * + * libyang 1.x | libyang 2.0 | Notes + * :-------------------------|:-------------------------------------|:------------------------------------------------------- + * ly_ctx_find_path() | - | To simplify the different [types of paths](@ref howtoXPath), the Schema path format is not supported for now. If there will be use cases for it, it can be re-added later, but for now try using ::lys_find_xpath(). + * %lys_find_path() | - | To simplify the different [types of paths](@ref howtoXPath), the Schema path format is not supported for now. If there will be use cases for it, it can be re-added later, but for now try using ::lys_find_xpath(). + * ly_ctx_get_node() | ::lys_find_path() | Renamed to unify API functions, note that there was lys_find_path in libyang 1.x with different functionality in comparison to the function of the same name from libyang 2.0. + * - | ::lys_find_path_atoms() | Extension of ::lys_find_path(). + * - | ::lys_find_lypath_atoms() | ^ + * - | ::lys_find_xpath() | New function reflecting updated @ref howtoXPath\. + * lys_xpath_atomize() | ::lys_find_xpath_atoms() | Rename to unify with the new API, extends ::lys_find_xpath(). + * - | ::lys_find_expr_atoms() | Extension of ::lys_find_xpath(). + * %lyd_path() | ::lyd_path() | Same purpose, just extended functionality. + * lyd_find_path() | ::lyd_find_xpath() | Rename to unify with the new API. + * - | ::lyd_find_path() | Simplified version of ::lyd_find_path(). + * - | ::lyxp_get_expr() | Added functionality due to the changed representation of XPath expressions. + * ly_path_data2schema() | - | Removed since the schema path is not available in API. + * ly_path_xml2json() | - | Removed since done internally, note that even the generic XML parser is not available now. + * lys_node_xpath_atomize() | - | Removed as useless/redundant, use ::lys_find_xpath_atoms(). + * + * @section transitionContext Context + * + * Context, as a concept of a storage interconnecting YANG modules into a YANG schema and YANG schema with the instantiated + * data, was preserved. However, it is now more supposed to be prepared just once before connecting it with any instantiated + * data. The possibility of removing YANG modules from the context was completely dropped. Furthermore, we would like to + * introduce some kind of context lock to completely abandon any change of the YANG modules after starting work with the + * instantiated data. + * + * Another change to note is the removed destructor of private data (::lysc_node.priv) in ::ly_ctx_destroy(). The mechanism + * was not reliable with the context recompilation and the splitted parsed and compiled schema trees or the complexity of + * YANG extensions. It is better to let the caller maintain the allocated data directly via some memory pool or using + * ::lysc_tree_dfs_full() since he is the best to know where the additional data were added. + * + * The meaining of the ::lysc_node.priv pointer can be now also changed by ::LY_CTX_SET_PRIV_PARSED context option, which + * makes libyang to connect the original parsed schema node structure (::lysp_node) into the compiled nodes via their 'priv' + * pointer. + * + * Other significant changes connected with the context are depicted in the following table. + * + * libyang 1.x | libyang 2.0 | Notes + * :-------------------------|:-------------------------------------|:------------------------------------------------------- + * ly_ctx_clean() | - | Removed functionality of manipulating with the context and the modules already placed in the context. + * ly_ctx_remove_module() | - | ^ + * ly_ctx_set_module_data_clb() and the associated ly_module_data_clb type. | - | ^ + * ly_ctx_get_disabled_module() and the associated ly_ctx_get_disabled_module_iter() | - | ^ + * ly_ctx_info() | ::ly_ctx_get_yanglib_data() | Clarification of what to expect as the output of the function and possibility to specify custom content ID. + * ly_ctx_get_module_set_id() | ::ly_ctx_get_change_count() | The functionality is the same but the exact meaning of the value was clarified. + * - | ::ly_ctx_unset_searchdir_last() | Extend the functionality of the ::ly_ctx_unset_searchdir() to make its use easier. + * ly_ctx_get_module_older() | - | Removed functionality. + * - | ::ly_ctx_get_module_implemented() | Supplement for ::ly_ctx_get_module() + * - | ::ly_ctx_get_module_latest() | ^ + * - | ::ly_ctx_get_module_implemented_ns() | Supplement for ::ly_ctx_get_module_ns() + * - | ::ly_ctx_get_module_latest_ns() | ^ + * - | ::ly_ctx_get_submodule_latest() | Supplement for ::ly_ctx_get_submodule() + * - | ::ly_ctx_get_submodule2_latest() | Supplement for ::ly_ctx_get_submodule2() + * ly_ctx_get_module_by_ns() | ::ly_ctx_get_module_ns () | Redesign the API - replace some of the parameters with standalone supplement functions. + * - | ::ly_ctx_reset_latests() | The new functionality of maintaining the latest module revision flag. + * ly_ctx_unset_searchdirs() | ::ly_ctx_unset_searchdir() | Simplify API and instead of index numbers, work with the values themselves. + * ly_ctx_set*() | ::ly_ctx_set_options() | API simplification. + * ly_ctx_unset*() | ::ly_ctx_unset_options() | ^ + * ly_ctx_destroy() | ::ly_ctx_destroy() | The destructor callback parameter was removed, see the notes above. + * + * + * @section transitionSchemas YANG Modules (Schema) + * + * The most significant change between libyang 1.x and 2.0 can be found in schema structures. The schema tree now has two + * different forms - parsed and compiled trees. While the parsed tree reflects the source of the YANG module, the compiled + * tree represents the final tree used to validate the instantiated data. Both formats can be found inside the covering + * ::lys_module structure. More about the new structures can be found at @ref howtoSchema page. + * + * This is an essential change allowing speed up and simplification of data validation, but requiring carefully determine + * which format is more suitable for the specific use case. As mentioned, the compiled trees are better for data validation + * and getting information about the intentioned structure of the schema with all the applied groupings, type modifications, + * augments, deviations, and any defined if-features. On the other hand, the parsed trees are useful for the schema format conversions since they + * provide the original structure of the modules. There is a number of new functions intended to work only with the + * parsed or the compiled tree. These functions are prefixed with `lysp_` and `lysp_` prefixes. + * + * Schema parser, as well as printer functions, are now extended to accept new + * [input / output handlers](@ref transitionGeneralInOut). The previous API working directly with inputs and outputs is + * preserved (or slightly changed), but the functions can be limited in the functionality of the new API. More information + * can be found at @ref howtoSchemaParsers and @ref howtoSchemaPrinters pages. + * + * libyang 1.x | libyang 2.0 | Notes + * :----------------------------|:--------------------------------|:--------------------------------------------------------- + * - | ::lys_parse() | New generic schema parser API using [generic input handler](@ref howtoInput). + * - | ::lys_print_module() | New generic schema printer API using [generic output handler](@ref howtoOutput). + * - | ::lys_print_node() | ^ + * - | ::lys_print_submodule() | ^ + * + * + * The following table introduces other significant changes in the API functions connected with the schema. + * + * libyang 1.x | libyang 2.0 | Notes + * :----------------------------|:--------------------------------|:--------------------------------------------------------- + * lys_set_private() | - | Not needed, all ::lysc_node compatible structures have this pointer so it can be accessed directly. + * lys_is_disabled() | - | Make no sense since the nodes disabled by if-feature are not present in the compiled tree. + * lys_features_list() | - | Not needed, the list of features is available in the parsed tree of the module and submodule. + * lys_features_enable(), lys_features_enable_force() | ::lys_set_implemented() | Set of enabled features can be changed but it causes the whole context (all the modules) to recompile. + * lys_features_disable(), lys_features_disable_force() | - | ^ + * lys_features_state() | - | Redesign of the features handling in the schema tree, the feature's status is newly directly visible as ::LYS_FENABLED flag (in parsed feature structure). + * - | ::lys_feature_value() | Simplified API to get feature's state only based on a feature name string. + * - | ::lysp_feature_next() | After redesigning features handling, this function helps to iterate over all features connected with the module. + * lys_iffeature_value() | ::lysc_iffeature_value() | Renamed, but note that after features handling redesign, the compiled if-feature structure to evaluate is only in ::lysp_feature.iffeatures_c. + * lys_iffeature_value() | - | Not needed since the if-feature statements are directly applied onto the compiled tree. + * lys_is_disabled() | - | ^ + * lys_parent() | - | The compiled tree is more straightforward without the need to take care of nodes added via augments. + * lys_main_module() | - | The compiled tree does not include submodules, so there is always only the main module. + * lys_node_module() | - | ^ + * lys_set_enabled() | - | It is not possible to change context this way (remove or disable modules). + * lys_set_disabled() | - | ^ + * - | ::lys_find_child() | Helpers wrapper around ::lys_getnext(). + * - | ::lys_getnext_ext() | Alternative to ::lys_getnext() allowing processing schema trees inside extension instances. + * - | ::lys_nodetype2str() | New functionality. + * lys_is_key() | ::lysc_is_key() | Renamed to connect with the compiled schema tree. + * - | ::lysc_is_userordered() | Added functionality to simplify the examination of generic compiled schema nodes. + * - | ::lysc_is_np_cont() | ^ + * - | ::lysc_node_child() | ^ + * - | ::lysc_node_actions() | ^ + * - | ::lysc_node_notifs() | ^ + * - | ::lysp_node_child() | Added functionality to simplify the examination of generic parsed schema nodes. + * - | ::lysp_node_actions() | ^ + * - | ::lysp_node_notifs() | ^ + * - | ::lysp_node_groupings() | ^ + * - | ::lysp_node_typedefs() | ^ + * - | ::lysc_tree_dfs_full() | Alternative DFS passing implementation to ::LYSC_TREE_DFS_BEGIN macro. + * - | ::lysc_module_dfs_full() | Supplement functionality to ::lysc_tree_dfs_full(). + * lys_path(), lys_data_path() | ::lysc_path() | Redesigned functionality. + * lys_data_path_pattern() | - | Removed as useless + * lys_implemented_module() | ::ly_ctx_get_module_implemented() | Removed, the same result can be simply achieved using ::ly_ctx_get_module_implemented(). + * + * There is a set of functions available to implement data type plugins for storing and manipulating data values in a more + * natural way to the specific data type. For example, IPv4 address type is defined as a string with a pattern, but it is + * more effective and usual to store and handle IPv4 as a 32-bit number. + * + * libyang 1.x | libyang 2.0 | Notes + * :----------------------------|:---------------------------------|:-------------------------------------------------------- + * lys_getnext_union_type() | - | Removed after the type representation redesign. + * - | ::lyplg_type_identity_isderived()| Helper functions for base types. + * - | ::lyplg_type_parse_dec64() | ^ + * - | ::lyplg_type_parse_int() | ^ + * - | ::lyplg_type_parse_uint() | ^ + * - | ::lyplg_type_validate_patterns() | ^ + * - | ::lyplg_type_validate_range() | ^ + * - | ::lyplg_type_get_prefix() | Helper functions for processing prefixes in data values. + * - | ::lyplg_type_prefix_data_new() | ^ + * - | ::lyplg_type_prefix_data_dup() | ^ + * - | ::lyplg_type_prefix_data_free() | ^ + * + * + * YANG extensions are supported via [extension plugins API](@ref pluginsExtensions) allowing to implement specific extension + * and load its support into libyang as a shared module. libyang implements several extensions on its own (see + * @ref howtoPluginsExtensions), but even these internal implementations use the same API. The API and [mechanism of loading + * external plugins](@ref howtoPlugins) changed a lot in contrast to libyang 1.x. The plugins are now loaded automatically + * with creating the first libyang context. The only public function to handle external plugins is ::lyplg_add(). + * + * + * libyang 1.x | libyang 2.0 | Notes + * :----------------------------|:--------------------------------|:--------------------------------------------------------- + * lys_ext_complex_get_substmt()| lysc_ext_substmt() | Changed design of the extensions and the way how it's substatements are accessed. + * lys_ext_instance_presence() | lysc_ext_substmt() | ^ + * lys_ext_instance_substmt() | lysc_ext_substmt() | ^ + * ly_clean_plugins() | - | Manipulating external plugins (from plugins directories) is now automatically connected with creating (first) and destroying (last) libyang contexts. + * ly_get_loaded_plugins() | - | ^ + * ly_load_plugins() | - | ^ + * ly_register_exts() | ::lyplg_add() | Redesigned to a common function for any plugin type. + * ly_register_types() | ::lyplg_add() | ^ + * + * + * @section transitionData Data Instances + * + * Conceptually, the data tree did not change as much as the schema tree. There is still a generic ::lyd_node structure that + * maps according to the schema node's nodetype to some of the other lyd_node_* structures. All the data nodes were extended + * by hashes to improve performance when searching and processing data trees. The hashes are used for example in the + * lyd_find_* functions. + * + * All the data nodes are also implicitly ordered following the order of the schema nodes. This is the + * reason to change the insertion function. Only the user-ordered lists and leaf-lists can be now placed relative to other + * instances of the same list/leaf-list. Otherwise, the data instance is always inserted/created at the correct place beside + * the right sibling nodes. + * + * For any functions that are available on inputs of different scale (node, subtree, all siblings, whole data tree), + * there are several variants of the specific function with suffix specifying what exactly the processed input will be + * (_single, _tree, _siblings, _all). This way the behavior is always clear in the code. + * + * libyang 1.x | libyang 2.0 | Notes + * :----------------------------|:--------------------------------|:--------------------------------------------------------- + * %lyd_insert_after() | ::lyd_insert_after() | Changed meaning by limiting applicability only to user-ordered list and leaf-list instances. + * %lyd_insert_before() | ::lyd_insert_before() | ^ + * lyd_schema_sort() | - | Not necessary since the nodes are sorted implicitly. + * + * + * Parsing data instances in XML format is newly done directly, without any interstep. Therefore, complete XML API + * (lyxml_*() functions) from libyang 1.x was removed. + * + * Parser's API was simplified to avoid variadic parameters. The functions are newly split to parsed data, notifications, + * RPCs and replies to the RPCs. Similarly to the schema parsers, also the new data parser API works with + * [input handlers](@ref transitionGeneralInOut). The data printer's API was also extended to use new + * [output handlers](@ref transitionGeneralInOut). However, part of the previous API working directly with inputs + * and outputs was preserved. More information about the data parser and printer can be found at + * @ref howtoDataParsers and @ref howtoDataPrinters pages. + * + * libyang 1.x | libyang 2.0 | Notes + * :----------------------------|:--------------------------------|:--------------------------------------------------------- + * - | ::lyd_parse_data() | Redesigned data tree parser. + * lyd_parse_xml() | - | XML tree format was removed. + * lyd_parse_fd() | ::lyd_parse_data_fd() | Renamed and limited to data trees only. + * lyd_parse_mem() | ::lyd_parse_data_mem() | ^ + * lyd_parse_path() | ::lyd_parse_data_path() | ^ + * - | ::lyd_parse_ext_data() | Separated function for parsing data trees matching a schema tree of the given extension instance. + * - | ::lyd_parse_op() | Separated function for parsing RPCs, actions, replies, and notifications. + * - | ::lyd_parse_ext_op() | Separated function for parsing RPCs, actions, replies, and notifications of the given extension instance. + * - | ::lyd_print_all() | New API accepting ::ly_out. + * - | ::lyd_print_tree() | ^ + * + * + * Data validation is still done as part of the parser's process. The standalone functionality is available to check the + * result of data manipulation with the values of the terminal nodes or with the structure of the data tree. In contrast to + * libyang 1.x, adding the default nodes was made available as a standalone function to simplify the data manipulation + * process before the final validation. + * + * Many validation flags were removed because they became obsolete (LYD_OPT_DESTRUCT, LYD_OPT_WHENAUTODEL, + * LYD_OPT_NOEXTDEPS, LYD_OPT_DATA_NO_YANGLIB, LYD_OPT_VAL_DIFF) or we consider them redundant (LYD_OPT_OBSOLETE, + * LYD_OPT_NOSIBLINGS, LYD_OPT_DATA_ADD_YANGLIB). As for LYD_OPT_TRUSTED, this option was mostly replaced with + * ::LYD_PARSE_ONLY because both skip validation but with the significant difference that LYD_OPT_TRUSTED also sets + * the data node flags to be considered validated. The current option ::LYD_PARSE_ONLY does not do this because + * there is now much better support for working with non-validated data trees. Also, in case an invalid tree was marked + * as validated, it could lead to some undesired behavior, which is now avoided. + * + * Worth mentioning is a difference in the LYB format, which now also stores its validation flags. So, in case + * a validated data tree is stored, it is also loaded as validated. + * + * libyang 1.x | libyang 2.0 | Notes + * :----------------------------|:--------------------------------|:--------------------------------------------------------- + * lyd_validate() | ::lyd_validate_all(), ::lyd_validate_op() | Redesigned functionality. + * lyd_validate_modules() | ::lyd_validate_module() | ^ + * lyd_validate_value(), lyd_value_type() | ::lyd_value_validate() | Redesigned functionality. + * - | ::lyd_new_implicit_all() | New in API to explicitly add default nodes, previously done only as part of the validation process. + * - | ::lyd_new_implicit_module() | Supplement functionality to ::lyd_new_implicit_all(). + * - | ::lyd_new_implicit_tree() | ^ + * + * + * The `diff` functionality was completely redesigned. Instead of the array of operations to transform one tree into another, + * the difference between two data trees has newly a form of the annotated data tree describing the differences. A number of + * functions to use the diff tree was added into API. To simply compare just nodes, there are the `compare` functions. + * + * libyang 1.x | libyang 2.0 | Notes + * :----------------------------|:--------------------------------|:--------------------------------------------------------- + * lyd_diff() | ::lyd_diff_tree() | Redesigned functionality. + * - | ::lyd_diff_siblings() | Supplement functionality to ::lyd_diff_tree(). + * - | ::lyd_diff_apply_all() | ^ + * - | ::lyd_diff_apply_module() | ^ + * - | ::lyd_diff_merge_all() | ^ + * - | ::lyd_diff_merge_module() | ^ + * - | ::lyd_diff_merge_tree() | ^ + * - | ::lyd_diff_reverse_all() | ^ + * lyd_free_diff() | - | Removed. + * lyd_free_val_diff() | - | Removed. + * - | ::lyd_compare_single() | Added functionality. + * - | ::lyd_compare_meta() | Supplement functionality to ::lyd_compare_single() + * - | ::lyd_compare_siblings() | ^ + * + * + * For now, the functionality of moving data between two different contexts is not implemented. If you have a real use case + * for this functionality, let us know. + * + * libyang 1.x | libyang 2.0 | Notes + * :----------------------------|:--------------------------------|:--------------------------------------------------------- + * lyd_dup() | ::lyd_dup_single() | Redesigned functionality. + * lyd_dup_withsiblings() | ::lyd_dup_siblings() | ^ + * - | ::lyd_dup_meta_single() | Supplement functionality to ::lyd_dup_single(). + * lyd_dup_to_ctx() | - | Transferring data from one context to another is not supported. + * lyd_merge() | ::lyd_merge_tree() | Renamed. + * - | ::lyd_merge_siblings() | Supplement functionality to ::lyd_merge_tree() + * lyd_merge_to_ctx() | - | Transferring data from one context to another is not supported. + * + * + * There is a significant change in the value structure in terminal nodes. Thanks to the changes in the schema tree, + * it is now much more straightforward to get the type of the value and work with the alternative representation of the value + * fitting better to its type. There is also a new API for the type plugins (see @ref howtoPluginsTypes). Even the base YANG + * data types are now implemented using this API and can be taken as examples for implementing derived data types. + * + * libyang 1.x | libyang 2.0 | Notes + * :----------------------------|:--------------------------------|:--------------------------------------------------------- + * lyd_new(), lyd_new_output() | ::lyd_new_inner(), ::lyd_new_list(), ::lyd_new_list2() | Redesigned functionality to better fit new lyd_node structures, creating RPC's output data is now done via a flag parameter of the functions. + * lyd_new_leaf(), lyd_new_output_leaf() | ::lyd_new_term() | ^ + * lyd_new_anydata(), lyd_new_output_anydata() | ::lyd_new_any() | ^ + * lyd_new_yangdata() | ::lyd_new_ext_inner(), ::lyd_new_ext_list(), ::lyd_new_ext_term(), ::lyd_new_ext_any() | Additional functionality to lyd_new_* functions to cover top-level nodes in extension instances. + * lyd_insert_attr() | ::lyd_new_meta() | Unify naming used in other functions with the similar functionality. + * - | ::lyd_new_attr() | Added functionality to store the data (temporarily) not connected with schema definitions. + * - | ::lyd_new_attr2() | ^ + * - | ::lyd_new_opaq() | ^ + * - | ::lyd_new_opaq2() | ^ + * - | ::lyd_new_path2() | Supplement functionality to ::lyd_new_path(). + * LYD_PATH_OPT_NOPARENTRET | ::lyd_new_path2() | ::lyd_new_path2() returns both the first parent and the wanted node. + * LYD_PATH_OPT_EDIT | ::LYD_NEW_PATH_OPAQ | This functionality was replaced by opaq nodes. + * - | ::lyd_new_ext_path() | Supplement functionality to ::lyd_new_path() covering data defined in extension instances. + * lyd_insert() | ::lyd_insert_child() | Renamed to better distinguish from ::lyd_insert_sibling(). + * lyd_change_leaf() | ::lyd_change_term() | Align naming with changed names of data structures. + * - | ::lyd_change_meta() | Transferred functionality of ::lyd_change_term() to metadata. + * - | ::lyd_any_copy_value() | Added functionality. + * lyd_free() | ::lyd_free_tree() | Renamed. + * lyd_free_withsiblings() | ::lyd_free_all() | ^ + * - | ::lyd_free_siblings() | Supplement functionality to ::lyd_free_siblings(). + * lyd_free_attr() | ::lyd_free_attr_single() | Renamed. + * - | ::lyd_free_attr_siblings() | Supplement functionality to ::lyd_free_attr_single(). + * - | ::lyd_free_meta_single() | Added functionality. + * - | ::lyd_free_meta_siblings() | ^ + * lyd_unlink() | ::lyd_unlink_tree() | Renamed. + * + * + * Here is the table of other changes in data API. + * + * libyang 1.x | libyang 2.0 | Notes + * :----------------------------|:--------------------------------|:--------------------------------------------------------- + * lyd_find_instance() | - | Removed. + * lyd_find_sibling() | - | Removed, functionality can be replaced by ::lyd_find_sibling_val(). + * lyd_find_sibling_set() | - | ^ + * - | ::lyd_find_sibling_first() | Alternative function to ::lyd_find_sibling_val(). + * - | ::lyd_find_meta() | New functionality. + * lyd_wd_default() | ::lyd_is_default() | Renamed to unlink from with-default capability. + * - | ::lyd_parent() | New wrapper to get generic ::lyd_node pointer of the parent. + * - | ::lyd_child(), ::lyd_child_no_keys() | New wrapper to cover all children possibilities hidden behind a generic ::lyd_node structure. + * - | ::lyd_owner_module() | Added functionality. + * - | ::lyd_value_compare() | Added Functionality. + * - | ::lyd_target() | Added functionality for the instance-identifier representation. + * lyd_node_module() | - | Not necessary since the connection with the compiled modules is much more straightforward. + * lyd_leaf_type() | - | Not necessary since the real type information is much more clear from the new ::lyd_value. + * lyd_dec64_to_double() | - | Removed as useless. + * lyd_node_should_print() | - | ^ + + */ -- cgit v1.2.3