Skip to content

Releases: clicon/clixon

Clixon 5.9.0

24 Sep 15:10
Compare
Choose a tag to compare

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 Netconf With-defaults Capability
  • 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 <socket> 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

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 <non-unique> tag
      • Changed yang-unique value to path insytead of single name
      • See RFC 7950 Sec 15.1
    • missing-choice:
      • Added <error-path>
      • Added YANG namespace to <missing-choice> 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.
  • 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 <prefix>is used, you need to change the call as follows:
        • cli_show_auto(<db>, <format>, <prefix>) -> cli_show_auto(<db>, <format>, true, false, NULL, <prefix>)
      • Otherwise the API is backward-compatible
    • Changed cli_show_config()
      • Added parameters for pretty-print, state and with-default
      • If the <prefix> parameter is used, you need to change the call as follows:
        • cli_show_config(<db>, <format>, <xpath>, <ns>, <prefix>) -> cli_show_auto(<db>, <format>, <xpath>, <ns>, true, false, NULL, <prefix>)
      • 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(<treename>, <db>, ... -> cli_show_auto_menu(<db>, ...)
      • 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

Clixon 5.8.0

28 Jul 18:51
Compare
Choose a tag to compare

5.8.0

28 July 2022

New features in Clixon 5.8.0 include a new SNMP frontend, YANG action and parse-able 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
    • 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
  • TEXT syntax is now parseable

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: <interface><ip:ipv4 xmlns:ip="urn:...:ietf-ip"><ip:enabled>...
      • Now: <interface><ipv4 xmlns="urn:...:ietf-ip"><enabled>...

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 replaced with 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

Corrected Bugs

Clixon 5.7.0

17 May 10:06
Compare
Choose a tag to compare

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.

New features

  • Implementation of "chunked framing" according to RFC6242 for Netconf 1.1.
  • 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

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
    • 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:
          • <if>a</if><if>b</if><if>c</if> <ifref>b</ifref>
        • Existing behavior: expand to: a, b, c
        • New default behavior: expand to: b
      • To keep existing behavior, set <CLICON_CLI_EXPAND_LEAFREF>true<CLICON_CLI_EXPAND_LEAFREF>
  • 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.
    • 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

Corrected Bugs

5.6.0

08 Mar 09:52
Compare
Choose a tag to compare

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
  • 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: <modules-state>... to: <yang-library><module-set>...
      • 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":...}
  • YANG leafref require-instance default changed to true
  • Autotools/configure changes
    • configure --with-wwwdir=<dir> 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

Corrected Bugs

5.5.0

20 Jan 17:06
Compare
Choose a tag to compare

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 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:<label>
      • This method reduces memory usage and is more generic
      • Backward compatible: can continue use the "old" trees.
      • Note: while @datamodel etc are backward compatible, the autocli redesign is NOT backward compatible
        • see API changes
    • New autocli edit-mode design
      • Control which modes to use with edit-mode-default
        • Default is create edit-mode for all containers and list entries
      • New edit-mode tree: @datamodelmode
    • Moved hide extensions from clixon-lib to clixon-autocli

API changes on existing protocol/config features

Users may have to change how they access the system

  • Auto-cli edit-modes changed
    • CLI-spec variable CLICON_PROMPT %W changed semantics due to long prompt
      • From "Full Working edit path" to "Last element of working path"
      • Use %w if you want to keep "Full working path"
    • Edit modes only for list and container nodes
    • Change cli spec entry to edit @datamodelmode, cli_auto_edit("basemodel");
  • New clixon-lib@2021-12-05.yang revision
    • Extension autocli-op obsoleted and no longer supported, use clixon-autocli hide and hide-show instead as follows:
      • cl:autocli-op hide -> autocli:hide
      • cl:autocli-op hide-database -> autocli:hide-show
      • cl:autocli-op hide-database-auto-completion -> autocli:hide; autocli:hide-show
  • New clixon-config@2021-12-05.yang revision
    • Removed obsolete options:
      • CLICON_YANG_LIST_CHECK
    • Fixed: Configure option CLICON_RESTCONF_PRETTY was marked as obsolete but was still used.
      • CLICON_RESTCONF_PRETTY is now obsolete for sure
      • Use: restconf/pretty
    • Fixed: Configure option CLICON_RESTCONF_PATH was marked as obsolete but was still used.
      • CLICON_RESTCONF_PATH is now obsolete for sure
      • Instead if you use fgci/nginx:
        • Use restconf/fcgi-socket
        • Ensure <CLICON_FEATURE>clixon-restconf:fcgi</CLICON_FEATURE> is set
    • Marked as obsolete and moved autocli config options from clixon-config.yang to clixon-autocli.yang

C/CLI-API changes on existing features

Developers may need to change their code

  • Removed #ifdef __GNUC__ around printf-like prototypes since both clang and gcc have format/printf macros defined

  • Test changes

    • Use YANG_STANDARD_DIR from ./configure --with-yang-standard-dir=DIR instead of YANGMODELS from site.sh
    • Remove dependency of IETF YANGs on most tests
    • Remove dependency of example/main in most tests, instead make local copy of example yang
    • Changed configure --with-yang-standard-installdir to configure --with-yang-standard-dir

Corrected Bugs

  • Fixed: Autocli YANG patterns including " were not properly escaped: \"
  • Ensure auto-cli can be run with config option CLICON_CLI_VARONLY=1
  • Fixed: SEGV in backend callback for user-defined RFC:
    • rpc_callback_call(): Check if nrp parameter is NULL