# Clixon Changelog ## 3.9.0 (Preliminary Target: Mid-January 2019) ### Planned new features * [Roadmap](ROADMAP.md) ### Major New features * Correct XML namespace handling * XML multiple modules was based on non-strict semantics so that yang modules were found by iterating thorugh namespaces until a match was made. This did not adhere to proper [XML namespace handling](https://www.w3.org/TR/2009/REC-xml-names-20091208) as well as strict Netconf and Restconf namespace handling, which causes problems with overlapping names and false positives, and most importantly, with standard conformance. * There are still the following non-strict namespace handling: * Everything in ietf-netconf base syntax with namespace `urn:ietf:params:xml:ns:netconf:base:1.0` is default and need not be explicitly given * edit-config xpath select statement does not support namespaces * notifications do not support namespaces. * Below see netconf old (but wrong) netconf RPC: ``` ipv4 ``` This is the currently correct Netconf RPC: ``` # xmlns may be ommitted ipv4 ``` * Another example for restconf rpc with new correct syntax. Note that while Netconf uses xmlns attribute syntax, Restconf uses module name prefix. First the request: ``` POST http://localhost/restconf/operations/example:example) Content-Type: application/yang-data+json { "example:input":{ "x":0 } } ``` then the reply: ``` HTTP/1.1 200 OK { "example:output": { "x": "0", "y": "42" } } ``` * To keep previous non-strict namespace handling (backwards compatible), set CLICON_XML_NS_STRICT to false. * See https://github.com/clicon/clixon/issues/49 * Yang code upgrade (RFC7950) * YANG parser cardinality checked (https://github.com/clicon/clixon/issues/48) * See https://github.com/clicon/clixon/issues/84 * RPC method input parameters validated * see https://github.com/clicon/clixon/issues/47 * Support of submodule, include and belongs-to. * Parsing of standard yang files supported, such as: * https://github.com/openconfig/public - except [https://github.com/clicon/clixon/issues/60]. * See [test/test_openconfig.sh] * https://github.com/YangModels/yang - except vendor-specific specs * See [test/test_yangmodels.sh] * Improved "unknown" handling * More precise Yang validation and better error messages * Example: adding bad-, missing-, or unknown-element error messages, instead of operation-failed. * Validation of mandatory choice and recursive mandatory containers * Yang load file configure options changed * `CLICON_YANG_DIR` is changed from a single directory to a path of directories * Note CLIXON_DATADIR (=/usr/local/share/clixon) need to be in the list * CLICON_YANG_MAIN_FILE Provides a filename with a single module filename. * CLICON_YANG_MAIN_DIR Provides a directory where all yang modules should be loaded. * NACM extension (RFC8341) * NACM module support (RFC8341 A1+A2) * Recovery user "_nacm_recovery" added. * Example use is restconf PUT when NACM edit-config is permitted, then automatic commit and discard are permitted using recovery user. * Example user changed adm1 to andy to comply with RFC8341 example * Added -o "