Fixes for 4.4 release
This commit is contained in:
parent
09a2e09848
commit
a7e0a30938
7 changed files with 22 additions and 11 deletions
|
|
@ -44,6 +44,7 @@ features include optimized search functions and a repair callback.
|
||||||
[search](https://clixon-docs.readthedocs.io/en/latest/xml.html#searching-in-xml)
|
[search](https://clixon-docs.readthedocs.io/en/latest/xml.html#searching-in-xml)
|
||||||
|
|
||||||
### API changes on existing protocol/config features
|
### API changes on existing protocol/config features
|
||||||
|
* Obsolete configuration options present in clixon configuration file will cause clixon application to exit at startup.
|
||||||
* JSON
|
* JSON
|
||||||
* Empty values in JSON has changed to comply to RFC 7951
|
* Empty values in JSON has changed to comply to RFC 7951
|
||||||
* empty values of yang type `empty` are encoded as: `{"x":[null]}`
|
* empty values of yang type `empty` are encoded as: `{"x":[null]}`
|
||||||
|
|
@ -69,7 +70,7 @@ features include optimized search functions and a repair callback.
|
||||||
* On failed validation of leafrefs, error message changed from: `No such leaf` to `No leaf <name> matching path <path>`.
|
* On failed validation of leafrefs, error message changed from: `No such leaf` to `No leaf <name> matching path <path>`.
|
||||||
* CLI Error message (clicon_rpc_generate_error()) changed when backend returns netconf error to be more descriptive:
|
* CLI Error message (clicon_rpc_generate_error()) changed when backend returns netconf error to be more descriptive:
|
||||||
* Original: `Config error: Validate failed. Edit and try again or discard changes: Invalid argument`
|
* Original: `Config error: Validate failed. Edit and try again or discard changes: Invalid argument`
|
||||||
* New (example): `Netconf error: application operation-failed Identityref validation failed, undefined not derived from acl-base . Validate failed. Edit and try again or discard changes"
|
* New (example): `Validate failed. Edit and try again or discard changes: application operation-failed Identityref validation failed, undefined not derived from acl-base"
|
||||||
|
|
||||||
### C-API changes on existing features (you may need to change your plugin C-code)
|
### C-API changes on existing features (you may need to change your plugin C-code)
|
||||||
* `xml_new()` changed from `xml_new(name, xp, ys)` to `xml_new(name, xp, type)`
|
* `xml_new()` changed from `xml_new(name, xp, ys)` to `xml_new(name, xp, type)`
|
||||||
|
|
|
||||||
|
|
@ -587,7 +587,11 @@ main(int argc, char **argv)
|
||||||
restarg = clicon_strjoin(argc, argv, " ");
|
restarg = clicon_strjoin(argc, argv, " ");
|
||||||
|
|
||||||
/* If several cligen object variables match same preference, select first */
|
/* If several cligen object variables match same preference, select first */
|
||||||
|
#if 0 /* New cligen version (not in 4.4) */
|
||||||
|
cligen_preference_mode_set(cli_cligen(h), 1);
|
||||||
|
#else
|
||||||
cligen_match_cgvar_same(1);
|
cligen_match_cgvar_same(1);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Call start function in all plugins before we go interactive
|
/* Call start function in all plugins before we go interactive
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -77,8 +77,8 @@ struct err_state{
|
||||||
/*
|
/*
|
||||||
* Variables
|
* Variables
|
||||||
*/
|
*/
|
||||||
int clicon_errno = 0; /* See enum clicon_err */
|
int clicon_errno = 0; /* See enum clicon_err XXX: hide this and change to err_category */
|
||||||
int clicon_suberrno = 0; /* Corresponds to errno.h */
|
int clicon_suberrno = 0; /* Corresponds to errno.h XXX: change to errno */
|
||||||
char clicon_err_reason[ERR_STRLEN] = {0, };
|
char clicon_err_reason[ERR_STRLEN] = {0, };
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -147,7 +147,7 @@ clicon_err_reset(void)
|
||||||
int clicon_err_fn(const char *fn,
|
int clicon_err_fn(const char *fn,
|
||||||
const int line,
|
const int line,
|
||||||
int category,
|
int category,
|
||||||
int err,
|
int suberr,
|
||||||
char *format, ...)
|
char *format, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
|
|
@ -157,7 +157,7 @@ int clicon_err_fn(const char *fn,
|
||||||
|
|
||||||
/* Set the global variables */
|
/* Set the global variables */
|
||||||
clicon_errno = category;
|
clicon_errno = category;
|
||||||
clicon_suberrno = errno;
|
clicon_suberrno = suberr;
|
||||||
|
|
||||||
/* first round: compute length of error message */
|
/* first round: compute length of error message */
|
||||||
va_start(args, format);
|
va_start(args, format);
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,8 @@
|
||||||
***** BEGIN LICENSE BLOCK *****
|
***** BEGIN LICENSE BLOCK *****
|
||||||
|
|
||||||
Copyright (C) 2009-2016 Olof Hagsand and Benny Holmgren
|
Copyright (C) 2009-2016 Olof Hagsand and Benny Holmgren
|
||||||
Copyright (C) 2017-2020 Olof Hagsand
|
Copyright (C) 2017-2019 Olof Hagsand
|
||||||
|
Copyright (C) 2020 Olof Hagsand and Rubicon Communications, LLC
|
||||||
|
|
||||||
This file is part of CLIXON.
|
This file is part of CLIXON.
|
||||||
|
|
||||||
|
|
@ -48,6 +49,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <syslog.h>
|
||||||
|
|
||||||
/* cligen */
|
/* cligen */
|
||||||
#include <cligen/cligen.h>
|
#include <cligen/cligen.h>
|
||||||
|
|
@ -1535,8 +1537,11 @@ clixon_netconf_error_fn(const char *fn,
|
||||||
}
|
}
|
||||||
if (netconf_err2cb(xerr, cb) < 0)
|
if (netconf_err2cb(xerr, cb) < 0)
|
||||||
goto done;
|
goto done;
|
||||||
|
#if 0 /* More verbose output for debugging */
|
||||||
clicon_err_fn(fn, line, category, 0, "%s", cbuf_get(cb));
|
clicon_log(LOG_ERR, "%s: %d: %s", fn, line, cbuf_get(cb));
|
||||||
|
#else
|
||||||
|
clicon_log(LOG_ERR, "%s", cbuf_get(cb));
|
||||||
|
#endif
|
||||||
retval = 0;
|
retval = 0;
|
||||||
done:
|
done:
|
||||||
if (cb)
|
if (cb)
|
||||||
|
|
|
||||||
|
|
@ -245,6 +245,7 @@ parse_configfile(clicon_handle h,
|
||||||
}
|
}
|
||||||
if (netconf_err2cb(xerr, cbret) < 0)
|
if (netconf_err2cb(xerr, cbret) < 0)
|
||||||
goto done;
|
goto done;
|
||||||
|
/* Here one could make it more relaxing to not quit on unrecognized option? */
|
||||||
clixon_netconf_error(OE_CFG, xerr, NULL, NULL);
|
clixon_netconf_error(OE_CFG, xerr, NULL, NULL);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ new "cli configure using encoded chars name <&"
|
||||||
expectfn "$clixon_cli -1 -f $cfg set interfaces interface fddi&< type ianaift:ethernetCsmacd" 0 ""
|
expectfn "$clixon_cli -1 -f $cfg set interfaces interface fddi&< type ianaift:ethernetCsmacd" 0 ""
|
||||||
|
|
||||||
new "cli failed validate"
|
new "cli failed validate"
|
||||||
expectpart "$($clixon_cli -1 -f $cfg -l o validate)" 255 "Netconf error: Validate failed. Edit and try again or discard changes: application missing-element Mandatory variable <bad-element>type</bad-element>"
|
expectpart "$($clixon_cli -1 -f $cfg -l o validate)" 255 "Validate failed. Edit and try again or discard changes: application missing-element Mandatory variable <bad-element>type</bad-element>"
|
||||||
|
|
||||||
new "cli configure ip addr"
|
new "cli configure ip addr"
|
||||||
expectfn "$clixon_cli -1 -f $cfg set interfaces interface eth/0/0 ipv4 address 1.2.3.4 prefix-length 24" 0 "^$"
|
expectfn "$clixon_cli -1 -f $cfg set interfaces interface eth/0/0 ipv4 address 1.2.3.4 prefix-length 24" 0 "^$"
|
||||||
|
|
|
||||||
|
|
@ -253,14 +253,14 @@ new "CLI set wrong acl-type"
|
||||||
expectfn "$clixon_cli -1 -f $cfg -l o set acls acl x type undefined" 0 "^$"
|
expectfn "$clixon_cli -1 -f $cfg -l o set acls acl x type undefined" 0 "^$"
|
||||||
|
|
||||||
new "cli validate acl-type"
|
new "cli validate acl-type"
|
||||||
expectpart "$($clixon_cli -1 -f $cfg -l o validate)" 255 " Netconf error: Validate failed. Edit and try again or discard changes: application operation-failed Identityref validation failed, undefined not derived from acl-base"
|
expectpart "$($clixon_cli -1 -f $cfg -l o validate)" 255 "Validate failed. Edit and try again or discard changes: application operation-failed Identityref validation failed, undefined not derived from acl-base"
|
||||||
|
|
||||||
# test empty identityref list
|
# test empty identityref list
|
||||||
new "cli set empty"
|
new "cli set empty"
|
||||||
expectfn "$clixon_cli -1 -f $cfg -l o set e undefined" 0 "^$"
|
expectfn "$clixon_cli -1 -f $cfg -l o set e undefined" 0 "^$"
|
||||||
|
|
||||||
new "cli validate empty"
|
new "cli validate empty"
|
||||||
expectpart "$($clixon_cli -1 -f $cfg -l o validate)" 255 "Netconf error: Validate failed. Edit and try again or discard changes: application operation-failed Identityref validation failed, undefined not derived from acl-base"
|
expectpart "$($clixon_cli -1 -f $cfg -l o validate)" 255 "Validate failed. Edit and try again or discard changes: application operation-failed Identityref validation failed, undefined not derived from acl-base"
|
||||||
|
|
||||||
new "netconf discard-changes"
|
new "netconf discard-changes"
|
||||||
expecteof "$clixon_netconf -qf $cfg" 0 "<rpc><discard-changes/></rpc>]]>]]>" "^<rpc-reply><ok/></rpc-reply>]]>]]>$"
|
expecteof "$clixon_netconf -qf $cfg" 0 "<rpc><discard-changes/></rpc>]]>]]>" "^<rpc-reply><ok/></rpc-reply>]]>]]>$"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue