diff --git a/lib/northbound_oper.c b/lib/northbound_oper.c index c27fe3c019..626c37082e 100644 --- a/lib/northbound_oper.c +++ b/lib/northbound_oper.c @@ -394,10 +394,17 @@ static enum nb_error nb_op_xpath_to_trunk(const char *xpath_in, char **xpath_out struct lyd_node **trunk) { char *xpath = NULL; + uint32_t llopts = 0; enum nb_error ret = NB_OK; LY_ERR err; + /* + * Try to instantiate ever shortened paths until one succeeds, suppress + * libyang logs for the expected errors along the way. + */ darr_in_strdup(xpath, xpath_in); + + ly_temp_log_options(&llopts); for (;;) { err = lyd_new_path2(NULL, ly_native_ctx, xpath, NULL, 0, 0, LYD_NEW_PATH_UPDATE, NULL, trunk); @@ -409,6 +416,8 @@ static enum nb_error nb_op_xpath_to_trunk(const char *xpath_in, char **xpath_out break; darr_strlen_fixup(xpath); } + ly_temp_log_options(NULL); + if (ret == NB_OK) *xpath_out = xpath; else @@ -894,9 +903,12 @@ static enum nb_error nb_op_iter_leaf(struct nb_op_yield_state *ys, return nb_op_libyang_cb_get(ys, nb_node, ni->inner, xpath); /* Check for new simple get */ - if (nb_node->cbs.get) + if (nb_node->cbs.get) { /* XXX: need to run through translator */ + DEBUGD(&nb_dbg_cbs_state, "northbound callback (get): xpath [%s] list_entry [%p]", + xpath, ni->list_entry); return nb_node->cbs.get(nb_node, ni->list_entry, ni->inner); + } data = nb_callback_get_elem(nb_node, xpath, ni->list_entry); if (data == NULL) @@ -932,9 +944,12 @@ static enum nb_error nb_op_iter_leaflist(struct nb_op_yield_state *ys, return NB_OK; /* Check for new simple get */ - if (nb_node->cbs.get) + if (nb_node->cbs.get) { /* XXX: need to run through translator */ + DEBUGD(&nb_dbg_cbs_state, "northbound callback (get): xpath [%s] list_entry [%p]", + xpath, ni->list_entry); return nb_node->cbs.get(nb_node, ni->list_entry, ni->inner); + } if (CHECK_FLAG(nb_node->flags, F_NB_NODE_HAS_GET_TREE)) /* XXX: need to run through translator */