mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-13 09:56:05 +00:00
lib: fix oper data leaf creation
When creating an initial tree trunk for oper data walk, if the xpath represents a leaf, the leaf is created with an incorrect empty value. If it doesn't actually exist in daemon's oper data, its value is not overwritten later and an empty value is returned in the result. For example, when requesting `/frr-interface:lib/interface[name='eth0']/description`, the result is: ``` { "frr-interface:lib": { "interface": [ { "name": "eth0", "description": "" } ] } } ``` instead of an empty JSON that it should be. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
This commit is contained in:
parent
05c6081099
commit
10eac0a54d
@ -515,8 +515,18 @@ static enum nb_error nb_op_ys_init_node_infos(struct nb_op_yield_state *ys)
|
||||
|
||||
/* Move up to the container if on a leaf currently. */
|
||||
if (node &&
|
||||
!CHECK_FLAG(node->schema->nodetype, LYS_CONTAINER | LYS_LIST))
|
||||
!CHECK_FLAG(node->schema->nodetype, LYS_CONTAINER | LYS_LIST)) {
|
||||
struct lyd_node *leaf = node;
|
||||
|
||||
node = &node->parent->node;
|
||||
|
||||
/*
|
||||
* If the leaf is not a key, delete it, because it has a wrong
|
||||
* empty value.
|
||||
*/
|
||||
if (!lysc_is_key(leaf->schema))
|
||||
lyd_free_tree(leaf);
|
||||
}
|
||||
assert(!node ||
|
||||
CHECK_FLAG(node->schema->nodetype, LYS_CONTAINER | LYS_LIST));
|
||||
if (!node)
|
||||
|
Loading…
Reference in New Issue
Block a user