Michael Ströder wrote:
On 12/15/22 20:52, Quanah Gibson-Mount wrote:
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 );