* Preparations for Clixon 5.4 release, docs, readme:s, etc

This commit is contained in:
Olof hagsand 2021-11-29 13:52:52 +01:00
parent f4b35cb270
commit 716d0cb15f
9 changed files with 43 additions and 21 deletions

View file

@ -34,7 +34,7 @@
## 5.4.0 ## 5.4.0
Expected: November, 2021 Expected: November, 2021
Thanks netgate for providing the dispatcher code! Thanks Netgate for providing the dispatcher code (used in the pagination)!
### New features ### New features
@ -44,11 +44,22 @@ Thanks netgate for providing the dispatcher code!
* Use accessor functions `pagination_offset()`, `pagination_limit()`, etc * Use accessor functions `pagination_offset()`, `pagination_limit()`, etc
* Reverted state data callback API to pre-5.3 (see C/CLI API changes below) * Reverted state data callback API to pre-5.3 (see C/CLI API changes below)
* See https://clixon-docs.readthedocs.io/en/latest/pagination.html * See https://clixon-docs.readthedocs.io/en/latest/pagination.html
* Added support for XPATH function `bit-is-set()`
* Added: [Recursive search CLIXON_YANG_DIR](https://github.com/clicon/clixon/issues/284)
* Added statistics for YANG: number of objects and memory used
* See clixon-lib: stats rpc
### API changes on existing protocol/config features ### API changes on existing protocol/config features
Users may have to change how they access the system Users may have to change how they access the system
* Optional yangs for testing have been removed from the Clixon repo
* These were included for testing
* If you want to run the Clixon test suite you need to point `YANGMODELS`, see test/README.md
* The following configure options have been removed:
* `configure --with-opt-yang-installdir=DIR`
* `configure --enable-optyangs`
* You may need to specify standard YANGs using configure option `--with-yang-standard-dir=DIR`
* RPC replies now verified with YANG * RPC replies now verified with YANG
* Stricter checking of outgoing RPC replies from server * Stricter checking of outgoing RPC replies from server
* See [RPC output not verified by yang](https://github.com/clicon/clixon/issues/283) * See [RPC output not verified by yang](https://github.com/clicon/clixon/issues/283)
@ -63,7 +74,8 @@ Users may have to change how they access the system
* Modified option: RPC stats extended with YANG stats * Modified option: RPC stats extended with YANG stats
* New `clixon-config@2021-11-11.yang` revision * New `clixon-config@2021-11-11.yang` revision
* Added option: * Added option:
* CLICON_PLUGIN_CALLBACK_CHECK * `CLICON_PLUGIN_CALLBACK_CHECK`
* `CLICON_YANG_AUGMENT_ACCEPT_BROKEN`
* Modified options: * Modified options:
* CLICON_CLI_GENMODEL_TYPE: added OC_COMPRESS enum * CLICON_CLI_GENMODEL_TYPE: added OC_COMPRESS enum
* CLICON_YANG_DIR: recursive search * CLICON_YANG_DIR: recursive search
@ -79,6 +91,7 @@ Users may have to change how they access the system
* See also updated [https://clixon-docs.readthedocs.io/en/latest/pagination.html] * See also updated [https://clixon-docs.readthedocs.io/en/latest/pagination.html]
* NETCONF hello errors, such as wrong session-id, prefix, namespace terminates session * NETCONF hello errors, such as wrong session-id, prefix, namespace terminates session
* Instead of returning an rpc-error reply * Instead of returning an rpc-error reply
* This conforms to RFC 6241
### C/CLI-API changes on existing features ### C/CLI-API changes on existing features
@ -90,28 +103,30 @@ Developers may need to change their code
``` ```
int statedata(clicon_handle h, int statedata(clicon_handle h,
cvec *nsc, cvec *nsc,
char *xpath, char *xpath,
cxobj *xstate) cxobj *xstate)
``` ```
### Minor features ### Minor features
* Added statistics for YANG: number of objects and memory used * Added configure option `--with-yang-standard-dir=DIR`
* See clixon-lib: stats rpc * Directory of standard IETF/IEEE YANG specs
* Added option `CLICON_YANG_AUGMENT_ACCEPT_BROKEN` to accept broken yangmodels.
* This is a debug option for CI testcases where standard YANG models are broken
* Performance improvement * Performance improvement
* Added ancestor config cache indicating wether the node or an ancestor is config false or true * Added ancestor config cache indicating wether the node or an ancestor is config false or true
* Improved yang cardinality lookup * Improved performance of yang cardinality lookup
* Added sorting of YANG statements * Added sorting of YANG statements
* Some openconfig specs seem to have use/when before a "config" which it depends on. This leads to XML encoding being in the "wrong order. * Some openconfig specs seem to have use/when before a "config" which it depends on. This leads to XML encoding being in the "wrong" order.
* When parsing, clixon now sorts container/list statements so that sub-statements with WHEN are put last. * When parsing, clixon now sorts container/list statements so that sub-statements with WHEN are put last.
* See [Statements given in "load set" are order dependent](https://github.com/clicon/clixon/issues/287) * See [Statements given in "load set" are order dependent](https://github.com/clicon/clixon/issues/287)
* Added: [Recursive search CLIXON_YANG_DIR](https://github.com/clicon/clixon/issues/284)
* Plugin context check before and after all callbacks. * Plugin context check before and after all callbacks.
* Check blocked signals and signal handlers * Check blocked signals and signal handlers
* Check termios settings * Check termios settings
* Any changes to context are logged at loglevel WARNING * Any changes to context are logged at loglevel WARNING
* New option: CLICON_PLUGIN_CALLBACK_CHECK: enable it to for checks (default false) * New option: `CLICON_PLUGIN_CALLBACK_CHECK`: enable it to for checks (default false)
* [OpenConfig path compression](https://github.com/clicon/clixon/pull/276) * Added: [OpenConfig Path Compression Support](https://github.com/clicon/clixon/issues/274)
* PR: [OpenConfig path compression](https://github.com/clicon/clixon/pull/276)
* C API: Added set/get pointer API to clixon_data: * C API: Added set/get pointer API to clixon_data:
* Changed signature of `rpc_callback_call()` * Changed signature of `rpc_callback_call()`
* Added json/cli support for cli save/load * Added json/cli support for cli save/load
@ -124,6 +139,7 @@ Developers may need to change their code
### Corrected Bugs ### Corrected Bugs
* [JSON leaf-list output single element leaf-list does not use array](https://github.com/clicon/clixon/issues/289)
* [very slow execution of load_set_file #288](https://github.com/clicon/clixon/issues/288) * [very slow execution of load_set_file #288](https://github.com/clicon/clixon/issues/288)
* [RPC output not verified by yang](https://github.com/clicon/clixon/issues/283) * [RPC output not verified by yang](https://github.com/clicon/clixon/issues/283)
* [Statements given in "load set" are order dependent](https://github.com/clicon/clixon/issues/287) * [Statements given in "load set" are order dependent](https://github.com/clicon/clixon/issues/287)

View file

@ -17,6 +17,6 @@ Latest release is 5.3.0 from September 2021. See [CHANGELOG.md](CHANGELOG.md) re
Clixon interaction is best done posting issues, pull requests, or joining the Clixon interaction is best done posting issues, pull requests, or joining the
[slack channel](https://clixondev.slack.com). [slack channel](https://clixondev.slack.com).
[Slack invite](https://join.slack.com/t/clixondev/shared_invite/zt-wegsemtw-u~VRdvYPtSRKXqULDLlWJQ) (updated 26/9 2021) [Slack invite](https://join.slack.com/t/clixondev/shared_invite/zt-za7p40vq-l_Ib1Cq9rX~cHCkLCdu~Aw) (updated 26/11 2021)
Clixon is sponsored by [Rubicon Communications LLC(Netgate)](https://www.netgate.com/) Clixon is sponsored by [Rubicon Communications LLC(Netgate)](https://www.netgate.com/)

View file

@ -76,7 +76,7 @@ COPY clixon .
RUN adduser -D -H www-data RUN adduser -D -H www-data
# Configure, build and install clixon # Configure, build and install clixon
RUN ./configure --prefix=/clixon/build --with-cligen=/clixon/build --with-wwwuser=www-data --enable-optyangs --with-restconf=native RUN ./configure --prefix=/clixon/build --with-cligen=/clixon/build --with-wwwuser=www-data --with-restconf=native
RUN make RUN make
RUN make install RUN make install

View file

@ -138,7 +138,7 @@ clicon_files_recursive(const char *dir,
int res = 0; int res = 0;
char errbuf[128]; char errbuf[128];
clicon_debug(1, "%s dir:%s", __FUNCTION__, dir); clicon_debug(2, "%s dir:%s", __FUNCTION__, dir);
if (regexp && (res = regcomp(&re, regexp, REG_EXTENDED)) != 0) { if (regexp && (res = regcomp(&re, regexp, REG_EXTENDED)) != 0) {
regerror(res, &re, errbuf, sizeof(errbuf)); regerror(res, &re, errbuf, sizeof(errbuf));
clicon_err(OE_DB, 0, "regcomp: %s", errbuf); clicon_err(OE_DB, 0, "regcomp: %s", errbuf);

View file

@ -170,7 +170,7 @@ struct xml{
struct xml *x_up_candidate; /* Candidate parent node for special cases (when+xpath) */ struct xml *x_up_candidate; /* Candidate parent node for special cases (when+xpath) */
#endif #endif
int _x_vector_i; /* internal use: xml_child_each */ int _x_vector_i; /* internal use: xml_child_each */
int _x_i; /* internal use for sorting: int _x_i; /* internal use for stable sorting:
see xml_enumerate and xml_cmp */ see xml_enumerate and xml_cmp */
/*----- next is body/attribute only */ /*----- next is body/attribute only */
cbuf *x_value_cb; /* attribute and body nodes have values (XXX: this consumes cbuf *x_value_cb; /* attribute and body nodes have values (XXX: this consumes

View file

@ -416,7 +416,7 @@ xml_sort(cxobj *x)
if ((ys = xml_spec(x)) != 0 && yang_config(ys)==0) if ((ys = xml_spec(x)) != 0 && yang_config(ys)==0)
return 1; return 1;
#endif #endif
xml_enumerate_children(x); xml_enumerate_children(x); /* This is to make sorting "stable", ie not change existing order */
qsort(xml_childvec_get(x), xml_child_nr(x), sizeof(cxobj *), xml_cmp_qsort); qsort(xml_childvec_get(x), xml_child_nr(x), sizeof(cxobj *), xml_cmp_qsort);
return 0; return 0;
} }

View file

@ -2690,6 +2690,7 @@ yang_if_feature(clicon_handle h,
int opand = -1; /* -1:not set, 0:or, 1:and */ int opand = -1; /* -1:not set, 0:or, 1:and */
int enabled = 0; int enabled = 0;
cg_var *cv; cg_var *cv;
if ((vec = clicon_strsep(ys->ys_argument, " \t\r\n", &nvec)) == NULL) if ((vec = clicon_strsep(ys->ys_argument, " \t\r\n", &nvec)) == NULL)
goto done; goto done;
/* Two steps: first detect operators /* Two steps: first detect operators
@ -3026,7 +3027,8 @@ schema_nodeid_iterate(yang_stmt *yn,
goto done; goto done;
} }
if (ys == NULL){ if (ys == NULL){
clicon_debug(1, "%s: %s not found", __FUNCTION__, id); clicon_debug(1, "%s: %s not found, last id found:%s",
__FUNCTION__, id, yang_argument_get(yp));
goto ok; goto ok;
} }
yp = ys; /* ys is matched */ yp = ys; /* ys is matched */

View file

@ -15,7 +15,9 @@ On ubuntu this may be enough:
``` ```
sudo apt install afl sudo apt install afl
``` ```
Or get source: `https://github.com/google/AFL`
Or get source: `https://github.com/google/AFL`, see
docs/QuickStartGuide.txt for instructions, essentially type `make`
You may have to change cpu frequency: You may have to change cpu frequency:
``` ```

View file

@ -11,6 +11,8 @@ Build and install a clixon system (in particular the backend, the CLI will be re
Build and install CLIgen statically: Build and install CLIgen statically:
``` ```
./configure LINKAGE=static INSTALLFLAGS="" CC=/usr/bin/afl-clang-fast ./configure LINKAGE=static INSTALLFLAGS="" CC=/usr/bin/afl-clang-fast
make
sudo make install
``` ```
## Build ## Build
@ -39,7 +41,7 @@ Below is an example of how to do this for the main example. You can replace the
make make
sudo make install sudo make install
cd example # Compile and install application plugins (here main example) cd example/main # Compile and install application plugins (here main example)
make clean make clean
make make
sudo make install sudo make install