lib: use flag from new libyang version to simplify the code

When using the LYD_PATH_OPT_NOPARENTRET flag, lyd_new_path() returns
the path-referenced node instead of the first created node. This
flag wasn't available in libyang 0.16-r1 so we couldn't use it
before. Use it now to simplify the code where possible.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This commit is contained in:
Renato Westphal 2019-04-12 21:38:57 -03:00
parent 716ffcc8fe
commit dfe2273849

View File

@ -1383,19 +1383,12 @@ int nb_oper_data_iterate(const char *xpath, struct yang_translator *translator,
*/
ly_errno = 0;
dnode = lyd_new_path(NULL, ly_native_ctx, xpath, NULL, 0,
LYD_PATH_OPT_UPDATE);
if (!dnode && ly_errno) {
LYD_PATH_OPT_UPDATE | LYD_PATH_OPT_NOPARENTRET);
if (!dnode) {
flog_warn(EC_LIB_LIBYANG, "%s: lyd_new_path() failed",
__func__);
return NB_ERR;
}
/*
* We can remove the following two lines once we depend on
* libyang-v0.16-r2, which has the LYD_PATH_OPT_NOPARENTRET flag for
* lyd_new_path().
*/
dnode = yang_dnode_get(dnode, xpath);
assert(dnode);
/*
* Create a linked list to sort the data nodes starting from the root.