Cleaned up changelog and roadmap

This commit is contained in:
Olof hagsand 2019-02-05 14:35:35 +01:00
parent 19343c2b21
commit 3a5a4fde36
3 changed files with 55 additions and 57 deletions

View file

@ -1,19 +1,19 @@
# Clixon Changelog # Clixon Changelog
## 3.9.0 (Preliminary Target: Mid-January 2019) ## 3.9.0 (Preliminary Target: February 2019)
### Planned new features
* [Roadmap](ROADMAP.md)
### Major New features ### Major New features
* Correct XML namespace handling 1. 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. * According to [XML 1.0](https://www.w3.org/TR/2009/REC-xml-names-20091208) in restconf and Netconf.
* There are still the following non-strict namespace handling: * Remaining deviations from 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 * edit-config xpath select statement does not support namespaces
* notifications do 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:
```
<rpc> <rpc>
<my-own-method/> <my-own-method/>
</rpc> </rpc>
@ -22,9 +22,9 @@
<address-family>ipv4</address-family> <address-family>ipv4</address-family>
</route> </route>
</rpc-reply> </rpc-reply>
``` ```
This is the currently correct Netconf RPC: * Correct Netconf RPC:
``` ```
<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> # xmlns may be ommitted <rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> # xmlns may be ommitted
<my-own-method xmlns="urn:example:my-own"> <my-own-method xmlns="urn:example:my-own">
</rpc> </rpc>
@ -33,9 +33,9 @@
<address-family>ipv4</address-family> <address-family>ipv4</address-family>
</route> </route>
</rpc-reply> </rpc-reply>
``` ```
* 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) POST http://localhost/restconf/operations/example:example)
Content-Type: application/yang-data+json Content-Type: application/yang-data+json
{ {
@ -43,9 +43,9 @@
"x":0 "x":0
} }
} }
``` ```
then the reply: * Example: correct Restconf reply:
``` ```
HTTP/1.1 200 OK HTTP/1.1 200 OK
{ {
"example:output": { "example:output": {
@ -53,10 +53,10 @@
"y": "42" "y": "42"
} }
} }
``` ```
* To keep previous non-strict namespace handling (backwards compatible), set CLICON_XML_NS_STRICT to false. * To keep previous non-strict namespace handling (backwards compatible), set CLICON_XML_NS_STRICT to false.
* See https://github.com/clicon/clixon/issues/49 * See [https://github.com/clicon/clixon/issues/49]
* Yang code upgrade (RFC7950) 1. Yang upgrade (RFC7950)
* YANG parser cardinality checked (https://github.com/clicon/clixon/issues/48) * YANG parser cardinality checked (https://github.com/clicon/clixon/issues/48)
* See https://github.com/clicon/clixon/issues/84 * See https://github.com/clicon/clixon/issues/84
* RPC method input parameters validated * RPC method input parameters validated
@ -76,7 +76,7 @@
* Note CLIXON_DATADIR (=/usr/local/share/clixon) need to be in the list * 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_FILE Provides a filename with a single module filename.
* CLICON_YANG_MAIN_DIR Provides a directory where all yang modules should be loaded. * 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 * Experimental support, no performance enhancements and need further testing
* Incoming RPC Message validation is supported (3.4.4) * Incoming RPC Message validation is supported (3.4.4)
* Data Node Access validation is supported (3.4.5), except: * Data Node Access validation is supported (3.4.5), except:
@ -89,7 +89,7 @@
* Recovery user "_nacm_recovery" added. * Recovery user "_nacm_recovery" added.
### API changes on existing features (you may need to change your code) ### 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 * Rearranged yang files
* Moved and updated all standard ietf and iana yang files from example and yang/ to `yang/standard`. * 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` * Moved clixon yang files from yang to `yang/clixon`
@ -98,19 +98,19 @@
* Renamed example yang from example.yang -> clixon-example.yang * Renamed example yang from example.yang -> clixon-example.yang
* clixon_cli -p (printspec) changed semantics to add new yang path dir (see minor changes). * 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. * 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 * 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`. * Renamed yang file `ietf-netconf-notification.yang` to `clixon-rfc5277.yang`.
* Fixed validation problems, see [https://github.com/clicon/clixon/issues/62] * Fixed validation problems, see [https://github.com/clicon/clixon/issues/62]
* Name confusion, the file is manually constructed from the rfc. * Name confusion, the file is manually constructed from the rfc.
* Changed prefix to `ncevent` * 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. * 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. * 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. * 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. * 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. * 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 major changes)
* XML namespace handling is corrected (see above)
* For backward compatibility set config option CLICON_XML_NS_LOOSE * 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. * Yang parser functions have changed signatures. Please check the source if you call these functions.
* Add `<CLICON_YANG_DIR>/usr/local/share/clixon</CLICON_YANG_DIR>` to your configuration file, or corresponding CLICON_DATADIR directory for Clixon system yang files. * Add `<CLICON_YANG_DIR>/usr/local/share/clixon</CLICON_YANG_DIR>` 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 * For backward compatibility, define CLICON_CLI_MODEL_TREENAME_PATCH in clixon_custom.h
### Minor changes ### 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 '<?' (processing instructions) and '<?xml' (XML declaration)
* XML prolog syntax for 'well-formed' XML
* `<!DOCTYPE` (ie DTD) is not supported.
* Added `make test` from top-level Makefile
* Added `xml_rootchild_node()` lib function as variant of `xml_rootchild()` * Added `xml_rootchild_node()` lib function as variant of `xml_rootchild()`
* Added -o "<option>=<value>" command-line option to all programs: backend, cli, netconf, restconf. * Added -o "<option>=<value>" command-line option to all programs: backend, cli, netconf, restconf.
* Any config option from file can be overrided by giving them on command-line. * Any config option from file can be overrided by giving them on command-line.
* Added -p <dir> command-line option to all programs: backend, cli, netconf, restconf. * Added -p <dir> 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=<dir>) * -p adds a new dir to the yang path dir. (same as -o CLICON_YAN_DIR=<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 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. * 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` * 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 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 * Added `example_rpc` RPC to example backend
* Renamed xml_namespace[_set]() to xml_prefix[_set]() * Renamed `xml_namespace()` and `xml_namespace_set()` to `xml_prefix()` and `xml_prefix_set()`, respectively.
* Changed all make tags --> make TAGS * Changed all make tags --> make TAGS
* Keyvalue datastore removed (it has been disabled since 3.3.3) * 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. * 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 '<?' (processing instructions) and '<?xml' (XML declaration)
* XML prolog syntax for 'well-formed' XML
* <!DOCTYPE (ie DTD) is not supported.
### Corrected Bugs ### Corrected Bugs
* Partially corrected: [yang type range statement does not support multiple values](https://github.com/clicon/clixon/issues/59). * Partially corrected: [yang type range statement does not support multiple values](https://github.com/clicon/clixon/issues/59).
* Should work for netconf and restconf, but not for CLI. * Should work for netconf and restconf, but not for CLI.
* Fixed again: [Range parsing is not RFC 7950 compliant](https://github.com/clicon/clixon/issues/71) * Fixed: [Range parsing is not RFC 7950 compliant](https://github.com/clicon/clixon/issues/71)
* xml_cmp() compares numeric nodes based on string value [https://github.com/clicon/clixon/issues/64] * xml_cmp() compares numeric nodes based on string value [https://github.com/clicon/clixon/issues/64]
* xml_cmp() respects 'ordered-by user' for state nodes, which violates RFC 7950 [https://github.com/clicon/clixon/issues/63]. (Thanks JDL) * xml_cmp() respects 'ordered-by user' for state nodes, which violates RFC 7950 [https://github.com/clicon/clixon/issues/63]. (Thanks JDL)
* XML<>JSON conversion problems [https://github.com/clicon/clixon/issues/66] * XML<>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] * xsd regular expression support for character classes [https://github.com/clicon/clixon/issues/68]
* added support for \c, \d, \w, \W, \s, \S. * added support for \c, \d, \w, \W, \s, \S.
* Removing newlines from XML data [https://github.com/clicon/clixon/issues/65] * 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 * 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. * Keyword "min" (not only "max") can be used in built-in types "range" and "length" statements.
* Support for empty yang string added, eg `default "";` * Support for empty yang string added, eg `default "";`
* Removed CLI generation for yang notifications (and other non-data yang nodes) * 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) * 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) * 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) ## 3.8.0 (6 Nov 2018)
### Major New features ### Major New features

View file

@ -31,10 +31,9 @@ How to document the code
## Branching ## Branching
How to work in git (branching) How to work in git (branching)
Basically follows: http://nvie.com/posts/a-successful-git-branching-model/ Try to keep a single master branch always working. Currently testing is made using [Travis CI](https://travis-ci.org/clicon/clixon).
only somewhat simplified:
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 ## How the meta-configure stuff works
``` ```

View file

@ -1,22 +1,22 @@
# Clixon roadmap # Clixon roadmap
## High prio ## 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 - Special handling of the initial startup transaction to avoid exit at startup
- Possibly - draft-wu-netconf-restconf-factory-restore-03 - Possibly - draft-wu-netconf-restconf-factory-restore-03
- Handle revisions to data model. - Handle revisions to data model.
- Possibly draft-wang-netmod-module-revision-management-01 - 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: ## 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. - Support a plugin callback that is invoked when copy-config is called.
- Preserve CLI command history across sessions. The up/down arrows - 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: ## Low prio:
- Provide a client library to access netconf APIs provided by system services. - Provide a client library to access netconf APIs provided by system services.