diff options
Diffstat (limited to 'lib/yang.h')
| -rw-r--r-- | lib/yang.h | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/lib/yang.h b/lib/yang.h index 2c18017af2..3259189e98 100644 --- a/lib/yang.h +++ b/lib/yang.h @@ -311,6 +311,22 @@ extern void yang_dnode_get_path(const struct lyd_node *dnode, char *xpath, size_t xpath_len); /* + * Return the schema name of the given libyang data node. + * + * dnode + * libyang data node. + * + * xpath_fmt + * Optional XPath expression (absolute or relative) to specify a different + * data node to operate on in the same data tree. + * + * Returns: + * Schema name of the libyang data node. + */ +extern const char *yang_dnode_get_schema_name(const struct lyd_node *dnode, + const char *xpath_fmt, ...); + +/* * Find a libyang data node by its YANG data path. * * dnode @@ -395,15 +411,37 @@ extern void yang_dnode_change_leaf(struct lyd_node *dnode, const char *value); extern void yang_dnode_set_entry(const struct lyd_node *dnode, void *entry); /* - * Find the closest data node that contains an user pointer and return it. + * Find the user pointer associated to the given libyang data node. + * + * The data node is traversed by following the parent pointers until an user + * pointer is found or until the root node is reached. * * dnode * libyang data node to operate on. * + * abort_if_not_found + * When set to true, abort the program if no user pointer is found. + * + * As a rule of thumb, this parameter should be set to true in the following + * scenarios: + * - Calling this function from any northbound configuration callback during + * the NB_EV_APPLY phase. + * - Calling this function from a 'delete' northbound configuration callback + * during any phase. + * + * In both the above cases, the libyang data node should contain an user + * pointer except when there's a bug in the code, in which case it's better + * to abort the program right away and eliminate the need for unnecessary + * NULL checks. + * + * In all other cases, this parameter should be set to false and the caller + * should check if the function returned NULL or not. + * * Returns: * User pointer if found, NULL otherwise. */ -extern void *yang_dnode_get_entry(const struct lyd_node *dnode); +extern void *yang_dnode_get_entry(const struct lyd_node *dnode, + bool abort_if_not_found); /* * Create a new libyang data node. |
