diff --git a/.gitignore b/.gitignore index cd4446bc..1d8e315b 100644 --- a/.gitignore +++ b/.gitignore @@ -14,10 +14,9 @@ lib/Makefile lib/*/Makefile autom4te.cache/ -clixon.conf.cpp -clixon.mk config.log config.status +TAGS apps/backend/clixon_backend apps/backend/test @@ -45,5 +44,5 @@ build-root/*.tar.xz build-root/*.rpm build-root/rpmbuild -test/public +test/site.sh doc/html \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 160f6254..dd5694ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,47 +1,105 @@ # Clixon Changelog -## 3.9.0 (Preliminary Target: 31 December 2018) +## 3.9.0 (Preliminary Target: Mid-January 2019) ### Planned new features -* [Roadmap](ROADMAP.md) (Uncommitted and unprioritized) +* [Roadmap](ROADMAP.md) ### Major New features - -* 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 +* 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. - * Openconfig yang specs parsed: https://github.com/openconfig/public + * 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. -* Correct XML namespace handling - * XML multiple modules was based on "loose" 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), and causes problems with overlapping names and false positives. Below see XML accepted (but wrong), and correct namespace declaration: -``` - # Wrong but accepted - # Correct - - -``` - * To keep old loose semantics set config option CLICON_XML_NS_ITERATE (true by default) - * XML to JSON translator support for mapping xmlns attribute to module name prefix. - * Default namespace is still "urn:ietf:params:xml:ns:netconf:base:1.0" - * See https://github.com/clicon/clixon/issues/49 - +* 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 "