diff --git a/CHANGELOG.md b/CHANGELOG.md index d05c962d..a3bab479 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,19 +1,19 @@ # Clixon Changelog -## 3.9.0 (Preliminary Target: Mid-January 2019) - -### Planned new features -* [Roadmap](ROADMAP.md) +## 3.9.0 (Preliminary Target: February 2019) ### 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 +1. Correct XML namespace handling + * According to [XML 1.0](https://www.w3.org/TR/2009/REC-xml-names-20091208) in restconf and Netconf. + * Remaining deviations from strict namespace handling: * edit-config xpath select statement does not support namespaces * notifications do not support namespaces. - * Below see netconf old (but wrong) netconf RPC: - ``` + * ietf-netconf base syntax is default `urn:ietf:params:xml:ns:netconf:base:1.0` and may not be explicitly given. However, in future versions this may be mandatory. + * CLI syntax (ie generated commands) do not have namespaces. + + * The following example shows changes in netconf and restconf: + * Wrong Netconf RPC: + ``` @@ -22,9 +22,9 @@ ipv4 - ``` - This is the currently correct Netconf RPC: - ``` + ``` + * Correct Netconf RPC: + ``` # xmlns may be ommitted @@ -33,9 +33,9 @@ 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: - ``` + ``` + * Example: Correct restconf request: + ``` POST http://localhost/restconf/operations/example:example) Content-Type: application/yang-data+json { @@ -43,9 +43,9 @@ "x":0 } } - ``` - then the reply: - ``` + ``` + * Example: correct Restconf reply: + ``` HTTP/1.1 200 OK { "example:output": { @@ -53,10 +53,10 @@ "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) + * See [https://github.com/clicon/clixon/issues/49] +1. Yang 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 @@ -76,7 +76,7 @@ * 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 (RFC8341) +1. NACM (RFC8341) * Experimental support, no performance enhancements and need further testing * Incoming RPC Message validation is supported (3.4.4) * Data Node Access validation is supported (3.4.5), except: @@ -89,7 +89,7 @@ * Recovery user "_nacm_recovery" added. ### API changes on existing features (you may need to change your code) -* Added `username` argument on `xmldb_put()` datastore function for NACM data-node write checks +* Added `username` argument to `xmldb_put()` datastore function for NACM data-node write checks * Rearranged yang files * Moved and updated all standard ietf and iana yang files from example and yang/ to `yang/standard`. * Moved clixon yang files from yang to `yang/clixon` @@ -98,19 +98,19 @@ * Renamed example yang from example.yang -> clixon-example.yang * clixon_cli -p (printspec) changed semantics to add new yang path dir (see minor changes). * Date-and-time type now properly uses ISO 8601 UTC timezone designators. - * Eg 2008-09-21T18:57:21.003456 is changed to 2008-09-21T18:57:21.003456Z -* Renamed yang file `ietf-netconf-notification@2008-07-01.yang` to `clixon-rfc5277`. + * Eg `2008-09-21T18:57:21.003456` is changed to `2008-09-21T18:57:21.003456Z` +* Renamed yang file `ietf-netconf-notification.yang` to `clixon-rfc5277.yang`. * Fixed validation problems, see [https://github.com/clicon/clixon/issues/62] * Name confusion, the file is manually constructed from the rfc. * Changed prefix to `ncevent` -* Stricter YANG choice validation leads to enforcement of structures like: `choice c{ mandatory true; leaf x` statements. `x` was not previously enforced. +* Stricter YANG choice validation leads to enforcement of structures + * Example: In `choice c{ mandatory true; leaf x; }`, `x` was not previously enforced but is now. * Many hand-crafted validation messages have been removed and replaced with generic validations, which may lead to changed rpc-error messages. * CLICON_XML_SORT option (in clixon-config.yang) has been removed and set to true permanently. Unsorted XML lists leads to slower performance and old obsolete code can be removed. * Strict namespace setting can be a problem when upgrading existing database files, such as startup-db or persistent running-db, or any other saved XML file. * Removed `delete-config` support for candidate db since it is not supported in RFC6241. * Switched the order of `error-type` and `error-tag` in all netconf and restconf error messages to comply to RFC order. -* Yang parser is stricter (see above) which may break parsing of existing yang specs. -* XML namespace handling is corrected (see above) +* XML namespace handling is corrected (see major changes) * For backward compatibility set config option CLICON_XML_NS_LOOSE * Yang parser functions have changed signatures. Please check the source if you call these functions. * Add `/usr/local/share/clixon` to your configuration file, or corresponding CLICON_DATADIR directory for Clixon system yang files. @@ -119,33 +119,35 @@ * For backward compatibility, define CLICON_CLI_MODEL_TREENAME_PATCH in clixon_custom.h ### Minor changes -* Added make test from top-level +* Change GIT branch handling to a single working master branch + * Develop branched abandoned + * Travis CI supported, see [https://travis-ci.org/clicon/clixon] +* XML parser conformance to W3 spec + * Names lexically correct (NCName) + * Syntactically Correct handling of '=" command-line option to all programs: backend, cli, netconf, restconf. * Any config option from file can be overrided by giving them on command-line. * Added -p command-line option to all programs: backend, cli, netconf, restconf. * -p adds a new dir to the yang path dir. (same as -o CLICON_YAN_DIR=) -* Cligen uses posix regex while yang uses XSD. It differs in some aspects. A translator function has been added for `\d` -> `[0-9]` translation, there may be more. +* Cligen uses posix regex while yang uses XSD. It differs in some aspects. A translator function has been added for `\d` -> `[0-9]` translation, there may be more. This fixes the most acute problems, but there may be more. * Added new clixon-lib yang module for internal netconf protocol. Currently only extends the standard with a debug RPC. * Added three-valued return values for several validate functions where -1 is fatal error, 0 is validation failed and 1 is validation OK. * This includes: `xmldb_put`, `xml_yang_validate_all`, `xml_yang_validate_add`, `xml_yang_validate_rpc`, `api_path2xml`, `api_path2xpath` * Added new xml functions for specific types: `xml_child_nr_notype`, `xml_child_nr_notype`, `xml_child_i_type`, `xml_find_type`. -* Added example_rpc RPC to example backend -* Renamed xml_namespace[_set]() to xml_prefix[_set]() +* Added `example_rpc` RPC to example backend +* Renamed `xml_namespace()` and `xml_namespace_set()` to `xml_prefix()` and `xml_prefix_set()`, respectively. * Changed all make tags --> make TAGS * Keyvalue datastore removed (it has been disabled since 3.3.3) -* Removed return value ymodp from yang parse functions (eg yang_parse()). * New config option: CLICON_CLI_MODEL_TREENAME defining name of generated syntax tree if CLIXON_CLI_GENMODEL is set. -* XML parser conformance to W3 spec - * Names lexically correct (NCName) - * Syntactically Correct handling of 'JSON conversion problems [https://github.com/clicon/clixon/issues/66] @@ -154,18 +156,15 @@ * xsd regular expression support for character classes [https://github.com/clicon/clixon/issues/68] * added support for \c, \d, \w, \W, \s, \S. * Removing newlines from XML data [https://github.com/clicon/clixon/issues/65] -* [ietf-netconf-notification@2008-07-01.yang validation problem #62](https://github.com/clicon/clixon/issues/62) +* Fixed [ietf-netconf-notification@2008-07-01.yang validation problem #62](https://github.com/clicon/clixon/issues/62) * Ignore CR(\r) in yang files for DOS files * Keyword "min" (not only "max") can be used in built-in types "range" and "length" statements. * Support for empty yang string added, eg `default "";` * Removed CLI generation for yang notifications (and other non-data yang nodes) -* Some restconf error messages contained "rpc-reply" or "rpc-error" which have now been removed. +* Some restconf error messages contained `rpc-reply` or `rpc-error` which have now been removed. * getopt return value changed from char to int (https://github.com/clicon/clixon/issues/58) * Netconf/Restconf RPC extra input arguments are ignored (https://github.com/clicon/clixon/issues/47) -### Known issues -* debug rpc added in example application (should be in clixon-config). - ## 3.8.0 (6 Nov 2018) ### Major New features diff --git a/DEVELOP.md b/DEVELOP.md index 74d7f4ef..1755effa 100644 --- a/DEVELOP.md +++ b/DEVELOP.md @@ -31,10 +31,9 @@ How to document the code ## Branching How to work in git (branching) -Basically follows: http://nvie.com/posts/a-successful-git-branching-model/ -only somewhat simplified: +Try to keep a single master branch always working. Currently testing is made using [Travis CI](https://travis-ci.org/clicon/clixon). -Do commits in develop branch. When done, merge with master. +However, releases are made periodically (ca every 3 months) which is more tested. ## How the meta-configure stuff works ``` diff --git a/ROADMAP.md b/ROADMAP.md index 3e91e1a3..2b884845 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,23 +1,23 @@ # Clixon roadmap ## High prio -- NACM (RFC 8341) - - Module rules (done) - - Data node rules (read/create/delete/update/execute) - Special handling of the initial startup transaction to avoid exit at startup - Possibly - draft-wu-netconf-restconf-factory-restore-03 - Handle revisions to data model. - Possibly draft-wang-netmod-module-revision-management-01 -- XML [Namespace handling](https://github.com/clicon/clixon/issues/49) +- (DONE) NACM (RFC 8341) + - NACM support for create, read, update, delete operations + - ACM support for specifying a module name other than '*' +- (DONE)XML [Namespace handling](https://github.com/clicon/clixon/issues/49) (DONE) ## Medium prio: -- Input validation on custom RPCs/ (done) - - [Sanity checks](https://github.com/clicon/clixon/issues/47) -- Support for XML regex's. - - Currently Posix extended regular expressions - Support a plugin callback that is invoked when copy-config is called. - Preserve CLI command history across sessions. The up/down arrows - +- (DONE)Support for XML regex's. + - Currently Posix extended regular expressions +- (DONE) Input validation on custom RPCs/ + - [Sanity checks](https://github.com/clicon/clixon/issues/47) + ## Low prio: - Provide a client library to access netconf APIs provided by system services. - Netconf backend (Clixon acts as netconf controller)