2.7 Uncompressed OAB Version 2 and OAB Version 3 Changes File

 The Changes file<7> specifies the changes that need to be made to the other OAB files to produce a file set that represents the next generational version of the OAB version 2 and OAB version 3 files. The Changes file consists of a sequence of variable size records that contain data to update individual records. Numerous change files can be required to make a set of OAB version 2 and OAB version 3 files current with the server.

The following ABNF definition shows the format of an uncompressed OAB version 2 or OAB version 3 Changes file.

  
 changes-file        =   OAB_HDR 1*change-record
 change-record       =   CHG_REC [display-name parent-dn-offset rdn] 
                         [domain-name-offset local-portion]
                         [alias] [location] [surname]
                         [details]
                         [display-type] [object-type]
 display-name        =   string-value
 parent-dn-offset    =   %x00000000-%xFFFFFFFF
                         ; little endian 32 bit value
                         ; offset of the pdn-record in the 
                         ; rdn index file
 rdn                 =   ( non-space-teletex ) / 
                         ( non-space-teletex *62(teletex-char)
                           non-space-teletex )
                         ; rdn values are limited to 64 characters
                         ; the number of rdns is limited to 16 but the
                         ; total cumulative length of rdn characters in
                         ; an x500-dn is limited to 256.
  
 teletex-char        =    SP / non-space-teletex
 non-space-teletex   =   "!" / DQUOTE / "%" / "&" / "\" / "(" / ")" / 
                         "*" / "+" / "," / "-" / "." / "0" / "1" / 
                         "2" / "3" / "4" / "5" / "6" / "7" / "8" /
                         "9" / ":" / "<" / "=" / ">" / "?" / "@" /
                         "A" / "B" / "C" / "D" / "E" / "F" / "G" / 
                         "H" / "I" / "J" / "K" / "L" / "M" / "N" / 
                         "O" / "P" / "Q" / "R" / "S" / "T" / "U" / 
                         "V" / "W" / "X" / "Y" / "Z" / "[" / "]" /
                         "_" / "a" / "b" / "c" / "d" / "e" / "f" /
                         "g" / "h" / "i" / "j" / "k" / "l" / "m" /
                         "n" / "o" / "p" / "q" / "r" / "s" / "t" /
                         "u" / "v" / "w" / "x" / "y" / "z" / "|"
 domain-name-offset =    %x00000000-%xFFFFFFFF
                         ; little endian 32 bit value
                         ; offset of the domain name record in the 
                         ; rdn index file
 local-portion       =   1*62(ansi-char) '@' null
 alias               =   1*63(ansi-char) null
 location            =   0*63(ansi-char) null
 surname             =   0*63(ansi-char) null
 details             =   byte-count 0*65535(OCTET)
                         ; The byte-count element is defined in the 
                         ; ABNF definition of section 2.6.
 display-type        =   DT-MAILUSER / DT-DISTLIST / 
                         DT-FORUM / DT-AGENT / DT-ORGANIZATION /
                         DT-REMOTE-MAILUSER
                         ; 8 bit value
 DT-MAILUSER         =   %x00
                         ; mailbox display type
 DT-DISTLIST         =   %x01
                         ; distribution list display type
 DT-FORUM            =   %x02
                         ; public folder display type
 DT-AGENT            =   %x03
                         ; mail agent display type
 DT-ORGANIZATION     =   %x04
                         ; department or organization display type
 DT-REMOTE-MAILUSER  =   %x06
                         ; external e-mail address display type
 object-type         =   MAPI-FOLDER / MAPI-MAILUSER /
                         MAPI-DISTLIST 
                         ; 8 bit value – high order bit is set to 
                         ; 1 if the entry can receive all
                         ; message content, including Rich Text
                         ; Format (RTF) and OLE objects
                         ; For details, see [MS-OXOABK] section 2.2.3.10.
  
 MAPI-FOLDER         =   %x03
 MAPI-MAILUSER       =   %x06
 MAPI-DISTLIST       =   %x08