Skip to content

Releases: clicon/clixon

Clixon 7.4.0

03 Apr 06:27
Compare
Choose a tag to compare

7.4.0

3 April 2025

The Clixon 7.4 release supports RESTCONF for mount-points and changes the event handling using poll to scale better. It also fixes some bugs introduced in 7.3.

Features

Corrected Bugs

Clixon 7.3.0

30 Jan 09:21
Compare
Choose a tag to compare

7.3.0

30 January 2025

Clixon 7.3 features "system-only-config" for secure in-mem handling of selected config data, several cycle optimizations, generic CLI pipe callbacks and lots of bug-fixes.

Features

  • Added support for system-only-config data
    • Store sensitive data in the "system" instead of in datastores
    • New CLICON_XMLDB_SYSTEM_ONLY_CONFIG configuration option
    • New system-only-config extension
    • New ca_system_only backend callback for reading system-only data
  • New [email protected] revision
    • Changed: CLICON_NETCONF_DUPLICATE_ALLOW to not only check but remove duplicates
    • Added: CLICON_CLI_PIPE_DIR
    • Added: CLICON_XMLDB_SYSTEM_ONLY_CONFIG
    • Deprecated: CLICON_YANG_SCHEMA_MOUNT_SHARE
  • Performance optimization
    • New no-copy xmldb_get_cache function for performance, as alternative to xmldb_get
    • Optimized duplicate detection of incoming NETCONF requests
  • New: CLI generic pipe callbacks
    • Add scripts in CLICON_CLI_PIPE_DIR
  • New: feature request: support xpath functions for strings
    • Added: re-match, substring, string, string-length, translate, substring-before, substring-after, starts-with

C/CLI-API changes on existing features

Developers may need to change their code

  • Moved callbacks starting programs from libclixon_cli to example code
    • The functions are: cli_start_shell and cli_start_program
    • If you need them, add them to your application plugin code instead
  • Changed C-API: add system-only parameter with default value 0 last:
    • clixon_json2file() -> clixon_json2file(,0)
    • clixon_json2cbuf() -> clixon_json2cbuf(,0)

Corrected Bugs

Clixon 7.2.0

28 Oct 13:02
Compare
Choose a tag to compare

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

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
  • 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() with clixon_logflags_get()
  • New yn_iter() yang iterator replaces yn_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 to yang_stats()

Corrected Bugs

Clixon 7.1.0

03 Jul 07:25
Compare
Choose a tag to compare

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
  • 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 messages
      • CLICON_LOG_DESTINATION: Default log destination
      • CLICON_LOG_FILE: Which file to log to if file logging
      • CLICON_DEBUG: Debug flags
      • CLICON_YANG_SCHEMA_MOUNT_SHARE: Share same YANGs of several moint-points
      • CLICON_SOCK_PRIO: Enable socket event priority
      • CLICON_XMLDB_MULTI: Split datastore into multiple sub files
      • CLICON_CLI_OUTPUT_FORMAT: Default CLI output format
      • CLICON_AUTOLOCK: Implicit locks
  • 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 of 7.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
  • 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

Clixon 7.0.1

03 Apr 09:40
Compare
Choose a tag to compare

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

08 Mar 08:51
Compare
Choose a tag to compare

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
  • 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
  • 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 [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 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 [email protected] revision
    • Removed container creators, reverted from 6.5
  • Changed ca_errmsg callback to a more generic variant
  • 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

Clixon 6.5.0

05 Dec 15:33
Compare
Choose a tag to compare

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

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

Corrected Bugs

Clixon 6.4.0

30 Sep 08:17
Compare
Choose a tag to compare

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

Clixon 6.3.0

29 Jul 12:56
Compare
Choose a tag to compare

6.3.0

29 July 2023

Clixon 6.3 introduces CLI output pipes and multiple updates and optimizations, primarily to the CLI.

New features

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
  • New [email protected] revision
    • Restructured and extended stats rpc to schema mountpoints
    • rpc <stats> is not backward compatible
  • New [email protected] 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
  • Removed obsolete compile options introduced in 6.1:
    • NETCONF_DEFAULT_RETRIEVAL_REPORT_ALL
    • AUTOCLI_DEPRECATED_HIDE

Corrected Bugs

Clixon 6.2.0

30 Apr 19:13
Compare
Choose a tag to compare

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

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