Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Releases: clicon/clixon

Clixon 7.6.0

21 Nov 11:48

Choose a tag to compare

7.6.0

21 November 2025

The Clixon 7.6 release supports the private candidate draft and also NETCONF compare in RFC 9144, along with several smaller feature updates.

Features

  • New: NETCONF and RESTCONF Private candidate datastores
  • New: Compare RPC as defined in RFC9144 and yang module ietf-nmda-compare
  • XPath:
    • Support concat and number XPath function
    • XPATH_FUNCTION_NYI_IGNORE compile-time constant to ignore unimplemented XPath functions
  • All internal session clients start with NETCONF hello
  • Yang features
    • Tolerate "@latest.yang" as yang filename.
    • New: Implement YANG "augment" as sub-statement of a "uses" statement
    • New [email protected] revision
      • Added netconf-framing-type
    • New [email protected] revision
      • Added option: CLICON_NETCONF_MONITORING_GETSCHEMA_CDATA to encode schema content with CDATA
      • Added option: CLICON_XMLDB_PRIVATE_CANDIDATE to enable private candidate

C/CLI-API changes on existing features

Developers may need to change their code

  • Renamed clicon_strsep() --> clixon_strsep1()
  • Changed signature of send hello function:
    • clixon_client_hello(s, d, v) -> clixon_client_hello(s, d, base10, base11, privcand)
  • Change int to size_t in cxvec_append() and related functions and data-types
    • Calling types may need to be adjusted
  • Modified and re-factor datastore API
    • Use API instead of direct access of db-elemnt struct
      • eg de->de_xml --> xmldb_cache_get(de)
    • clicon_db_elmnt_get() -> xmldb_find()
    • clicon_db_elmnt_set() is replaced by xmldb_new() but needs some rewrite
    • xmldb_get_cache(h, db, yb, xp, md, xe) -> xmldb_get_cache(h, db, xp, xe)
    • Use indirect access to candidate-db, eg
      • Instead of :
        candidate_commit(h, xe, "candidate",...)
      • do:
        xmldb_find_create(h, "candidate", ce->ce_id, &de, &db); candidate_commit(h, xe, db,...)
      • Same for candidate_validate()
  • Modified and refactor rpc_msg API:
    • Replaced clicon_msg parameter with cbuf:
      • clicon_rpc_msg(h, msg,...) -> clicon_rpc_msg(h, cb,...)
      • clicon_rpc_msg_persistent(h, msg, ...) -> clicon_rpc_msg(h, cb, ...)
      • clicon_rpc(..., msg, &xret, eof) -> clixon_rpc11(..., cb, &cbret, eof)
    • Removed struct clicon_msg and clicon_msg_encode():
      • Replace:
         struct clicon_msg *msg=clicon_msg_encode(..., cbuf_get(cb));
         clicon_rpc_msg(h, msg, NULL);
      
      • With:
         clicon_rpc_msg(h, cb, NULL);
      
    • Change receive message handling to create cb:
      • clixon_msg_rcv10(..., cb, eof) -> clixon_msg_rcv10(..., &cb, eof)
      • clixon_rpc10(..., cb, eof) -> clixon_rpc10(, &cb, eof)
    • Rename rpc connect API:
      • clicon_rpc_connect() -> clixon_rpc_connect()
      • clicon_rpc_connect_unix() -> clixon_rpc_connect_unix()
      • clicon_rpc_connect_inet() -> clixon_rpc_connect_inet()

Corrected Bugs

Clixon 7.5.0

29 Jul 16:32

Choose a tag to compare

7.5.0

29 July 2025

Features

  • Autocli cache for faster loading of generated CLIspecs
  • Support local-name xpath function
  • Added label leafref-no-refer to control CLI leafref expansion
  • Added ability to switch between poll-based and select-based event handling
  • New [email protected] revision
    • Added option: CLICON_EVENT_SELECT
    • Deprecated: CLICON_CLI_EXPAND_LEAFREF
    • Obsoleted: CLICON_STREAM_URL
  • New [email protected] revision
    • Added options: clispec-cache and clispec-cache-dir options
  • Revised NACM work
    • Refactor read check with separate mark and purge functions to work with cache
    • Generic handling of proxyusers, such as RESTCONF daemon
    • Support for mount-points
    • Improved debug trace
    • See NACM for Clixon Controller
  • Optimizations:

C/CLI-API changes on existing features

Developers may need to change their code

  • RESTCONF: GET /streams changed wrong return status from 201 to correct 200
  • Changed C-API:
    • clixon_json_parse_string(str,...) -> clixon_json_parse_string(h, str,...)
    • xml_bind_yang(..., xerr) -> xml_bind_yang(..., 0, xerr)
    • xml_bind_yang0(..., xerr) -> xml_bind_yang0(..., 0, xerr)
  • Modified data-missing/instance-required error-info field to include tag:
    • Instead of eg <error-info>42</error-info> --> <error-info><tag>42</tag></error-info>

Corrected Bugs

Clixon 7.4.0

03 Apr 06:27

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

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

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

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

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

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

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

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