diff --git a/CHANGELOG.md b/CHANGELOG.md
index 054f6f7f7..028bc3fc7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,9 +4,10 @@
### Summary
-The 4.1.0 release is a RESTCONF feature upgrade release. Highlights are
-RFC8040 plan PATCH, many query parameters, compliant return codes, and
-more.
+4.1.0 is focussed on RFC 8040 RESTCONF features. Highlights include:
+- RFC8040 plain PATCH,
+- Query parameters: content, depth, insert, position
+- Standard return codes
### Major New features
* Restconf RFC 8040 increased feature compliance
@@ -35,37 +36,39 @@ more.
* The main example explains how to implement a Yang extension in a backend plugin.
### API changes on existing features (you may need to change your code)
+* C API changes:
+ * Added `depth` parameter to function `clicon_xml2cbuf`, default is -1.
+ * Added two parameters to function `clicon_rpc_get`
+ * `content`: to select state or config. Allowed values: CONTENT_CONFIG,CONTENT_NOCONFIG, CONTENT_ALL (default)
+ * `depth`: Get levels of XML in get function: -1 is unbounded, 0 is nothing, 1 is top-level node only.
* Netconf edit-config "operation" attribute namespace check is enforced
- * This is enforced: `
- * This was previously allowed: `
+ * E.g.: `` --> ``
* RESTCONF NACM access-denied error code changed from "401 Unauthorized" to "403 Forbidden"
* See RFC 8040 (eg 4.4.1, 4.4.2, 4.5, 4.6, 4.7)
* RESTCONF PUT/POST erroneously returned 200 OK. Instead restconf now returns:
* `201 Created` for created resources
* `204 No Content` for replaced resources.
-* RESTCONF PUT/POST -d {} media is enforced
+* RESTCONF PUT/POST `Content-Type` is enforced
* Before accepted JSON as default, now Content-Type must be explicit, such as `Content-Type: application/yang-data+json`
-* RESTCONF identities has been changed to use module names instead of prefixes.
+* RESTCONF identities has changed to use module names instead of prefixes following RFC8040:
* Eg, `curl -X POST -d '{"type":"ex:eth"}` --> `curl -X POST -d '{"type":"ietf-interfaces:eth"`}
* JSON changes
* Non-pretty-print output removed all extra spaces.
- * Example: `{"nacm-example:x": 42}` --> {"nacm-example:x":42}`
+ * Example: `{"nacm-example:x": 42}` --> `{"nacm-example:x":42}`
* Empty JSON values changed from `null` to:
* Empty yang container encoded as `{}`
* Empty leaf/leaf-list of type empty encoded as `[null]`
* Other empty values remain as `null`
-* C API changes:
- * Added `depth` parameter to function `clicon_xml2cbuf`, default is -1.
- * Added two parameters to function `clicon_rpc_get`
- * `content`: to select state or config. Allowed values: CONTENT_CONFIG,CONTENT_NOCONFIG, CONTENT_ALL (default)
- * `depth`: Get levels of XML in get function: -1 is unbounded, 0 is nothing, 1 is top-level node only.
-
### Minor changes
-* Added experimental binary search API function: `xml_binsearch`
+* New [clixon-doc sphinx/read-the-docs](https://clixon-docs.readthedocs.io) started
+ * The goal is to move all clixon documentation there
+* Added experimental binary search API function: `xml_binsearch` that can be used by plugin developers.
+ * This provides binary search of list/leaf-lists as described here:
* Removed unnecessary configure dependencies
* libnsl, libcrypt, if_vlan,...
-* pseudo-plugin added, to enable callbacks also for main programs. Useful for extensions
+* "pseudo-plugins" added, ie virtual plugins to enable callbacks also for main programs. Useful for extensions.
+ * See `clixon_pseudo_plugin`
### Corrected Bugs
* If `ietf-netconf.yang` was imported from any yang module, client/backend communication stops working.
@@ -76,7 +79,7 @@ more.
* Should only be applicable on netconf MERGE and restconf PATCH
* Corrected problem with namespace context cache, was not always cleared when adding new subtrees.
* Corrected CLI bug with lists of multiple keys (netconf/restconf works).
- * Worked in 3.10, but broke in 4.0
+ * Worked in 3.10, but broke in 4.0.0. Fixed in 4.0.1
* Example: `yang list x { key "a b";...}`
CLI error example:
```
@@ -86,7 +89,8 @@ more.
```
* Fixed RESTCONF api-path leaf-list selection was not made properly
* Requesting eg `mod:x/y=42` returned the whole list: `{"y":[41,42,43]}` whereas it should only return one element: `{"y":42}`
-* See [RESTCONF: HTTP return codes are not according to RFC 8040](https://github.com/clicon/clixon/issues/56)
+* Fixed [RESTCONF: HTTP return codes are not according to RFC 8040](https://github.com/clicon/clixon/issues/56)
+ * See also API changes above
* Yang Unique statements with multiple schema identifiers did not work on some platforms due to memory error.
## 4.0.1 (5 Aug 2019)
diff --git a/README.md b/README.md
index 026ad920b..5186881f4 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,8 @@ Clixon is a YANG-based configuration manager, with interactive CLI,
NETCONF and RESTCONF interfaces, an embedded database and transaction
mechanism.
+Work-in-progress move to [new documentation](https://clixon-docs.readthedocs.io).
+
* [Background](#background)
* [Frequently asked questions (FAQ)](doc/FAQ.md)
* [Hello world](example/hello/README.md)
diff --git a/test/long.sh b/test/long.sh
index ee8fbc9af..ca3d6b791 100755
--- a/test/long.sh
+++ b/test/long.sh
@@ -99,10 +99,8 @@ new "netconf commit large config"
expecteof "/usr/bin/time -f %e $clixon_netconf -qf $cfg" 0 "]]>]]>" "^]]>]]>$"
# Zero all event counters
-sudo callgrind_control -i on
-sudo callgrind_control -z
-
-
+#sudo callgrind_control -i on
+#sudo callgrind_control -z
while [ 1 ] ; do
new "restconf add $perfreq small config"
@@ -110,14 +108,14 @@ while [ 1 ] ; do
time -p for (( i=0; i<$perfreq; i++ )); do
#echo "i $i"
rnd=$(( ( RANDOM % $perfnr ) ))
- curl -s -X PUT http://localhost/restconf/data/scaling:x/y=$rnd -d '{"scaling:y":{"a":"'$rnd'","b":"'$rnd'"}}'
+ curl -s -X PUT -H 'Content-Type: application/yang-data+json' http://localhost/restconf/data/scaling:x/y=$rnd -d '{"scaling:y":{"a":"'$rnd'","b":"'$rnd'"}}'
done
done
new "restconf get $perfreq small config"
time -p for (( i=0; i<$perfreq; i++ )); do
rnd=$(( ( RANDOM % $perfnr ) ))
- curl -sG http://localhost/restconf/data/scaling:x/y=$rnd,42 > /dev/null
+ curl -sG -H 'Accept: application/yang-data+json'http://localhost/restconf/data/scaling:x/y=$rnd,42 > /dev/null
done
done