r6781: -add some comments on how attributes and objectClasses are identified in DRSUAPI
[ira/wip.git] / source4 / librpc / idl / drsuapi.idl
index 94ec5bf1bca585c05c2412023ab61a4c57e56733..16b8da82b8978132c4a09d0d993d2a2cc3f7c2ca 100644 (file)
@@ -282,9 +282,90 @@ interface drsuapi
                [size_is(count)] drsuapi_DsReplicaCoursor2 coursors[];
        } drsuapi_DsReplicaCoursor2CtrEx;
 
+       /*
+        * In DRSUAPI the objectClasses and attributes
+        * are identified by uint32 values, but in the schema
+        * they are identified by the governsID (objectClasses)
+        * and attributeID (attributes)
+        *
+        * the following table shows the mapping used between the two representations
+        * e.g. - objectClass 'nTDSDSA' has governsID: 1.2.840.113556.1.5.7000.47
+        *        and a UINT32-ID of '0x0017002F'.
+        *      - so the OID 1.2.840.113556.1.5.7000.47 is splitted into a
+        *        OID-prefix: 1.2.840.113556.1.5.7000
+        *        and a value: 47 => 0x2F
+        *      - the mapping table gives a UINT32-prefix: 0x00170000
+        *      - and the UINT32-ID is 0x0017002F = 0x00170000 | 0x2F
+        *
+        * OID-prefix                   => UINT32-Id prefix
+        *
+        * 2.5.4.*                      => 0x00000000 (standard attributes RFC2256 core.schema)
+        * 2.5.6.*                      => 0x00010000 (standard object classes RFC2256 core.schema)
+        * 1.2.840.113556.1.2.*         => 0x00020000
+        * 1.2.840.113556.1.3.*         => 0x00030000
+        * 1.2.840.113556.1.4.*         => 0x00090000
+        * 1.2.840.113556.1.5.*         => 0x000A0000
+        * 2.16.840.1.113730.3.*        => 0x00140000
+        * 0.9.2342.19200300.100.1.*    => 0x00150000
+        * 2.16.840.1.113730.3.1.*      => 0x00160000
+        * 1.2.840.113556.1.5.7000.*    => 0x00170000
+        * 2.5.20.*                     => 0x001A0000
+        * 2.16.840.1.113730.3.2.*      => 0x001C0000
+        * 1.3.6.1.4.1.250.1.*          => 0x001D0000
+        * 0.9.2342.19200300.100.4.*    => 0x001F0000
+        *
+        * 1.2.840.113549.1.9.*         (unstructuredAddress,unstructuredName)
+        * 1.3.6.1.4.1.1466.101.119.2   (dynamicObject)
+        * 1.3.6.1.4.1.1466.101.119.3   (entryTTL)
+        * 2.5.18.*                     (createTimeStamp,modifyTimeStamp, SubSchema)            
+        * 2.5.21.*                     (attrs for SubSchema)
+        *
+        * Here's a list of used 'attributeSyntax' OID's
+        *
+        * 2.5.5.1      => Object(DS-DN) string
+        *                 struct drsuapi_DsObjectIdentifier3
+        *
+        * 2.5.5.2      => OID-string
+        *              => mayContain, mustContain... also have this syntax but have string values
+        *
+        * 2.5.5.4      => String(Teletex) case-insensitive string with teletex charset
+        *
+        * 2.5.5.5      => String(IA5) case-sensitive string
+        *
+        * 2.5.5.6      => String(Numeric)
+        *              => eg. internationalISDNNumber
+        *
+        * 2.5.5.7      => Object(DN-Binary) B:<byte count>:<bytes>:<object DN>
+        *              => e.g. wellKnownObjects
+        *
+        * 2.5.5.8      => BOOL
+        *
+        * 2.5.5.9      => int32
+        *
+        * 2.5.5.10     => DATA_BLOB
+        *              => struct GUID
+        *
+        * 2.5.5.11     => LDAP timestring
+        *              => NTTIME_1sec
+        *
+        * 2.5.5.12     => String(Unicode) case-insensitive string
+        *              => 'standard strings'
+        *
+        * 2.5.5.13     => Object(Presentation-Address) string
+        *              => used in objectClass applicationEntity
+        *
+        * 2.5.5.14     => Object(DN-String) S:<char count>:<string>:<object DN>
+        *              => not used
+        *
+        * 2.5.5.15     => ntSecurityDescriptor
+        *
+        * 2.5.5.16     => int64
+        *
+        * 2.5.5.17     => dom_sid
+        */
+
        typedef [v1_enum] enum {
-               DRSUAPI_OBJECTCLASS_top         = 0x00010000,
-               DRSUAPI_OBJECTCLASS_test        = 0x00000000
+               DRSUAPI_OBJECTCLASS_top                 = 0x00010000
        } drsuapi_DsObjectClassId;
 
        typedef [v1_enum,public] enum {