editt changelog

This commit is contained in:
Olof hagsand 2017-11-19 19:11:34 +01:00
commit 013a0dba14
3 changed files with 47 additions and 32 deletions

View file

@ -5,7 +5,6 @@
### Known issues
### Major changes:
* Clixon can now be compiled and run on Apple Darwin.
* Performance improvements
* Added xml hash lookup instead of linear search for better performance of large lists. To disable, undefine XML_CHILD_HASH in clixon_custom.h
* netconf client was limited to 8K byte messages. Now limit is 2^32 bytes
@ -26,6 +25,8 @@ clixon_cli -f /usr/local/etc/routing.conf -1x
Backward compatibility is enabled by defining BACKEND_STARTUP_BACKWARD_COMPAT in include/clixon_custom.h
### Minor changes:
* When user callbacks p_statedata() or rpc callback call returns -1, clixon_backend nolonger silently exits. Instead a log is printed and an RPC error is returned.
* Disabled key-value datastore. Enable with --with-keyvalue
* Removed mandatory requirements for BACKEND, NETCONF, RESTCONF and CLI dirs.
* When user callbacks such as statedata() call returns -1, clixon_backend no

View file

@ -275,6 +275,7 @@ from_client_get(clicon_handle h,
cxobj *xfilter;
char *selector = "/";
cxobj *xret = NULL;
int ret;
if ((xfilter = xml_find(xe, "filter")) != NULL)
if ((selector = xml_find_value(xfilter, "select"))==NULL)
@ -291,8 +292,10 @@ from_client_get(clicon_handle h,
}
/* Get state data from plugins as defined by plugin_statedata(), if any */
assert(xret);
if (backend_statedata_call(h, selector, xret) < 0)
clicon_err_reset();
if ((ret = backend_statedata_call(h, selector, xret)) < 0)
goto done;
if (ret == 0){ /* OK */
cprintf(cbret, "<rpc-reply>");
if (xret==NULL)
cprintf(cbret, "<data/>");
@ -303,6 +306,16 @@ from_client_get(clicon_handle h,
goto done;
}
cprintf(cbret, "</rpc-reply>");
}
else { /* 1 Error from callback */
cprintf(cbret, "<rpc-reply><rpc-error>"
"<error-tag>operation-failed</error-tag>"
"<error-type>rpc</error-type>"
"<error-severity>error</error-severity>"
"<error-message>Internal error:%s</error-message>"
"</rpc-error></rpc-reply>", clicon_err_reason);
clicon_log(LOG_NOTICE, "%s Error in backend_statedata_call:%s", __FUNCTION__, xml_name(xe));
}
ok:
retval = 0;
done:

View file

@ -726,6 +726,7 @@ plugin_transaction_abort(clicon_handle h,
* @param[in,out] xml XML tree.
* @retval -1 Error
* @retval 0 OK
* @retval 1 Statedata callback failed
*/
int
backend_statedata_call(clicon_handle h,
@ -753,8 +754,10 @@ backend_statedata_call(clicon_handle h,
if (p->p_statedata) {
if ((x = xml_new("config", NULL)) == NULL)
goto done;
if ((p->p_statedata)(h, xpath, x) < 0)
goto done;
if ((p->p_statedata)(h, xpath, x) < 0){
retval = 1;
goto done; /* Dont quit here on user callbacks */
}
if (xml_merge(xtop, x, yspec) < 0)
goto done;
if (x){
@ -763,7 +766,6 @@ backend_statedata_call(clicon_handle h,
}
}
}
{
/* Code complex to filter out anything that is outside of xpath */
if (xpath_vec(xtop, xpath?xpath:"/", &xvec, &xlen) < 0)
goto done;
@ -783,7 +785,6 @@ backend_statedata_call(clicon_handle h,
/* reset flag */
if (xml_apply(xtop, CX_ELMNT, (xml_applyfn_t*)xml_flag_reset, (void*)XML_FLAG_MARK) < 0)
goto done;
}
retval = 0;
done:
if (x)