ConfD User Community

Find_next callback being called although it wasn't define


#1

Hi,

According to the user guide the callback of find_next is optional:
This optional callback can be registered to optimize cases where ConfD wants to start a list traversal
at some other point than at the first entry of the list, or otherwise make a “jump” in a list traversal. If
the callback is not registered, ConfD will use a sequence of get_next() calls to find the desired
list entry.
In my application I didn’t define this callback but I got the following error:
TRACE CALL data find_next(thandle=35, /routing/control-plane-protocols/control-plane-protocol, next, {eci-bgp:bgp master})DEBUG No find_next() callback installed

–> CONFD_ERR
DEBUG No find_next() callback installed

Please assist.

Thanks,

Evyatar


#2

You can request that find_next() is used, by returning -1 for the ‘next’ value from your get_next() callback - from the confd_lib_dp(3) manual page:

   int confd_data_reply_next_key(struct confd_trans_ctx *tctx,
                                 const confd_value_t *v,
                                 int num_vals_in_key, long next);
   ...
   Passing the value -1 for _next_ has a special meaning. It tells ConfD
   that we want the next request for this list traversal to use the
   find_next() (or find_next_object()) callback instead of get_next() (or
   get_next_object()).

If you do this (and I believe that you did, but presumably unintentionally), you obviously need to have registered find_next() (and/or find_next_object()).