proposal.txt
proposal.default
f1f1
22
33
44
55
66
7Network Working Group                                             G. Good7Network Working Group                                             G. Good
8INTERNET-DRAFT8INTERNET-DRAFT
9Obsoletes: 28499Obsoletes: 2849
10Category: Standards Track10Category: Standards Track
1111
1212
13   The LDAP Data Interchange Format (LDIF) - Technical Specification13   The LDAP Data Interchange Format (LDIF) - Technical Specification
1414
1515
16Status of this Memo16Status of this Memo
1717
18   By submitting this Internet-Draft, each author represents that any18   By submitting this Internet-Draft, each author represents that any
19   applicable patent or other IPR claims of which he or she is aware19   applicable patent or other IPR claims of which he or she is aware
20   have been or will be disclosed, and any of which he or she becomes20   have been or will be disclosed, and any of which he or she becomes
21   aware will be disclosed, in accordance with Section 6 of BCP 79.21   aware will be disclosed, in accordance with Section 6 of BCP 79.
2222
23Abstract23Abstract
2424
25   This document describes a file format suitable for describing25   This document describes a file format suitable for describing
26   directory information or modifications made to directory information.26   directory information or modifications made to directory information.
27   The file format, known as LDIF, for LDAP Data Interchange Format, is27   The file format, known as LDIF, for LDAP Data Interchange Format, is
28   typically used to import and export directory information between28   typically used to import and export directory information between
29   LDAP-based directory servers, or to describe a set of changes which29   LDAP-based directory servers, or to describe a set of changes which
30   are to be applied to a directory.30   are to be applied to a directory.
3131
32Relationship to Obsolete Specification32Relationship to Obsolete Specification
3333
34   This obsoletes and replaces [RFC2849] which defined version 134   This obsoletes and replaces [RFC2849] which defined version 1
35   of LDIF.35   of LDIF.
3636
37   The paragraph "Notes on LDIF Syntax" in [RFC2849] documented the37   The paragraph "Notes on LDIF Syntax" in [RFC2849] documented the
38   use of non-encoded UTF-8 inside an LDIF file, but the "Formal Syntax38   use of non-encoded UTF-8 inside an LDIF file, but the "Formal Syntax
39   Definition of LDIF" specified either ASCII or base64 encoded UTF-839   Definition of LDIF" specified either ASCII or base64 encoded UTF-8
40   for distinguishedName, rdn and attrval-spec.  The specification has40   for distinguishedName, rdn and attrval-spec.  The specification has
41   been changed to allow UTF-8 strings without the use of encoding.41   been changed to allow UTF-8 strings without the use of encoding.
4242
43   The definition of UTF-8 has been slightly modified to follow the43   The definition of UTF-8 has been slightly modified to follow the
44   definition from [RFC3629].44   definition from [RFC3629].
4545
46   The style has been changed to conform with the newer editorial46   The style has been changed to conform with the newer editorial
47   standards from [RFC223], specifically in quoting references.47   standards from [RFC223], specifically in quoting references.
4848
49Background and Intended Usage49Background and Intended Usage
5050
51   There are a number of situations where a common interchange format is51   There are a number of situations where a common interchange format is
52   desirable.  For example, one might wish to export a copy of the52   desirable.  For example, one might wish to export a copy of the
53   contents of a directory server to a file, move that file to a53   contents of a directory server to a file, move that file to a
54   different machine, and import the contents into a second directory54   different machine, and import the contents into a second directory
55   server.55   server.
5656
57   Additionally, by using a well-defined interchange format, development57   Additionally, by using a well-defined interchange format, development
58   of data import tools from legacy systems is facilitated.  A fairly58   of data import tools from legacy systems is facilitated.  A fairly
59   simple set of tools written in awk or perl can, for example, convert59   simple set of tools written in awk or perl can, for example, convert
60   a database of personnel information into an LDIF file.  This file can60   a database of personnel information into an LDIF file.  This file can
61   then be imported into a directory server, regardless of the internal61   then be imported into a directory server, regardless of the internal
62   database representation the target directory server uses.62   database representation the target directory server uses.
6363
64   The LDIF format was originally developed and used in the University64   The LDIF format was originally developed and used in the University
65   of Michigan LDAP implementation.  The first use of LDIF was in65   of Michigan LDAP implementation.  The first use of LDIF was in
66   describing directory entries.  Later, the format was expanded to66   describing directory entries.  Later, the format was expanded to
67   allow representation of changes to directory entries.67   allow representation of changes to directory entries.
6868
69   Relationship to the application/directory MIME content-type:69   Relationship to the application/directory MIME content-type:
7070
71   The application/directory MIME content-type [RFC2425] is a general71   The application/directory MIME content-type [RFC2425] is a general
72   framework and format for conveying directory information, and is72   framework and format for conveying directory information, and is
73   independent of any particular directory service.  The LDIF format is73   independent of any particular directory service.  The LDIF format is
74   a simpler format which is perhaps easier to create, and may also be74   a simpler format which is perhaps easier to create, and may also be
75   used, as noted, to describe a set of changes to be applied to a75   used, as noted, to describe a set of changes to be applied to a
76   directory.76   directory.
7777
78   The key words "MUST", "MUST NOT", "MAY", "SHOULD", and "SHOULD NOT"78   The key words "MUST", "MUST NOT", "MAY", "SHOULD", and "SHOULD NOT"
79   used in this document are to be interpreted as described79   used in this document are to be interpreted as described
80   in [RFC2119].80   in [RFC2119].
8181
82Definition of the LDAP Data Interchange Format82Definition of the LDAP Data Interchange Format
8383
84   The LDIF format is used to convey directory information, or a84   The LDIF format is used to convey directory information, or a
85   description of a set of changes made to directory entries.  An LDIF85   description of a set of changes made to directory entries.  An LDIF
86   file consists of a series of records separated by line separators.  A86   file consists of a series of records separated by line separators.  A
87   record consists of a sequence of lines describing a directory entry,87   record consists of a sequence of lines describing a directory entry,
88   or a sequence of lines describing a set of changes to a directory88   or a sequence of lines describing a set of changes to a directory
89   entry.  An LDIF file specifies a set of directory entries, or a set89   entry.  An LDIF file specifies a set of directory entries, or a set
90   of changes to be applied to directory entries, but not both.90   of changes to be applied to directory entries, but not both.
9191
92   There is a one-to-one correlation between LDAP operations that modify92   There is a one-to-one correlation between LDAP operations that modify
93   the directory (add, delete, modify, and modrdn), and the types of93   the directory (add, delete, modify, and modrdn), and the types of
94   changerecords described below ("add", "delete", "modify", and94   changerecords described below ("add", "delete", "modify", and
95   "modrdn" or "moddn").  This correspondence is intentional, and95   "modrdn" or "moddn").  This correspondence is intentional, and
96   permits a straightforward translation from LDIF changerecords to96   permits a straightforward translation from LDIF changerecords to
97   protocol operations.97   protocol operations.
9898
99Formal Syntax Definition of LDIF99Formal Syntax Definition of LDIF
100100
101   The following definition uses the augmented Backus-Naur Form101   The following definition uses the augmented Backus-Naur Form
102   specified in [RFC2234].102   specified in [RFC2234].
103103
104ldif-file                = ldif-content / ldif-changes104ldif-file                = ldif-content / ldif-changes
105105
106ldif-content             = version-spec 1*(1*SEP ldif-attrval-record)106ldif-content             = version-spec 1*(1*SEP ldif-attrval-record)
107107
108ldif-changes             = version-spec 1*(1*SEP ldif-change-record)108ldif-changes             = version-spec 1*(1*SEP ldif-change-record)
109109
110ldif-attrval-record      = dn-spec SEP 1*attrval-spec110ldif-attrval-record      = dn-spec SEP 1*attrval-spec
111111
112ldif-change-record       = dn-spec SEP *control changerecord112ldif-change-record       = dn-spec SEP *control changerecord
113113
114version-spec             = "version:" FILL version-number114version-spec             = "version:" FILL version-number
115115
116version-number           = 1*DIGIT116version-number           = 1*DIGIT
117                           ; version-number MUST be "2" for the117                           ; version-number MUST be "2" for the
118                           ; LDIF format described in this document.118                           ; LDIF format described in this document.
119119
120dn-spec                  = "dn:" (FILL distinguishedName /120dn-spec                  = "dn:" (FILL distinguishedName /
121                                  ":" FILL base64-distinguishedName)121                                  ":" FILL base64-distinguishedName)
122122
123distinguishedName        = SAFE-UTF8-STRING123distinguishedName        = SAFE-UTF8-STRING
124                           ; a distinguished name, as defined124                           ; a distinguished name, as defined
125                           ; in [RFC2253]125                           ; in [RFC2253]
126126
127base64-distinguishedName = BASE64-UTF8-STRING127base64-distinguishedName = BASE64-UTF8-STRING
128                           ; a distinguishedName which has been base64128                           ; a distinguishedName which has been base64
129                           ; encoded (see note 10, below)129                           ; encoded (see note 10, below)
130130
131rdn                      = SAFE-UTF8-STRING131rdn                      = SAFE-UTF8-STRING
132                           ; a relative distinguished name, defined as132                           ; a relative distinguished name, defined as
133                           ; <name-component> in [RFC2253]133                           ; <name-component> in [RFC2253]
134134
135base64-rdn               = BASE64-UTF8-STRING135base64-rdn               = BASE64-UTF8-STRING
136                           ; an rdn which has been base64 encoded (see136                           ; an rdn which has been base64 encoded (see
137                           ; note 10, below)137                           ; note 10, below)
138138
139control                  = "control:" FILL ldap-oid        ; controlType139control                  = "control:" FILL ldap-oid        ; controlType
140                           0*1(1*SPACE ("true" / "false")) ; criticality140                           0*1(1*SPACE ("true" / "false")) ; criticality
141                           0*1(value-spec)                ; controlValue141                           0*1(value-spec)                ; controlValue
142                           SEP142                           SEP
143                           ; (See note 9, below)143                           ; (See note 9, below)
144144
145ldap-oid                 = 1*DIGIT 0*1("." 1*DIGIT)145ldap-oid                 = 1*DIGIT 0*1("." 1*DIGIT)
146                           ; An LDAPOID, as defined in [RFC2251]146                           ; An LDAPOID, as defined in [RFC2251]
147147
148attrval-spec             = AttributeDescription value-spec SEP148attrval-spec             = AttributeDescription value-spec SEP
149149
150value-spec               = ":" (    FILL 0*1(SAFE-UTF8-STRING) /150value-spec               = ":" (    FILL 0*1(SAFE-UTF8-STRING) /
151                                ":" FILL (BASE64-STRING) /151                                ":" FILL (BASE64-STRING) /
152                                "<" FILL url)152                                "<" FILL url)
153                           ; See notes 7 and 8, below153                           ; See notes 7 and 8, below
n154 n
155mod-spec                 = "increment:" FILL AttributeDescription SEP
156                           attrval-spec "-" SEP
157                           ; from [RFC4525]
158154
159url                      = <a Uniform Resource Locator,155url                      = <a Uniform Resource Locator,
160                            as defined in [RFC1738]>156                            as defined in [RFC1738]>
161                                   ; (See Note 6, below)157                                   ; (See Note 6, below)
162158
163AttributeDescription     = AttributeType [";" options]159AttributeDescription     = AttributeType [";" options]
164                           ; Definition taken from [RFC2251]160                           ; Definition taken from [RFC2251]
165161
166AttributeType            = ldap-oid / (ALPHA *(attr-type-chars))162AttributeType            = ldap-oid / (ALPHA *(attr-type-chars))
167163
168options                  = option / (option ";" options)164options                  = option / (option ";" options)
169165
170option                   = 1*opt-char166option                   = 1*opt-char
171167
172attr-type-chars          = ALPHA / DIGIT / "-"168attr-type-chars          = ALPHA / DIGIT / "-"
173169
174opt-char                 = attr-type-chars170opt-char                 = attr-type-chars
175171
176changerecord             = "changetype:" FILL172changerecord             = "changetype:" FILL
177                           (change-add / change-delete /173                           (change-add / change-delete /
178                            change-modify / change-moddn)174                            change-modify / change-moddn)
179175
180change-add               = "add"                SEP 1*attrval-spec176change-add               = "add"                SEP 1*attrval-spec
181177
182change-delete            = "delete"             SEP178change-delete            = "delete"             SEP
183179
184change-moddn             = ("modrdn" / "moddn") SEP180change-moddn             = ("modrdn" / "moddn") SEP
185                            "newrdn:" (    FILL rdn /181                            "newrdn:" (    FILL rdn /
186                                       ":" FILL base64-rdn) SEP182                                       ":" FILL base64-rdn) SEP
187                            "deleteoldrdn:" FILL ("0" / "1")  SEP183                            "deleteoldrdn:" FILL ("0" / "1")  SEP
188                            0*1("newsuperior:"184                            0*1("newsuperior:"
189                            (    FILL distinguishedName /185                            (    FILL distinguishedName /
190                             ":" FILL base64-distinguishedName) SEP)186                             ":" FILL base64-distinguishedName) SEP)
191187
192change-modify            = "modify"             SEP *mod-spec188change-modify            = "modify"             SEP *mod-spec
193189
194mod-spec                 = ("add:" / "delete:" / "replace:")190mod-spec                 = ("add:" / "delete:" / "replace:")
195                           FILL AttributeDescription SEP191                           FILL AttributeDescription SEP
196                           *attrval-spec192                           *attrval-spec
197                           "-" SEP193                           "-" SEP
198194
199SPACE                    = %x20195SPACE                    = %x20
200                           ; ASCII SP, space196                           ; ASCII SP, space
201197
202FILL                     = *SPACE198FILL                     = *SPACE
203199
204SEP                      = (CR LF / LF)200SEP                      = (CR LF / LF)
205201
206CR                       = %x0D202CR                       = %x0D
207                           ; ASCII CR, carriage return203                           ; ASCII CR, carriage return
208204
209LF                       = %x0A205LF                       = %x0A
210                           ; ASCII LF, line feed206                           ; ASCII LF, line feed
211207
212ALPHA                    = %x41-5A / %x61-7A208ALPHA                    = %x41-5A / %x61-7A
213                           ; A-Z / a-z209                           ; A-Z / a-z
214210
215DIGIT                    = %x30-39211DIGIT                    = %x30-39
216                           ; 0-9212                           ; 0-9
217213
218UTF8-1                   = %x00-7F214UTF8-1                   = %x00-7F
219215
220UTF8-tail                = %x80-BF216UTF8-tail                = %x80-BF
221217
222UTF8-2                   = %xC2-DF UTF8-tail218UTF8-2                   = %xC2-DF UTF8-tail
223219
224UTF8-3                   = %xE0 %xA0-BF UTF8-tail /220UTF8-3                   = %xE0 %xA0-BF UTF8-tail /
225                           %xE1-EC 2( UTF8-tail ) /221                           %xE1-EC 2( UTF8-tail ) /
226                           %xED %x80-9F UTF8-tail /222                           %xED %x80-9F UTF8-tail /
227                           %xEE-EF 2( UTF8-tail )223                           %xEE-EF 2( UTF8-tail )
228224
229UTF8-4                   = %xF0 %x90-BF 2( UTF8-tail ) /225UTF8-4                   = %xF0 %x90-BF 2( UTF8-tail ) /
230                           %xF1-F3 3( UTF8-tail ) /226                           %xF1-F3 3( UTF8-tail ) /
231                           %xF4 %x80-8F 2( UTF8-tail )227                           %xF4 %x80-8F 2( UTF8-tail )
232228
233UTF8-CHAR                = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4229UTF8-CHAR                = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4
234230
235UTF8-STRING              = *UTF8-CHAR231UTF8-STRING              = *UTF8-CHAR
236232
237SAFE-CHAR                = %x01-09 / %x0B-0C / %x0E-7F233SAFE-CHAR                = %x01-09 / %x0B-0C / %x0E-7F
238                           ; any value <= 127 decimal except NUL, LF,234                           ; any value <= 127 decimal except NUL, LF,
239                           ; and CR235                           ; and CR
240236
241SAFE-INIT-CHAR           = %x01-09 / %x0B-0C / %x0E-1F /237SAFE-INIT-CHAR           = %x01-09 / %x0B-0C / %x0E-1F /
242                           %x21-39 / %x3B / %x3D-7F238                           %x21-39 / %x3B / %x3D-7F
243                           ; any value <= 127 except NUL, LF, CR,239                           ; any value <= 127 except NUL, LF, CR,
244                           ; SPACE, colon (":", ASCII 58 decimal)240                           ; SPACE, colon (":", ASCII 58 decimal)
245                           ; and less-than ("<" , ASCII 60 decimal)241                           ; and less-than ("<" , ASCII 60 decimal)
246242
247SAFE-STRING              = [SAFE-INIT-CHAR *SAFE-CHAR]243SAFE-STRING              = [SAFE-INIT-CHAR *SAFE-CHAR]
248244
249SAFE-UTF8-CHAR           = SAFE-CHAR / UTF8-2 / UTF8-3 / UTF8-4245SAFE-UTF8-CHAR           = SAFE-CHAR / UTF8-2 / UTF8-3 / UTF8-4
250246
251SAFE-INIT-UTF8-CHAR      = SAFE-INIT-CHAR / UTF8-2 / UTF8-3 / UTF8-4247SAFE-INIT-UTF8-CHAR      = SAFE-INIT-CHAR / UTF8-2 / UTF8-3 / UTF8-4
252248
253SAFE-UTF8-STRING         = [SAFE-INIT-UTF8-CHAR *SAFE-UTF8-CHAR]249SAFE-UTF8-STRING         = [SAFE-INIT-UTF8-CHAR *SAFE-UTF8-CHAR]
254250
255BASE64-UTF8-STRING       = BASE64-STRING251BASE64-UTF8-STRING       = BASE64-STRING
256                           ; MUST be the base64 encoding of a252                           ; MUST be the base64 encoding of a
257                           ; UTF8-STRING253                           ; UTF8-STRING
258254
259BASE64-CHAR              = %x2B / %x2F / %x30-39 / %x3D / %x41-5A /255BASE64-CHAR              = %x2B / %x2F / %x30-39 / %x3D / %x41-5A /
260                           %x61-7A256                           %x61-7A
261                           ; +, /, 0-9, =, A-Z, and a-z257                           ; +, /, 0-9, =, A-Z, and a-z
262                           ; as specified in [RFC2045]258                           ; as specified in [RFC2045]
263259
264BASE64-STRING            = [*(BASE64-CHAR)]260BASE64-STRING            = [*(BASE64-CHAR)]
265261
266262
267   Notes on LDIF Syntax263   Notes on LDIF Syntax
268264
269      1)  For the LDIF format described in this document, the version265      1)  For the LDIF format described in this document, the version
270          number MUST be "2".  If the version number is absent,266          number MUST be "2".  If the version number is absent,
271          implementations MAY choose to interpret the contents as an267          implementations MAY choose to interpret the contents as an
272          older LDIF file format, supported by the University of268          older LDIF file format, supported by the University of
273          Michigan ldap-3.3 implementation [UMich96].269          Michigan ldap-3.3 implementation [UMich96].
274270
275      2)  Any non-empty line, including comment lines, in an LDIF file271      2)  Any non-empty line, including comment lines, in an LDIF file
276          MAY be folded by inserting a line separator (SEP) and a SPACE.272          MAY be folded by inserting a line separator (SEP) and a SPACE.
277          Folding MUST NOT occur before the first character of the line.273          Folding MUST NOT occur before the first character of the line.
278          In other words, folding a line into two lines, the first of274          In other words, folding a line into two lines, the first of
279          which is empty, is not permitted.  Any line that begins with a275          which is empty, is not permitted.  Any line that begins with a
280          single space MUST be treated as a continuation of the previous276          single space MUST be treated as a continuation of the previous
281          (non-empty) line.  When joining folded lines, exactly one space277          (non-empty) line.  When joining folded lines, exactly one space
282          character at the beginning of each continued line must be278          character at the beginning of each continued line must be
283          discarded.  Implementations SHOULD NOT fold lines in the middle279          discarded.  Implementations SHOULD NOT fold lines in the middle
284          of a multi-byte UTF-8 character.280          of a multi-byte UTF-8 character.
285281
286      3)  Any line that begins with a pound-sign ("#", ASCII 35) is a282      3)  Any line that begins with a pound-sign ("#", ASCII 35) is a
287          comment line, and MUST be ignored when parsing an LDIF file.283          comment line, and MUST be ignored when parsing an LDIF file.
288284
289      4)  Any dn, rdn or attrval-spec that contains characters other285      4)  Any dn, rdn or attrval-spec that contains characters other
290          than those defined as "SAFE-UTF8-CHAR", or begins with a286          than those defined as "SAFE-UTF8-CHAR", or begins with a
291          character other than those defined as "SAFE-INIT-UTF8-CHAR",287          character other than those defined as "SAFE-INIT-UTF8-CHAR",
292          above, MUST be base-64 encoded.  Other values MAY be base-64288          above, MUST be base-64 encoded.  Other values MAY be base-64
293          encoded.  Any value that contains characters other than those289          encoded.  Any value that contains characters other than those
294          defined as "SAFE--CHAR", or begins with a character other than290          defined as "SAFE--CHAR", or begins with a character other than
295          those defined as "SAFE-INIT--CHAR", above, MUST be base-64291          those defined as "SAFE-INIT--CHAR", above, MUST be base-64
296          encoded.  Other values MAY be base-64 encoded.292          encoded.  Other values MAY be base-64 encoded.
297293
298      5)  When a zero-length attribute value is to be included directly294      5)  When a zero-length attribute value is to be included directly
299          in an LDIF file, it MUST be represented as295          in an LDIF file, it MUST be represented as
300          AttributeDescription ":" FILL SEP.  For example, "seeAlso:"296          AttributeDescription ":" FILL SEP.  For example, "seeAlso:"
301          followed by a newline represents a zero-length "seeAlso"297          followed by a newline represents a zero-length "seeAlso"
302          attribute value.  It is also permissible for the value298          attribute value.  It is also permissible for the value
303          referred to by a URL to be of zero length.299          referred to by a URL to be of zero length.
304300
305      6) When a URL is specified in an attrval-spec, the following301      6) When a URL is specified in an attrval-spec, the following
306          conventions apply:302          conventions apply:
307303
308         a) Implementations SHOULD support the file:// URL format.  The304         a) Implementations SHOULD support the file:// URL format.  The
309            contents of the referenced file are to be included verbatim305            contents of the referenced file are to be included verbatim
310            in the interpreted output of the LDIF file.306            in the interpreted output of the LDIF file.
311         b) Implementations MAY support other URL formats.  The307         b) Implementations MAY support other URL formats.  The
312            semantics associated with each supported URL will be308            semantics associated with each supported URL will be
313            documented in an associated Applicability Statement.309            documented in an associated Applicability Statement.
314310
315      7)  Distinguished names, relative distinguished names, and311      7)  Distinguished names, relative distinguished names, and
316          attribute values of DirectoryString syntax MUST be valid UTF-8312          attribute values of DirectoryString syntax MUST be valid UTF-8
317          strings.  Implementations that read LDIF MAY interpret files313          strings.  Implementations that read LDIF MAY interpret files
318          in which these entities are stored in some other character set314          in which these entities are stored in some other character set
319          encoding, but implementations MUST NOT generate LDIF content315          encoding, but implementations MUST NOT generate LDIF content
320          which does not contain valid UTF-8 data.316          which does not contain valid UTF-8 data.
321317
322      8)  Values or distinguished names that end with SPACE SHOULD be318      8)  Values or distinguished names that end with SPACE SHOULD be
323          base-64 encoded.319          base-64 encoded.
324320
325      9)  When controls are included in an LDIF file, implementations321      9)  When controls are included in an LDIF file, implementations
326          MAY choose to ignore some or all of them.  This may be322          MAY choose to ignore some or all of them.  This may be
327          necessary if the changes described in the LDIF file are being323          necessary if the changes described in the LDIF file are being
328          sent on an LDAPv2 connection (LDAPv2 does not support324          sent on an LDAPv2 connection (LDAPv2 does not support
329          controls), or the particular controls are not supported by the325          controls), or the particular controls are not supported by the
330          remote server.  If the criticality of a control is "true", then326          remote server.  If the criticality of a control is "true", then
331          the implementation MUST either include the control, or MUST327          the implementation MUST either include the control, or MUST
332          NOT send the operation to a remote server.328          NOT send the operation to a remote server.
333329
334      10) When an attrval-spec, distinguishedName, or rdn is base64-330      10) When an attrval-spec, distinguishedName, or rdn is base64-
335          encoded, the encoding rules specified in [RFC2045] are used331          encoded, the encoding rules specified in [RFC2045] are used
336          with the following exceptions:  a) The requirement that base64332          with the following exceptions:  a) The requirement that base64
337          output streams must be represented as lines of no more than 76333          output streams must be represented as lines of no more than 76
338          characters is removed.  Lines in LDIF files may only be folded334          characters is removed.  Lines in LDIF files may only be folded
339          according to the folding rules described in note 2, above.  b)335          according to the folding rules described in note 2, above.  b)
340          Base64 strings in [RFC2045] may contain characters other than336          Base64 strings in [RFC2045] may contain characters other than
341          those defined in BASE64-CHAR, and are ignored.  LDIF does not337          those defined in BASE64-CHAR, and are ignored.  LDIF does not
342          permit any extraneous characters, other than those used for338          permit any extraneous characters, other than those used for
343          line folding.339          line folding.
344340
345Examples of LDAP Data Interchange Format341Examples of LDAP Data Interchange Format
346342
347Example 1: An simple LDAP file with two entries343Example 1: An simple LDAP file with two entries
348344
349version: 1345version: 1
350dn: cn=Barbara Jensen, ou=Product Development, dc=airius, dc=com346dn: cn=Barbara Jensen, ou=Product Development, dc=airius, dc=com
351objectclass: top347objectclass: top
352objectclass: person348objectclass: person
353objectclass: organizationalPerson349objectclass: organizationalPerson
354cn: Barbara Jensen350cn: Barbara Jensen
355cn: Barbara J Jensen351cn: Barbara J Jensen
356cn: Babs Jensen352cn: Babs Jensen
357sn: Jensen353sn: Jensen
358uid: bjensen354uid: bjensen
359telephonenumber: +1 408 555 1212355telephonenumber: +1 408 555 1212
360description: A big sailing fan.356description: A big sailing fan.
361357
362dn: cn=Bjorn Jensen, ou=Accounting, dc=airius, dc=com358dn: cn=Bjorn Jensen, ou=Accounting, dc=airius, dc=com
363objectclass: top359objectclass: top
364objectclass: person360objectclass: person
365objectclass: organizationalPerson361objectclass: organizationalPerson
366cn: Bjorn Jensen362cn: Bjorn Jensen
367sn: Jensen363sn: Jensen
368telephonenumber: +1 408 555 1212364telephonenumber: +1 408 555 1212
369365
370Example 2: A file containing an entry with a folded attribute value366Example 2: A file containing an entry with a folded attribute value
371367
372version: 1368version: 1
373dn:cn=Barbara Jensen, ou=Product Development, dc=airius, dc=com369dn:cn=Barbara Jensen, ou=Product Development, dc=airius, dc=com
374objectclass:top370objectclass:top
375objectclass:person371objectclass:person
376objectclass:organizationalPerson372objectclass:organizationalPerson
377cn:Barbara Jensen373cn:Barbara Jensen
378cn:Barbara J Jensen374cn:Barbara J Jensen
379cn:Babs Jensen375cn:Babs Jensen
380sn:Jensen376sn:Jensen
381uid:bjensen377uid:bjensen
382telephonenumber:+1 408 555 1212378telephonenumber:+1 408 555 1212
383description:Babs is a big sailing fan, and travels extensively in sea379description:Babs is a big sailing fan, and travels extensively in sea
384 rch of perfect sailing conditions.380 rch of perfect sailing conditions.
385title:Product Manager, Rod and Reel Division381title:Product Manager, Rod and Reel Division
386382
387Example 3: A file containing a base-64-encoded value383Example 3: A file containing a base-64-encoded value
388384
389version: 1385version: 1
390dn: cn=Gern Jensen, ou=Product Testing, dc=airius, dc=com386dn: cn=Gern Jensen, ou=Product Testing, dc=airius, dc=com
391objectclass: top387objectclass: top
392objectclass: person388objectclass: person
393objectclass: organizationalPerson389objectclass: organizationalPerson
394cn: Gern Jensen390cn: Gern Jensen
395cn: Gern O Jensen391cn: Gern O Jensen
396sn: Jensen392sn: Jensen
397uid: gernj393uid: gernj
398telephonenumber: +1 408 555 1212394telephonenumber: +1 408 555 1212
399description:: V2hhdCBhIGNhcmVmdWwgcmVhZGVyIHlvdSBhcmUhICBUaGlzIHZhbHVl395description:: V2hhdCBhIGNhcmVmdWwgcmVhZGVyIHlvdSBhcmUhICBUaGlzIHZhbHVl
400IGlzIGJhc2UtNjQtZW5jb2RlZCBiZWNhdXNlIGl0IGhhcyBhIGNvbnRyb2wgY2hhcmFjdG396IGlzIGJhc2UtNjQtZW5jb2RlZCBiZWNhdXNlIGl0IGhhcyBhIGNvbnRyb2wgY2hhcmFjdG
401VyIGluIGl0IChhIENSKS4NICBCeSB0aGUgd2F5LCB5b3Ugc2hvdWxkIHJlYWxseSBnZXQg397VyIGluIGl0IChhIENSKS4NICBCeSB0aGUgd2F5LCB5b3Ugc2hvdWxkIHJlYWxseSBnZXQg
402b3V0IG1vcmUu398b3V0IG1vcmUu
403399
404Example 4: A file containing an entries with UTF-8-encoded attribute400Example 4: A file containing an entries with UTF-8-encoded attribute
405values, including language tags.  Comments indicate the contents401values, including language tags.  Comments indicate the contents
406of UTF-8-encoded attributes and distinguished names.402of UTF-8-encoded attributes and distinguished names.
407403
408version: 1404version: 1
409dn:: b3U95Za25qWt6YOoLG89QWlyaXVz405dn:: b3U95Za25qWt6YOoLG89QWlyaXVz
410# dn:: ou=<JapaneseOU>,o=Airius406# dn:: ou=<JapaneseOU>,o=Airius
411objectclass: top407objectclass: top
412objectclass: organizationalUnit408objectclass: organizationalUnit
413ou:: 5Za25qWt6YOo409ou:: 5Za25qWt6YOo
414# ou:: <JapaneseOU>410# ou:: <JapaneseOU>
415ou;lang-ja:: 5Za25qWt6YOo411ou;lang-ja:: 5Za25qWt6YOo
416# ou;lang-ja:: <JapaneseOU>412# ou;lang-ja:: <JapaneseOU>
417ou;lang-ja;phonetic:: 44GI44GE44GO44KH44GG44G2413ou;lang-ja;phonetic:: 44GI44GE44GO44KH44GG44G2
418414
419# ou;lang-ja:: <JapaneseOU_in_phonetic_representation>415# ou;lang-ja:: <JapaneseOU_in_phonetic_representation>
420ou;lang-en: Sales416ou;lang-en: Sales
421description: Japanese office417description: Japanese office
422418
423dn:: dWlkPXJvZ2FzYXdhcmEsb3U95Za25qWt6YOoLG89QWlyaXVz419dn:: dWlkPXJvZ2FzYXdhcmEsb3U95Za25qWt6YOoLG89QWlyaXVz
424# dn:: uid=<uid>,ou=<JapaneseOU>,o=Airius420# dn:: uid=<uid>,ou=<JapaneseOU>,o=Airius
425userpassword: {SHA}O3HSv1MusyL4kTjP+HKI5uxuNoM=421userpassword: {SHA}O3HSv1MusyL4kTjP+HKI5uxuNoM=
426objectclass: top422objectclass: top
427objectclass: person423objectclass: person
428objectclass: organizationalPerson424objectclass: organizationalPerson
429objectclass: inetOrgPerson425objectclass: inetOrgPerson
430uid: rogasawara426uid: rogasawara
431mail: rogasawara@airius.co.jp427mail: rogasawara@airius.co.jp
432givenname;lang-ja:: 44Ot44OJ44OL44O8428givenname;lang-ja:: 44Ot44OJ44OL44O8
433# givenname;lang-ja:: <JapaneseGivenname>429# givenname;lang-ja:: <JapaneseGivenname>
434sn;lang-ja:: 5bCP56yg5Y6f430sn;lang-ja:: 5bCP56yg5Y6f
435# sn;lang-ja:: <JapaneseSn>431# sn;lang-ja:: <JapaneseSn>
436cn;lang-ja:: 5bCP56yg5Y6fIOODreODieODi+ODvA==432cn;lang-ja:: 5bCP56yg5Y6fIOODreODieODi+ODvA==
437# cn;lang-ja:: <JapaneseCn>433# cn;lang-ja:: <JapaneseCn>
438title;lang-ja:: 5Za25qWt6YOoIOmDqOmVtw==434title;lang-ja:: 5Za25qWt6YOoIOmDqOmVtw==
439# title;lang-ja:: <JapaneseTitle>435# title;lang-ja:: <JapaneseTitle>
440preferredlanguage: ja436preferredlanguage: ja
441givenname:: 44Ot44OJ44OL44O8437givenname:: 44Ot44OJ44OL44O8
442# givenname:: <JapaneseGivenname>438# givenname:: <JapaneseGivenname>
443sn:: 5bCP56yg5Y6f439sn:: 5bCP56yg5Y6f
444# sn:: <JapaneseSn>440# sn:: <JapaneseSn>
445cn:: 5bCP56yg5Y6fIOODreODieODi+ODvA==441cn:: 5bCP56yg5Y6fIOODreODieODi+ODvA==
446# cn:: <JapaneseCn>442# cn:: <JapaneseCn>
447title:: 5Za25qWt6YOoIOmDqOmVtw==443title:: 5Za25qWt6YOoIOmDqOmVtw==
448# title:: <JapaneseTitle>444# title:: <JapaneseTitle>
449givenname;lang-ja;phonetic:: 44KN44Gp44Gr44O8445givenname;lang-ja;phonetic:: 44KN44Gp44Gr44O8
450# givenname;lang-ja;phonetic::446# givenname;lang-ja;phonetic::
451<JapaneseGivenname_in_phonetic_representation_kana>447<JapaneseGivenname_in_phonetic_representation_kana>
452sn;lang-ja;phonetic:: 44GK44GM44GV44KP44KJ448sn;lang-ja;phonetic:: 44GK44GM44GV44KP44KJ
453# sn;lang-ja;phonetic:: <JapaneseSn_in_phonetic_representation_kana>449# sn;lang-ja;phonetic:: <JapaneseSn_in_phonetic_representation_kana>
454cn;lang-ja;phonetic:: 44GK44GM44GV44KP44KJIOOCjeOBqeOBq+ODvA==450cn;lang-ja;phonetic:: 44GK44GM44GV44KP44KJIOOCjeOBqeOBq+ODvA==
455# cn;lang-ja;phonetic:: <JapaneseCn_in_phonetic_representation_kana>451# cn;lang-ja;phonetic:: <JapaneseCn_in_phonetic_representation_kana>
456title;lang-ja;phonetic:: 44GI44GE44GO44KH44GG44G2IOOBtuOBoeOCh+OBhg==452title;lang-ja;phonetic:: 44GI44GE44GO44KH44GG44G2IOOBtuOBoeOCh+OBhg==
457# title;lang-ja;phonetic::453# title;lang-ja;phonetic::
458# <JapaneseTitle_in_phonetic_representation_kana>454# <JapaneseTitle_in_phonetic_representation_kana>
459givenname;lang-en: Rodney455givenname;lang-en: Rodney
460sn;lang-en: Ogasawara456sn;lang-en: Ogasawara
461cn;lang-en: Rodney Ogasawara457cn;lang-en: Rodney Ogasawara
462title;lang-en: Sales, Director458title;lang-en: Sales, Director
463459
464Example 5: A file containing a reference to an external file460Example 5: A file containing a reference to an external file
465461
466version: 1462version: 1
467dn: cn=Horatio Jensen, ou=Product Testing, dc=airius, dc=com463dn: cn=Horatio Jensen, ou=Product Testing, dc=airius, dc=com
468objectclass: top464objectclass: top
469objectclass: person465objectclass: person
470objectclass: organizationalPerson466objectclass: organizationalPerson
471cn: Horatio Jensen467cn: Horatio Jensen
472468
473cn: Horatio N Jensen469cn: Horatio N Jensen
474sn: Jensen470sn: Jensen
475uid: hjensen471uid: hjensen
476telephonenumber: +1 408 555 1212472telephonenumber: +1 408 555 1212
477jpegphoto:< file:///usr/local/directory/photos/hjensen.jpg473jpegphoto:< file:///usr/local/directory/photos/hjensen.jpg
478474
479Example 6: A file containing a series of change records and comments475Example 6: A file containing a series of change records and comments
480476
481version: 1477version: 1
482# Add a new entry478# Add a new entry
483dn: cn=Fiona Jensen, ou=Marketing, dc=airius, dc=com479dn: cn=Fiona Jensen, ou=Marketing, dc=airius, dc=com
484changetype: add480changetype: add
485objectclass: top481objectclass: top
486objectclass: person482objectclass: person
487objectclass: organizationalPerson483objectclass: organizationalPerson
488cn: Fiona Jensen484cn: Fiona Jensen
489sn: Jensen485sn: Jensen
490uid: fiona486uid: fiona
491telephonenumber: +1 408 555 1212487telephonenumber: +1 408 555 1212
492jpegphoto:< file:///usr/local/directory/photos/fiona.jpg488jpegphoto:< file:///usr/local/directory/photos/fiona.jpg
493489
494# Delete an existing entry490# Delete an existing entry
495dn: cn=Robert Jensen, ou=Marketing, dc=airius, dc=com491dn: cn=Robert Jensen, ou=Marketing, dc=airius, dc=com
496changetype: delete492changetype: delete
497493
498# Modify an entry's relative distinguished name494# Modify an entry's relative distinguished name
499dn: cn=Paul Jensen, ou=Product Development, dc=airius, dc=com495dn: cn=Paul Jensen, ou=Product Development, dc=airius, dc=com
500changetype: modrdn496changetype: modrdn
501newrdn: cn=Paula Jensen497newrdn: cn=Paula Jensen
502deleteoldrdn: 1498deleteoldrdn: 1
503499
504# Rename an entry and move all of its children to a new location in500# Rename an entry and move all of its children to a new location in
505# the directory tree (only implemented by LDAPv3 servers).501# the directory tree (only implemented by LDAPv3 servers).
506dn: ou=PD Accountants, ou=Product Development, dc=airius, dc=com502dn: ou=PD Accountants, ou=Product Development, dc=airius, dc=com
507changetype: modrdn503changetype: modrdn
508newrdn: ou=Product Development Accountants504newrdn: ou=Product Development Accountants
509deleteoldrdn: 0505deleteoldrdn: 0
510newsuperior: ou=Accounting, dc=airius, dc=com506newsuperior: ou=Accounting, dc=airius, dc=com
511507
512# Modify an entry: add an additional value to the postaladdress508# Modify an entry: add an additional value to the postaladdress
513# attribute, completely delete the description attribute, replace509# attribute, completely delete the description attribute, replace
514# the telephonenumber attribute with two values, and delete a specific510# the telephonenumber attribute with two values, and delete a specific
515# value from the facsimiletelephonenumber attribute511# value from the facsimiletelephonenumber attribute
516dn: cn=Paula Jensen, ou=Product Development, dc=airius, dc=com512dn: cn=Paula Jensen, ou=Product Development, dc=airius, dc=com
517changetype: modify513changetype: modify
518add: postaladdress514add: postaladdress
519postaladdress: 123 Anystreet $ Sunnyvale, CA $ 94086515postaladdress: 123 Anystreet $ Sunnyvale, CA $ 94086
520-516-
521517
522delete: description518delete: description
523-519-
524replace: telephonenumber520replace: telephonenumber
525telephonenumber: +1 408 555 1234521telephonenumber: +1 408 555 1234
526telephonenumber: +1 408 555 5678522telephonenumber: +1 408 555 5678
527-523-
528delete: facsimiletelephonenumber524delete: facsimiletelephonenumber
529facsimiletelephonenumber: +1 408 555 9876525facsimiletelephonenumber: +1 408 555 9876
530-526-
531527
532# Modify an entry: replace the postaladdress attribute with an empty528# Modify an entry: replace the postaladdress attribute with an empty
533# set of values (which will cause the attribute to be removed), and529# set of values (which will cause the attribute to be removed), and
534# delete the entire description attribute.  Note that the first will530# delete the entire description attribute.  Note that the first will
535# always succeed, while the second will only succeed if at least531# always succeed, while the second will only succeed if at least
536# one value for the description attribute is present.532# one value for the description attribute is present.
537dn: cn=Ingrid Jensen, ou=Product Support, dc=airius, dc=com533dn: cn=Ingrid Jensen, ou=Product Support, dc=airius, dc=com
538changetype: modify534changetype: modify
539replace: postaladdress535replace: postaladdress
540-536-
541delete: description537delete: description
542-538-
543539
544Example 7: An LDIF file containing a change record with a control540Example 7: An LDIF file containing a change record with a control
545version: 1541version: 1
546# Delete an entry.  The operation will attach the LDAPv3542# Delete an entry.  The operation will attach the LDAPv3
547# Tree Delete Control defined in [Armijo00].  The criticality543# Tree Delete Control defined in [Armijo00].  The criticality
548# field is "true" and the controlValue field is544# field is "true" and the controlValue field is
549# absent, as required by [Armijo00].545# absent, as required by [Armijo00].
550dn: ou=Product Development, dc=airius, dc=com546dn: ou=Product Development, dc=airius, dc=com
551control: 1.2.840.113556.1.4.805 true547control: 1.2.840.113556.1.4.805 true
552changetype: delete548changetype: delete
553549
n554Example 8: Incrementing the uidNumber, example from [RFC4525].n
555# Increment uidNumber
556version: 1
557dn: cn=max-assigned uidNumber,dc=example,dc=com
558changetype: modify
559increment: uidNumber
560uidNumber: 1
561-
562 
563Security Considerations550Security Considerations
564551
565   Given typical directory applications, an LDIF file is likely to552   Given typical directory applications, an LDIF file is likely to
566   contain sensitive personal data.  Appropriate measures should be553   contain sensitive personal data.  Appropriate measures should be
567   taken to protect the privacy of those persons whose data is contained554   taken to protect the privacy of those persons whose data is contained
568   in an LDIF file.555   in an LDIF file.
569556
570   Since ":<" directives can cause external content to be included when557   Since ":<" directives can cause external content to be included when
571   processing an LDIF file, one should be cautious of accepting LDIF558   processing an LDIF file, one should be cautious of accepting LDIF
572   files from external sources.  A "trojan" LDIF file could name a file559   files from external sources.  A "trojan" LDIF file could name a file
573   with sensitive contents and cause it to be included in a directory560   with sensitive contents and cause it to be included in a directory
574   entry, which a hostile entity could read via LDAP.561   entry, which a hostile entity could read via LDAP.
575562
576   LDIF does not provide any method for carrying authentication563   LDIF does not provide any method for carrying authentication
577   information with an LDIF file.  Users of LDIF files must take care to564   information with an LDIF file.  Users of LDIF files must take care to
578   verify the integrity of an LDIF file received from an external565   verify the integrity of an LDIF file received from an external
579   source.566   source.
580567
581Contributors568Contributors
582   Gordon Good was the author of [RFC2849] which defined LDIF. Most569   Gordon Good was the author of [RFC2849] which defined LDIF. Most
583   of this specification is a copy of [RFC2849], simply adding full570   of this specification is a copy of [RFC2849], simply adding full
584   support for UTF-8 and editing according to newer RFC standards.571   support for UTF-8 and editing according to newer RFC standards.
585572
586Acknowledgments573Acknowledgments
587574
588   The LDAP Interchange Format was developed as part of the University575   The LDAP Interchange Format was developed as part of the University
589   of Michigan LDAP reference implementation, and was developed by Tim576   of Michigan LDAP reference implementation, and was developed by Tim
590   Howes, Mark Smith, and Gordon Good.  It is based in part upon work577   Howes, Mark Smith, and Gordon Good.  It is based in part upon work
591   supported by the National Science Foundation under Grant No.  NCR-578   supported by the National Science Foundation under Grant No.  NCR-
592   9416667.579   9416667.
593580
594   Members of the IETF LDAP Extensions Working group provided many581   Members of the IETF LDAP Extensions Working group provided many
595   helpful suggestions.  In particular, Hallvard B. Furuseth of the582   helpful suggestions.  In particular, Hallvard B. Furuseth of the
596   University of Oslo made many significant contributions to this583   University of Oslo made many significant contributions to this
597   document, including a thorough review and rewrite of the BNF.584   document, including a thorough review and rewrite of the BNF.
598585
599Normative References586Normative References
600587
601   [RFC2234]   Crocker, D., and P. Overell, "Augmented BNF for Syntax588   [RFC2234]   Crocker, D., and P. Overell, "Augmented BNF for Syntax
602               Specifications: ABNF", RFC 2234, November 1997.589               Specifications: ABNF", RFC 2234, November 1997.
603590
604   [RFC2253]   Wahl, M., Kille, S. and T. Howes, "A String591   [RFC2253]   Wahl, M., Kille, S. and T. Howes, "A String
605               Representation of Distinguished Names", RFC 2253,592               Representation of Distinguished Names", RFC 2253,
606               December 1997.593               December 1997.
607594
608   [RFC2251]   Wahl, M., Howes, T. and S. Kille, "Lightweight Directory595   [RFC2251]   Wahl, M., Howes, T. and S. Kille, "Lightweight Directory
609               Access Protocol (v3)", RFC 2251, July 1997.596               Access Protocol (v3)", RFC 2251, July 1997.
610597
611   [RFC2045]   Freed, N. and N. Borenstein, "Multipurpose Internet Mail598   [RFC2045]   Freed, N. and N. Borenstein, "Multipurpose Internet Mail
612               Extensions (MIME) Part One: Format of Internet Message599               Extensions (MIME) Part One: Format of Internet Message
613               Bodies", RFC 2045, November 1996.600               Bodies", RFC 2045, November 1996.
614601
615   [RFC1738]   Berners-Lee,  T., Masinter, L. and M. McCahill, "Uniform602   [RFC1738]   Berners-Lee,  T., Masinter, L. and M. McCahill, "Uniform
616               Resource Locators (URL)", RFC 1738, December 1994.603               Resource Locators (URL)", RFC 1738, December 1994.
617604
618   [RFC2119]   Bradner, S., "Key Words for use in RFCs to Indicate605   [RFC2119]   Bradner, S., "Key Words for use in RFCs to Indicate
619               Requirement Levels", BCP 14, RFC 2119, March 1997.606               Requirement Levels", BCP 14, RFC 2119, March 1997.
620607
621   [RFC3629]   Yergeau, F., "UTF-8, a transformation format608   [RFC3629]   Yergeau, F., "UTF-8, a transformation format
622               of ISO 10646", November 2003609               of ISO 10646", November 2003
623610
t624   [RFC4525]   Zeilenga, K., "Lightweight Directory Access Protocolt611 
625               Modify-Increment Extension", RFC 4525, June 2006612 
626613
627Informative References614Informative References
628615
629   [RFC2849]   Good, G., "The LDAP Data Interchange Format",616   [RFC2849]   Good, G., "The LDAP Data Interchange Format",
630               RFC 2849, June 2000.617               RFC 2849, June 2000.
631618
632   [RFC2425]   Howes, T. and M. Smith, "A MIME Content-Type for Directory619   [RFC2425]   Howes, T. and M. Smith, "A MIME Content-Type for Directory
633               Information", RFC 2425, September 1998.620               Information", RFC 2425, September 1998.
634621
635   [Armijo00]  M. P. Armijo, "Tree Delete Control", Work in Progress.622   [Armijo00]  M. P. Armijo, "Tree Delete Control", Work in Progress.
636               August 2000.623               August 2000.
637624
638   [UMich96]   The SLAPD and SLURPD Administrators Guide.  University of625   [UMich96]   The SLAPD and SLURPD Administrators Guide.  University of
639               Michigan, April 1996.  <URL:626               Michigan, April 1996.  <URL:
640           http://www.umich.edu/~dirsvcs/ldap/doc/guides/slapd/toc.html>627           http://www.umich.edu/~dirsvcs/ldap/doc/guides/slapd/toc.html>
641628
642   [RFC2223]   Postel, J. and Reynolds, J., "Instructions to RFC629   [RFC2223]   Postel, J. and Reynolds, J., "Instructions to RFC
643               Authors", RFC2223, October 1997.630               Authors", RFC2223, October 1997.
644631
645Author's Address632Author's Address
646633
647   Gordon Good634   Gordon Good
648   iPlanet e-commerce Solutions635   iPlanet e-commerce Solutions
649   150 Network Circle636   150 Network Circle
650   Mailstop USCA17-201637   Mailstop USCA17-201
651   Santa Clara, CA 95054, USA638   Santa Clara, CA 95054, USA
652639
653   Phone: +1 408 276 4351640   Phone: +1 408 276 4351
654   EMail:  ggood@netscape.com641   EMail:  ggood@netscape.com
655642
656Intellectual Property643Intellectual Property
657644
658   The IETF takes no position regarding the validity or scope of any645   The IETF takes no position regarding the validity or scope of any
659   Intellectual Property Rights or other rights that might be claimed646   Intellectual Property Rights or other rights that might be claimed
660   to pertain to the implementation or use of the technology647   to pertain to the implementation or use of the technology
661   described in this document or the extent to which any license648   described in this document or the extent to which any license
662   under such rights might or might not be available; nor does it649   under such rights might or might not be available; nor does it
663   represent that it has made any independent effort to identify any650   represent that it has made any independent effort to identify any
664   such rights.  Information on the ISOC's procedures with respect to651   such rights.  Information on the ISOC's procedures with respect to
665   rights in ISOC Documents can be found in BCP 78 and BCP 79.652   rights in ISOC Documents can be found in BCP 78 and BCP 79.
666653
667   Copies of IPR disclosures made to the IETF Secretariat and any654   Copies of IPR disclosures made to the IETF Secretariat and any
668   assurances of licenses to be made available, or the result of an655   assurances of licenses to be made available, or the result of an
669   attempt made to obtain a general license or permission for the use656   attempt made to obtain a general license or permission for the use
670   of such proprietary rights by implementers or users of this657   of such proprietary rights by implementers or users of this
671   specification can be obtained from the IETF on-line IPR repository658   specification can be obtained from the IETF on-line IPR repository
672   at http://www.ietf.org/ipr.659   at http://www.ietf.org/ipr.
673660
674   The IETF invites any interested party to bring to its attention661   The IETF invites any interested party to bring to its attention
675   any copyrights, patents or patent applications, or other662   any copyrights, patents or patent applications, or other
676   proprietary rights that may cover technology that may be required663   proprietary rights that may cover technology that may be required
677   to implement this standard.  Please address the information to the664   to implement this standard.  Please address the information to the
678   IETF at ietf-ipr@ietf.org.665   IETF at ietf-ipr@ietf.org.
679666
680Disclaimer of Validity667Disclaimer of Validity
681668
682   This document and the information contained herein is provided on an669   This document and the information contained herein is provided on an
683   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING670   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
684   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING671   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
685   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION672   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
686   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF673   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
687   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.674   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
688675
689Copyright Statement676Copyright Statement
690677
691   Copyright (C) The IETF Trust (2009).678   Copyright (C) The IETF Trust (2009).
692679
693   This document is subject to the rights, licenses and restrictions680   This document is subject to the rights, licenses and restrictions
694   contained in BCP 78, and except as set forth therein, the authors681   contained in BCP 78, and except as set forth therein, the authors
695   retain all their rights.682   retain all their rights.
696683
697Acknowledgement684Acknowledgement
698685
699   Funding for the RFC Editor function is currently provided by the686   Funding for the RFC Editor function is currently provided by the
700   Internet Society.687   Internet Society.
701688
702689
703690
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op