Releases: clicon/clixon
Clixon 7.2.0
7.2.0
28 October 2024
The 7.2.0 release feature lots of minor changes and bug-fixes including memory optimizations and package builds.
Features
- Restconf: Support for list of media in Accept header
- Rearranged YANG top-levels into YANG domains, mounts, and specs
- Deb build script
- Optimize YANG memory
- Autocli
- Late evaluation of uses/grouping
- YANG
- Added union and extended struct for uncommon fields
- Removed per-object YANG linenr info
- Yang-type cache only for original trees (not derived via grouping/augment)
- Added option
CLICON_YANG_USE_ORIGINAL
to use original yang object in grouping/augment
- Autocli
- New: CLI simple alias
- List pagination more ietf-draft compliance
- Added where, sort-by and direction parameter for configured data
- New
[email protected]
revision- Added: disable operation for module rules
- New
[email protected]
revision- Added:
CLICON_YANG_DOMAIN_DIR
- Added:
CLICON_YANG_USE_ORIGINAL
- Added:
API changes on existing protocol/config features
Users may have to change how they access the system
- Capability announce urn:ietf:params:netconf:capability:yang-library:1.1 (instead of 1.0)
- RFC 7950->8526
- New version string on the form:
7.1.0-1+11+g2b25294
- Restconf: Better RFC compliance with Accept errors: 406 vs 415
- Removed YANG line-number in error-messages for memory optimization
- Re-enable by setting
YANG_SPEC_LINENR
compile-time option
- Re-enable by setting
- NETCONF error returns of failed leafref references, see #536
C/CLI-API changes on existing features
Developers may need to change their code
- Added
domain
argument to yang parse functions. Upgrade as follows:yang_file_find_match(h, m, r, f)
->yang_file_find_match(h, m, r, NULL, f)
yang_parse_module(h, m, r, y, o)
->yang_parse_module(h, m, r, y, NULL, o)
- Replaced
clixon_get_logflags()
withclixon_logflags_get()
- New
yn_iter()
yang iterator replacesyn_each()
- Use an integer iterator instead of yang object
- Replace:
y1 = yn_each(y0, y1) { ...
- with:
int inext = 0; y1 = yn_iter(y0, &inext) { ...
- Add
keyw
argument toyang_stats()
Corrected Bugs
- Fixed: YANG 'when' does not work in multiple grouping
- Fixed: Error when changing choice/case with different structure
- Fixed: Clixon <handle if-feature incorrectly
- Fixed: Clixon fails to load yang with extension
- Fixed: Double top-levels in xmldb_get that could occur with xpath containing choice.
- Fixed: RESTCONF exit on cert error + complex accept
- Fixed: Deletion of leaf in YANG choice removes leaf in a different choice/case
- Fixed: Deviated types were resolved in target context, not lexically in deviation context
- Fixed: Signal handling of recv message
Revert to signal handling in 6.5 that was changed in the netconf uniform handling in 7.0 - Fixed: NETCONF error reply from failed leafref rquire-instance does not comply to RFC 7950
Clixon 7.1.0
7.1.0
3 July 2024
The 7.1.0 release features RESTCONF notifications for native mode,
multi-datastore, and many new configure options.
Features
- RESTCONF notification for native mode
- Previously only for FCGI
- The following does not work: Regular subscription + stop-time
- Optimization of yang schema mount: share yang-specs if all YANGs are equal
- This reduces memory if many mount-points share YANGs
- Changed datastore modstate to be last in file, as prior to 7.0
- Event priority. Backend socket has higher prio
- Multi-datastore
- You can split configure datastore into multiple sub-files
- On edit, only changed sub-files are updated.
- Curently only implemented for mount-points
- Code for SHA digests.
- Option for automatic lock of datastore on edit-config
- See Autolock
- Option to set default CLI output format
- CLI support for multiple inline commands separated by semi-colon
- New
[email protected]
revision- Added options:
CLICON_NETCONF_DUPLICATE_ALLOW
: Disable duplicate check in NETCONF messagesCLICON_LOG_DESTINATION
: Default log destinationCLICON_LOG_FILE
: Which file to log to if file loggingCLICON_DEBUG
: Debug flagsCLICON_YANG_SCHEMA_MOUNT_SHARE
: Share same YANGs of several moint-pointsCLICON_SOCK_PRIO
: Enable socket event priorityCLICON_XMLDB_MULTI
: Split datastore into multiple sub filesCLICON_CLI_OUTPUT_FORMAT
: Default CLI output formatCLICON_AUTOLOCK
: Implicit locks
- Added options:
- New
[email protected]
revision- Added: debug bits type
- Added: xmldb-split extension
- Added: Default format
API changes on existing protocol/config features
Users may have to change how they access the system
- Changed intermediate version numbers to be git-style, eg
7.0.0-39
instead of7.1.0-PRE
- If
CLICON_XMLDB_MULTI
is set, datastores are stored in a new directory- Previously:
CLICON_XMLDB_DIR/<db>_db
- New:
CLICON_XMLDB_DIR/<db>d/
- In particular, the top-level is moved from
<db>_db
to<db>.d/0.xml
- Backward-compatible:
- If backend is started with
-s startup
or-s running
then<db>_db
is read if<db>.d/0.xml
is not found
- If backend is started with
- Previously:
- Autoconf: Openssl mandatory for all configure, not only restconf, due to digest code
C/CLI-API changes on existing features
Developers may need to change their code
- XML encoding added a
quotes
parameter for attribute encoding, update as follows:xml_chardata_encode(e, fmt,...)
-->xml_chardata_encode(e, 0, fmt,...)
xml_chardata_cbuf_append(cb, str)
-->xml_chardata_cbuf_append(cb, 0, str)
Corrected Bugs
- Fixed: Invalid api-path errors thrown when displayin qfx family device conf in CLI
- Fixed: Error message from CLI if terminal is modified
- Fixed: backend exit when receiving invalid NETCONF get select XPath
- Added XML encoding to XPaths in
select
attribute
- Added XML encoding to XPaths in
- Fixed: Fail on return errors when reading from datastore
- Can happen if running is not upgraded for example
- Fixed: Duplicate config files in configdir causes merge problems -> set ? = NULL
Clixon 7.0.1
7.0.1
3 April 2024
Three issues detected in post-testing of 7.0.0 are fixed in the 7.0.1 release
Corrected Bugs
Clixon 7.0.0
7.0.0
8 March 2024
Clixon 7.0.0 is a major release with changes to the debug/log/error API, other APIs,
standardized internal framing protocol and many other changes.
It also supports the 1.0 clixon controller release.
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
- All clixon applications added command-line option
-V
for printing version - New ca_version callback for customized version output
- All clixon applications added command-line option
- 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
- Removed reply sanity if
- 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 configuredcreators
and user/application semantics - New
[email protected]
revision- Replaced container creators to grouping/uses
- New
[email protected]
revision- Changed semantics:
CLICON_VALIDATE_STATE_XML
- disable return sanity checks if false
- Marked as obsolete:
CLICON_DATASTORE_CACHE
Replaced with enhanced datastore read APICLICON_NETCONF_CREATOR_ATTR
reverting 6.5 functionality
- Changed semantics:
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
andclicon_msg_decode
-->clixon_msg_rcv11
- Rewrite by calling
clixon_msg_rcv11
and explicit xml parsing
- Rewrite by calling
clicon_msg_rcv1
-->clixon_msg_rcv10
- Added
yspec
parameter toapi_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
[email protected]
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
- 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()
- Renamed
- 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 removedclicon_log_xml()
->clixon_debug_xml(h,)
NOTE added "clixon_handle h"clixon_debug_xml()
->clixon_debug_xml(h,)
NOTE added "clixon_handle h"
- Changed function names. You need to rename as follows:
- 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()
- Added
- Changed process API:
clixon_proc_socket(...)
-->clixon_proc_socket(h, ..., sockerr)
- Changes marked in code with
Corrected Bugs
- Fixed: If services add duplicate entries, controller does not detect this
- Fixed: Problems with diff of YANG lists ordered-by user
- Fixed: show compare does not show correct diff while load merge xml
- Fixed: commit goes 2 times
- Fixed: Problem with cl:ignore attribute for show compare
- Fixed: yang_enum_int_value() fails if no explicit values are assigned to enums
Remaining work:yang_enum2valstr()
- Fixed: show compare/diff problems with sorted-by user
- Fixed: Choice and Leafref
- Fixed: Problem deleting non-last list element if ordered-by user
- Fixed: Tab completion mounted devices with lists
- Fixed: kill-session cleanup when client none existant, and for all db:s
- Fixed: Using the characters '<' and '>' might cause an invalid diff
Clixon 6.5.0
6.5.0
6 December 2023
Clixon 6.5 includes bugfixes, removed utility functions to a separate repo 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
- From
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)`
- You need to change eg
- Changed signature of
clicon_netconf_error()
andnetconf_err2cb()
- You need to add the clixon handle as first parameter:
clicon_netconf_error(...)
-->clixon_netconf_error(h, ...)
netconf_err2cb(...)
-->netconf_err2cb(h, ...)
- You need to add the clixon handle as first parameter:
- 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
- Added new callback
.ca_errmsg
- See https://clixon-docs.readthedocs.io/en/latest/errors.html#customized-errors for more info
- Added new callback
- New
[email protected]
revision- Added
CLICON_NETCONF_CREATOR_ATTR
option
- Added
- New
[email protected]
revision- Added ignore-compare extension
- Added creator meta configuration
Corrected Bugs
Clixon 6.4.0
6.4.0
30 September 2023
This release is mainly for bugfixes and improvements of existing functionality, such as CLI output pipes.
Minor features
- New
[email protected]
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 (#453)
- Example cli pipe grep command quotes vertical bar for OR function
- Added: Feature request: node's alias for CLI
- 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 <format>
- Example:
clixon_backend -1C json
- Syntax is
- 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()
toclixon_text2file()
-
Changed parameters of example clispec function
compare_dbs()
- New parameters are:
db1
,db2
,format
- New parameters are:
-
Add
fromroot
parameter tocli_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
- Fixed: JSON backslash string decoding/encoding not correct
- Fixed: CLI show config | display exits over mountpoints with large YANGs
- 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
- Fixed: CLICON_CONFIGDIR with external subsystems causes endless looping
- Fixed: "show configuration devices" and "show configuration devices | display cli" differs
- Fixed: Configuring Juniper PTX produces CLI errors
- Fixed: CLI output pipes: Add
CLICON_PIPETREE
to any cli files, not just the first
Clixon 6.3.0
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
[email protected]
revision- Added options:
CLICON_CONFIG_EXTEND
- Moved datastore-format datastype to clixon-lib
- Added options:
- New
[email protected]
revision- Restructured and extended stats rpc to schema mountpoints
- rpc
<stats>
is not backward compatible
- New
[email protected]
revision- New
alias
andskip
extensions (NOTE: just added in YANG, not implemented) - New
grouping-treeref
option
- New
C/CLI-API changes on existing features
Developers may need to change their code
- Added
uid
,gid
andfdkeep
parameters toclixon_process_register()
for drop privs - Added output function to JSON output:
xml2json_vec(...,skiptop)
-->xml2json_vec(..., cligen_output, skiptop)
yang2cli_yspec
removed last argumentprintgen
.- 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
- New
- 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 specializedxml_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
- 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
- Fixed: if-feature always negative if imported from another module
- Fixed autocli edit modes for schema mounts
Clixon 6.2.0
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
- New
[email protected]
revision- Added options:
CLICON_RESTCONF_NOALPN_DEFAULT
- Extended datastore-format with CLI and text
- Added options:
- New
[email protected]
revision- Added creator meta-object
C/CLI-API changes on existing features
Developers may need to change their code
- C-API
clixon_xml2file
andclixon_xml2cbuf
addedprefix
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 1styspec
parameterxml2xpath()
: Addedint apostrophe
as 4th parameter, default 0- This is for being able to choose single or double quote as xpath literal quotes
clicon_msg_rcv
: Addedintr
parameter for interrupting on^C
(default 0)- Renamed include file:
clixon_backend_handle.h
toclixon_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
- Three different implementations were used in external, internal and controller code
- 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
tohttp/2
orhttp/1.1
- For http/1 or http/2 only, that will be the default if no ALPN is set.
- Set
- Fixed: Add support decimal64 for SNMP
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
Clixon 6.1.0
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 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
totrue
- 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)
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
[email protected]
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
- Moved all extended internal NETCONF attributes to the clicon-lib namespace
- With-defaults default retrieval mode has changed from
REPORT-ALL
toEXPLICIT
- This means that all get operations without
with-defaults
parameter do no longer
return implicit default values, only explicitly set values. - Applies to NETCONF
<get>
,<get-config>
and RESTCONFGET
- To keep backward-compatible behavior, define option
NETCONF_DEFAULT_RETRIEVAL_REPORT_ALL
ininclude/clixon_custom.h
- Alternatively, change all get operation to include with-defaults parameter
report-all
- This means that all get operations without
C/CLI-API changes on existing features
Developers may need to change their code
- Changed docker builds
clixon-test
built indocker/test
- Renamed from
clixon-system
built indocker/main
- Renamed from
clixon-example
built indocker/example
- Added netconf ssh subsystem
- Renamed from
clixon
built indocker/base
- C-API
xml2xpath()
: Addedint 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: Addedclicon_handle h
as first parameter- Example change:
xml_bind_yang(x, y, yp, xe)
->xml_bind_yang(h, x, y, yp, xe)
->
- Example change:
xmldb_get0()
: Addedwith-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)
- Example change:
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)
- Example change:
xpath_vec_flag()
: Changed type of sixthveclen
parameter tosize_t *
clicon_log_xml()
: All calls changed to new functionclicon_debug_xml()
clixon_proc_socket()
: Addedsock_flags
parameter
Minor features
- Misc. build fixes encountered when cross-compiling by @troglobit in #418
- Update FAQ.md hello world example url by @jarrodb in #419
- Done: Request to suppress auto-completion for "deprecated" / "obsolete" status and warn the user.
- Implemented by:
- Not generating any autocli syntax for obsolete YANG statements,
- Hide statements for deprecated YANG statements.
- Implemented by:
- New plugin callbacks
ca_yang_mount
- see the RFC 8528 supportca_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 initializationMSG
= 2: Input and output packets, read datastoreDETAIL
= 4: xpath parse trees, etcEXTRA
= 8: Extra detailed logs, message dump in hex
- Added flag names:
- 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 #406
-
Fixed: Yang leaves without smiv2:oid directive are not shown well in snmpwalk #398
- Yang leaves without smiv2:oid directive are not shown well in]… by @doron2020 in #402
-
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
-
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
-
Fixed: Netconf monitoring
- Announce module capability
- Return origin Yang file in get-schema
Clixon 6.0.0
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
- See Netconf Confirmed Commit Capability
- Standards
- 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)
API changes on existing protocol/config features
Users may have to change how they access the system
- New
[email protected]
revision- Added option:
CLICON_NETCONF_MONITORING
CLICON_NETCONF_MONITORING_LOCATION
- Added option:
- Added
PRETTYPRINT_INDENT
compile-time option controlling indentation level for XML, JSON, TEXT and YANG- Default value is
3
- Default value is
- NETCONF: Removed
message-id
from hello protocol following RFC 6241
C/CLI-API changes on existing features
Developers may need to change their code
- Code formatting: Change indentation style to space
- Applies to all c/h/y/l/sh files and .editorconfig
- C API changes:
- Added
expanddefault
parameter toxml_yang_validate_rpc()
- Added
defaults
parameter toclicon_rpc_get_pageable_list()
clicon_rpc_commit()
andcli_commit
- Added
confirmed
,cancel
,timeout
,persist-id
, andpersist-id-val
parameters to
- Added
clicon_rpc_commit()
andclicon_rpc_validate
- Added three-value return.
- Code need to be changed from: checking for
<0
to<1
to keep same semantics
- Added
skiptop
parameter toxml2json_vec()
- Added
xe
argument tocandidate_commit
for confirmed commit extra parameters
- Added
Minor features
- Removed obsoleted compile-time options since 5.4:
YANG_ORDERING_WHEN_LAST
- See #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
- Added warning if modstate is not present in datastore if
CLICON_XMLDB_MODSTATE
is set.
Corrected Bugs
- Fixed: Yang identityref XML encoding is not general
- 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']
- eg
- Fixed: CLI Show config JSON with multiple top-level elements is broken
- Fixed: Non-obvious behavior of clixon_snmp after snmpset command when transaction validation returns an error
- 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
- Fixed: Trying to change the "read-only" node through snmpset
- Fixed: Trying to change the "config false" node through snmpset
- Fixed by returning
SNMP_ERR_NOTWRITABLE
when trying to reserve object
- Fixed by returning
- Fixed: Non-obvious behavior of clixon_snmp after snmpset command when transaction validation returns an error
- Fixed: clixon_snmp module crashes on snmpwalk command
- Fixed: unneeded trailing zero character on SNMP strings
- Fixed: message-id present on netconf app "hello"
- Fixed: SNMP "smiv2" yang extension doesn't work on augmented nodes