Hi all,

Thanks for your all replies here. So, do you know if there is any plan to have this feature implemented on the server side?



On Fri, Dec 16, 2022, 18:23 Howard Chu <hyc@symas.com> wrote:
Michael Ströder wrote:
> On 12/15/22 20:52, Quanah Gibson-Mount wrote:
>>> https://bugs.openldap.org/show_bug.cgi?id=8983
>>
>> That bug clearly notes it is implemented in OpenLDAP 2.5+
>
> Hmm, as I read ITS#8983 the control encoding has been implemented in libldap (see libraries/libldap/psearchctrl.c).
>
> But the original poster asked about the server-side implementation of draft-ietf-ldapext-psearch-03. And AFAIK this is *not* implemented in OpenLDAP.

git grep shows it is present in the slapd source, but indeed, it is only for the replication consumer.

head> git grep LDAP_CONTROL_PERSIST
clients/tools/common.c: { LDAP_CONTROL_PERSIST_ENTRY_CHANGE_NOTICE,                     TOOL_SEARCH,    print_psearch },
clients/tools/common.c:         case LDAP_CONTROL_PERSIST_ENTRY_CHANGE_ADD:
clients/tools/common.c:         case LDAP_CONTROL_PERSIST_ENTRY_CHANGE_DELETE:
clients/tools/common.c:         case LDAP_CONTROL_PERSIST_ENTRY_CHANGE_MODIFY:
clients/tools/common.c:         case LDAP_CONTROL_PERSIST_ENTRY_CHANGE_RENAME:
clients/tools/ldapsearch.c:                     c[i].ldctl_oid = LDAP_CONTROL_PERSIST_REQUEST;
include/ldap.h:#define LDAP_CONTROL_PERSIST_REQUEST                             "2.16.840.1.113730.3.4.3"
include/ldap.h:#define LDAP_CONTROL_PERSIST_ENTRY_CHANGE_NOTICE "2.16.840.1.113730.3.4.7"
include/ldap.h:#define LDAP_CONTROL_PERSIST_ENTRY_CHANGE_ADD            0x1
include/ldap.h:#define LDAP_CONTROL_PERSIST_ENTRY_CHANGE_DELETE 0x2
include/ldap.h:#define LDAP_CONTROL_PERSIST_ENTRY_CHANGE_MODIFY 0x4
include/ldap.h:#define LDAP_CONTROL_PERSIST_ENTRY_CHANGE_RENAME 0x8
libraries/libldap/psearchctrl.c:                ld->ld_errno = ldap_control_create( LDAP_CONTROL_PERSIST_REQUEST,
libraries/libldap/psearchctrl.c:                                        LDAP_CONTROL_PERSIST_ENTRY_CHANGE_ADD (1),
libraries/libldap/psearchctrl.c:                                        LDAP_CONTROL_PERSIST_ENTRY_CHANGE_DELETE (2),
libraries/libldap/psearchctrl.c:                                        LDAP_CONTROL_PERSIST_ENTRY_CHANGE_MODIFY (4), or
libraries/libldap/psearchctrl.c:                                        LDAP_CONTROL_PERSIST_ENTRY_CHANGE_RENAME (8).
servers/slapd/syncrepl.c:                       c[0].ldctl_oid = LDAP_CONTROL_PERSIST_REQUEST;
servers/slapd/syncrepl.c:                       rc = ldap_create_persistentsearch_control_value( si->si_ld, LDAP_CONTROL_PERSIST_ENTRY_CHANGE_ADD,
servers/slapd/syncrepl.c:                                               rctrlp = ldap_control_find( LDAP_CONTROL_PERSIST_ENTRY_CHANGE_NOTICE, rctrls, &next );

--
  -- Howard Chu
  CTO, Symas Corp.           http://www.symas.com
  Director, Highland Sun     http://highlandsun.com/hyc/
  Chief Architect, OpenLDAP  http://www.openldap.org/project/