Commit graph

1382 commits

Author SHA1 Message Date
Olof Hagsand
b2abab71f0 local restconf rpc callback sent error and then main restconf handler sent ok. Callback should just return xml buffer, not do actual restconf callback 2018-04-15 10:52:52 +01:00
Olof Hagsand
24de61f14a Ignore \r - common http/restconf end-of-line 2018-04-09 04:24:22 +00:00
Olof Hagsand
0907574acf renamed plugin_find/each to clixon_plugin_find/each 2018-04-08 14:10:06 +00:00
Olof hagsand
2e00411621 CLI plugin API restructuring completed. Now all plugin APIs have the generic form
documented in README and FAQ.
2018-04-08 11:32:43 +02:00
Olof hagsand
d541c49c6f Plugin RPC callback interface have been unified between backend, netconf and restconf.
* Backend RPC register callback function (Netconf RPC or restconf operation POST) has been changed from: `backend_rpc_cb_register()` to `rpc_callback_register()`
    * Backend RPC callback signature has been changed from: `int cb(clicon_handle h, cxobj *xe, struct client_entry *ce, cbuf *cbret, void *arg)` has been changed to : `int cb(clicon_handle h, cxobj *xe, struct client_entry *ce, cbuf *cbret, void *arg)`
    * Frontend netconf and restconf plugins can register callbacks as well with same API as backends.
2018-04-07 18:20:33 +02:00
Olof hagsand
b9a54f07f3 Restructure and more generic plugin API for backend 2018-04-02 19:27:57 +02:00
Olof hagsand
79e3fbdaa9 * Restructure and more generic plugin API (cli,backend,restconf,netconf)
* For preparation for authorization RFC8341
  * Plugins add clixon_plugin_init() and api struct for function pointers, eg:
```
static const struct clixon_plugin_api api = {
    "example",
    clixon_plugin_init,
    ...
}
clixon_plugin_api *clixon_plugin_init(clicon_handle h)
{
    return (void*)&api;
}
```
  * Moved specific plugin functions from apps/ to generic functions in lib/
    * New generic plugin load function: clixon_plugins_load()
  * Removed client-local netconf plugins netconf_plugin_callbacks()
    * This was code used before generic YANG rpc calls
  * Added username to clixon handle:
    * clicon_username_get() / clicon_username_set()
  * Added authentication plugin callback
  * Removed some obscure plugin code that seem not to be used (please report if needed!)
    * CLI parse hook
    * CLICON_FIND_PLUGIN
    * clicon_valcb()
* Removed username to rpc calls (added below)
2018-04-02 10:38:53 +02:00
Olof hagsand
cce76faa79 Fixed three-key list entry problem (reported by jdl@netgate) 2018-03-24 14:37:36 +01:00
Olof hagsand
efa72e9e6f * Proper RFC 6241 Netconf error handling
* New functions added in clixon_netconf_lib.[ch]
  * Datastore code modified for RFC 6241
  * Remaining: validate, generic restconf and netconf code
2018-03-18 18:06:02 +00:00
Olof hagsand
859d424ea3 (Work in progress) Restconf error handling for get and edit operations 2018-03-11 20:17:11 +01:00
Olof hagsand
0a11445963 cprintf sanity checks 2018-03-10 12:35:11 +01:00
Olof Hagsand
ac7480b9f5 * Invalid key to api_path2xml gives warning instead of error and quit. 2018-03-05 20:00:10 +00:00
Olof hagsand
990700b68d https://github.com/clicon/clixon/issues/16
Added restconf/operations get, see RFC8040 Sec 3.3.2:
2018-03-04 21:24:38 +01:00
Olof hagsand
e9b61d4ed7 Merge branch 'develop' of https://github.com/clicon/clixon into develop 2018-02-25 20:02:55 +01:00
Olof hagsand
35b142cf4d * Added Yang "extension" statement. This includes parsing unknown
statements and identifying them as extensions or not. However,
  semantics for specific extensions must still be added.
* Renamed ytype_id and ytype_prefix to yarg_id and yarg_prefix, respectively

* Added cli_show_version()
2018-02-25 20:01:53 +01:00
Olof Hagsand
1e88c38877 translate xml->json \n correctly 2018-02-17 20:51:42 +00:00
Olof hagsand
278f3de840 Adding username to all restconf backend calls 2018-02-13 09:17:32 +07:00
Olof hagsand
7431757e53 Preparing for 3.5.0 2018-02-12 09:05:27 +07:00
Olof hagsand
55010e7541 restconf credentials plugin 2018-02-09 12:18:39 +07:00
Olof hagsand
e40d785d5c * Added a "user" parameter to plugin_credentials() restconf callback.
To enable authentication and in preparation for access control a la RFC 6536.
* yang string length "max" keyword set to MAXPATHLEN
2018-02-08 15:24:05 +07:00
Olof hagsand
eea8cd7660 xml2cvec: range error (eg 1000 for int8) is not treated as error, just log and skip. 2018-02-03 14:56:27 +07:00
Olof hagsand
2bbf0b8a15 xml2json dont put doublequotes on numbers and bool values in json 2018-02-02 16:35:37 +07:00
Olof hagsand
f65187df7f code cleanup 2018-01-27 14:28:57 +01:00
Olof hagsand
9914847d6a GET Single element JSON lists use {list:[element]}, not {list:element}. 2018-01-27 13:32:51 +01:00
Olof hagsand
99abac76a7 Fix for cli expansion of two variables 2018-01-25 22:16:44 +01:00
Olof hagsand
26667b2c2f Restconf: get well-known, top-level resource, yang library version, put whole datastore,
check for different keys in put lists.
2018-01-21 14:31:53 +01:00
Olof hagsand
f6284ac933 restconf PUT delta 2018-01-17 22:59:54 +01:00
Olof hagsand
cd33380368 Fixed empty restconf data segv; error restconf quit; etc 2018-01-16 22:25:55 +01:00
Matthew Smith
6a9697c2ff Use default config file when none is provided
Add config option to set a default config file path. If
none given, the default config file path is /etc/clixon.xml.
2018-01-15 08:58:11 -06:00
Olof hagsand
363bd5d19d New configuration option: CLICON_RESTCONF_PRETTY
Changed RESTCONF GET to return object referenced. ie, GET /restconf/data/X returns X.
2018-01-07 18:01:42 +01:00
Olof hagsand
83cb696d0e Corrected "No yang spec" printed on tty on leafref CLI usage 2018-01-06 13:40:14 +01:00
Olof hagsand
3758c8dab4 * The following backward compatible options to configure have been obsoleted. If you havent already migrated this code you must do this now.
* Backend startup modes prior to 3.3.3. As enabled with `configure --with-startup-compat`. Configure option CLICON_USE_STARTUP_CONFIG is also obsoleted.
  * Configuration files (non-XML) prior to 3.3.3. As enabled with `configure --with-config-compat`. The template clicon.conf.cpp files are also removed.
  * Clixon XML C-lib prior to 3.4.0. As enabled with `configure --with-xml-compat`
2018-01-01 14:48:57 +01:00
Olof hagsand
38f0b446fa 2017->2018 2018-01-01 12:25:33 +01:00
Olof hagsand
19301ae240 sort xml children on parsing 2017-12-31 18:25:53 +01:00
Olof hagsand
9681c91681 experimental insert_pos 2017-12-31 18:18:04 +01:00
Olof hagsand
79767045ad mem leaks 2017-12-31 12:05:21 +01:00
Olof hagsand
174cfc02c6 Added CLICON_XMLDB_PRETTY option. If set to false, XML database files will be more compact.
Added CLICON_XMLDB_FORMAT option. Default is "xml". If set to "json", XML database files uses JSON format.
Escape " in JSON names and strings and values
Optimized search performance for large lists by sorting and binary search.
2017-12-29 18:09:26 +01:00
Olof hagsand
4b92dbdc10 Optimized search performance for large lists by sorting and binary search 2017-12-27 11:34:47 +01:00
Olof Hagsand
b743b0a080 minor edits 2017-12-22 19:02:20 +01:00
Olof Hagsand
dd7f790193 Fixed bug that deletes running on startup if backup started with -m running 2017-12-10 15:29:22 +01:00
Olof Hagsand
0076a8b838 leafref bug 2017-12-09 20:48:29 +01:00
Olof Hagsand
4742fde1e9 XML creation and parse API changes 2017-12-09 14:14:40 +01:00
Olof hagsand
056b5c97dd experimental netconf yang spec 2017-12-08 19:37:09 +01:00
Olof hagsand
4cb00bedfa optimization 2017-12-03 20:22:05 +01:00
Olof hagsand
14faf93eec fixed datastore cache 2017-12-02 21:53:02 +01:00
Olof hagsand
e169485985 Datastore cache introduced; Added yang to XML API 2017-12-02 14:49:49 +01:00
Olof hagsand
2ebd89d636 Added --with-config-compat and --with-startup-compat to configure 2017-11-23 20:51:33 +01:00
Olof hagsand
96a7ec86f0 Fixed DESTDIR make install/uninstall and break immediately on errors 2017-11-22 22:21:12 +01:00
Olof hagsand
548ffd2da6 Disabled key-value datastore; Removed mandatory requirements for BACKEND, NETCONF, RESTCONF and CLI dirs 2017-11-19 18:04:23 +01:00
Olof hagsand
8b6bb6ff50 restconf bugs and increased restconf testing 2017-11-19 12:40:32 +01:00