# Clixon Changelog * [6.6.0](#660) Expected: March 2024 * [6.5.0](#650) 6 December 2023 * [6.4.0](#640) 30 September 2023 * [6.3.0](#630) 29 July 2023 * [6.2.0](#620) 30 April 2023 * [6.1.0](#610) 19 Feb 2023 * [6.0.0](#600) 29 Nov 2022 ## 6.6.0 Expected: March 2024 ### Minor features * Changed framing between backend and frontend to RFC6242 "chunked-encoding" * Previous a propriatary framing method was used * Added micro-second resolution to logs via stderr/stdout * New command-line debug mechanism * Separation between subject-area and details * Multiple subject-areas * Symbolic and combined debug names, example: `-D debug -D detail` * See https://clixon-docs.readthedocs.io/en/latest/errors.html#customized-errors for more info * Made coverity analysis and fixed most of them * Some were ignored being for generated code (eg lex) or not applicable * Feature: [Add support for -V option to give version](https://github.com/clicon/clixon/issues/472) * All clixon applications added command-line option `-V` for printing version * New ca_version callback for customized version output * Optimization: * Removed reply sanity if `CLICON_VALIDATE_STATE_XML` not set * Improved performance of GET and PUT operations * Optimized datastore access by ensuring REPORT_ALL in memory and EXPLICIT in file * Added mountpoint cache as yang flag `YANG_FLAG_MTPOINT_POTENTIAL` * Optimized `yang_find`, especially namespace lookup * Filtered state data if not match xpath * Added reference count for shared yang-specs (schema mounts) * Allowed for sharing yspec+modules between several mountpoints * Added "%k" as extra flag character to api-path-fmt ### API changes on existing protocol/config features Users may have to change how they access the system * Changed framing between backend and frontend to RFC6242 "chunked-encoding" * Should only affect advanced usage between clixon frontend and backend * This should allow standard netconf utilities to be used as frontend (may be some caveats) * Revert the creators attribute feature introduced in 6.2. It is now obsoleted. It is replaced with a configured `creators` and user/application semantics * New `clixon-lib@2024-01-01.yang` revision * Replaced container creators to grouping/uses * New `clixon-config@2024-01-01.yang` revision * Changed semantics: * `CLICON_VALIDATE_STATE_XML` - disable return sanity checks if false * Marked as obsolete: * `CLICON_DATASTORE_CACHE` Replaced with enhanced datastore read API * `CLICON_NETCONF_CREATOR_ATTR` reverting 6.5 functionality ### C/CLI-API changes on existing features Developers may need to change their code * Rename function `xml_yang_minmax_recurse()` -> `xml_yang_validate_minmax()` * Modified msg functions for clearer NETCONF 1.0 vs 1.1 API: * `clicon_rpc1` --> `clixon_rpc10` * `clicon_msg_send1` --> `clixon_msg_send10` * `clicon_msg_rcv` and `clicon_msg_decode` --> `clixon_msg_rcv11` * Rewrite by calling `clixon_msg_rcv11` and explicit xml parsing * `clicon_msg_rcv1` --> `clixon_msg_rcv10` * Added `yspec` parameter to `api_path_fmt2api_path()`: * `api_path_fmt2api_path(af, c, a, c)` --> `api_path_fmt2api_path(af, c, yspec, a, c)` * Added flags parameter to default functions: * `xml_default_recurse(...)` -> `xml_default_recurse(..., 0)` * `xml_defaults_nopresence(...)` -> `xml_default_nopresence(..., 0)` * Also renamed (_defaults_ -> _default_) * Changed function name: `choice_case_get()` -> `yang_choice_case_get()` * New `clixon-lib@2024-01-01.yang` revision * Removed container creators, reverted from 6.5 * Changed ca_errmsg callback to a more generic variant * Includes all error, log and debug messages * See [Customized NETCONF error message](https://github.com/clicon/clixon/issues/454) * See https://clixon-docs.readthedocs.io/en/latest/errors.html#customized-errors for more info * Refactoring basic clixon modules and some API changes * Changes marked in code with `COMPAT_6_5` * Most common functions have backward compatible macros through the 6.6 release * Handle API * Renamed `clicon_handle` -> `clixon_handle` * `clicon_handle_init()` -> `clixon_handle_init() * `clicon_handle_exit()` -> `clixon_handle_exit() * Log/Debug API * Changed function names. You need to rename as follows: * `clicon_log_init()` -> `clixon_log_init(h,)` NOTE added "clixon_handle h" * `clicon_log()` -> `clixon_log(h,)` NOTE added "clixon_handle h" * `clixon_debug_init(d, f)` -> `clixon_debug_init(h, )` NOTE h added, f removed * `clicon_log_xml()` -> `clixon_debug_xml(h,)` NOTE added "clixon_handle h" * `clixon_debug_xml()` -> `clixon_debug_xml(h,)` NOTE added "clixon_handle h" * Error API: * Added `clixon_err_init(h)` function * Renaming, make the following changes: * `clicon_err()` -> `clixon_err()` * `clicon_err_reset()` -> `clixon_err_reset()` * `clicon_strerror(int)` -> `clixon_err_str()` * `clicon_netconf_error(h, x, fmt)` -> clixon_err_netconf(h, OE_XML, 0, x, fmt)` * `netconf_err2cb(...)` --> `netconf_err2cb(h, ...)` * Likewise for some other minor functions: `clicon_err_*` -> `clixon_err_*` * Replaced global variables with access functions. Replace variables with functions as follows: * `clicon_errno` -> `clixon_err_category()` * `clicon_suberrno` -> `clixon_err_subnr()` * `clicon_err_reason` -> `clixon_err_reason()` * Changed process API: * `clixon_proc_socket(...)` --> `clixon_proc_socket(h, ..., sockerr)` ### Corrected Bugs * Fixed: [If services add duplicate entries, controller does not detect this](https://github.com/clicon/clixon-controller/issues/107) * Fixed: [Problems with diff of YANG lists ordered-by user](https://github.com/clicon/clixon/issues/496) * Fixed: [show compare does not show correct diff while load merge xml](https://github.com/clicon/clixon-controller/issues/101) * Fixed: [commit goes 2 times](https://github.com/clicon/clixon/issues/488) * Fixed: Problem with cl:ignore attribute for show compare * Fixed: [yang_enum_int_value() fails if no explicit values are assigned to enums](https://github.com/clicon/clixon/issues/483) Remaining work: `yang_enum2valstr()` * Fixed: [show compare/diff problems with sorted-by user](https://github.com/clicon/clixon/issues/482) * Fixed: [Choice and Leafref](https://github.com/clicon/clixon/issues/469) * Fixed: [Problem deleting non-last list element if ordered-by user](https://github.com/clicon/clixon/issues/475) * Fixed: [Tab completion mounted devices with lists](https://github.com/clicon/clixon-controller/issues/72) * Fixed: kill-session cleanup when client none existant, and for all db:s * Fixed: [Using the characters '<' and '>' might cause an invalid diff](https://github.com/clicon/clixon-controller/issues/73) ## 6.5.0 6 December 2023 Clixon 6.5 includes bugfixes, moved out utility functions and some API changes. ### API changes on existing protocol/config features Users may have to change how they access the system * All clixon test utilities in util/ have been moved to a separate repo: clicon/clixon-util * To run tests you need to clone, build and install them separately * Moved and split install of main example config file * From `/usr/local/etc/example.xml` to `/usr/local/etc/clixon/example.xml` * Added `/usr/local/etc/clixon/example/autocli.xml` and `/usr/local/etc/clixon/example/restconf.xml` ### C/CLI-API changes on existing features Developers may need to change their code * Changed return value of `xml_add_attr` from 0/-1 to xa/NULL * You need to change eg `if (xml_add_attr < 0)` to if (xml_add_attr == NULL)` * Changed signature of `clicon_netconf_error()` and `netconf_err2cb()` * You need to add the clixon handle as first parameter: * `clicon_netconf_error(...)` --> `clixon_netconf_error(h, ...)` * `netconf_err2cb(...)` --> `netconf_err2cb(h, ...)` * Changed function name for `clicon_debug` functions. You need to rename as follows: * clicon_debug() -> clixon_debug() * clicon_debug_init() -> clixon_debug_init() * clicon_debug_get() -> clixon_debug_get() * clicon_debug_xml() -> clixon_debug_xml() * There are backward compatible macros during a transition period ### Minor features * New feature: [Customized NETCONF error message](https://github.com/clicon/clixon/issues/454) * Added new callback `.ca_errmsg` * See https://clixon-docs.readthedocs.io/en/latest/errors.html#customized-errors for more info * New `clixon-config@2023-11-01.yang` revision * Added `CLICON_NETCONF_CREATOR_ATTR` option * New `clixon-lib@2023-11-01.yang` revision * Added ignore-compare extension * Added creator meta configuration ### Corrected Bugs * Fixed: [NACM paths don't work for mounted YANG models](https://github.com/clicon/clixon-controller/issues/62) * Fixed: [cl:creator attribute must be persistent](https://github.com/clicon/clixon-controller/issues/54) * Fixed: [Does clixon cli support autocompletion for leafrefs pointed to another module?](https://github.com/clicon/clixon/issues/455) * Fixed: [commit diff sometimes includes namespace in output](https://github.com/clicon/clixon-controller/issues/44) ## 6.4.0 30 September 2023 This releases is mainly for bugfixes and improvements of existing functionality, such as CLI output pipes. ### Minor features * New `clixon-autocli@2023-09-01.yang` revision * Added argument to alias extension * CLI show compare example function: * Improved diff algorithm for XML and TEXT/curly, replaced UNIX diff with structural in-mem algorithm * JSON: Added unicode BMP support for unicode strings as part of fixing (https://github.com/clicon/clixon/issues/453) * Example cli pipe grep command quotes vertical bar for OR function * Added: [Feature request: node's alias for CLI](https://github.com/clicon/clixon/issues/434) * Note: "Skip" is for all nodes, but "Alias" is only for leafs * New command-line option for dumping configuration options for all clixon applications after load * Syntax is `-C ` * Example: `clixon_backend -1C json` * Removed sending restconf config inline using -R when CLICON_BACKEND_RESTCONF_PROCESS=true * Define RESTCONF_INLINE to revert * Clarified clixon_cli command-line: `clixon_cli [options] [commands] [-- extra-options]` ### C/CLI-API changes on existing features Developers may need to change their code * Renamed `clixon_txt2file()` to `clixon_text2file()` * Changed parameters of example clispec function `compare_dbs()` * New parameters are: `db1`, `db2`, `format` * Add `fromroot` parameter to `cli_show_common()` * `cli_show_common(...xpath...)` --> `cli_show_common(...xpath,0...)` * Low-level message functions added `descr` argument for better logging * In this way, message debugs in level 2 are more descriptive * The descr argument can be set to NULL for backward-compability, see the following translations: * `clicon_rpc(s, ...)` --> `clicon_rpc(s, NULL, ...)` * `clicon_rpc1(s, ...)` --> `clicon_rpc1(s, NULL, ...)` * `clicon_msg_send(s, ...)` --> `clicon_msg_send(s, NULL, ...)` * `clicon_msg_send1(s, ...)` --> `clicon_msg_send1(s, NULL, ...)` * `clicon_msg_rcv(s, ...)` --> `clicon_msg_rcv(s, NULL, ...)` * `clicon_msg_rcv1(s, ...)` --> `clicon_msg_rcv1(s, NULL, ...) * `clicon_msg_notify_xml(h, s, ...)` --> `clicon_msg_notify_xml(h, s, NULL, ...)` * `send_msg_reply(s, ...)` --> `send_msg_reply(s, NULL, ...)` * `clixon_client_lock(s, ...)` --> `clixon_client_lock(s, NULL, ...)` * `clixon_client_hello(s, ...)` --> `clixon_client_hello(s, NULL, ...)` * CLI pipe function: added arg to `pipe_tail_fn()` ### Corrected Bugs * Fixed: ["show compare" and "show compare | display cli" differs #23](https://github.com/clicon/clixon-controller/issues/23) * Fixed: [JSON backslash string decoding/encoding not correct](https://github.com/clicon/clixon/issues/453) * Fixed: [CLI show config | display exits over mountpoints with large YANGs](https://github.com/clicon/clixon-controller/issues/39) * JSON string fixed according to RFC 8259: encoding/decoding of escape as defined in Section 8 * No need to bind for xml and json, only cli and text * Fixed several issues with including multiple configure-files in a config-directory, including overwriting of structured sub-configs. * Fixed: [YANG error when poking on EOS configuration](https://github.com/clicon/clixon-controller/issues/26) * Fixed: [CLICON_CONFIGDIR with external subsystems causes endless looping](https://github.com/clicon/clixon/issues/439) * Fixed: ["show configuration devices" and "show configuration devices | display cli" differs](https://github.com/clicon/clixon-controller/issues/24) * Fixed: [Configuring Juniper PTX produces CLI errors](https://github.com/clicon/clixon-controller/issues/19) * Fixed: CLI output pipes: Add `CLICON_PIPETREE` to any cli files, not just the first ## 6.3.0 29 July 2023 Clixon 6.3 introduces CLI output pipes and multiple updates and optimizations, primarily to the CLI. ### New features * CLI output pipes * Building on a new CLIgen feature * See https://clixon-docs.readthedocs.io/en/latest/cli.html#output-pipes ### API changes on existing protocol/config features Users may have to change how they access the system * New `clixon-config@2023-05-01.yang` revision * Added options: `CLICON_CONFIG_EXTEND` * Moved datastore-format datastype to clixon-lib * New `clixon-lib@2023-05-01.yang` revision * Restructured and extended stats rpc to schema mountpoints * rpc `` is not backward compatible * New `clixon-autocli@2023-05-01.yang` revision * New `alias` and `skip` extensions (NOTE: just added in YANG, not implemented) * New `grouping-treeref` option ### C/CLI-API changes on existing features Developers may need to change their code * Added `uid`, `gid` and `fdkeep` parameters to `clixon_process_register()` for drop privs * Added output function to JSON output: * `xml2json_vec(...,skiptop)` --> `xml2json_vec(..., cligen_output, skiptop)` * `yang2cli_yspec` removed last argument `printgen`. * Removed obsolete: `cli_auto_show()` ### Minor features * Autocli optimization feature for generating smaller CLISPECs for large YANGs using treerefs * New `grouping-treeref` option added to clixon-autocli.yang * Default is disabled, set to true to generate smaller memory footprint of clixon_cli * Changed YANG uses/grouping to keep uses statement and flag it with YANG_FLAG_USES_EXP * Removed extras/ and build-root/ build code since they are not properly maintained * Refactored cli-syntax code to use cligen pt_head instead (long overdue) * Modified backend exit strategy so that 2nd ^C actually exits * Performance: A change in the `merge` code made "co-located" config and non-config get retrieval go considerable faster. This is done by a specialized `xml_child_each_attr()` function. * CLI: Added `show statistics` example code for backend and CLI memory stats * [Support yang type union with are same subtypes with SNMP](https://github.com/clicon/clixon/pull/427) * Removed obsolete compile options introduced in 6.1: * `NETCONF_DEFAULT_RETRIEVAL_REPORT_ALL` * `AUTOCLI_DEPRECATED_HIDE` ### Corrected Bugs * Fixed: [xpath // abbreviation does not work other than on the top-level](https://github.com/clicon/clixon/issues/435) * Fixed: [if-feature always negative if imported from another module](https://github.com/clicon/clixon/issues/429) * Fixed autocli edit modes for schema mounts ## 6.2.0 30 April 2023 Clixon 6.2.0 brings no new major feature changes, but completes YANG schema mount and other features required by the clixon controller project, along with minor improvements and bugfixes. ### API changes on existing protocol/config features Users may have to change how they access the system * Changed `configure --with-cligen=dir` * is considered as `DESTDIR` and consider cligen installed under `DESTDIR/PREFIX` * Changed from: consider cligen installed under `` * New `clixon-config@2023-03-01.yang` revision * Added options: * `CLICON_RESTCONF_NOALPN_DEFAULT` * `CLICON_PLUGIN_DLOPEN_GLOBAL` * Extended datastore-format with CLI and text * New `clixon-lib@2023-03-01.yang` revision * Added creator meta-object ### C/CLI-API changes on existing features Developers may need to change their code * C-API * `clixon_xml2file` and `clixon_xml2cbuf` added `prefix` argument * Example application is to add "+"/"-" for diffs * Example change: * `clixon_xml2file(f,x,p,f,s,a)` -> `clixon_xml2file(f,x,p,NULL,f,s,a)` * `clixon_xml2cbuf(c,x,l,p,d,s)` -> `clixon_xml2cbuf(c,x,l,p,NULL,d,s)` * `xmldb_validate` is removed. Yang checks should be enough, remnant of time before YANG checks. * `xml_diff`: removed 1st `yspec` parameter * `xml2xpath()`: Added `int apostrophe` as 4th parameter, default 0 * This is for being able to choose single or double quote as xpath literal quotes * `clicon_msg_rcv`: Added `intr` parameter for interrupting on `^C` (default 0) * Renamed include file: `clixon_backend_handle.h`to `clixon_backend_client.h` * `candidate_commit()`: validate_level (added in 6.1) marked obsolete ### Minor features * Adjusted to Openssl 3.0 * Unified netconf input function * Three different implementations were used in external, internal and controller code * Internal netconf still not moved to unified * The new clixon_netconf_input API unifies all three uses * Code still experimental controlled by `NETCONF_INPUT_UNIFIED_INTERNAL` * RFC 8528 YANG schema mount * Made cli/autocli mount-point-aware * Internal NETCONF (client <-> backend) * Ensure message-id increments * Separated rpc from notification socket in same session * Restconf: Added fallback mechanism for non-ALPN HTTPS * Set `CLICON_RESTCONF_NOALPN_DEFAULT` to `http/2` or `http/1.1` * For http/1 or http/2 only, that will be the default if no ALPN is set. * Fixed: [Add support decimal64 for SNMP](https://github.com/clicon/clixon/pull/422) ### Corrected Bugs * Fixed RESTCONF race conditions on SSL_shutdown sslerr ZERO_RETURN appears occasionally and exits. * Fixed: RESTCONF: some client cert failure leads to restconf exit. Instead close and continue ## 6.1.0 19 Feb 2023 The Clixon 6.1 release completes Network monitoring (RFC 6022) and introduces a first version of YANG schema mount (RFC 8528). The main focus has been interoperability and basic support for the ongoing [Clixon controller](https://github.com/clicon/clixon-controller) work. ### New features * YANG schema mount RFC 8528 * The primary use-case is the clixon-controller but can be used independently * New plugin callback: `ca_yang_mount` * To specify which YANG modules should be mounted * New plugin callback: `ca_yang_patch` * A method to patch a YANG module * To enable yang mounts, set new option `CLICON_YANG_SCHEMA_MOUNT` to `true` * Restrictions: * Only schema-ref=inline, not shared-schema * Mount-points must be presence containers, regular containers or lists are not supported. * Netconf monitoring RFC 6022 * This is part 2, first part was in 6.0 * Datastores, sessions and statistics * Added clixon-specific transport identities: cli, snmp, netconf, restconf * Added source-host from native restonf, but no other transports * Hello statistics is based on backend statistics, hellos from RESTCONF, SNMP and CLI clients are included and dropped external NETCONF sessions are not * RFC 6022 "YANG Module for NETCONF Monitoring" * See [Feature Request: Support RFC 6022 (NETCONF Monitoring)](https://github.com/clicon/clixon/issues/370) ### API changes on existing protocol/config features Users may have to change how they access the system * Obsolete config options given in the configuration file are considered an error * New `clixon-config@2022-12-01.yang` revision * Added option: 'CLICON_YANG_SCHEMA_MOUNT` * Removed obsolete option: `CLICON_MODULE_LIBRARY_RFC7895` * clixon-lib,yang * Moved all extended internal NETCONF attributes to the clicon-lib namespace * These are: content, depth, username, autocommit, copystartup, transport, source-host, objectcreate, objectexisted. * The internal attributes are documented in https://clixon-docs.readthedocs.io/en/latest/netconf.html * With-defaults default retrieval mode has changed from `REPORT-ALL` to `EXPLICIT` * This means that all get operations without `with-defaults` parameter do no longer return implicit default values, only explicitly set values. * Applies to NETCONF ``, `` and RESTCONF `GET` * To keep backward-compatible behavior, define option `NETCONF_DEFAULT_RETRIEVAL_REPORT_ALL` in `include/clixon_custom.h` * Alternatively, change all get operation to include with-defaults parameter `report-all` ### C/CLI-API changes on existing features Developers may need to change their code * Changed docker builds * `clixon-test` built in `docker/test` * Renamed from `clixon-system` built in `docker/main` * `clixon-example` built in `docker/example` * Added netconf ssh subsystem * Renamed from `clixon` built in `docker/base` * C-API * `xml2xpath()`: Added `int spec` as third parameter, default 0 * This was for making an xpath to a yang-mount point (only for yang-mount) * Example change: * `xml2xpath(x, n, xp)` -> `xml2xpath(x, n, 0, xp)` * `xml_bind_*()` functions: Added `clicon_handle h` as first parameter * Example change: * `xml_bind_yang(x, y, yp, xe)` -> `xml_bind_yang(h, x, y, yp, xe)` -> * `xmldb_get0()`: Added `with-defaults` parameter, default 0 * Example change: * `xmldb_get0(0, db, yb, n, xp, c, x, m, x)` -> `xmldb_get0(0, db, yb, n, xp, c, WITHDEFAULTS_REPORT_ALL, x, m, x)` * `candidate_commit()`: Add myid as fourth and validate_level as fifth parameter, default 0 * Example change: * `candidate_commit(h, x, d, c)` -> `candidate_commit(h, x, d, 0, VL_FULL, c)` * `xpath_vec_flag()`: Changed type of sixth `veclen` parameter to `size_t *` * `clicon_log_xml()`: All calls changed to new function `clicon_debug_xml()` * `clixon_proc_socket()`: Added `sock_flags` parameter ### Minor features * Misc. build fixes encountered when cross-compiling by @troglobit in https://github.com/clicon/clixon/pull/418 * Update FAQ.md hello world example url by @jarrodb in https://github.com/clicon/clixon/pull/419 * Done: [Request to suppress auto-completion for "deprecated" / "obsolete" status and warn the user.](https://github.com/clicon/clixon/issues/410) * Implemented by: * Not generating any autocli syntax for obsolete YANG statements, * Hide statements for deprecated YANG statements. * New plugin callbacks * `ca_yang_mount` - see the RFC 8528 support * `ca_yang_patch` - for modifying existing YANG modules * Changed debug levels in `clicon_debug()` to be based on maskable flags: * Added flag names: `CLIXON_DBG_*` * Added maskable flags that can be combined when debugging: * `DEFAULT` = 1: Basic debug message, espcially initialization * `MSG` = 2: Input and output packets, read datastore * `DETAIL` = 4: xpath parse trees, etc * `EXTRA` = 8: Extra detailed logs, message dump in hex * Added `ISO/IEC 10646` encodings to XML parser: `&#[0-9]+;` and `&#[0-9a-fA-F]+;` * Added `CLIXON_CLIENT_SSH` to client API to communicate remotely via SSH netconf sub-system ### Corrected Bugs * Added translation from Yang type to SNMP type by @StasSt-siklu in https://github.com/clicon/clixon/pull/406 * Fixed: [State XML validation error when CLICON_MODULE_LIBRARY_RFC7895=true and ietf-yang-library@2019-01-04 is loaded](https://github.com/clicon/clixon/issues/408) * Fixed: [SNMP: snmpwalk is slow and can timeout #404 ](https://github.com/clicon/clixon/issues/404) * Fixed: [SNMP accepts only u32 & u64 #405](https://github.com/clicon/clixon/issues/405) * Fixed: [Yang leaves without smiv2:oid directive are not shown well in snmpwalk #398](https://github.com/clicon/clixon/issues/398) * Yang leaves without smiv2:oid directive are not shown well in]… by @doron2020 in https://github.com/clicon/clixon/pull/402 * Fixed: [Netconf commit confirm session-id mismatch #407](https://github.com/clicon/clixon/issues/407) * Fixed: Initialized session-id to 1 instead of 0 following ietf-netconf.yang * Fixed: [snmpwalk doesn't show properly SNMP boolean values which equal false](https://github.com/clicon/clixon/issues/400) * Fixed: yang-library: Remove revision if empty instead of sending empty revision * This was a change from RFC 7895 to RFC 8525 * Fixed: [locally scoped YANG typedef in grouping does not work #394](https://github.com/clicon/clixon/issues/394) * Fixed: [leafref in new type no work in union type](https://github.com/clicon/clixon/issues/388) * Fixed: [must statement check int value failed](https://github.com/clicon/clixon/issues/386) * Fixed: [Defaults in choice does not work properly](https://github.com/clicon/clixon/issues/390) * Fixed: [Netconf monitoring](https://github.com/clicon/clixon/issues/370) - Announce module capability - Return origin Yang file in get-schema ## 6.0.0 29 Nov 2022 The 6.0 release features confirmed-commit and an initial version of netconf monitoring along with many minor changes and bug fixes. ### New features * Confirmed-commit capability * Standards * RFC 4741 "NETCONF Configuration Protocol": Section 8.4 * RFC 6241 "Network Configuration Protocol (NETCONF)": Section 8.4 * Features * `:confirmed-commit:1.0` capability * `:confirmed-commit:1.1` capability * Added support for relevant arguments to CLI commit * See [example_cli.cli](https://github.com/clicon/clixon/blob/master/example/main/example_cli.cli) * See [Netconf Confirmed Commit Capability](https://github.com/clicon/clixon/issues/255) * Netconf monitoring, part 1 * Capabilities and schema state and get-schema * Remaining: Datastore, sessions and statistics state * Standards * RFC 6022 "YANG Module for NETCONF Monitoring" * See [Feature Request: Support RFC 6022 (NETCONF Monitoring)](https://github.com/clicon/clixon/issues/370) ### API changes on existing protocol/config features Users may have to change how they access the system * New `clixon-config@2022-11-01.yang` revision * Added option: * `CLICON_NETCONF_MONITORING` * `CLICON_NETCONF_MONITORING_LOCATION` * Added `PRETTYPRINT_INDENT` compile-time option controlling indentation level for XML, JSON, TEXT and YANG * Default value is `3` * NETCONF: Removed `message-id` from hello protocol following RFC 6241 * See [message-id present on netconf app "hello"](https://github.com/clicon/clixon/issues/369) ### C/CLI-API changes on existing features Developers may need to change their code * [Code formatting: Change indentation style to space](https://github.com/clicon/clixon/issues/379) * Applies to all c/h/y/l/sh files and .editorconfig * C API changes: * Added `expanddefault` parameter to `xml_yang_validate_rpc()` * Added `defaults` parameter to `clicon_rpc_get_pageable_list()` * `clicon_rpc_commit()` and `cli_commit` * Added `confirmed`, `cancel`, `timeout`, `persist-id`, and `persist-id-val` parameters to * `clicon_rpc_commit()` and `clicon_rpc_validate` * Added three-value return. * Code need to be changed from: checking for `<0` to `<1` to keep same semantics * Added `skiptop` parameter to `xml2json_vec()` * Added two arguments to `candidate_commit` * `myid` : Client-id of incoming message * `vlev` : validate level * Both parameters are default `0` for backward-compatibility ### Minor features * Removed obsoleted compile-time options since 5.4: * `YANG_ORDERING_WHEN_LAST` * See https://github.com/clicon/clixon/issues/287 * `JSON_CDATA_STRIP` * Added fuzz code for xpath * List-pagination: Follow ietf-draft 100%: Removed list-pagination "presence" * Main example: Removed dependency of external IETF RFCs * See [Can't initiate clixon_backend](https://github.com/clicon/clixon/issues/382) * Added warning if modstate is not present in datastore if `CLICON_XMLDB_MODSTATE` is set. ### Corrected Bugs * Fixed: XPath evaluation of two nodes reverted to strcmp even if both were numbers * Fixed: [Yang identityref XML encoding is not general](https://github.com/clicon/clixon/issues/90) * Revisiting this issue now seems to work, there are no regressions that fail when disabling IDENTITYREF_KLUDGE. * Fixed several xpath crashes discovered by unit xpath fuzzing * Fixed: SEGV when using NETCONF get filter xpath and non-existent key * eg `select="/ex:table[ex:non-exist='a']` * Fixed: [CLI Show config JSON with multiple top-level elements is broken](https://github.com/clicon/clixon/issues/381) * Fixed: [Non-obvious behavior of clixon_snmp after snmpset command when transaction validation returns an error](https://github.com/clicon/clixon/issues/375) * Fixed by validating writes on ACTION instead of COMMIT since libnetsnmp seems not to accept commit errors * Fixed: [YANG when condition evaluated as false combined with a mandatory leaf does not work](https://github.com/clicon/clixon/issues/380) * Fixed: [Trying to change the "read-only" node through snmpset](https://github.com/clicon/clixon/issues/376) * Fixed: [Trying to change the "config false" node through snmpset](https://github.com/clicon/clixon/issues/377) * Fixed by returning `SNMP_ERR_NOTWRITABLE` when trying to reserve object * Fixed: [Non-obvious behavior of clixon_snmp after snmpset command when transaction validation returns an error](https://github.com/clicon/clixon/issues/375) * Fixed: [clixon_snmp module crashes on snmpwalk command](https://github.com/clicon/clixon/issues/378) * Fixed: [unneeded trailing zero character on SNMP strings](https://github.com/clicon/clixon/issues/367) * Fixed: [message-id present on netconf app "hello"](https://github.com/clicon/clixon/issues/369) * Fixed: [SNMP "smiv2" yang extension doesn't work on augmented nodes](https://github.com/clicon/clixon/issues/366) ## 5.9.0 24 September 2022 The 5.9 release features with-defaults (RFC 6243) and RESTCONF Call-home (RFC 8071) along with numerous bugfixes and usability improvements. ### New features * With-defaults capability * Standards * RFC 6243 "With-defaults Capability for NETCONF" * RFC 8040 "RESTCONF Protocol": Section 4.8.9 * Features: * `:with-defaults` capability * `explicit` basic mode * Full retrieval modes: `explicit`, `trim`, `report-all`, `report-all-tagged`. * RESTCONF with-defaults query for XML and JSON * Assigned meta-data for the `ietf-netconf-with-defaults:default` attribute for JSON (RFC8040 Sec 5.3.2) * Added `withdefault` option to cli show commands * See [User manual](https://clixon-docs.readthedocs.io/en/latest/cli.html#show-commands) * See [CLISPEC changes](#api-changes-on-existing-protocolconfig-features) * See [Netconf With-defaults Capability](https://github.com/clicon/clixon/issues/262) * RESTCONF call home * Standard: RFC 8071 "NETCONF Call Home and RESTCONF Call Home" * clixon-restconf.yang extended with callhome inspired by ietf-restconf-server.yang * See e.g., draft-ietf-netconf-restconf-client-server-26.txt * The `` list has been extended with a `call-home` presence container including: * reconnect-strategy/max-attempts * connection-type: either persistent or periodic * idle-timeout for periodic call-homes. * An example util client is `clixon_restconf_callhome_client.c` used in test cases * See [call-home user guide](https://clixon-docs.readthedocs.io/en/latest/restconf.html#callhome) ### API changes on existing protocol/config features Users may have to change how they access the system * NETCONF error handling for `data-not-unique` and `missing-choice` follows standard more closely * data-not-unique: * Added YANG namespace to `` tag * Changed `yang-unique` value to path insytead of single name * See RFC 7950 Sec 15.1 * missing-choice: * Added `` * Added YANG namespace to `` tag * See RFC 7950 Sec 15.6 * Backend transaction plugins: edit of choice node will always result in a "del/add" event for all edits of change nodes, never a "change" event. * Before, some cases were using a "change" event if the "yang ordering" happended to be the same. * See more details in: [Clixon backend transactions for choice/case is not logical](https://github.com/clicon/clixon/issues/361) * Constraints on number of elements have been made stricter (ie unique, min/max-elements) * Usecases that passed previously may now return error * This includes: * Check of incoming RPCs * Check of non-presence containers ### C/CLI-API changes on existing features Developers may need to change their code * C API changes * Added `defaults` parameter to `clicon_rpc_get()` and `clicon_rpc_get_config()` * For upgrade, add new sixth parameter and set it to `NULL`. * CLISPEC changes of cli show functions * For details of updated API, see https://clixon-docs.readthedocs.io/en/latest/cli.html#show-commands * Changed `cli_show_auto()` * Added parameters for pretty-print, state and with-default * If the ``is used, you need to change the call as follows: * `cli_show_auto(, , )` -> `cli_show_auto(, , true, false, NULL, )` * Otherwise the API is backward-compatible * Changed `cli_show_config()` * Added parameters for pretty-print, state and with-default * If the `` parameter is used, you need to change the call as follows: * `cli_show_config(, , , , )` -> `cli_show_auto(, , , , true, false, NULL, )` * Otherwise the API is backward-compatible * Removed `cli_show_auto_state()`, replace with `cli_show_auto` with state set to `true` * Removed `cli_show_config_state()`, replace with `cli_auto_show` with state set to `true` * Replaced `cli_auto_show()` with `cli_show_auto_mode()` * The first argument is removed. You need to change all calls as follows: * `cli_show_config(, , ...` -> `cli_show_auto_menu(, ...)` * The `cli_auto_show()` callback remains in 5.9.0 for backward compatible reasons, but will be removed in later releaes. ### Minor features * Restconf: * Openssl 3.0 is supported * Refactoring of code closing sockets. Some cornercase bugs have been removed. ### Corrected Bugs * Fixed: Leak in restconf http/1 data path: when multiple packets in same connection. * Fixed: [Replace operation](https://github.com/clicon/clixon/issues/350) * Fixed: [When multiple lists have same key name, need more elaborate error message in case of configuration having duplicate keys](https://github.com/clicon/clixon/issues/362) * Solved by implementing RFC7950 Sec 5.1 correctly * Fixed: [All values in list don't appear when writing "show " in cli](https://github.com/clicon/clixon/issues/359) * Fixed: [yang regular char \w not include underline char](https://github.com/clicon/clixon/issues/357) * Fixed: [Clixon backend transactions for choice/case is not logical](https://github.com/clicon/clixon/issues/361) * Fixed: [Clixon backend transaction callback fails for empty types](https://github.com/clicon/clixon/issues/360) * Fixed: [with-defaults=trim does not work due to dodgy handling of state data marked as default](https://github.com/clicon/clixon/issues/348) * Fixed: [YANG ordering fails for nested choice and action](https://github.com/clicon/clixon/issues/356) * Fixed: [YANG min-elements within non-presence container does not work](https://github.com/clicon/clixon/issues/355) * Fixed: [Issues with ietf-snmp modules](https://github.com/clicon/clixon/issues/353) * Fixed: [Missing/no namespace error in YANG augments with default values](https://github.com/clicon/clixon/issues/354) * Fixed: [Validation of mandatory in choice/case does not work in some cases](https://github.com/clicon/clixon/issues/349) ## 5.8.0 28 July 2022 New features in Clixon 5.8.0 include a new SNMP frontend, YANG action and parseable TEXT syntax. ### New features * New SNMP frontend * Support for SNMP for retreiving and setting values via net-snmp using MIB-YANG mapping defined in RFC6643. * For details, see [SNMP section of user manual](https://clixon-docs.readthedocs.io/en/latest/snmp.html) * YANG `clixon-config@2022-03-21.yang` changes: * Added options: * `CLICON_SNMP_AGENT_SOCK` * `CLICON_SNMP_MIB` * New configure options: * `--enable-netsnmp` * `--with-mib-generated-yang-dir=DIR` (test only) * Thanks: Siklu Communications LTD for sponsoring this work * YANG Action (RFC 7950 Section 7.15) * Register action callback with `action_callback_register()` * The main example contains example code * Remains: check list keys, validate output * See [Support for "action" statement](https://github.com/clicon/clixon/issues/101) * TEXT syntax is now parseable * This means you can save and load TEXT syntax files, as additions to XML/JSON/CLI formats * Previously only output was supported. * TEXT output format changed (see API changes) * FOr more info, see [user manual](https://clixon-docs.readthedocs.io/en/latest/datastore.html#other-formats) * See [Support performant load_config_file(...) for TEXT format](https://github.com/clicon/clixon/issues/324) ### API changes on existing protocol/config features Users may have to change how they access the system * TEXT file format changed * With new parsing of TEXT format, the output is changed * Namespace/modulename added to top-level * Leaf-list support: `a [ x y z ]` * List key support: `a x y { ... }` * See compile-time option `TEXT_LIST_KEYS` * Keep backward-compatible non-top-level prefix with compile-time option `TEXT_SYNTAX_NOPREFIX` * Augmented XML uses default namespace * Instead of using prefixes for augmented XML, assign the default namespace * This does not change the semantics, but changes the way XML prefixes are used * Example augmented ipv4 into interface: * Previously: `...` * Now: `...` ### C/CLI-API changes on existing features Developers may need to change their code * Changed C-API for xml translation/print the internal `cxobj` tree data structure to other formats. * Functions are merged, ie removed and with replaced more generic functions * Added `skiptop` parameter, if set only apply to children of a node, skip top node * default is 0 * The new API is as follows: * `clixon_xml2file()` / `clixon_xml2cbuf()` - Print internal tree as XML to file or buffer, respectively * `clixon_json2file()` / `clixon_json2cbuf()` - Print internal tree as JSON to file or buffer, respectively * `clixon_cli2file()` - Print internal tree as CLI format to file * `clixon_txt2file()` - Print internal tree as text format to file * As developer, you need to replace the old functions to the new API as follows: * `clicon_xml2file(f, x, l, p)` -> `clixon_xml2file(f, x, l, p, NULL, 0, 0)` * `clicon_xml2file_cb(f, x, l, p, fn)` -> `clixon_xml2file(f, x, l, p, fn, 0, 0)` * `cli_xml2file(x, l, p, fn)` -> `clixon_xml2file(stdout, x, l, p, fn, 0, 0)` * `clicon_xml2cbuf(c, x, l, p, d)` -> `clixon_xml2cbuf(c, x, l, p, d, 0)` * `clicon_xml2str(x)` -> Rewrite using cbufs and `clixon_xml2cbuf()` * `xml2json(f, x, p)` -> `clixon_json2file(f, x, p, NULL, 0, 0)` * `xml2json_cb(f, x, p, fn)` -> `clixon_json2file(f, x, p, fn, 0, 0)` * `xml2json_cbuf(c, x, p)` -> `clixon_json2cbuf(c, x, p, 0, 0)` * `xml2cli(h, f, x, p, fn)` -> `clixon_cli2file(h, f, x, p, fn, 0)` * `cli_xml2txt(x, fn, l)` -> `clixon_txt2file(stdout, x, l, NULL, 0, 0)` * `xml2txt(f, x, l)` -> `clixon_txt2file(f, x, l, NULL, 0, 0)` * `xml2txt_cb(f, x, fn)` -> `clixon_txt2file(f, x, 0, NULL, 0, 0)` ### Minor features * Break-out RFC 7950 Section 6.1 tokenization * This enables full string lexical parsing of some rules previously not fully compliant, including: * refine, uses-augment, augment, if-feature, type, base. * Also fixes some previous tokenization issues * [String concatenation in YANG model leads to syntax error ](https://github.com/clicon/clixon/issues/265) * [Can't use + symbol in the enum statement without quotes](https://github.com/clicon/clixon/issues/241) * Full RFC 7950 if-feature-expr support (Section 7.20.2) * Previous implementation did not handle nested if-feature expressions * As part of fixing: [YANG if-feature does not support nested boolean expression](https://github.com/clicon/clixon/issues/341) * Added new yacc/lex parser for if-feature-expr string * Added XPATH function `boolean()` * This caused problem for new NTP YANG in RFC 9249 * [Feature Request: Log SSL events](https://github.com/clicon/clixon/issues/331) * Added syslog NOTICE on failed user certs ### Corrected Bugs * Fixed: [Clixon CLI issue: when I try to print the value of the leaf node nothing appeared](https://github.com/clicon/clixon/issues/345) * Fixed: [Can't use + symbol in the enum statement without quotes](https://github.com/clicon/clixon/issues/241) * Fixed: [String concatenation in YANG model leads to syntax error ](https://github.com/clicon/clixon/issues/265) * Fixed: ["autocli:hide-show" extension cause bug in xmldb_put method #343](https://github.com/clicon/clixon/issues/343) * Fixed: [Schema Ambiguity Error with openconfig-system re: NTP](https://github.com/clicon/clixon/issues/334) * Fixed: [YANG mandatory statements within case nodes do not work](https://github.com/clicon/clixon/issues/344) * Fixed: [Nested YANG choice does not work](https://github.com/clicon/clixon/issues/342) * Fixed: [YANG if-feature does not support nested boolean expression](https://github.com/clicon/clixon/issues/341) * Fixed: [RPC edit-config payloads are not fully validated](https://github.com/clicon/clixon/issues/337) ## 5.7.0 17 May 2022 The Clixon 5.7 release introduces (long overdue) NETCONF chunked framing as defined in RFC 6242. It also introduces a limited http data service and lots of bugfixes. * Implementation of "chunked framing" according to RFC6242 for Netconf 1.1. * First hello is 1.0 EOM framing, then successing rpc is chunked framing * See * [Netconf framing](https://github.com/clicon/clixon/issues/50), and * [Clixon does not switch to chunked framing after NETCONF 1.1 is negotiated](https://github.com/clicon/clixon/issues/314) * Extended the Restconf implementation with a limited http-data static service * Added two new config options to clixon-config.yang: * `CLICON_HTTP_DATA_PATH` * `CLICON_HTTP_DATA_ROOT` * Added feature http-data to restconf-config.yang and the following option that needs to be true * `enable-http-data` * Added `HTTP_DATA_INTERNAL_REDIRECT` compile-time option for internal redirects to `index.html` * For more info, see [user manual documentation](https://clixon-docs.readthedocs.io/en/latest/restconf.html#http-data) ### API changes on existing protocol/config features Users may have to change how they access the system * CLI * `clixon_cli` reconnects to backend if backend restarts with a warning * Note that edits to the candidate database or locks will be lost * To force the CLI to exit if backend restarts, undef `PROTO_RESTART_RECONNECT` * This is an effect of the fix of [Broken pipe error seen in client (cli) when backend restarts and CLICON_SOCK is recreated](https://github.com/clicon/clixon/issues/312), the CLI behavior on backend restart is changed. * Expansion of YANG leafref type default behavior has changed * In the autocli and handcrafted CLI:s using `expand_dbvar()` the CLI expansion followed the leafrefs to the sources, ie the origin of the leafrefs * Instead leafref expansion now expands according to existing leafrefs by default * Example: * Assume leafref with leafref pointing to source if values: * `abc b` * Existing behavior: expand to: `a, b, c` * New default behavior: expand to: `b` * To keep existing behavior, set `true` * Restconf * Added 404 return without body if neither restconf, data or streams prefix match * Netconf: * Usage of chunked framing * To keep existing end-of-message encoding, set `CLICON_NETCONF_BASE_CAPABILITY` to `0` * Added `clixon_netconf` command-line option `-0` and changed `-H` to `-1` * `-0` means dont send hello, but fix netconf base version to 0 and use EOM framing * `-1` means dont send hello, but fix netconf base version to 1 and use chunked framing * Error message `data-not-unique` changed to return schema nodes instead of XML for RFC7950 compliance * YANG * Instead of removing YANG which is disabled by `if-feature`, replace it with an yang `anydata` node. * See [Adding feature to top level container doesn't work](https://github.com/clicon/clixon/issues/322) * This means XML specified by such YANG is ignored, and it is not an error to access it * Note the similarity with `CLICON_YANG_UNKNOWN_ANYDATA` * New `clixon-config@2022-03-21.yang` revision * Added option: * `CLICON_RESTCONF_API_ROOT` * `CLICON_NETCONF_BASE_CAPABILITY` * `CLICON_HTTP_DATA_PATH` * `CLICON_HTTP_DATA_ROOT` * `CLICON_CLI_EXPAND_LEAFREF` * New `clixon-restconf@2022-03-21.yang` revision * Added option: * `enable-http-data` * Added feature: * `http-data` ### C/CLI-API changes on existing features Developers may need to change their code * Added `nsc` parameter to `xml2xpath()` and ensured the xpath uses prefixes. * Old code: add `NULL` as second parameter * Added `eof` parameter to `clicon_rpc()` and `clicon_rpc1()` and error handling modified ### Minor features * Command-line option: Extended `-l` of all clixon commands with `-l n` which directs logging to `/dev/null` * New: CLI load command for CLI syntax files (not only XML and JSON) * See [provide support for load config of cli format along with json and xml format as save config is supported for all 3 formats](https://github.com/clicon/clixon/issues/320) * New: Do not load clixon-restconf YANG file by default * See [prevent clixon-restconf@2021-05-20.yang module from loading](https://github.com/clicon/clixon/issues/318) * Instead of always loading it, load it to datastore YANGs only if `CLICON_BACKEND_RESTCONF_PROCESS` is `true` * YANG unique: added single descendant node ids as special case * This means that two variants are supported: * unique "a b c", ie multiple direct children * unique "a/b/c", ie single descendants * RFC 7950 Sec 7.8.3 is somewhat unclear * The combination is not supported ### Corrected Bugs * XPath parser: fixed some lexical issues * Some complexities in Section 3.7 Lexical Structure of XPath 1.0 spec as follows * There used to be some cornercases where function-names could not be used as nodes * For example, `node()` is a nodetest, so `/node/` caused an error. * In the grammar these include: axisnames, nodetests, functionnames * The NCNames vs functionnames is now implemented according to the lexical structure section * Fixed: [Keywords containing '-' hyphen are missing from the auto-completion list](https://github.com/clicon/clixon/issues/330) * Fixed by disabling `cligen_preference_mode`. This may have other side effects. * Fixed: [Returning a string while Querying leaf-list for single entry](https://github.com/clicon/clixon/issues/326) * Fixed: A long TLS+HTTP/2 request such as by a browser causing block of other requests. * Fixed: [Error message seen twice in some cases](https://github.com/clicon/clixon/issues/325) * Fixed: [if choice is declared with multiple elements or leaf-list with in a case scope , addition or updation is not happening as expected](https://github.com/clicon/clixon/issues/327) * This includes several choice/case adjustments to follow RFC 7950 Sec 7.9 better * Fixed: HTTP/1 parse error for '/' path * Fixed: YANG if-feature in config file of disables feature did not work, was always on * This does not apply to the datastore, only the config file itself. * Fixed: YANG key list check bad performance * List key check did unique "xpath" lookup instead of direct child traverse * Fixed: YANG unique single schema-nodeid required "canonical" namespace * E.g., `a/b` did not work even if there was default namespace in XML * Disabled xpath optimization for hierarchical list * When `XPATH_LIST_OPTIMIZE` is set, patterns like `y[k='3']` is optimized * But hierarchical lists should not be, ie when `a/y[k='3']` and `a` is a list * Fixed: Removed warning at startup: `No YANG spec for module-set` * Fixed: HTTP/1 multiple write requests in single session appended data between writes, eg PUT+PUT. * Fixed: [Broken pipe error seen in client (cli) when backend restarts and CLICON_SOCK is recreated](https://github.com/clicon/clixon/issues/312) * Fixed: [Xpath API do not support filter data by wildcard](https://github.com/clicon/clixon/issues/313) * Fixed: SEGV in cli show yang ## 5.6.0 8 March 2022 Clixon 5.6 removes the dependency of libevhtp and libevent2 for native HTTP/1 RESTCONF, module-state has been upgraded to RFC8525 and a lot of bugs have been fixed, thanks to the community for all feedback. ### New features * Yang library upgraded from RFC7895 to [RFC 8525](https://datatracker.ietf.org/doc/html/rfc8525) * See [API changes](#API-changes-on-existing-protocol/config-features) for more info * RESTCONF Internal HTTP/1 native parser * Removed dependency of libevhtp/libevent2 * Replace configure option `--disable-evhtp` with `--disable-http1` for disabling HTTP/1 (default enabled) ### API changes on existing protocol/config features Users may have to change how they access the system * Module state upgrade: RFC7895 to RFC8525: * To upgrade to RFC8525: * Set `CLICON_YANG_LIBRARY` to `true` and `CLICON_MODULE_LIBRARY_RFC7895` to `false` * To keep RFC7895: * Set both `CLICON_YANG_LIBRARY` and `CLICON_MODULE_LIBRARY_RFC7895` to `true` * Following RFC8525, the upgrade means that the state-data returned using GET is changed: * Preamble changed from: `...` to: `...` * `module-state-id` changed to `content-id` * `conformance-type` removed * Note that the datastore feature `CLICON_XMLDB_MODSTATE` is backward compatible with RFC8525. * New `clixon-config@2022-02-11.yang` revision * Added option: * `CLICON_LOG_STRING_LIMIT` * `CLICON_YANG_LIBRARY` * Changed default value: * `CLICON_MODULE_LIBRARY_RFC7895` to false * Removed (previosly marked) obsolete options: * `CLICON_RESTCONF_PATH` * `CLICON_RESTCONF_PRETTY` * `CLICON_CLI_GENMODEL` * `CLICON_CLI_GENMODEL_TYPE` * `CLICON_CLI_GENMODEL_COMPLETION` * `CLICON_CLI_AUTOCLI_EXCLUDE` * `CLICON_CLI_MODEL_TREENAME` * RESTCONF replies on the form: `{"data":...}` changed to: `{"ietf-restconf:data":...}` * See [restconf GET json response does not encode top level node with namespace as per rfc #303](https://github.com/clicon/clixon/issues/303) * YANG leafref `require-instance` default changed to `true` * This makes leafref validation stricter * See [statement: require-instance should be true if not present according to rfc7950 Sec 9.9.3](https://github.com/clicon/clixon/issues/302) * Autotools/configure changes * `configure --with-wwwdir=` is removed * Configure option `--disable-evhtp` with `--disable-http1` for disabling HTTP/1 (default enabled) * Command field of `clixon-lib:process-control` RPC reply used CDATA encoding but now uses regular XML encoding ### C/CLI-API changes on existing features * Added RFC7951 parameter to `clixon_json_parse_string()` and `clixon_json_parse_file()` * If set, honor RFC 7951: JSON Encoding of Data Modeled with YANG, eg it requires module name prefixes * If not set, parse as regular JSON ### Minor features * Added: [Strict auto completion for CLI argument expansion #163](https://github.com/clicon/clixon/issues/163) * Added: [Convert int64, uint64 and decimal64 to string in xml to json #310](https://github.com/clicon/clixon/pull/310) * Backend ignore of `SIGPIPE`. This occurs if client quits unexpectedly over the UNIX socket. * This is a timing issue but occurs more frequently in large RESTCONF messages. * Added option: `CLICON_LOG_STRING_LIMIT` configure option * Limit the length of log and debug messages. Some log messages are dependendent on sizes that can be very large, such as packet lengths. This new option constrains the length of all messgaes. By default no limits. ### Corrected Bugs * Fixed: [Validate error when appending module B grouping to module A item use augment statement #308](https://github.com/clicon/clixon/issues/308) * Fixed: [Restconf PATCH method request failed on item defined by submodule #306](https://github.com/clicon/clixon/issues/306) * Fixed: [restconf GET json response does not encode top level node with namespace as per rfc #303](https://github.com/clicon/clixon/issues/303) * Fixed: [statement: require-instance should be true if not present according to rfc7950 Sec 9.9.3](https://github.com/clicon/clixon/issues/302) * See also API changes * Fixed: input RPC validation of YANG `choice`, more specifically, without `case` keyword * Fixed: More than one unknown/extension in combination with augment of extension resulted in extension being skipped. ## 5.5.0 20 January 2022 This release introduces a new autocli design with a clixon-autocli YANG file ### New features * Changed auto-cli design * See [autocli documentation](https://clixon-docs.readthedocs.io/en/latest/cli.html#autocli) for overview * Added new YANG `clixon-autocli.yang` moving all autocli options there * Default rules for module exclusion, list-keywords, edit-modes, treeref-state and completion * Specialized rules for module exclusion and compression * Replaced separate autocli trees with a single `@basemodel` tree by using filter labels * Filter labels are added to the basemodel tree and then filtered out using `@remove: