One document matched: draft-ietf-ldapext-c-api-psearch-00.txt
LDAPEXT Working Group M. Smith
INTERNET-DRAFT Netscape Communications Corp.
Intended Category: Standards Track
Expires: 12 September 1998
12 March 1998
LDAP C API Extensions for Persistent Search
<draft-ietf-ldapext-c-api-psearch-00.txt>
1. Status of this Memo
This draft document will be submitted to the RFC Editor as a Standards
Track document. Distribution of this memo is unlimited. Technical dis-
cussion of this document will take place on the IETF LDAP Extension
Working Group mailing list <ietf-ldapext@netscape.com>. Please send
editorial comments directly to the author <mcs@netscape.com>.
This document is an Internet-Draft. Internet-Drafts are working docu-
ments of the Internet Engineering Task Force (IETF), its areas, and its
working groups. Note that other groups may also distribute working
documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference material
or to cite them other than as ``work in progress.''
To learn the current status of any Internet-Draft, please check the
``1id-abstracts.txt'' listing contained in the Internet-Drafts Shadow
Directories on ds.internic.net (US East Coast), nic.nordu.net (Europe),
ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific Rim).
Copyright (C) The Internet Society (1998). All Rights Reserved.
Please see the Copyright section near the end of this document for more
information.
Expires: 12 September 1998 [Page 1]
INTERNET-DRAFT LDAP C Persistent Search API 12 March 1998
2. Abstract
This document defines extensions to the LDAP C API to support the LDAP
Persistent Search Simple Change Notification Mechanism. More specifi-
cally, this document defines functions to create Persistent Search con-
trols and to parse Entry Change Notification controls.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", and "MAY" in this document are
to be interpreted as described in RFC 2119 [KEYWORDS].
3. Background and Intended Usage
The LDAP C API [CAPI] defines a C language application programming
interface (API) to the Lightweight Directory Access Protocol [LDAP].
This document defines extensions to that API to support an optional LDAP
extension for change notification called Persistent Search [PSEARCH].
Persistent Search is an extension to the LDAPv3 [LDAP] search operation
that provides a simple mechanism by which an LDAP client can receive
notification of changes that occur in an LDAP server. The mechanism is
designed to be very flexible yet easy for clients and servers to imple-
ment.
LDAP clients that wish to use the Persistent Search feature SHOULD first
check the supportedControls attribute in a server's rootDSE to determine
if a value identical to the Persistent Search control's OID is present.
If the OID is present and the client chooses to use the Persistent
Search feature, it MUST construct a Persistent Search control and send
it to the server within an LDAP searchRequest message. Clients applica-
tions MAY use the ldap_create_persistentsearch_control() function des-
ribed in this document to create a Persistent Search control.
If requested in the Persistent Search control, servers MUST return an
Entry Change Notification control to the client with each SearchResul-
tEntry message returned due to an entry being added, deleted, or modi-
fied in the server. An Entry Change Notification control MAY be parsed
to extract its contents by using the ldap_parse_entrychange_control()
function described in this document.
4. Creating a Persistent Search Control
The ldap_create_persistentsearch_control() function MAY be used to
create a Persistent Search control which MAY in turn be passed to the
ldap_search_ext() or ldap_search_ext_s() functions described in [CAPI]
Expires: 12 September 1998 [Page 2]
INTERNET-DRAFT LDAP C Persistent Search API 12 March 1998
to request a Persistent Search.
int ldap_create_persistentsearch_control(
LDAP *ld,
int changetypes,
int changesonly,
int return_echg_ctls,
char ctl_iscritical,
LDAPControl **ctrlp
);
#define LDAP_CHANGETYPE_ADD 1
#define LDAP_CHANGETYPE_DELETE 2
#define LDAP_CHANGETYPE_MODIFY 4
#define LDAP_CHANGETYPE_MODDN 8
#define LDAP_CHANGETYPE_ANY (1|2|4|8)
#define LDAP_CONTROL_PERSISTENTSEARCH "2.16.840.1.113730.3.4.3"
The parameters to the ldap_create_persistentsearch_control() function
are:
ld An LDAP session handle, as obtained from a call to
ldap_init().
changetypes A bit-sensitive field that indicates which kinds of
changes the client wants to be informed about. Its
value should be LDAP_CHANGETYPE_ANY, or any logical-OR
combination of LDAP_CHANGETYPE_ADD,
LDAP_CHANGETYPE_DELETE, LDAP_CHANGETYPE_MODIFY, and
LDAP_CHANGETYPE_MODDN. This field corresponds to the
changeType element of the BER-encoded PersistentSearch
control value itself.
changesonly A Boolean field that indicates whether the client
wishes to only receive searchResultEntry messages for
entries that have been changed. If non-zero, only
entries that result from changes are returned; other-
wise, all of the static entries that match the search
criteria are returned before the server begins change
notification. This field corresponds to the change-
sOnly element of the BER-encoded PersistentSearch con-
trol value itself.
return_echg_ctls A Boolean field that indicates whether the server
should send back an Entry Change Notification control
with each searchResultEntry that is returned due to a
change to an entry. If non-zero, Entry Change
Expires: 12 September 1998 [Page 3]
INTERNET-DRAFT LDAP C Persistent Search API 12 March 1998
Notification controls are requested; if zero, they are
not. This field corresponds to the returnECs element
of the BER-encoded PersistentSearch control value
itself.
ctl_iscritical Used to set the ctl_iscritical flag within the result-
ing LDAPControl structure. Pass a non-zero value to
indicate that the Persistent Search control is critical
and a zero value if it is not.
ctrlp A result parameter that will be assigned the address of
an LDAPControl structure that contains the Persistent
Search control created by this function. The memory
occupied by the LDAPControl structure should be freed
when it is no longer in use by calling
ldap_control_free().
The ldap_create_persistentsearch_control() function returns an LDAP
error code to indicate success or failure (LDAP_SUCCESS if all goes
well).
5. Parsing an Entry Change Notification Control
When an application receives entries that contain Entry Change Notifica-
tion controls, it SHOULD use the ldap_parse_entrychange_control() func-
tion to look for and parse the control.
int ldap_parse_entrychange_control(
LDAP *ld,
LDAPControl **ctrls,
int *chgtypep,
char **prevdnp,
int *chgnumpresentp,
long *chgnump
);
#define LDAP_CONTROL_ENTRYCHANGE "2.16.840.1.113730.3.4.7"
The parameters to the ldap_parse_entrychange_control() function are:
ld An LDAP session handle.
ctrls The address of a NULL-terminated array of LDAPControl
structures, typically obtained by a call to
ldap_get_entry_controls().
Expires: 12 September 1998 [Page 4]
INTERNET-DRAFT LDAP C Persistent Search API 12 March 1998
chgtypep This result parameter is filled in with one of the fol-
lowing values to indicate the type of change that was
made that caused the entry to be returned:
LDAP_CHANGETYPE_ADD (1), LDAP_CHANGETYPE_DELETE (2),
LDAP_CHANGETYPE_MODIFY (4), or LDAP_CHANGETYPE_MODDN
(8). If this parameter is NULL, the change type infor-
mation is not returned. The value for this result
parameter is pulled from the changeType element of the
BER-encoded EntryChangeNotification control value
itself.
prevdnp This result parameter is filled in with the DN the
entry had before it was renamed and/or moved by a
modifyDN operation. It is set to NULL for other types
of changes. If this parameter is NULL, the previous DN
information is not returned. The value for this result
parameter is pulled from the previousDN element of the
BER-encoded EntryChangeNotification control value
itself.
chgnumpresentp This result parameter is filled in with a non-zero
value if a change number was returned in the
EntryChangeNotification control (the change number is
optional and servers MAY choose not to return it). If
this parameter is NULL, no indication of whether the
change number was present is returned.
chgnump This result parameter is filled in with the change
number if one was returned in the EntryChangeNotifica-
tion control (chgnumpresentp will be filled in with a
non-zero value if this parameter is filled in). If
this parameter is NULL, the change number is not
returned. The value for this result parameter is
pulled from the optional changeNumber element of the
BER-encoded EntryChangeNotification control value
itself.
The ldap_parse_entrychange_control() function returns an LDAP error code
that indicates whether an EntryChangeNotification control was found and
whether the parsing was successful. LDAP_SUCCESS is returned if all
goes well, LDAP_CONTROL_NOT_FOUND is returned if the ctrls array does
not include an EntryChangeNotification control, and another LDAP error
code that is defined in [CAPI] is returned if a parsing error or other
problem occurs.
Expires: 12 September 1998 [Page 5]
INTERNET-DRAFT LDAP C Persistent Search API 12 March 1998
6. Security Considerations
In some situations, it may be important to prevent general exposure of
information about the changes that are made to an an LDAP server.
Clients should take care to not abuse the Persistent Search feature and
should be prepared for servers to refuse to service a particular Per-
sistent Search request due to access control or other site-defined poli-
cies.
Please see the protocol extension document [PSEARCH] for a discussion of
related security considerations.
7. Copyright
Copyright (C) The Internet Society (1998). All Rights Reserved.
others, and derivative works that comment on or otherwise explain it or
assist in its implementation may be prepared, copied, published and dis-
tributed, in whole or in part, without restriction of any kind, provided
that the above copyright notice and this paragraph are included on all
such copies and derivative works. However, this document itself may not
be modified in any way, such as by removing the copyright notice or
references to the Internet Society or other Internet organizations,
except as needed for the purpose of developing Internet standards in
which case the procedures for copyrights defined in the Internet Stan-
dards process must be followed, or as required to translate it into
languages other than English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an "AS
IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK
FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FIT-
NESS FOR A PARTICULAR PURPOSE.
8. Bibliography
[CAPI] M. Smith, T. Howes, A. Herron, C. Weider, M. Wahl, A. Anan-
tha, "The C LDAP Application Program Interface", INTERNET-
DRAFT, <draft-ietf-ldapext-ldap-c-api-00.txt>, March 1998.
Expires: 12 September 1998 [Page 6]
INTERNET-DRAFT LDAP C Persistent Search API 12 March 1998
[KEYWORDS] S. Bradner, "Key words for use in RFCs to Indicate Require-
ment Levels", RFC 2119, March 1997.
[LDAP] M. Wahl, T. Howes, S. Kille, "Lightweight Directory Access
Protocol (v3)", RFC 2251, December 1997.
[PSEARCH] M. Smith, G. Good, T. Howes, R. Weltman, "Persistent Search:
A Simple LDAP Change Notification Mechanism", INTERNET-DRAFT
<draft-ietf-ldapext-psearch-00.txt>, March 1998.
9. Author's Address
Mark Smith
Netscape Communications Corp.
501 E. Middlefield Rd., Mailstop MV068
Mountain View, CA 94043
USA
+1 650 937-3477
mcs@netscape.com
Expires: 12 September 1998 [Page 7]
1. Status of this Memo............................................1
2. Abstract.......................................................2
3. Background and Intended Usage..................................2
4. Creating a Persistent Search Control...........................2
5. Parsing an Entry Change Notification Control...................4
6. Security Considerations........................................6
7. Copyright......................................................6
8. Bibliography...................................................6
9. Author's Address...............................................7
| PAFTECH AB 2003-2026 | 2026-04-24 02:44:06 |