xref: /netbsd-src/external/bsd/openldap/dist/doc/drafts/draft-chu-ldap-xordered-xx.txt (revision d11b170b9000ada93db553723522a63d5deac310)
1*d11b170bStron
2*d11b170bStron
3*d11b170bStron
4*d11b170bStronNetwork Working Group                                             H. Chu
5*d11b170bStronInternet-Draft                                               Symas Corp.
6*d11b170bStronIntended status: Informational                                  May 2006
7*d11b170bStronExpires: November 2, 2006
8*d11b170bStron
9*d11b170bStron
10*d11b170bStron                   Ordered Entries and Values in LDAP
11*d11b170bStron                     draft-chu-ldap-xordered-00.txt
12*d11b170bStron
13*d11b170bStronStatus of this Memo
14*d11b170bStron
15*d11b170bStron   By submitting this Internet-Draft, each author represents that any
16*d11b170bStron   applicable patent or other IPR claims of which he or she is aware
17*d11b170bStron   have been or will be disclosed, and any of which he or she becomes
18*d11b170bStron   aware will be disclosed, in accordance with Section 6 of BCP 79.
19*d11b170bStron
20*d11b170bStron   Internet-Drafts are working documents of the Internet Engineering
21*d11b170bStron   Task Force (IETF), its areas, and its working groups.  Note that
22*d11b170bStron   other groups may also distribute working documents as Internet-
23*d11b170bStron   Drafts.
24*d11b170bStron
25*d11b170bStron   Internet-Drafts are draft documents valid for a maximum of six months
26*d11b170bStron   and may be updated, replaced, or obsoleted by other documents at any
27*d11b170bStron   time.  It is inappropriate to use Internet-Drafts as reference
28*d11b170bStron   material or to cite them other than as "work in progress."
29*d11b170bStron
30*d11b170bStron   The list of current Internet-Drafts can be accessed at
31*d11b170bStron   http://www.ietf.org/ietf/1id-abstracts.txt.
32*d11b170bStron
33*d11b170bStron   The list of Internet-Draft Shadow Directories can be accessed at
34*d11b170bStron   http://www.ietf.org/shadow.html.
35*d11b170bStron
36*d11b170bStron   This Internet-Draft will expire on November 2, 2006.
37*d11b170bStron
38*d11b170bStronCopyright Notice
39*d11b170bStron
40*d11b170bStron   Copyright (C) The Internet Society (2006).
41*d11b170bStron
42*d11b170bStron
43*d11b170bStron
44*d11b170bStron
45*d11b170bStron
46*d11b170bStron
47*d11b170bStron
48*d11b170bStron
49*d11b170bStron
50*d11b170bStron
51*d11b170bStron
52*d11b170bStron
53*d11b170bStron
54*d11b170bStron
55*d11b170bStronChu                     Expires November 2, 2006                [Page 1]
56*d11b170bStron
57*d11b170bStronInternet-Draft           LDAP Ordering Extension                May 2006
58*d11b170bStron
59*d11b170bStron
60*d11b170bStronAbstract
61*d11b170bStron
62*d11b170bStron   As LDAP is used more extensively for managing various kinds of data,
63*d11b170bStron   one often encounters a need to preserve both the ordering and the
64*d11b170bStron   content of data, despite the inherently unordered structure of
65*d11b170bStron   entries and attribute values in the directory.  This document
66*d11b170bStron   describes a scheme to attach ordering information to attributes in a
67*d11b170bStron   directory so that the ordering may be preserved and propagated to
68*d11b170bStron   other LDAP applications.
69*d11b170bStron
70*d11b170bStron
71*d11b170bStronTable of Contents
72*d11b170bStron
73*d11b170bStron   1.          Introduction . . . . . . . . . . . . . . . . . . . . .  3
74*d11b170bStron   2.          Conventions  . . . . . . . . . . . . . . . . . . . . .  4
75*d11b170bStron   3.          Ordering Extension . . . . . . . . . . . . . . . . . .  5
76*d11b170bStron   3.1.        Overview . . . . . . . . . . . . . . . . . . . . . . .  5
77*d11b170bStron   3.2.        Encoding . . . . . . . . . . . . . . . . . . . . . . .  5
78*d11b170bStron   3.3.        Ordering Properties  . . . . . . . . . . . . . . . . .  6
79*d11b170bStron   4.          Examples . . . . . . . . . . . . . . . . . . . . . . .  8
80*d11b170bStron   4.1.        Sample Schema  . . . . . . . . . . . . . . . . . . . .  8
81*d11b170bStron   4.2.        Ordered Values . . . . . . . . . . . . . . . . . . . .  8
82*d11b170bStron   4.3.        Ordered Siblings . . . . . . . . . . . . . . . . . . . 10
83*d11b170bStron   5.          Security Considerations  . . . . . . . . . . . . . . . 13
84*d11b170bStron   6.          Normative References . . . . . . . . . . . . . . . . . 14
85*d11b170bStron   Appendix A. IANA Considerations  . . . . . . . . . . . . . . . . . 15
86*d11b170bStron               Author's Address . . . . . . . . . . . . . . . . . . . 16
87*d11b170bStron               Intellectual Property and Copyright Statements . . . . 17
88*d11b170bStron
89*d11b170bStron
90*d11b170bStron
91*d11b170bStron
92*d11b170bStron
93*d11b170bStron
94*d11b170bStron
95*d11b170bStron
96*d11b170bStron
97*d11b170bStron
98*d11b170bStron
99*d11b170bStron
100*d11b170bStron
101*d11b170bStron
102*d11b170bStron
103*d11b170bStron
104*d11b170bStron
105*d11b170bStron
106*d11b170bStron
107*d11b170bStron
108*d11b170bStron
109*d11b170bStron
110*d11b170bStron
111*d11b170bStronChu                     Expires November 2, 2006                [Page 2]
112*d11b170bStron
113*d11b170bStronInternet-Draft           LDAP Ordering Extension                May 2006
114*d11b170bStron
115*d11b170bStron
116*d11b170bStron1.  Introduction
117*d11b170bStron
118*d11b170bStron   Information in LDAP directories is usually handled by applications in
119*d11b170bStron   the form of ordered lists, which tends to encourage application
120*d11b170bStron   developers to assume they are maintained as such, i.e., it is assumed
121*d11b170bStron   that information stored in a particular order will always be
122*d11b170bStron   retrieved and presented in that same order.  The fact that directory
123*d11b170bStron   attributes actually store sets of values, which are inherently
124*d11b170bStron   unordered, often causes grief to users migrating their data into
125*d11b170bStron   LDAP.  Similar concerns arise over the order in which entries
126*d11b170bStron   themselves are stored and retrieved from the directory.
127*d11b170bStron
128*d11b170bStron   This document describes a schema extension that may be used in LDAP
129*d11b170bStron   attribute definitions to store ordering information along with the
130*d11b170bStron   attribute values, so that the ordering can be recovered when
131*d11b170bStron   retrieved by an LDAP client.  The extension also provides automated
132*d11b170bStron   management of this ordering information to ease manipulation of the
133*d11b170bStron   ordered values.
134*d11b170bStron
135*d11b170bStron
136*d11b170bStron
137*d11b170bStron
138*d11b170bStron
139*d11b170bStron
140*d11b170bStron
141*d11b170bStron
142*d11b170bStron
143*d11b170bStron
144*d11b170bStron
145*d11b170bStron
146*d11b170bStron
147*d11b170bStron
148*d11b170bStron
149*d11b170bStron
150*d11b170bStron
151*d11b170bStron
152*d11b170bStron
153*d11b170bStron
154*d11b170bStron
155*d11b170bStron
156*d11b170bStron
157*d11b170bStron
158*d11b170bStron
159*d11b170bStron
160*d11b170bStron
161*d11b170bStron
162*d11b170bStron
163*d11b170bStron
164*d11b170bStron
165*d11b170bStron
166*d11b170bStron
167*d11b170bStronChu                     Expires November 2, 2006                [Page 3]
168*d11b170bStron
169*d11b170bStronInternet-Draft           LDAP Ordering Extension                May 2006
170*d11b170bStron
171*d11b170bStron
172*d11b170bStron2.  Conventions
173*d11b170bStron
174*d11b170bStron   Imperative keywords defined in [RFC2119] are used in this document,
175*d11b170bStron   and carry the meanings described there.
176*d11b170bStron
177*d11b170bStron
178*d11b170bStron
179*d11b170bStron
180*d11b170bStron
181*d11b170bStron
182*d11b170bStron
183*d11b170bStron
184*d11b170bStron
185*d11b170bStron
186*d11b170bStron
187*d11b170bStron
188*d11b170bStron
189*d11b170bStron
190*d11b170bStron
191*d11b170bStron
192*d11b170bStron
193*d11b170bStron
194*d11b170bStron
195*d11b170bStron
196*d11b170bStron
197*d11b170bStron
198*d11b170bStron
199*d11b170bStron
200*d11b170bStron
201*d11b170bStron
202*d11b170bStron
203*d11b170bStron
204*d11b170bStron
205*d11b170bStron
206*d11b170bStron
207*d11b170bStron
208*d11b170bStron
209*d11b170bStron
210*d11b170bStron
211*d11b170bStron
212*d11b170bStron
213*d11b170bStron
214*d11b170bStron
215*d11b170bStron
216*d11b170bStron
217*d11b170bStron
218*d11b170bStron
219*d11b170bStron
220*d11b170bStron
221*d11b170bStron
222*d11b170bStron
223*d11b170bStronChu                     Expires November 2, 2006                [Page 4]
224*d11b170bStron
225*d11b170bStronInternet-Draft           LDAP Ordering Extension                May 2006
226*d11b170bStron
227*d11b170bStron
228*d11b170bStron3.  Ordering Extension
229*d11b170bStron
230*d11b170bStron3.1.  Overview
231*d11b170bStron
232*d11b170bStron   The "X-ORDERED" schema extension is added to an
233*d11b170bStron   AttributeTypeDescription to signify the use of this ordering
234*d11b170bStron   mechanism.  The extension has two variants, selected by either the
235*d11b170bStron   'VALUES' or 'SIBLINGS' qdstrings.  In general this extension is only
236*d11b170bStron   compatible with AttributeTypes that have a string-oriented syntax.
237*d11b170bStron
238*d11b170bStron   The "X-ORDERED 'VALUES'" extension is used with multi-valued
239*d11b170bStron   attributes to maintain the order of multiple values of a given
240*d11b170bStron   attribute.  For example, this feature is useful for storing data such
241*d11b170bStron   as access control rules, which must be evaluated in a specific order.
242*d11b170bStron   If the access control information is stored in a multi-valued
243*d11b170bStron   attribute without a means of preserving the the order of the rules,
244*d11b170bStron   the access control rules cannot be evaluated properly.  As the use of
245*d11b170bStron   LDAP to store security policy and access control information becomes
246*d11b170bStron   more prevalent, the necessity of this feature continues to grow.
247*d11b170bStron
248*d11b170bStron   The "X-ORDERED 'SIBLINGS'" extension is used with single-valued
249*d11b170bStron   attributes to maintain the order of all the onelevel children of a
250*d11b170bStron   parent entry.  That is, ordering will be maintained for all the child
251*d11b170bStron   entries whose RDNs are all of the same AttributeType.  The motivation
252*d11b170bStron   for this feature is much the same as for the 'VALUES' feature.
253*d11b170bStron   Sometimes the information with the ordering dependency is too complex
254*d11b170bStron   or highly structured to be conveniently stored in values of a multi-
255*d11b170bStron   valued attribute.  For example, one could store a prioritized list of
256*d11b170bStron   servers as a set of separate entries, each entry containing separate
257*d11b170bStron   attributes for a URL, a set of authentication credentials, and
258*d11b170bStron   various other parameters.  Using the 'SIBLINGS' feature with the
259*d11b170bStron   attribute in the entries' RDNs would ensure that when obtaining the
260*d11b170bStron   list of these entries, the list is returned in the intended order.
261*d11b170bStron
262*d11b170bStron3.2.  Encoding
263*d11b170bStron
264*d11b170bStron   Ordering information is encoded by prepending a value's ordinal index
265*d11b170bStron   to each value, enclosed in braces.  The following BNF specifies the
266*d11b170bStron   encoding.  It uses elements defined in [RFC2252].
267*d11b170bStron
268*d11b170bStron      d = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9"
269*d11b170bStron
270*d11b170bStron      numericstring = 1*d
271*d11b170bStron
272*d11b170bStron      ordering-prefix = "{" numericstring "}"
273*d11b170bStron
274*d11b170bStron      value = <any sequence of octets>
275*d11b170bStron
276*d11b170bStron
277*d11b170bStron
278*d11b170bStron
279*d11b170bStronChu                     Expires November 2, 2006                [Page 5]
280*d11b170bStron
281*d11b170bStronInternet-Draft           LDAP Ordering Extension                May 2006
282*d11b170bStron
283*d11b170bStron
284*d11b170bStron      ordered-value = ordering-prefix value
285*d11b170bStron
286*d11b170bStron   The ordinals are zero-based and increment by one for each value.
287*d11b170bStron
288*d11b170bStron   Note that when storing ordered-values into the directory, the
289*d11b170bStron   ordering-prefix can usually be omitted as it will be generated
290*d11b170bStron   automatically.  But if the original value already begins with a
291*d11b170bStron   sequence of characters in the form of an ordering-prefix, then an
292*d11b170bStron   ordering-prefix must always be provided with that value, otherwise
293*d11b170bStron   the value will be processed and stored incorrectly.
294*d11b170bStron
295*d11b170bStron   Using this extension on an attribute requires that ordering-prefix is
296*d11b170bStron   a legal value of the LDAP syntax of that attribute.
297*d11b170bStron
298*d11b170bStron3.3.  Ordering Properties
299*d11b170bStron
300*d11b170bStron   Since the ordering-prefix is stored with the attribute values, it
301*d11b170bStron   will be propagated to any clients or servers that access the data.
302*d11b170bStron
303*d11b170bStron   Servers implementing this scheme SHOULD sort the values according to
304*d11b170bStron   their ordering-prefix before returning them in search results.
305*d11b170bStron
306*d11b170bStron   The presence of the ordering extension alters the matching rules that
307*d11b170bStron   apply to the attribute:
308*d11b170bStron
309*d11b170bStron      When presented with an AssertionValue that does not have an
310*d11b170bStron      ordering-prefix, the ordering-prefix in the AttributeValue is
311*d11b170bStron      ignored.
312*d11b170bStron
313*d11b170bStron      When presented with an AssertionValue that consists solely of an
314*d11b170bStron      ordering-prefix, only the ordering-prefix of the AttributeValue is
315*d11b170bStron      compared; the remainder of the value is ignored.
316*d11b170bStron
317*d11b170bStron      When presented with an AssertionValue containing both the
318*d11b170bStron      ordering-prefix and a value, both components are compared to
319*d11b170bStron      determine a match.
320*d11b170bStron
321*d11b170bStron   A side effect of these properties is that even attributes that
322*d11b170bStron   normally would have no equality matching rule can be matched by an
323*d11b170bStron   ordering-prefix.
324*d11b170bStron
325*d11b170bStron   The ordering-prefix may also be used in Modification requests to
326*d11b170bStron   specify which values to delete, and in which position values should
327*d11b170bStron   be added.  When processing deletions and insertions, all of the
328*d11b170bStron   ordinals are recounted after each individual modification.
329*d11b170bStron
330*d11b170bStron   If a value being added does not have an ordering-prefix, it is simply
331*d11b170bStron   appended to the list and the appropriate ordering-prefix is
332*d11b170bStron
333*d11b170bStron
334*d11b170bStron
335*d11b170bStronChu                     Expires November 2, 2006                [Page 6]
336*d11b170bStron
337*d11b170bStronInternet-Draft           LDAP Ordering Extension                May 2006
338*d11b170bStron
339*d11b170bStron
340*d11b170bStron   automatically generated.  Likewise if an ordering-prefix is provided
341*d11b170bStron   that is greater than or equal to the number of existing values.
342*d11b170bStron
343*d11b170bStron   See the examples in the next section.
344*d11b170bStron
345*d11b170bStron
346*d11b170bStron
347*d11b170bStron
348*d11b170bStron
349*d11b170bStron
350*d11b170bStron
351*d11b170bStron
352*d11b170bStron
353*d11b170bStron
354*d11b170bStron
355*d11b170bStron
356*d11b170bStron
357*d11b170bStron
358*d11b170bStron
359*d11b170bStron
360*d11b170bStron
361*d11b170bStron
362*d11b170bStron
363*d11b170bStron
364*d11b170bStron
365*d11b170bStron
366*d11b170bStron
367*d11b170bStron
368*d11b170bStron
369*d11b170bStron
370*d11b170bStron
371*d11b170bStron
372*d11b170bStron
373*d11b170bStron
374*d11b170bStron
375*d11b170bStron
376*d11b170bStron
377*d11b170bStron
378*d11b170bStron
379*d11b170bStron
380*d11b170bStron
381*d11b170bStron
382*d11b170bStron
383*d11b170bStron
384*d11b170bStron
385*d11b170bStron
386*d11b170bStron
387*d11b170bStron
388*d11b170bStron
389*d11b170bStron
390*d11b170bStron
391*d11b170bStronChu                     Expires November 2, 2006                [Page 7]
392*d11b170bStron
393*d11b170bStronInternet-Draft           LDAP Ordering Extension                May 2006
394*d11b170bStron
395*d11b170bStron
396*d11b170bStron4.  Examples
397*d11b170bStron
398*d11b170bStron4.1.  Sample Schema
399*d11b170bStron
400*d11b170bStron   This schema is used for all of the examples:
401*d11b170bStron
402*d11b170bStron   ( EXAMPLE_AT.1 NAME 'olcDatabase'
403*d11b170bStron   EQUALITY caseIgnoreMatch
404*d11b170bStron   SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
405*d11b170bStron   SINGLE-VALUE X-ORDERED 'SIBLINGS' )
406*d11b170bStron
407*d11b170bStron   ( EXAMPLE_AT.2 NAME 'olcSuffix'
408*d11b170bStron   EQUALITY distinguishedNameMatch
409*d11b170bStron   SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
410*d11b170bStron   X-ORDERED 'VALUES' )
411*d11b170bStron
412*d11b170bStron   ( EXAMPLE_OC.1 NAME 'olcDatabaseConfig'
413*d11b170bStron   SUP top STRUCTURAL
414*d11b170bStron   MAY ( olcDatabase $ olcSuffix ) )
415*d11b170bStron
416*d11b170bStron4.2.  Ordered Values
417*d11b170bStron
418*d11b170bStron   Given this entry:
419*d11b170bStron
420*d11b170bStron   dn: olcDatabase={1}bdb,cn=config
421*d11b170bStron   olcDatabase: {1}bdb
422*d11b170bStron   objectClass: olcDatabaseConfig
423*d11b170bStron   olcSuffix: {0}dc=example,dc=com
424*d11b170bStron   olcSuffix: {1}o=example.com
425*d11b170bStron   olcSuffix: {2}o=The Example Company
426*d11b170bStron   olcSuffix: {3}o=example,c=us
427*d11b170bStron
428*d11b170bStron   We can perform these Modify operations:
429*d11b170bStron
430*d11b170bStron   1.  dn: olcDatabase={1}bdb,cn=config
431*d11b170bStron       changetype: modify
432*d11b170bStron       delete: olcSuffix
433*d11b170bStron       olcSuffix: {0}
434*d11b170bStron       -
435*d11b170bStron       This operation deletes the first olcSuffix, regardless of its
436*d11b170bStron       value.  All other values are bumped up one position.  The
437*d11b170bStron       olcSuffix attribute will end up containing:
438*d11b170bStron       olcSuffix: {0}o=example.com
439*d11b170bStron       olcSuffix: {1}o=The Example Company
440*d11b170bStron       olcSuffix: {2}o=example,c=us
441*d11b170bStron
442*d11b170bStron   2.  Starting from the original entry, we could issue this change
443*d11b170bStron       instead:
444*d11b170bStron
445*d11b170bStron
446*d11b170bStron
447*d11b170bStronChu                     Expires November 2, 2006                [Page 8]
448*d11b170bStron
449*d11b170bStronInternet-Draft           LDAP Ordering Extension                May 2006
450*d11b170bStron
451*d11b170bStron
452*d11b170bStron       delete: olcSuffix
453*d11b170bStron       olcSuffix: o=example.com
454*d11b170bStron       -
455*d11b170bStron       This operation deletes the olcSuffix that matches the value,
456*d11b170bStron       regardless of its ordering-prefix.  The olcSuffix attribute will
457*d11b170bStron       contain:
458*d11b170bStron       olcSuffix: {0}dc=example,dc=com
459*d11b170bStron       olcSuffix: {1}o=The Example Company
460*d11b170bStron       olcSuffix: {2}o=example,c=us
461*d11b170bStron
462*d11b170bStron   3.  Again, starting from the original entry, we could issue this
463*d11b170bStron       change:
464*d11b170bStron       delete: olcSuffix
465*d11b170bStron       olcSuffix: {2}o=The Example Company
466*d11b170bStron       -
467*d11b170bStron       Here both the ordering-prefix and the value must match, otherwise
468*d11b170bStron       the Modify would fail with noSuchAttribute.  In this case the
469*d11b170bStron       olcSuffix attribute results in:
470*d11b170bStron       olcSuffix: {0}dc=example,dc=com
471*d11b170bStron       olcSuffix: {1}o=example.com
472*d11b170bStron       olcSuffix: {2}o=example,c=us
473*d11b170bStron
474*d11b170bStron   4.  Adding a new value without an ordering-prefix simply appends:
475*d11b170bStron       add: olcSuffix
476*d11b170bStron       olcSuffix: o=example.org
477*d11b170bStron       -
478*d11b170bStron       The resulting attribute would be:
479*d11b170bStron       olcSuffix: {0}dc=example,dc=com
480*d11b170bStron       olcSuffix: {1}o=example.com
481*d11b170bStron       olcSuffix: {2}o=The Example Company
482*d11b170bStron       olcSuffix: {3}o=example,c=us
483*d11b170bStron       olcSuffix: {4}o=example.org
484*d11b170bStron
485*d11b170bStron   5.  Adding a new value with an ordering-prefix inserts into the
486*d11b170bStron       specified position:
487*d11b170bStron       add: olcSuffix
488*d11b170bStron       olcSuffix: {0}o=example.org
489*d11b170bStron       -
490*d11b170bStron       The resulting attribute would be:
491*d11b170bStron       olcSuffix: {0}o=example.org
492*d11b170bStron       olcSuffix: {1}dc=example,dc=com
493*d11b170bStron       olcSuffix: {2}o=example.com
494*d11b170bStron       olcSuffix: {3}o=The Example Company
495*d11b170bStron       olcSuffix: {4}o=example,c=us
496*d11b170bStron
497*d11b170bStron   6.  Modifying multiple values in one operation:
498*d11b170bStron       add: olcSuffix
499*d11b170bStron       olcSuffix: {0}ou=Dis,o=example.com
500*d11b170bStron
501*d11b170bStron
502*d11b170bStron
503*d11b170bStronChu                     Expires November 2, 2006                [Page 9]
504*d11b170bStron
505*d11b170bStronInternet-Draft           LDAP Ordering Extension                May 2006
506*d11b170bStron
507*d11b170bStron
508*d11b170bStron       olcSuffix: {0}ou=Dat,o=example,com
509*d11b170bStron       -
510*d11b170bStron       delete: olcSuffix:
511*d11b170bStron       olcSuffix: {2}
512*d11b170bStron       olcSuffix: {1}
513*d11b170bStron       -
514*d11b170bStron       The resulting attribute would be:
515*d11b170bStron       olcSuffix: {0}ou=Dat,o=example,com
516*d11b170bStron       olcSuffix: {1}dc=example,dc=com
517*d11b170bStron       olcSuffix: {2}o=example.com
518*d11b170bStron       olcSuffix: {3}o=The Example Company
519*d11b170bStron       olcSuffix: {4}o=example,c=us
520*d11b170bStron
521*d11b170bStron   7.  If the Adds and Deletes in the previous example were done in the
522*d11b170bStron       opposite order:
523*d11b170bStron       delete: olcSuffix:
524*d11b170bStron       olcSuffix: {2}
525*d11b170bStron       olcSuffix: {1}
526*d11b170bStron       -
527*d11b170bStron       add: olcSuffix
528*d11b170bStron       olcSuffix: {0}ou=Dis,o=example.com
529*d11b170bStron       olcSuffix: {0}ou=Dat,o=example,com
530*d11b170bStron       -
531*d11b170bStron       The result would be:
532*d11b170bStron       olcSuffix: {0}ou=Dat,o=example,com
533*d11b170bStron       olcSuffix: {1}ou=Dis,o=example.com
534*d11b170bStron       olcSuffix: {2}o=example.org
535*d11b170bStron       olcSuffix: {3}o=The Example Company
536*d11b170bStron       olcSuffix: {4}o=example,c=us
537*d11b170bStron
538*d11b170bStron   Note that matching against an ordering-prefix can also be done in
539*d11b170bStron   Compare operations and Search filters.  E.g., the filter
540*d11b170bStron   "(olcSuffix={4})" would match all entries with at least 5 olcSuffix
541*d11b170bStron   values.
542*d11b170bStron
543*d11b170bStron4.3.  Ordered Siblings
544*d11b170bStron
545*d11b170bStron   The rules for Ordered Siblings are basically the same as for Ordered
546*d11b170bStron   Values, except instead of working primarily with the Modify request,
547*d11b170bStron   the operations of interest here are Add, Delete, and ModRDN.
548*d11b170bStron
549*d11b170bStron   Given these entries:
550*d11b170bStron
551*d11b170bStron   dn: olcDatabase={0}config,cn=config
552*d11b170bStron   olcDatabase: {0}config
553*d11b170bStron   objectClass: olcDatabaseConfig
554*d11b170bStron   olcSuffix: {0}cn=config
555*d11b170bStron
556*d11b170bStron
557*d11b170bStron
558*d11b170bStron
559*d11b170bStronChu                     Expires November 2, 2006               [Page 10]
560*d11b170bStron
561*d11b170bStronInternet-Draft           LDAP Ordering Extension                May 2006
562*d11b170bStron
563*d11b170bStron
564*d11b170bStron   dn: olcDatabase={1}bdb,cn=config
565*d11b170bStron   olcDatabase: {1}bdb
566*d11b170bStron   objectClass: olcDatabaseConfig
567*d11b170bStron   olcSuffix: {0}dc=example,dc=com
568*d11b170bStron
569*d11b170bStron   We can perform these operations:
570*d11b170bStron
571*d11b170bStron   1.  Add a new entry with no ordering-prefix:
572*d11b170bStron       dn: olcDatabase=hdb,cn=config
573*d11b170bStron       changetype: add
574*d11b170bStron       olcDatabase: hdb
575*d11b170bStron       objectClass: olcDatabaseConfig
576*d11b170bStron       olcSuffix: {0}dc=example,dc=org
577*d11b170bStron       The resulting entry will be:
578*d11b170bStron       dn: olcDatabase={2}hdb,cn=config
579*d11b170bStron       olcDatabase: {2}hdb
580*d11b170bStron       objectClass: olcDatabaseConfig
581*d11b170bStron       olcSuffix: {0}dc=example,dc=org
582*d11b170bStron
583*d11b170bStron   2.  Continuing on with these three entries, we can add another entry
584*d11b170bStron       with a specific ordering-prefix:
585*d11b170bStron       dn: olcDatabase={1}ldif,cn=config
586*d11b170bStron       changetype: add
587*d11b170bStron       olcDatabase: {1}ldif
588*d11b170bStron       objectClass: olcDatabaseConfig
589*d11b170bStron       olcSuffix: {0}o=example.com
590*d11b170bStron       This would give us four entries, whose DNs are:
591*d11b170bStron
592*d11b170bStron          dn: olcDatabase={0}config,cn=config
593*d11b170bStron
594*d11b170bStron          dn: olcDatabase={1}ldif,cn=config
595*d11b170bStron
596*d11b170bStron          dn: olcDatabase={2}bdb,cn=config
597*d11b170bStron
598*d11b170bStron          dn: olcDatabase={3}hdb,cn=config
599*d11b170bStron
600*d11b170bStron   3.  Issuing a ModRDN request will cause multiple entries to be
601*d11b170bStron       renamed:
602*d11b170bStron       dn: olcDatabase={1}ldif,cn=config
603*d11b170bStron       changetype: modrdn
604*d11b170bStron       newrdn: olcDatabase={99}ldif
605*d11b170bStron       deleteoldrdn: 1
606*d11b170bStron       The resulting entries would be named:
607*d11b170bStron
608*d11b170bStron          dn: olcDatabase={0}config,cn=config
609*d11b170bStron
610*d11b170bStron          dn: olcDatabase={1}bdb,cn=config
611*d11b170bStron
612*d11b170bStron
613*d11b170bStron
614*d11b170bStron
615*d11b170bStronChu                     Expires November 2, 2006               [Page 11]
616*d11b170bStron
617*d11b170bStronInternet-Draft           LDAP Ordering Extension                May 2006
618*d11b170bStron
619*d11b170bStron
620*d11b170bStron          dn: olcDatabase={2}hdb,cn=config
621*d11b170bStron
622*d11b170bStron          dn: olcDatabase={3}ldif,cn=config
623*d11b170bStron
624*d11b170bStron   4.  As may be expected, a Delete request will also rename the
625*d11b170bStron       remaining entries:
626*d11b170bStron       dn: olcDatabase={1}bdb,cn=config
627*d11b170bStron       changetype: delete
628*d11b170bStron       The remaining entries would be named:
629*d11b170bStron
630*d11b170bStron          dn: olcDatabase={0}config,cn=config
631*d11b170bStron
632*d11b170bStron          dn: olcDatabase={1}hdb,cn=config
633*d11b170bStron
634*d11b170bStron          dn: olcDatabase={2}ldif,cn=config
635*d11b170bStron
636*d11b170bStron
637*d11b170bStron
638*d11b170bStron
639*d11b170bStron
640*d11b170bStron
641*d11b170bStron
642*d11b170bStron
643*d11b170bStron
644*d11b170bStron
645*d11b170bStron
646*d11b170bStron
647*d11b170bStron
648*d11b170bStron
649*d11b170bStron
650*d11b170bStron
651*d11b170bStron
652*d11b170bStron
653*d11b170bStron
654*d11b170bStron
655*d11b170bStron
656*d11b170bStron
657*d11b170bStron
658*d11b170bStron
659*d11b170bStron
660*d11b170bStron
661*d11b170bStron
662*d11b170bStron
663*d11b170bStron
664*d11b170bStron
665*d11b170bStron
666*d11b170bStron
667*d11b170bStron
668*d11b170bStron
669*d11b170bStron
670*d11b170bStron
671*d11b170bStronChu                     Expires November 2, 2006               [Page 12]
672*d11b170bStron
673*d11b170bStronInternet-Draft           LDAP Ordering Extension                May 2006
674*d11b170bStron
675*d11b170bStron
676*d11b170bStron5.  Security Considerations
677*d11b170bStron
678*d11b170bStron   General LDAP security considerations [RFC3377] apply.
679*d11b170bStron
680*d11b170bStron
681*d11b170bStron
682*d11b170bStron
683*d11b170bStron
684*d11b170bStron
685*d11b170bStron
686*d11b170bStron
687*d11b170bStron
688*d11b170bStron
689*d11b170bStron
690*d11b170bStron
691*d11b170bStron
692*d11b170bStron
693*d11b170bStron
694*d11b170bStron
695*d11b170bStron
696*d11b170bStron
697*d11b170bStron
698*d11b170bStron
699*d11b170bStron
700*d11b170bStron
701*d11b170bStron
702*d11b170bStron
703*d11b170bStron
704*d11b170bStron
705*d11b170bStron
706*d11b170bStron
707*d11b170bStron
708*d11b170bStron
709*d11b170bStron
710*d11b170bStron
711*d11b170bStron
712*d11b170bStron
713*d11b170bStron
714*d11b170bStron
715*d11b170bStron
716*d11b170bStron
717*d11b170bStron
718*d11b170bStron
719*d11b170bStron
720*d11b170bStron
721*d11b170bStron
722*d11b170bStron
723*d11b170bStron
724*d11b170bStron
725*d11b170bStron
726*d11b170bStron
727*d11b170bStronChu                     Expires November 2, 2006               [Page 13]
728*d11b170bStron
729*d11b170bStronInternet-Draft           LDAP Ordering Extension                May 2006
730*d11b170bStron
731*d11b170bStron
732*d11b170bStron6.  Normative References
733*d11b170bStron
734*d11b170bStron   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
735*d11b170bStron              Requirement Levels", BCP 14, RFC 2119, March 1997.
736*d11b170bStron
737*d11b170bStron   [RFC2252]  Wahl, M., Coulbeck, A., Howes, T., and S. Kille,
738*d11b170bStron              "Lightweight Directory Access Protocol (v3): Attribute
739*d11b170bStron              Syntax Definitions", RFC 2252, December 1997.
740*d11b170bStron
741*d11b170bStron   [RFC3377]  Hodges, J. and R. Morgan, "Lightweight Directory Access
742*d11b170bStron              Protocol (v3): Technical Specification", RFC 3377,
743*d11b170bStron              September 2002.
744*d11b170bStron
745*d11b170bStron   [RFC3383]  Zeilenga, K., "Internet Assigned Numbers Authority (IANA)
746*d11b170bStron              Considerations for the Lightweight Directory Access
747*d11b170bStron              Protocol (LDAP)", RFC 3383, September 2002.
748*d11b170bStron
749*d11b170bStron   [X680]     International Telecommunications Union, "Abstract Syntax
750*d11b170bStron              Notation One (ASN.1): Specification of basic notation",
751*d11b170bStron              ITU-T Recommendation X.680, July 2002.
752*d11b170bStron
753*d11b170bStron
754*d11b170bStron
755*d11b170bStron
756*d11b170bStron
757*d11b170bStron
758*d11b170bStron
759*d11b170bStron
760*d11b170bStron
761*d11b170bStron
762*d11b170bStron
763*d11b170bStron
764*d11b170bStron
765*d11b170bStron
766*d11b170bStron
767*d11b170bStron
768*d11b170bStron
769*d11b170bStron
770*d11b170bStron
771*d11b170bStron
772*d11b170bStron
773*d11b170bStron
774*d11b170bStron
775*d11b170bStron
776*d11b170bStron
777*d11b170bStron
778*d11b170bStron
779*d11b170bStron
780*d11b170bStron
781*d11b170bStron
782*d11b170bStron
783*d11b170bStronChu                     Expires November 2, 2006               [Page 14]
784*d11b170bStron
785*d11b170bStronInternet-Draft           LDAP Ordering Extension                May 2006
786*d11b170bStron
787*d11b170bStron
788*d11b170bStronAppendix A.  IANA Considerations
789*d11b170bStron
790*d11b170bStron   In accordance with [RFC3383] (what needs to be done here?) .  We
791*d11b170bStron   probably need an OID for advertising in supportedFeatures.
792*d11b170bStron
793*d11b170bStron
794*d11b170bStron
795*d11b170bStron
796*d11b170bStron
797*d11b170bStron
798*d11b170bStron
799*d11b170bStron
800*d11b170bStron
801*d11b170bStron
802*d11b170bStron
803*d11b170bStron
804*d11b170bStron
805*d11b170bStron
806*d11b170bStron
807*d11b170bStron
808*d11b170bStron
809*d11b170bStron
810*d11b170bStron
811*d11b170bStron
812*d11b170bStron
813*d11b170bStron
814*d11b170bStron
815*d11b170bStron
816*d11b170bStron
817*d11b170bStron
818*d11b170bStron
819*d11b170bStron
820*d11b170bStron
821*d11b170bStron
822*d11b170bStron
823*d11b170bStron
824*d11b170bStron
825*d11b170bStron
826*d11b170bStron
827*d11b170bStron
828*d11b170bStron
829*d11b170bStron
830*d11b170bStron
831*d11b170bStron
832*d11b170bStron
833*d11b170bStron
834*d11b170bStron
835*d11b170bStron
836*d11b170bStron
837*d11b170bStron
838*d11b170bStron
839*d11b170bStronChu                     Expires November 2, 2006               [Page 15]
840*d11b170bStron
841*d11b170bStronInternet-Draft           LDAP Ordering Extension                May 2006
842*d11b170bStron
843*d11b170bStron
844*d11b170bStronAuthor's Address
845*d11b170bStron
846*d11b170bStron   Howard Chu
847*d11b170bStron   Symas Corp.
848*d11b170bStron   18740 Oxnard Street, Suite 313A
849*d11b170bStron   Tarzana, California  91356
850*d11b170bStron   USA
851*d11b170bStron
852*d11b170bStron   Phone: +1 818 757-7087
853*d11b170bStron   Email: hyc@symas.com
854*d11b170bStron
855*d11b170bStron
856*d11b170bStron
857*d11b170bStron
858*d11b170bStron
859*d11b170bStron
860*d11b170bStron
861*d11b170bStron
862*d11b170bStron
863*d11b170bStron
864*d11b170bStron
865*d11b170bStron
866*d11b170bStron
867*d11b170bStron
868*d11b170bStron
869*d11b170bStron
870*d11b170bStron
871*d11b170bStron
872*d11b170bStron
873*d11b170bStron
874*d11b170bStron
875*d11b170bStron
876*d11b170bStron
877*d11b170bStron
878*d11b170bStron
879*d11b170bStron
880*d11b170bStron
881*d11b170bStron
882*d11b170bStron
883*d11b170bStron
884*d11b170bStron
885*d11b170bStron
886*d11b170bStron
887*d11b170bStron
888*d11b170bStron
889*d11b170bStron
890*d11b170bStron
891*d11b170bStron
892*d11b170bStron
893*d11b170bStron
894*d11b170bStron
895*d11b170bStronChu                     Expires November 2, 2006               [Page 16]
896*d11b170bStron
897*d11b170bStronInternet-Draft           LDAP Ordering Extension                May 2006
898*d11b170bStron
899*d11b170bStron
900*d11b170bStronFull Copyright Statement
901*d11b170bStron
902*d11b170bStron   Copyright (C) The Internet Society (2006).
903*d11b170bStron
904*d11b170bStron   This document is subject to the rights, licenses and restrictions
905*d11b170bStron   contained in BCP 78, and except as set forth therein, the authors
906*d11b170bStron   retain all their rights.
907*d11b170bStron
908*d11b170bStron   This document and the information contained herein are provided on an
909*d11b170bStron   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
910*d11b170bStron   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
911*d11b170bStron   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
912*d11b170bStron   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
913*d11b170bStron   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
914*d11b170bStron   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
915*d11b170bStron
916*d11b170bStron
917*d11b170bStronIntellectual Property
918*d11b170bStron
919*d11b170bStron   The IETF takes no position regarding the validity or scope of any
920*d11b170bStron   Intellectual Property Rights or other rights that might be claimed to
921*d11b170bStron   pertain to the implementation or use of the technology described in
922*d11b170bStron   this document or the extent to which any license under such rights
923*d11b170bStron   might or might not be available; nor does it represent that it has
924*d11b170bStron   made any independent effort to identify any such rights.  Information
925*d11b170bStron   on the procedures with respect to rights in RFC documents can be
926*d11b170bStron   found in BCP 78 and BCP 79.
927*d11b170bStron
928*d11b170bStron   Copies of IPR disclosures made to the IETF Secretariat and any
929*d11b170bStron   assurances of licenses to be made available, or the result of an
930*d11b170bStron   attempt made to obtain a general license or permission for the use of
931*d11b170bStron   such proprietary rights by implementers or users of this
932*d11b170bStron   specification can be obtained from the IETF on-line IPR repository at
933*d11b170bStron   http://www.ietf.org/ipr.
934*d11b170bStron
935*d11b170bStron   The IETF invites any interested party to bring to its attention any
936*d11b170bStron   copyrights, patents or patent applications, or other proprietary
937*d11b170bStron   rights that may cover technology that may be required to implement
938*d11b170bStron   this standard.  Please address the information to the IETF at
939*d11b170bStron   ietf-ipr@ietf.org.
940*d11b170bStron
941*d11b170bStron
942*d11b170bStronAcknowledgment
943*d11b170bStron
944*d11b170bStron   Funding for the RFC Editor function is provided by the IETF
945*d11b170bStron   Administrative Support Activity (IASA).
946*d11b170bStron
947*d11b170bStron
948*d11b170bStron
949*d11b170bStron
950*d11b170bStron
951*d11b170bStronChu                     Expires November 2, 2006               [Page 17]
952*d11b170bStron
953