Collect input from user

It depends on how you implemented your data provider callbacks.

Let’s take the use examples.confd/intro/5-c_stats as an example:

# show arpentries arpe
IP             IFNAME  HWADDR             PERMANENT  PUBLISHED  
----------------------------------------------------------------
172.16.171.2   eth1    00:50:56:f7:9d:e2  false      false      
172.16.171.98  eth1    bb:bb:bb:bb:bb:bb  true       false      
172.16.171.99  eth1    aa:aa:aa:aa:aa:aa  true       false 

TRACE CALL data get_next(thandle=6, /arpentries/arpe, -1) --> CONFD_OK
TRACE CALL data get_next(thandle=6, /arpentries/arpe, -1) --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.2 eth1}/hwaddr) ("00:50:56:f7:9d:e2")  --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.2 eth1}/permanent) (false)  --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.2 eth1}/published) (false)  --> CONFD_OK
TRACE CALL data get_next(thandle=6, /arpentries/arpe, 13923968) --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.98 eth1}/hwaddr) ("bb:bb:bb:bb:bb:bb")  --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.98 eth1}/permanent) (true)  --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.98 eth1}/published) (false)  --> CONFD_OK
TRACE CALL data get_next(thandle=6, /arpentries/arpe, 13947088) --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.99 eth1}/hwaddr) ("aa:aa:aa:aa:aa:aa")  --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.99 eth1}/permanent) (true)  --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.99 eth1}/published) (false)  --> CONFD_OK
TRACE CALL data get_next(thandle=6, /arpentries/arpe, 0) --> CONFD_OK

# show arpentries arpe | select permanent true | select published false | match-all
IP             IFNAME  HWADDR             PERMANENT  PUBLISHED  
----------------------------------------------------------------
172.16.171.98  eth1    bb:bb:bb:bb:bb:bb  true       false      
172.16.171.99  eth1    aa:aa:aa:aa:aa:aa  true       false 

TRACE CALL data get_next(thandle=6, /arpentries/arpe, -1) --> CONFD_OK
TRACE CALL data get_next(thandle=6, /arpentries/arpe, -1) --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.2 eth1}/permanent) (false)  --> CONFD_OK
TRACE CALL data get_next(thandle=6, /arpentries/arpe, 13947088) --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.98 eth1}/permanent) (true)  --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.98 eth1}/published) (false)  --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.98 eth1}/hwaddr) ("bb:bb:bb:bb:bb:bb")  --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.98 eth1}/permanent) (true)  --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.98 eth1}/published) (false)  --> CONFD_OK
TRACE CALL data get_next(thandle=6, /arpentries/arpe, 13949312) --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.99 eth1}/permanent) (true)  --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.99 eth1}/published) (false)  --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.99 eth1}/hwaddr) ("aa:aa:aa:aa:aa:aa")  --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.99 eth1}/permanent) (true)  --> CONFD_OK
TRACE CALL data get_elem(thandle=6,/arpentries/arpe{172.16.171.99 eth1}/published) (false)  --> CONFD_OK
TRACE CALL data get_next(thandle=6, /arpentries/arpe, 0) --> CONFD_OK

As described by How to add the support of the get_next_object() callback to the 5-c_stats example? with the get_next_object() callback implemented ConfD will ask for the entire list. (you can chunk it in your get_next_object() callback if it is a large list):

# show arpentries
IP             IFNAME  HWADDR             PERMANENT  PUBLISHED  
----------------------------------------------------------------
172.16.171.2   eth1    00:50:56:f7:9d:e2  false      false      
172.16.171.98  eth1    bb:bb:bb:bb:bb:bb  true       false      
172.16.171.99  eth1    aa:aa:aa:aa:aa:aa  true       false   

TRACE CALL data get_next(thandle=16, /arpentries/arpe, -1) --> CONFD_OK
TRACE CALL data get_next_object(thandle=16, /arpentries/arpe, -1) --> CONFD_OK

# show arpentries arpe | select permanent true | select published false | match-all
IP             IFNAME  HWADDR             PERMANENT  PUBLISHED  
----------------------------------------------------------------
172.16.171.98  eth1    bb:bb:bb:bb:bb:bb  true       false      
172.16.171.99  eth1    aa:aa:aa:aa:aa:aa  true       false 

TRACE CALL data get_next(thandle=16, /arpentries/arpe, -1) --> CONFD_OK
TRACE CALL data get_next_object(thandle=16, /arpentries/arpe, -1) --> CONFD_OK