~ubuntu-branches/ubuntu/vivid/samba/vivid

« back to all changes in this revision

Viewing changes to librpc/idl/drsuapi.idl

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2011-12-21 13:18:04 UTC
  • mfrom: (0.39.21 sid)
  • Revision ID: package-import@ubuntu.com-20111221131804-xtlr39wx6njehxxr
Tags: 2:3.6.1-3ubuntu1
* Merge from Debian testing.  Remaining changes:
  + debian/patches/VERSION.patch:
    - set SAMBA_VERSION_SUFFIX to Ubuntu.
  + debian/patches/error-trans.fix-276472:
    - Add the translation of Unix Error code -ENOTSUP to NT Error Code
    - NT_STATUS_NOT_SUPPORTED to prevent the Permission denied error.
  + debian/smb.conf:
    - add "(Samba, Ubuntu)" to server string.
    - comment out the default [homes] share, and add a comment about
      "valid users = %S" to show users how to restrict access to
      \\server\username to only username.
    - Set 'usershare allow guests', so that usershare admins are 
      allowed to create public shares in addition to authenticated
      ones.
    - add map to guest = Bad user, maps bad username to guest access.
  + debian/samba-common.config:
    - Do not change priority to high if dhclient3 is installed.
    - Use priority medium instead of high for the workgroup question.
  + debian/control:
    - Don't build against or suggest ctdb.
    - Add dependency on samba-common-bin to samba.
  + Add ufw integration:
    - Created debian/samba.ufw.profile
    - debian/rules, debian/samba.dirs, debian/samba.files: install
      profile
    - debian/control: have samba suggest ufw
  + Add apport hook:
    - Created debian/source_samba.py.
    - debian/rules, debian/samba.dirs, debian/samba-common-bin.files: install
  + Switch to upstart:
    - Add debian/samba.{nmbd,smbd}.upstart.
  + debian/samba.logrotate, debian/samba-common.dhcp, debian/samba.if-up:
    - Make them upstart compatible
  + debian/samba.postinst: 
    - Avoid scary pdbedit warnings on first import.
  + debian/samba-common.postinst: Add more informative error message for
    the case where smb.conf was manually deleted
  + debian/patches/fix-debuglevel-name-conflict.patch: don't use 'debug_level'
    as a global variable name in an NSS module 
  + Dropped:
    - debian/patches/error-trans.fix-276472
    - debian/patches/fix-debuglevel-name-conflict.patch

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#include "idl_types.h"
2
2
 
3
 
import "security.idl", "misc.idl", "samr.idl";
 
3
import "security.idl", "misc.idl", "lsa.idl", "samr.idl";
4
4
 
5
5
[
6
6
  uuid("e3514235-4b06-11d1-ab04-00c04fc2dcd2"),
15
15
{
16
16
        typedef bitmap samr_GroupAttrs samr_GroupAttrs;
17
17
 
 
18
        /* see MS-DRSR section 5.39 */
 
19
        typedef [public,bitmap32bit] bitmap {
 
20
                DRSUAPI_DRS_ASYNC_OP                  = 0x00000001,
 
21
                DRSUAPI_DRS_GETCHG_CHECK              = 0x00000002,
 
22
                DRSUAPI_DRS_UPDATE_NOTIFICATION       = 0x00000002,
 
23
                DRSUAPI_DRS_ADD_REF                   = 0x00000004,
 
24
                DRSUAPI_DRS_SYNC_ALL                  = 0x00000008,
 
25
                DRSUAPI_DRS_DEL_REF                   = 0x00000008,
 
26
                DRSUAPI_DRS_WRIT_REP                  = 0x00000010,
 
27
                DRSUAPI_DRS_INIT_SYNC                 = 0x00000020,
 
28
                DRSUAPI_DRS_PER_SYNC                  = 0x00000040,
 
29
                DRSUAPI_DRS_MAIL_REP                  = 0x00000080,
 
30
                DRSUAPI_DRS_ASYNC_REP                 = 0x00000100,
 
31
                DRSUAPI_DRS_IGNORE_ERROR              = 0x00000100,
 
32
                DRSUAPI_DRS_TWOWAY_SYNC               = 0x00000200,
 
33
                DRSUAPI_DRS_CRITICAL_ONLY             = 0x00000400,
 
34
                DRSUAPI_DRS_GET_ANC                   = 0x00000800,
 
35
                DRSUAPI_DRS_GET_NC_SIZE               = 0x00001000,
 
36
                DRSUAPI_DRS_LOCAL_ONLY                = 0x00001000,
 
37
                DRSUAPI_DRS_NONGC_RO_REP              = 0x00002000,
 
38
                DRSUAPI_DRS_SYNC_BYNAME               = 0x00004000,
 
39
                DRSUAPI_DRS_REF_OK                    = 0x00004000,
 
40
                DRSUAPI_DRS_FULL_SYNC_NOW             = 0x00008000,
 
41
                DRSUAPI_DRS_NO_SOURCE                 = 0x00008000,
 
42
                DRSUAPI_DRS_FULL_SYNC_IN_PROGRESS     = 0x00010000,
 
43
                DRSUAPI_DRS_FULL_SYNC_PACKET          = 0x00020000,
 
44
                DRSUAPI_DRS_SYNC_REQUEUE              = 0x00040000,
 
45
                DRSUAPI_DRS_SYNC_URGENT               = 0x00080000,
 
46
                DRSUAPI_DRS_REF_GCSPN                 = 0x00100000,
 
47
                DRSUAPI_DRS_NO_DISCARD                = 0x00100000,
 
48
                DRSUAPI_DRS_NEVER_SYNCED              = 0x00200000,
 
49
                DRSUAPI_DRS_SPECIAL_SECRET_PROCESSING = 0x00400000,
 
50
                DRSUAPI_DRS_INIT_SYNC_NOW             = 0x00800000,
 
51
                DRSUAPI_DRS_PREEMPTED                 = 0x01000000,
 
52
                DRSUAPI_DRS_SYNC_FORCED               = 0x02000000,
 
53
                DRSUAPI_DRS_DISABLE_AUTO_SYNC         = 0x04000000,
 
54
                DRSUAPI_DRS_DISABLE_PERIODIC_SYNC     = 0x08000000,
 
55
                DRSUAPI_DRS_USE_COMPRESSION           = 0x10000000,
 
56
                DRSUAPI_DRS_NEVER_NOTIFY              = 0x20000000,
 
57
                DRSUAPI_DRS_SYNC_PAS                  = 0x40000000,
 
58
                DRSUAPI_DRS_GET_ALL_GROUP_MEMBERSHIP  = 0x80000000
 
59
        } drsuapi_DrsOptions;
 
60
 
18
61
        /*****************/
19
62
        /* Function 0x00 */
20
63
        typedef [bitmap32bit] bitmap {
25
68
                DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS             = 0x00000010,
26
69
                DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1                   = 0x00000020,
27
70
                DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION    = 0x00000040,
28
 
                DRSUAPI_SUPPORTED_EXTENSION_00000080                    = 0x00000080,
 
71
                DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY                    = 0x00000080,
29
72
                DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE                 = 0x00000100,
30
73
                DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2                 = 0x00000200,
31
74
                DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION    = 0x00000400,
38
81
                DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP       = 0x00020000,
39
82
                DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY             = 0x00040000,
40
83
                DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3                  = 0x00080000,
41
 
                DRSUAPI_SUPPORTED_EXTENSION_00100000                    = 0x00100000,
 
84
                DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V5                = 0x00100000,
42
85
                DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2            = 0x00200000,
43
86
                DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6                = 0x00400000,
44
87
                DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS               = 0x00800000,
53
96
                DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7              = 0x08000000,
54
97
                DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT               = 0x08000000,
55
98
                DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS             = 0x10000000,
56
 
                DRSUAPI_SUPPORTED_EXTENSION_20000000                    = 0x20000000,
57
 
                DRSUAPI_SUPPORTED_EXTENSION_40000000                    = 0x40000000,
58
 
                DRSUAPI_SUPPORTED_EXTENSION_80000000                    = 0x80000000
 
99
                DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V10               = 0x20000000,
 
100
                DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART2              = 0x40000000,
 
101
                DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART3              = 0x80000000
59
102
        } drsuapi_SupportedExtensions;
60
103
 
61
104
        typedef [bitmap32bit] bitmap {
62
105
                DRSUAPI_SUPPORTED_EXTENSION_ADAM                        = 0x00000001,
63
 
                DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2                    = 0x00000002
 
106
                DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2                    = 0x00000002,
 
107
                DRSUAPI_SUPPORTED_EXTENSION_RECYCLE_BIN                 = 0x00000004
64
108
        } drsuapi_SupportedExtensionsExt;
65
109
 
66
110
        /* this is used by w2k */
142
186
        /*****************/
143
187
        /* Function 0x02 */
144
188
        typedef [public,gensize] struct {
145
 
                [value(ndr_size_drsuapi_DsReplicaObjectIdentifier(r, ndr->iconv_convenience, ndr->flags)-4)] uint32 __ndr_size;
 
189
                [value(ndr_size_drsuapi_DsReplicaObjectIdentifier(r, ndr->flags)-4)] uint32 __ndr_size;
146
190
                [value(ndr_size_dom_sid28(&sid, ndr->flags))]  uint32 __ndr_size_sid;
147
191
                GUID guid;
148
192
                dom_sid28 sid;
150
194
                [charset(UTF16),size_is(__ndr_size_dn+1)] uint16 dn[];
151
195
        } drsuapi_DsReplicaObjectIdentifier;
152
196
 
153
 
        typedef [public] bitmap {
154
 
                DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_OPERATION  = 0x00000001,
155
 
                DRSUAPI_DS_REPLICA_SYNC_WRITEABLE               = 0x00000002,
156
 
                DRSUAPI_DS_REPLICA_SYNC_PERIODIC                = 0x00000004,
157
 
                DRSUAPI_DS_REPLICA_SYNC_INTERSITE_MESSAGING     = 0x00000008,
158
 
                DRSUAPI_DS_REPLICA_SYNC_ALL_SOURCES             = 0x00000010,
159
 
                DRSUAPI_DS_REPLICA_SYNC_FULL                    = 0x00000020,
160
 
                DRSUAPI_DS_REPLICA_SYNC_URGENT                  = 0x00000040,
161
 
                DRSUAPI_DS_REPLICA_SYNC_NO_DISCARD              = 0x00000080,
162
 
                DRSUAPI_DS_REPLICA_SYNC_FORCE                   = 0x00000100,
163
 
                DRSUAPI_DS_REPLICA_SYNC_ADD_REFERENCE           = 0x00000200,
164
 
                DRSUAPI_DS_REPLICA_SYNC_NEVER_COMPLETED         = 0x00000400,
165
 
                DRSUAPI_DS_REPLICA_SYNC_TWO_WAY                 = 0x00000800,
166
 
                DRSUAPI_DS_REPLICA_SYNC_NEVER_NOTIFY            = 0x00001000,
167
 
                DRSUAPI_DS_REPLICA_SYNC_INITIAL                 = 0x00002000,
168
 
                DRSUAPI_DS_REPLICA_SYNC_USE_COMPRESSION         = 0x00004000,
169
 
                DRSUAPI_DS_REPLICA_SYNC_ABANDONED               = 0x00008000,
170
 
                DRSUAPI_DS_REPLICA_SYNC_INITIAL_IN_PROGRESS     = 0x00010000,
171
 
                DRSUAPI_DS_REPLICA_SYNC_PARTIAL_ATTRIBUTE_SET   = 0x00020000,
172
 
                DRSUAPI_DS_REPLICA_SYNC_REQUEUE                 = 0x00040000,
173
 
                DRSUAPI_DS_REPLICA_SYNC_NOTIFICATION            = 0x00080000,
174
 
                DRSUAPI_DS_REPLICA_SYNC_ASYNCHRONOUS_REPLICA    = 0x00100000,
175
 
                DRSUAPI_DS_REPLICA_SYNC_CRITICAL                = 0x00200000,
176
 
                DRSUAPI_DS_REPLICA_SYNC_FULL_IN_PROGRESS        = 0x00400000,
177
 
                DRSUAPI_DS_REPLICA_SYNC_PREEMPTED               = 0x00800000
178
 
        } drsuapi_DsReplicaSyncOptions;
179
 
 
180
197
        typedef struct {
181
 
                drsuapi_DsReplicaObjectIdentifier *naming_context;
 
198
                [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
182
199
                GUID source_dsa_guid;
183
 
                astring *other_info; /* I assume this is related to the repsFromTo1OtherInfo dns_name */
184
 
                drsuapi_DsReplicaSyncOptions options;
 
200
                astring *source_dsa_dns; /* Source DSA dns_name in <guid>._msdcs.<domain_dns> form */
 
201
                drsuapi_DrsOptions options;
185
202
        } drsuapi_DsReplicaSyncRequest1;
186
203
 
187
 
        typedef [switch_type(int32)] union {
 
204
        typedef [switch_type(uint32)] union {
188
205
                [case(1)] drsuapi_DsReplicaSyncRequest1 req1;
189
206
        } drsuapi_DsReplicaSyncRequest;
190
207
 
191
208
        WERROR drsuapi_DsReplicaSync(
192
209
                [in] policy_handle *bind_handle,
193
 
                [in] int32 level,
194
 
                [in,switch_is(level)] drsuapi_DsReplicaSyncRequest req
 
210
                [in] uint32 level,
 
211
                [in,switch_is(level)] drsuapi_DsReplicaSyncRequest *req
195
212
                );
196
213
 
197
214
        /*****************/
215
232
                [size_is(count)] drsuapi_DsReplicaCursor cursors[];
216
233
        } drsuapi_DsReplicaCursorCtrEx;
217
234
 
218
 
        typedef [public] bitmap {
219
 
                /* the _WRITEABLE flag indicates a replication with all attributes
220
 
                 *
221
 
                 * --metze
222
 
                 */
223
 
                DRSUAPI_DS_REPLICA_NEIGHBOUR_WRITEABLE                          = 0x00000010,
224
 
                DRSUAPI_DS_REPLICA_NEIGHBOUR_SYNC_ON_STARTUP                    = 0x00000020,
225
 
                DRSUAPI_DS_REPLICA_NEIGHBOUR_DO_SCHEDULED_SYNCS                 = 0x00000040,
226
 
                DRSUAPI_DS_REPLICA_NEIGHBOUR_USE_ASYNC_INTERSIDE_TRANSPORT      = 0x00000080,
227
 
                DRSUAPI_DS_REPLICA_NEIGHBOUR_ASYNC_REP                          = 0x00000100,
228
 
                DRSUAPI_DS_REPLICA_NEIGHBOUR_IGNORE_ERROR                       = 0x00000100,
229
 
                DRSUAPI_DS_REPLICA_NEIGHBOUR_TWO_WAY_SYNC                       = 0x00000200,
230
 
                DRSUAPI_DS_REPLICA_NEIGHBOUR_CRITICAL_ONLY                      = 0x00000400,
231
 
                DRSUAPI_DS_REPLICA_NEIGHBOUR_RETURN_OBJECT_PARENTS              = 0x00000800,/*Include updates to ancestor objects before updates to their descendants*/
232
 
                DRSUAPI_DS_REPLICA_NEIGHBOUR_FULL_IN_PROGRESS                   = 0x00010000,
233
 
                DRSUAPI_DS_REPLICA_NEIGHBOUR_FULL_SYNC_PACKET                   = 0x00020000,
234
 
                DRSUAPI_DS_REPLICA_NEIGHBOUR_NEVER_SYNCED                       = 0x00200000,
235
 
                DRSUAPI_DS_REPLICA_NEIGHBOUR_SPECIAL_SECRET_PROCESSING          = 0x00800000,
236
 
                DRSUAPI_DS_REPLICA_NEIGHBOUR_PREEMPTED                          = 0x01000000,
237
 
                DRSUAPI_DS_REPLICA_NEIGHBOUR_IGNORE_CHANGE_NOTIFICATIONS        = 0x04000000,
238
 
                DRSUAPI_DS_REPLICA_NEIGHBOUR_DISABLE_SCHEDULED_SYNC             = 0x08000000,
239
 
                /*
240
 
                 * the following NOTE applies to DsGetNCChangesRequest5:
241
 
                 *  - the data is only compressed when 10 or more objects are replicated
242
 
                 *  - but there could also be a size limit of 35 KBytes or something like that
243
 
                 *  - the reply is DsGetNCChangesCtr2
244
 
                 *  - maybe the same applies to DsGetNCChangesRequest8...
245
 
                 *
246
 
                 *  --metze
247
 
                 */
248
 
                DRSUAPI_DS_REPLICA_NEIGHBOUR_COMPRESS_CHANGES                   = 0x10000000,
249
 
                DRSUAPI_DS_REPLICA_NEIGHBOUR_NO_CHANGE_NOTIFICATIONS            = 0x20000000,
250
 
                DRSUAPI_DS_REPLICA_NEIGHBOUR_PARTIAL_ATTRIBUTE_SET              = 0x40000000
251
 
        } drsuapi_DsReplicaNeighbourFlags;
252
 
 
253
235
        typedef [flag(NDR_PAHEX),v1_enum] enum {
254
236
                DRSUAPI_EXOP_NONE                               = 0x00000000,
255
237
                DRSUAPI_EXOP_FSMO_REQ_ROLE                      = 0x00000001,
287
269
                [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
288
270
                drsuapi_DsReplicaHighWaterMark highwatermark;
289
271
                drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;
290
 
                drsuapi_DsReplicaNeighbourFlags replica_flags;
 
272
                drsuapi_DrsOptions replica_flags;
291
273
                uint32 max_object_count; /* w2k3 uses min(133,max(100,max_object_count)) */
292
274
                uint32 max_ndr_size; /* w2k3 seems to ignore this */
293
275
                drsuapi_DsExtendedOperation extended_op;
378
360
         *
379
361
         * 2.5.5.17     => dom_sid
380
362
         */
381
 
        typedef [nopush,nopull] struct {
382
 
                [range(0,10000),value(ndr_size_drsuapi_DsReplicaOID_oid(oid, 0))] uint32 __ndr_size;
383
 
                [size_is(__ndr_size),charset(DOS)] uint8 *oid; /* it's encoded with asn1_write_OID_String() */
 
363
        typedef [noprint] struct {
 
364
                [range(0,10000)] uint32 length;
 
365
                [size_is(length)] uint8 *binary_oid; /* partial-binary-OID encoded with asn1_write_partial_OID_String() */
384
366
        } drsuapi_DsReplicaOID;
385
367
 
386
368
        typedef struct {
400
382
        } drsuapi_DsObjectClassId;
401
383
 
402
384
        typedef [flag(NDR_PAHEX),v1_enum,public] enum {
403
 
                DRSUAPI_ATTRIBUTE_objectClass                   = 0x00000000,
404
 
                DRSUAPI_ATTRIBUTE_description                   = 0x0000000d,
405
 
                DRSUAPI_ATTRIBUTE_member                        = 0x0000001f,
406
 
                DRSUAPI_ATTRIBUTE_instanceType                  = 0x00020001,
407
 
                DRSUAPI_ATTRIBUTE_whenCreated                   = 0x00020002,
408
 
                DRSUAPI_ATTRIBUTE_possSuperiors                 = 0x00020008,
409
 
                DRSUAPI_ATTRIBUTE_hasMasterNCs                  = 0x0002000e,
410
 
                DRSUAPI_ATTRIBUTE_subClassOf                    = 0x00020015,
411
 
                DRSUAPI_ATTRIBUTE_governsID                     = 0x00020016,
412
 
                DRSUAPI_ATTRIBUTE_mustContain                   = 0x00020018,
413
 
                DRSUAPI_ATTRIBUTE_mayContain                    = 0x00020019,
414
 
                DRSUAPI_ATTRIBUTE_attributeID                   = 0x0002001e,
415
 
                DRSUAPI_ATTRIBUTE_attributeSyntax               = 0x00020020,
416
 
                DRSUAPI_ATTRIBUTE_isSingleValued                = 0x00020021,
417
 
                DRSUAPI_ATTRIBUTE_rangeLower                    = 0x00020022,
418
 
                DRSUAPI_ATTRIBUTE_rangeUpper                    = 0x00020023,
419
 
                DRSUAPI_ATTRIBUTE_dMDLocation                   = 0x00020024,
420
 
                DRSUAPI_ATTRIBUTE_objectVersion                 = 0x0002004c,
421
 
                DRSUAPI_ATTRIBUTE_invocationId                  = 0x00020073,
422
 
                DRSUAPI_ATTRIBUTE_showInAdvancedViewOnly        = 0x000200a9,
423
 
                DRSUAPI_ATTRIBUTE_adminDisplayName              = 0x000200c2,
424
 
                DRSUAPI_ATTRIBUTE_adminDescription              = 0x000200e2,
425
 
                DRSUAPI_ATTRIBUTE_oMSyntax                      = 0x000200e7,
426
 
                DRSUAPI_ATTRIBUTE_ntSecurityDescriptor          = 0x00020119,
427
 
                DRSUAPI_ATTRIBUTE_searchFlags                   = 0x0002014e,
428
 
                DRSUAPI_ATTRIBUTE_auxiliaryClass                = 0x0002015f,
429
 
                DRSUAPI_ATTRIBUTE_lDAPDisplayName               = 0x000201cc,
430
 
                DRSUAPI_ATTRIBUTE_name                          = 0x00090001,
431
 
                DRSUAPI_ATTRIBUTE_userAccountControl            = 0x00090008,
432
 
                DRSUAPI_ATTRIBUTE_currentValue                  = 0x0009001b,
433
 
                DRSUAPI_ATTRIBUTE_homeDirectory                 = 0x0009002c,
434
 
                DRSUAPI_ATTRIBUTE_homeDrive                     = 0x0009002d,
435
 
                DRSUAPI_ATTRIBUTE_scriptPath                    = 0x0009003e,
436
 
                DRSUAPI_ATTRIBUTE_profilePath                   = 0x0009008b,
437
 
                DRSUAPI_ATTRIBUTE_objectSid                     = 0x00090092,
438
 
                DRSUAPI_ATTRIBUTE_schemaIDGUID                  = 0x00090094,
439
 
                DRSUAPI_ATTRIBUTE_dBCSPwd                       = 0x00090037,/* lmPwdHash */
440
 
                DRSUAPI_ATTRIBUTE_logonHours                    = 0x00090040,
441
 
                DRSUAPI_ATTRIBUTE_userWorkstations              = 0x00090056,
442
 
                DRSUAPI_ATTRIBUTE_unicodePwd                    = 0x0009005a,/* ntPwdHash */
443
 
                DRSUAPI_ATTRIBUTE_ntPwdHistory                  = 0x0009005e,
444
 
                DRSUAPI_ATTRIBUTE_priorValue                    = 0x00090064,
445
 
                DRSUAPI_ATTRIBUTE_supplementalCredentials       = 0x0009007d,
446
 
                DRSUAPI_ATTRIBUTE_trustAuthIncoming             = 0x00090081,
447
 
                DRSUAPI_ATTRIBUTE_trustAuthOutgoing             = 0x00090087,
448
 
                DRSUAPI_ATTRIBUTE_lmPwdHistory                  = 0x000900a0,
449
 
                DRSUAPI_ATTRIBUTE_systemPossSuperiors           = 0x000900c3,
450
 
                DRSUAPI_ATTRIBUTE_systemMayContain              = 0x000900c4,
451
 
                DRSUAPI_ATTRIBUTE_systemMustContain             = 0x000900c5,
452
 
                DRSUAPI_ATTRIBUTE_sAMAccountName                = 0x000900dd,
453
 
                DRSUAPI_ATTRIBUTE_sAMAccountType                = 0x0009012e,
454
 
                DRSUAPI_ATTRIBUTE_fSMORoleOwner                 = 0x00090171,
455
 
                DRSUAPI_ATTRIBUTE_systemFlags                   = 0x00090177,
456
 
                DRSUAPI_ATTRIBUTE_serverReference               = 0x00090203,
457
 
                DRSUAPI_ATTRIBUTE_serverReferenceBL             = 0x00090204,
458
 
                DRSUAPI_ATTRIBUTE_initialAuthIncoming           = 0x0009021b,
459
 
                DRSUAPI_ATTRIBUTE_initialAuthOutgoing           = 0x0009021c,
460
 
                DRSUAPI_ATTRIBUTE_wellKnownObjects              = 0x0009026a,
461
 
                DRSUAPI_ATTRIBUTE_dNSHostName                   = 0x0009026b,
462
 
                DRSUAPI_ATTRIBUTE_isMemberOfPartialAttributeSet = 0x0009027f,
463
 
                DRSUAPI_ATTRIBUTE_userPrincipalName             = 0x00090290,
464
 
                DRSUAPI_ATTRIBUTE_groupType                     = 0x000902ee,
465
 
                DRSUAPI_ATTRIBUTE_servicePrincipalName          = 0x00090303,
466
 
                DRSUAPI_ATTRIBUTE_objectCategory                = 0x0009030e,
467
 
                DRSUAPI_ATTRIBUTE_gPLink                        = 0x0009037b,
468
 
                DRSUAPI_ATTRIBUTE_msDS_Behavior_Version         = 0x000905b3,
469
 
                DRSUAPI_ATTRIBUTE_msDS_KeyVersionNumber         = 0x000906f6,
470
 
                DRSUAPI_ATTRIBUTE_msDS_HasDomainNCs             = 0x0009071c,
471
 
                DRSUAPI_ATTRIBUTE_msDS_hasMasterNCs             = 0x0009072c
 
385
                DRSUAPI_ATTID_objectClass                       = 0x00000000,
 
386
                DRSUAPI_ATTID_cn                                = 0x00000003,
 
387
                DRSUAPI_ATTID_ou                                = 0x0000000b,
 
388
                DRSUAPI_ATTID_description                       = 0x0000000d,
 
389
                DRSUAPI_ATTID_member                            = 0x0000001f,
 
390
                DRSUAPI_ATTID_instanceType                      = 0x00020001,
 
391
                DRSUAPI_ATTID_whenCreated                       = 0x00020002,
 
392
                DRSUAPI_ATTID_possSuperiors                     = 0x00020008,
 
393
                DRSUAPI_ATTID_displayName                       = 0x0002000d,
 
394
                DRSUAPI_ATTID_hasMasterNCs                      = 0x0002000e,
 
395
                DRSUAPI_ATTID_subClassOf                        = 0x00020015,
 
396
                DRSUAPI_ATTID_governsID                         = 0x00020016,
 
397
                DRSUAPI_ATTID_mustContain                       = 0x00020018,
 
398
                DRSUAPI_ATTID_mayContain                        = 0x00020019,
 
399
                DRSUAPI_ATTID_rDNAttId                          = 0x0002001A,
 
400
                DRSUAPI_ATTID_attributeID                       = 0x0002001e,
 
401
                DRSUAPI_ATTID_attributeSyntax                   = 0x00020020,
 
402
                DRSUAPI_ATTID_isSingleValued                    = 0x00020021,
 
403
                DRSUAPI_ATTID_rangeLower                        = 0x00020022,
 
404
                DRSUAPI_ATTID_rangeUpper                        = 0x00020023,
 
405
                DRSUAPI_ATTID_dMDLocation                       = 0x00020024,
 
406
                DRSUAPI_ATTID_isDeleted                         = 0x00020030,
 
407
                DRSUAPI_ATTID_objectVersion                     = 0x0002004c,
 
408
                DRSUAPI_ATTID_invocationId                      = 0x00020073,
 
409
                DRSUAPI_ATTID_showInAdvancedViewOnly            = 0x000200a9,
 
410
                DRSUAPI_ATTID_adminDisplayName                  = 0x000200c2,
 
411
                DRSUAPI_ATTID_adminDescription                  = 0x000200e2,
 
412
                DRSUAPI_ATTID_oMSyntax                          = 0x000200e7,
 
413
                DRSUAPI_ATTID_ntSecurityDescriptor              = 0x00020119,
 
414
                DRSUAPI_ATTID_searchFlags                       = 0x0002014e,
 
415
                DRSUAPI_ATTID_auxiliaryClass                    = 0x0002015f,
 
416
                DRSUAPI_ATTID_lDAPDisplayName                   = 0x000201cc,
 
417
                DRSUAPI_ATTID_name                              = 0x00090001,
 
418
                DRSUAPI_ATTID_userAccountControl                = 0x00090008,
 
419
                DRSUAPI_ATTID_badPwdCount                       = 0x0009000c,
 
420
                DRSUAPI_ATTID_codePage                          = 0x00090010,
 
421
                DRSUAPI_ATTID_countryCode                       = 0x00090019,
 
422
                DRSUAPI_ATTID_currentValue                      = 0x0009001b,
 
423
                DRSUAPI_ATTID_homeDirectory                     = 0x0009002c,
 
424
                DRSUAPI_ATTID_homeDrive                         = 0x0009002d,
 
425
                DRSUAPI_ATTID_lastLogoff                        = 0x00090033,
 
426
                DRSUAPI_ATTID_lastLogon                         = 0x00090034,
 
427
                DRSUAPI_ATTID_dBCSPwd                           = 0x00090037,/* lmPwdHash */
 
428
                DRSUAPI_ATTID_scriptPath                        = 0x0009003e,
 
429
                DRSUAPI_ATTID_logonHours                        = 0x00090040,
 
430
                DRSUAPI_ATTID_userWorkstations                  = 0x00090056,
 
431
                DRSUAPI_ATTID_unicodePwd                        = 0x0009005a,/* ntPwdHash */
 
432
                DRSUAPI_ATTID_ntPwdHistory                      = 0x0009005e,
 
433
                DRSUAPI_ATTID_pwdLastSet                        = 0x00090060,
 
434
                DRSUAPI_ATTID_primaryGroupID                    = 0x00090062,
 
435
                DRSUAPI_ATTID_priorValue                        = 0x00090064,
 
436
                DRSUAPI_ATTID_supplementalCredentials           = 0x0009007d,
 
437
                DRSUAPI_ATTID_trustAuthIncoming                 = 0x00090081,
 
438
                DRSUAPI_ATTID_trustAuthOutgoing                 = 0x00090087,
 
439
                DRSUAPI_ATTID_userParameters                    = 0x0009008a,
 
440
                DRSUAPI_ATTID_profilePath                       = 0x0009008b,
 
441
                DRSUAPI_ATTID_objectSid                         = 0x00090092,
 
442
                DRSUAPI_ATTID_schemaIDGUID                      = 0x00090094,
 
443
                DRSUAPI_ATTID_comment                           = 0x0009009C,/* User-Comment */
 
444
                DRSUAPI_ATTID_accountExpires                    = 0x0009009f,
 
445
                DRSUAPI_ATTID_lmPwdHistory                      = 0x000900a0,
 
446
                DRSUAPI_ATTID_logonCount                        = 0x000900a9,
 
447
                DRSUAPI_ATTID_systemPossSuperiors               = 0x000900c3,
 
448
                DRSUAPI_ATTID_systemMayContain                  = 0x000900c4,
 
449
                DRSUAPI_ATTID_systemMustContain                 = 0x000900c5,
 
450
                DRSUAPI_ATTID_systemAuxiliaryClass              = 0x000900c6,
 
451
                DRSUAPI_ATTID_sAMAccountName                    = 0x000900dd,
 
452
                DRSUAPI_ATTID_sAMAccountType                    = 0x0009012e,
 
453
                DRSUAPI_ATTID_options                           = 0x00090133,
 
454
                DRSUAPI_ATTID_fSMORoleOwner                     = 0x00090171,
 
455
                DRSUAPI_ATTID_systemFlags                       = 0x00090177,
 
456
                DRSUAPI_ATTID_serverReference                   = 0x00090203,
 
457
                DRSUAPI_ATTID_serverReferenceBL                 = 0x00090204,
 
458
                DRSUAPI_ATTID_initialAuthIncoming               = 0x0009021b,
 
459
                DRSUAPI_ATTID_initialAuthOutgoing               = 0x0009021c,
 
460
                DRSUAPI_ATTID_wellKnownObjects                  = 0x0009026a,
 
461
                DRSUAPI_ATTID_dNSHostName                       = 0x0009026b,
 
462
                DRSUAPI_ATTID_isMemberOfPartialAttributeSet     = 0x0009027f,
 
463
                DRSUAPI_ATTID_userPrincipalName                 = 0x00090290,
 
464
                DRSUAPI_ATTID_groupType                         = 0x000902ee,
 
465
                DRSUAPI_ATTID_servicePrincipalName              = 0x00090303,
 
466
                DRSUAPI_ATTID_lastKnownParent                   = 0x0009030d,
 
467
                DRSUAPI_ATTID_objectCategory                    = 0x0009030e,
 
468
                DRSUAPI_ATTID_gPLink                            = 0x0009037b,
 
469
                DRSUAPI_ATTID_transportAddressAttribute         = 0x0009037f,
 
470
                DRSUAPI_ATTID_msDS_Behavior_Version             = 0x000905b3,
 
471
                DRSUAPI_ATTID_msDS_KeyVersionNumber             = 0x000906f6,
 
472
                DRSUAPI_ATTID_msDS_HasDomainNCs                 = 0x0009071c,
 
473
                DRSUAPI_ATTID_msDS_hasMasterNCs                 = 0x0009072c,
 
474
                DRSUAPI_ATTID_isRecycled                        = 0x0009080a,
 
475
 
 
476
                DRSUAPI_ATTID_INVALID                           = 0xFFFFFFFF
472
477
        } drsuapi_DsAttributeId;
473
478
 
474
479
        typedef struct {
484
489
                [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
485
490
                drsuapi_DsReplicaHighWaterMark highwatermark;
486
491
                drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;
487
 
                drsuapi_DsReplicaNeighbourFlags replica_flags;
 
492
                drsuapi_DrsOptions replica_flags;
488
493
                uint32 max_object_count; /* w2k3 uses min(133,max(100,max_object_count)) */
489
494
                uint32 max_ndr_size; /* w2k3 seems to ignore this */
490
495
                drsuapi_DsExtendedOperation extended_op;
500
505
                [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
501
506
                drsuapi_DsReplicaHighWaterMark highwatermark;
502
507
                drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;
503
 
                drsuapi_DsReplicaNeighbourFlags replica_flags;
 
508
                drsuapi_DrsOptions replica_flags;
504
509
                uint32 max_object_count; /* w2k3 uses min(133,max(100,max_object_count)) */
505
510
                uint32 max_ndr_size; /* w2k3 seems to ignore this */
506
511
                drsuapi_DsExtendedOperation extended_op;
511
516
                uint32 more_flags;
512
517
        } drsuapi_DsGetNCChangesRequest10;
513
518
 
514
 
        typedef [switch_type(int32)] union {
 
519
        typedef [switch_type(uint32)] union {
515
520
                [case(5)] drsuapi_DsGetNCChangesRequest5 req5;
516
521
                [case(8)] drsuapi_DsGetNCChangesRequest8 req8;
517
522
                [case(10)] drsuapi_DsGetNCChangesRequest10 req10;
544
549
 
545
550
        /* DN String values */
546
551
        typedef [public,gensize] struct {
547
 
                [value(ndr_size_drsuapi_DsReplicaObjectIdentifier3(r, ndr->iconv_convenience, ndr->flags))] uint32 __ndr_size;
 
552
                [value(ndr_size_drsuapi_DsReplicaObjectIdentifier3(r, ndr->flags))] uint32 __ndr_size;
548
553
                [value(ndr_size_dom_sid28(&sid,ndr->flags))]  uint32 __ndr_size_sid;
549
554
                GUID guid;
550
555
                dom_sid28 sid;
553
558
        } drsuapi_DsReplicaObjectIdentifier3;
554
559
 
555
560
        typedef [public] struct {
556
 
                [value(ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary_without_Binary(r, ndr->iconv_convenience, ndr->flags))] uint32 __ndr_size;
 
561
                [value(ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary_without_Binary(r, ndr->flags))] uint32 __ndr_size;
557
562
                [value(ndr_size_dom_sid28(&sid,ndr->flags))]  uint32 __ndr_size_sid;
558
563
                GUID guid;
559
564
                dom_sid28 sid;
563
568
                [flag(NDR_REMAINING)] DATA_BLOB binary;
564
569
        } drsuapi_DsReplicaObjectIdentifier3Binary;
565
570
 
566
 
        typedef [public] struct {
 
571
        typedef [public,noprint] struct {
567
572
                drsuapi_DsAttributeId attid;
568
573
                drsuapi_DsAttributeValueCtr value_ctr;
569
574
        } drsuapi_DsReplicaAttribute;
616
621
                drsuapi_DsExtendedError extended_ret; /* w2k sends the nc_object_count value here */
617
622
                uint32 object_count;
618
623
                /* this +55 is sometimes +56, so I don't know where this comes from... --metze */
619
 
                [value(ndr_size_drsuapi_DsGetNCChangesCtr1(r,ndr->iconv_convenience,ndr->flags)+55)] uint32 __ndr_size;
 
624
                [value(ndr_size_drsuapi_DsGetNCChangesCtr1(r,ndr->flags)+55)] uint32 __ndr_size;
620
625
                drsuapi_DsReplicaObjectListItemEx *first_object;
621
626
                boolean32 more_data;
622
627
        } drsuapi_DsGetNCChangesCtr1;
650
655
                drsuapi_DsExtendedError extended_ret;
651
656
                uint32 object_count;
652
657
                /* this +55 is sometimes +56, so I don't know where this comes from... --metze */
653
 
                [value(ndr_size_drsuapi_DsGetNCChangesCtr6(r,ndr->iconv_convenience,ndr->flags)+55)] uint32 __ndr_size;
 
658
                [value(ndr_size_drsuapi_DsGetNCChangesCtr6(r,ndr->flags)+55)] uint32 __ndr_size;
654
659
                drsuapi_DsReplicaObjectListItemEx *first_object;
655
660
                boolean32 more_data;
656
661
                uint32 nc_object_count; /* estimated amount of objects in the whole NC */
717
722
        } drsuapi_DsGetNCChangesCtr2;
718
723
 
719
724
        typedef struct {
720
 
                [range(0,6)] int32 level;
 
725
                [range(0,6)] uint32 level;
721
726
                [range(2,3)] drsuapi_DsGetNCChangesCompressionType type;
722
727
                [switch_is(level | (type<<16))] drsuapi_DsGetNCChangesCompressedCtr ctr;
723
728
        } drsuapi_DsGetNCChangesCtr7;
724
729
 
725
 
        typedef [switch_type(int32)] union {
 
730
        typedef [switch_type(uint32)] union {
726
731
                [case(1)] drsuapi_DsGetNCChangesCtr1 ctr1;
727
732
                [case(2)] drsuapi_DsGetNCChangesCtr2 ctr2;
728
733
                [case(6)] drsuapi_DsGetNCChangesCtr6 ctr6;
731
736
 
732
737
        WERROR drsuapi_DsGetNCChanges(
733
738
                [in] policy_handle *bind_handle,
734
 
                [in] int32 level,
 
739
                [in] uint32 level,
735
740
                [in,ref,switch_is(level)] drsuapi_DsGetNCChangesRequest *req,
736
 
                [out,ref] int32 *level_out,
 
741
                [out,ref] uint32 *level_out,
737
742
                [out,ref,switch_is(*level_out)] drsuapi_DsGetNCChangesCtr *ctr
738
743
                );
739
744
 
740
745
        /*****************/
741
746
        /* Function 0x04 */
742
747
        /* [MS-DRSR] 4.1.26 */
743
 
        typedef bitmap {
744
 
                DRSUAPI_DS_REPLICA_UPDATE_ASYNCHRONOUS_OPERATION        = 0x00000001,
745
 
                DRSUAPI_DS_REPLICA_UPDATE_GETCHG_CHECK                  = 0x00000002,
746
 
                DRSUAPI_DS_REPLICA_UPDATE_ADD_REFERENCE                 = 0x00000004,
747
 
                DRSUAPI_DS_REPLICA_UPDATE_DELETE_REFERENCE              = 0x00000008,
748
 
                DRSUAPI_DS_REPLICA_UPDATE_WRITEABLE                     = 0x00000010
749
 
        } drsuapi_DsReplicaUpdateRefsOptions;
750
748
 
751
749
        typedef struct {
752
750
                [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
753
751
                [ref,charset(DOS),string] uint8 *dest_dsa_dns_name;
754
752
                GUID dest_dsa_guid;
755
 
                drsuapi_DsReplicaUpdateRefsOptions options;
 
753
                drsuapi_DrsOptions options;
756
754
        } drsuapi_DsReplicaUpdateRefsRequest1;
757
755
 
758
 
        typedef [switch_type(int32)] union {
 
756
        typedef [switch_type(uint32)] union {
759
757
                [case(1)] drsuapi_DsReplicaUpdateRefsRequest1 req1;
760
758
        } drsuapi_DsReplicaUpdateRefsRequest;
761
759
 
762
760
        WERROR drsuapi_DsReplicaUpdateRefs(
763
761
                [in] policy_handle *bind_handle,
764
 
                [in] int32 level,
 
762
                [in] uint32 level,
765
763
                [in,switch_is(level)] drsuapi_DsReplicaUpdateRefsRequest req
766
764
                );
767
765
 
768
766
        /*****************/
769
767
        /* Function 0x05 */
770
 
        typedef bitmap {
771
 
                DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION   = 0x00000001,
772
 
                DRSUAPI_DS_REPLICA_ADD_WRITEABLE                = 0x00000002
773
 
                /* TODO ... */
774
 
        } drsuapi_DsReplicaAddOptions;
775
 
 
776
768
 
777
769
        typedef struct {
778
770
                [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
779
771
                [charset(UTF16),string] uint16 *source_dsa_address;
780
772
                uint8 schedule[84];
781
 
                drsuapi_DsReplicaAddOptions options;
 
773
                drsuapi_DrsOptions options;
782
774
        } drsuapi_DsReplicaAddRequest1;
783
775
 
784
776
        typedef struct {
787
779
                drsuapi_DsReplicaObjectIdentifier *transport_dn;
788
780
                [charset(UTF16),string] uint16 *source_dsa_address;
789
781
                uint8 schedule[84];
790
 
                drsuapi_DsReplicaAddOptions options;
 
782
                drsuapi_DrsOptions options;
791
783
        } drsuapi_DsReplicaAddRequest2;
792
784
 
793
 
        typedef [switch_type(int32)] union {
 
785
        typedef [switch_type(uint32)] union {
794
786
                [case(1)] drsuapi_DsReplicaAddRequest1 req1;
795
787
                [case(2)] drsuapi_DsReplicaAddRequest2 req2;
796
788
        } drsuapi_DsReplicaAddRequest;
797
789
 
798
790
        WERROR drsuapi_DsReplicaAdd(
799
791
                [in] policy_handle *bind_handle,
800
 
                [in] int32 level,
 
792
                [in] uint32 level,
801
793
                [in,switch_is(level)] drsuapi_DsReplicaAddRequest req
802
794
                );
803
795
                
804
796
 
805
797
        /*****************/
806
798
        /* Function 0x06 */
807
 
        typedef bitmap {
808
 
                DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION   = 0x00000001,
809
 
                DRSUAPI_DS_REPLICA_ADD_WRITEABLE                = 0x00000002
810
 
                /* TODO ... */
811
 
        } drsuapi_DsReplicaDeleteOptions;
812
 
 
813
 
 
814
799
        typedef struct {
815
800
                [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
816
801
                [charset(UTF16),string] uint16 *source_dsa_address;
817
 
                drsuapi_DsReplicaDeleteOptions options;
 
802
                drsuapi_DrsOptions options;
818
803
        } drsuapi_DsReplicaDelRequest1;
819
804
 
820
 
        typedef [switch_type(int32)] union {
 
805
        typedef [switch_type(uint32)] union {
821
806
                [case(1)] drsuapi_DsReplicaDelRequest1 req1;
822
807
        } drsuapi_DsReplicaDelRequest;
823
808
 
824
809
        WERROR drsuapi_DsReplicaDel(
825
810
                [in] policy_handle *bind_handle,
826
 
                [in] int32 level,
 
811
                [in] uint32 level,
827
812
                [in,switch_is(level)] drsuapi_DsReplicaDelRequest req
828
813
                );
829
814
 
830
815
        /*****************/
831
816
        /* Function 0x07 */
832
 
        typedef bitmap {
833
 
                DRSUAPI_DS_REPLICA_ADD_ASYNCHRONOUS_OPERATION   = 0x00000001,
834
 
                DRSUAPI_DS_REPLICA_ADD_WRITEABLE                = 0x00000002
835
 
                /* TODO ... */
836
 
        } drsuapi_DsReplicaModifyOptions;
837
 
 
838
817
 
839
818
        typedef struct {
840
819
                [ref] drsuapi_DsReplicaObjectIdentifier *naming_context;
841
820
                GUID source_dra;
842
821
                [charset(UTF16),string] uint16 *source_dra_address;
843
822
                uint8 schedule[84];
844
 
                uint32 replica_flags;
 
823
                drsuapi_DrsOptions replica_flags;
845
824
                uint32 modify_fields;
846
 
                drsuapi_DsReplicaModifyOptions options;
 
825
                drsuapi_DrsOptions options;
847
826
        } drsuapi_DsReplicaModRequest1;
848
827
 
849
 
        typedef [switch_type(int32)] union {
 
828
        typedef [switch_type(uint32)] union {
850
829
                [case(1)] drsuapi_DsReplicaModRequest1 req1;
851
830
        } drsuapi_DsReplicaModRequest;
852
831
 
853
832
        WERROR drsuapi_DsReplicaMod(
854
833
                [in] policy_handle *bind_handle,
855
 
                [in] int32 level,
 
834
                [in] uint32 level,
856
835
                [in,switch_is(level)] drsuapi_DsReplicaModRequest req
857
836
                );
858
837
 
883
862
                [size_is(num_sids)] dom_sid28 **sids;
884
863
        } drsuapi_DsGetMembershipsCtr1;
885
864
 
886
 
        typedef [switch_type(int32)] union {
 
865
        typedef [switch_type(uint32)] union {
887
866
                [case(1)] drsuapi_DsGetMembershipsCtr1 ctr1;
888
867
        } drsuapi_DsGetMembershipsCtr;
889
868
 
893
872
                [range(1,10000)] uint32 count;
894
873
                [size_is(count)] drsuapi_DsReplicaObjectIdentifier **info_array;
895
874
                uint32 flags;
896
 
                drsuapi_DsMembershipType type;
 
875
                [range(1,7)] drsuapi_DsMembershipType type;
897
876
                drsuapi_DsReplicaObjectIdentifier *domain;
898
877
        } drsuapi_DsGetMembershipsRequest1;
899
878
 
900
 
        typedef [switch_type(int32)] union {
 
879
        typedef [switch_type(uint32)] union {
901
880
                [case(1)] drsuapi_DsGetMembershipsRequest1 req1;
902
881
        } drsuapi_DsGetMembershipsRequest;
903
882
 
904
 
        [todo] WERROR drsuapi_DsGetMemberships(
 
883
        WERROR drsuapi_DsGetMemberships(
905
884
                [in] policy_handle *bind_handle,
906
 
                [in] int32 level,
 
885
                [in] uint32 level,
907
886
                [in,ref] [switch_is(level)] drsuapi_DsGetMembershipsRequest *req,
908
 
                [out,ref] int32 *level_out,
 
887
                [out,ref] uint32 *level_out,
909
888
                [out,ref] [switch_is(*level_out)] drsuapi_DsGetMembershipsCtr *ctr
910
889
                );
911
890
 
915
894
 
916
895
        /*****************/
917
896
        /* Function 0x0b */
 
897
        typedef [bitmap32bit] bitmap {
 
898
                DRSUAPI_NT4_CHANGELOG_GET_CHANGELOG             = 0x00000001,
 
899
                DRSUAPI_NT4_CHANGELOG_GET_SERIAL_NUMBERS        = 0x00000002
 
900
        } drsuapi_DsGetNT4ChangeLogFlags;
 
901
 
918
902
        typedef struct {
919
 
                uint32 unknown1;
920
 
                uint32 unknown2;
921
 
                [range(0,0x00A00000)] uint32 length;
922
 
                [size_is(length)] uint8 *data;
 
903
                drsuapi_DsGetNT4ChangeLogFlags flags;
 
904
                uint32 preferred_maximum_length;
 
905
                [range(0,0x00A00000)] uint32 restart_length;
 
906
                [size_is(restart_length)] uint8 *restart_data;
923
907
        } drsuapi_DsGetNT4ChangeLogRequest1;
924
908
 
925
909
        typedef [switch_type(uint32)] union {
927
911
        } drsuapi_DsGetNT4ChangeLogRequest;
928
912
 
929
913
        typedef struct {
930
 
                [range(0,0x00A00000)] uint32 length1;
931
 
                [range(0,0x00A00000)] uint32 length2;
932
 
                hyper unknown1;
933
 
                NTTIME time2;
934
 
                hyper unknown3;
935
 
                NTTIME time4;
936
 
                hyper unknown5;
937
 
                NTTIME time6;
 
914
                [range(0,0x00A00000)] uint32 restart_length;
 
915
                [range(0,0x00A00000)] uint32 log_length;
 
916
                hyper sam_serial_number;
 
917
                NTTIME sam_creation_time;
 
918
                hyper builtin_serial_number;
 
919
                NTTIME builtin_creation_time;
 
920
                hyper lsa_serial_number;
 
921
                NTTIME lsa_creation_time;
938
922
                NTSTATUS status;
939
 
                [size_is(length1)] uint8 *data1;
940
 
                [size_is(length2)] uint8 *data2;
 
923
                [size_is(restart_length)] uint8 *restart_data;
 
924
                [size_is(log_length)] uint8 *log_data;
941
925
        } drsuapi_DsGetNT4ChangeLogInfo1;
942
926
 
943
927
        typedef [switch_type(uint32)] union {
944
928
                [case(1)] drsuapi_DsGetNT4ChangeLogInfo1 info1;
945
929
        } drsuapi_DsGetNT4ChangeLogInfo;
946
930
 
947
 
        [todo] WERROR drsuapi_DsGetNT4ChangeLog(
 
931
        WERROR drsuapi_DsGetNT4ChangeLog(
948
932
                [in] policy_handle *bind_handle,
949
933
                [in] uint32 level,
950
934
                [in,ref] [switch_is(level)] drsuapi_DsGetNT4ChangeLogRequest *req,
974
958
        } drsuapi_DsNameFlags;
975
959
 
976
960
        typedef [v1_enum] enum {
977
 
                DRSUAPI_DS_NAME_FORMAT_UNKNOWN                  = 0,
978
 
                DRSUAPI_DS_NAME_FORMAT_FQDN_1779                = 1,
979
 
                DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT              = 2,
980
 
                DRSUAPI_DS_NAME_FORMAT_DISPLAY                  = 3,
981
 
                DRSUAPI_DS_NAME_FORMAT_GUID                     = 6,
982
 
                DRSUAPI_DS_NAME_FORMAT_CANONICAL                = 7,
983
 
                DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL           = 8,
984
 
                DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX             = 9,
985
 
                DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL        = 10,
986
 
                DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY       = 11,
987
 
                DRSUAPI_DS_NAME_FORMAT_DNS_DOMAIN               = 12
 
961
                DRSUAPI_DS_NAME_FORMAT_UNKNOWN                  = 0x00000000,
 
962
                DRSUAPI_DS_NAME_FORMAT_FQDN_1779                = 0x00000001,
 
963
                DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT              = 0x00000002,
 
964
                DRSUAPI_DS_NAME_FORMAT_DISPLAY                  = 0x00000003,
 
965
                DRSUAPI_DS_NAME_FORMAT_GUID                     = 0x00000006,
 
966
                DRSUAPI_DS_NAME_FORMAT_CANONICAL                = 0x00000007,
 
967
                DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL           = 0x00000008,
 
968
                DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX             = 0x00000009,
 
969
                DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL        = 0x0000000A,
 
970
                DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY       = 0x0000000B,
 
971
                DRSUAPI_DS_NAME_FORMAT_DNS_DOMAIN               = 0x0000000C,
 
972
                DRSUAPI_DS_NAME_FORMAT_UPN_AND_ALTSECID         = 0xFFFFFFEF,
 
973
                DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT_NAME_SANS_DOMAIN_EX = 0xFFFFFFF0,
 
974
                DRSUAPI_DS_NAME_FORMAT_LIST_GLOBAL_CATALOG_SERVERS = 0xFFFFFFF1,
 
975
                DRSUAPI_DS_NAME_FORMAT_UPN_FOR_LOGON            = 0xFFFFFFF2,
 
976
                DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_WITH_DCS_IN_SITE = 0xFFFFFFF3,
 
977
                DRSUAPI_DS_NAME_FORMAT_STRING_SID_NAME          = 0xFFFFFFF4,
 
978
                DRSUAPI_DS_NAME_FORMAT_ALT_SECURITY_IDENTITIES_NAME = 0xFFFFFFF5,
 
979
                DRSUAPI_DS_NAME_FORMAT_LIST_NCS                 = 0xFFFFFFF6,
 
980
                DRSUAPI_DS_NAME_FORMAT_LIST_DOMAINS             = 0xFFFFFFF7,
 
981
                DRSUAPI_DS_NAME_FORMAT_MAP_SCHEMA_GUID          = 0xFFFFFFF8,
 
982
                DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT_NAME_SANS_DOMAIN = 0xFFFFFFF9,
 
983
                DRSUAPI_DS_NAME_FORMAT_LIST_ROLES               = 0xFFFFFFFA,
 
984
                DRSUAPI_DS_NAME_FORMAT_LIST_INFO_FOR_SERVER     = 0xFFFFFFFB,
 
985
                DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_FOR_DOMAIN_IN_SITE = 0xFFFFFFFC,
 
986
                DRSUAPI_DS_NAME_FORMAT_LIST_DOMAINS_IN_SITE     = 0xFFFFFFFD,
 
987
                DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_IN_SITE     = 0xFFFFFFFE,
 
988
                DRSUAPI_DS_NAME_FORMAT_LIST_SITES               = 0xFFFFFFFF
988
989
        } drsuapi_DsNameFormat;
989
990
 
990
991
        typedef struct {
1001
1002
                [size_is(count)] drsuapi_DsNameString *names;
1002
1003
        } drsuapi_DsNameRequest1;
1003
1004
 
1004
 
        typedef [switch_type(int32)] union {
 
1005
        typedef [switch_type(uint32)] union {
1005
1006
                [case(1)] drsuapi_DsNameRequest1 req1;
1006
1007
        } drsuapi_DsNameRequest;
1007
1008
 
1016
1017
                [size_is(count)] drsuapi_DsNameInfo1 *array;
1017
1018
        } drsuapi_DsNameCtr1;
1018
1019
 
1019
 
        typedef [switch_type(int32)] union {
 
1020
        typedef [switch_type(uint32)] union {
1020
1021
                [case(1)] drsuapi_DsNameCtr1 *ctr1;
1021
1022
        } drsuapi_DsNameCtr;
1022
1023
 
1023
1024
        WERROR drsuapi_DsCrackNames(
1024
1025
                [in] policy_handle *bind_handle,
1025
 
                [in] int32 level,
 
1026
                [in] uint32 level,
1026
1027
                [in,ref,switch_is(level)] drsuapi_DsNameRequest *req,
1027
 
                [out,ref] int32 *level_out,
 
1028
                [out,ref] uint32 *level_out,
1028
1029
                [out,ref,switch_is(*level_out)] drsuapi_DsNameCtr *ctr
1029
1030
                );
1030
1031
 
1044
1045
                [size_is(count)] drsuapi_DsNameString *spn_names;
1045
1046
        } drsuapi_DsWriteAccountSpnRequest1;
1046
1047
 
1047
 
        typedef [switch_type(int32)] union {
 
1048
        typedef [switch_type(uint32)] union {
1048
1049
                [case(1)] drsuapi_DsWriteAccountSpnRequest1 req1;
1049
1050
        } drsuapi_DsWriteAccountSpnRequest;
1050
1051
 
1052
1053
                WERROR status;
1053
1054
        } drsuapi_DsWriteAccountSpnResult1;
1054
1055
 
1055
 
        typedef [switch_type(int32)] union {
 
1056
        typedef [switch_type(uint32)] union {
1056
1057
                [case(1)] drsuapi_DsWriteAccountSpnResult1 res1;
1057
1058
        } drsuapi_DsWriteAccountSpnResult;
1058
1059
 
1059
1060
        WERROR drsuapi_DsWriteAccountSpn(
1060
1061
                [in] policy_handle *bind_handle,
1061
 
                [in] int32 level,
 
1062
                [in] uint32 level,
1062
1063
                [in,ref,switch_is(level)] drsuapi_DsWriteAccountSpnRequest *req,
1063
 
                [out,ref] int32 *level_out,
 
1064
                [out,ref] uint32 *level_out,
1064
1065
                [out,ref,switch_is(*level_out)] drsuapi_DsWriteAccountSpnResult *res
1065
1066
                );
1066
1067
 
1072
1073
                boolean32 commit;
1073
1074
        } drsuapi_DsRemoveDSServerRequest1;
1074
1075
 
1075
 
        typedef [switch_type(int32)] union {
 
1076
        typedef [switch_type(uint32)] union {
1076
1077
                [case(1)] drsuapi_DsRemoveDSServerRequest1 req1;
1077
1078
        } drsuapi_DsRemoveDSServerRequest;
1078
1079
 
1080
1081
                boolean32 last_dc_in_domain;
1081
1082
        } drsuapi_DsRemoveDSServerResult1;
1082
1083
 
1083
 
        typedef [switch_type(int32)] union {
 
1084
        typedef [switch_type(uint32)] union {
1084
1085
                [case(1)] drsuapi_DsRemoveDSServerResult1 res1;
1085
1086
        } drsuapi_DsRemoveDSServerResult;
1086
1087
 
1087
1088
        WERROR drsuapi_DsRemoveDSServer(
1088
1089
                [in] policy_handle *bind_handle,
1089
 
                [in] int32 level,
 
1090
                [in] uint32 level,
1090
1091
                [in,ref,switch_is(level)] drsuapi_DsRemoveDSServerRequest *req,
1091
 
                [out,ref] int32 *level_out,
 
1092
                [out,ref] uint32 *level_out,
1092
1093
                [out,ref,switch_is(*level_out)] drsuapi_DsRemoveDSServerResult *res
1093
1094
                );
1094
1095
 
1236
1237
         */
1237
1238
        const char *DRSUAPI_NTDSDSA_KRB5_SERVICE_GUID = "E3514235-4B06-11D1-AB04-00C04FC2DCD2";
1238
1239
 
 
1240
        /* Error codes to classify an error that occurs
 
1241
         * during a search for, or the update of,
 
1242
         * a directory object */
 
1243
        typedef [v1_enum] enum {
 
1244
                DRSUAPI_DIRERR_OK         = 0,
 
1245
                DRSUAPI_DIRERR_ATTRIBUTE  = 1,
 
1246
                DRSUAPI_DIRERR_NAME       = 2,
 
1247
                DRSUAPI_DIRERR_REFERRAL   = 3,
 
1248
                DRSUAPI_DIRERR_SECURITY   = 4,
 
1249
                DRSUAPI_DIRERR_SERVICE    = 5,
 
1250
                DRSUAPI_DIRERR_UPDATE     = 6,
 
1251
                DRSUAPI_DIRERR_SYSTEM     = 7
 
1252
        } drsuapi_DsAddEntry_DirErr;
 
1253
 
1239
1254
        /*
1240
 
         * please note the the current idl
1241
 
         * for DsAddEntry does only parse
1242
 
         * what I saw between 2 w2k3 boxes
1243
 
         * in my dssync experiments I got some other replies
1244
 
         * so all I want to say is that this is very incomplete yet...
1245
 
         * --metze
 
1255
         * Ref: DRS_MSG_ADDENTRYREQ_V2, [MS-DRSR]: 4.1.1.1.3
1246
1256
         */
1247
1257
        typedef struct {
1248
1258
                drsuapi_DsReplicaObjectListItem first_object;
1249
1259
        } drsuapi_DsAddEntryRequest2;
1250
1260
 
1251
 
        typedef [switch_type(int32)] union {
 
1261
        /* Buffer type is actually more
 
1262
         * like a semi Flags
 
1263
         * Ref: DRS_SecBuffer, [MS-DRSR]: 5.41 */
 
1264
        typedef [v1_enum,noprint] enum {
 
1265
                DRSUAPI_SECBUFFER_EMPTY          = 0x00000000,
 
1266
                DRSUAPI_SECBUFFER_DATA           = 0x00000001,
 
1267
                DRSUAPI_SECBUFFER_TOKEN          = 0x00000002,
 
1268
                DRSUAPI_SECBUFFER_PKG_PARAMS     = 0x00000003,
 
1269
                DRSUAPI_SECBUFFER_MISSING        = 0x00000004,
 
1270
                DRSUAPI_SECBUFFER_EXTRA          = 0x00000005,
 
1271
                DRSUAPI_SECBUFFER_STREAM_TRAILER = 0x00000006,
 
1272
                DRSUAPI_SECBUFFER_STREAM_HEADER  = 0x00000007,
 
1273
                DRSUAPI_SECBUFFER_READONLY       = 0x80000000
 
1274
        } drsuapi_SecBufferType;
 
1275
 
 
1276
        typedef struct {
 
1277
                [range(0,10000)] uint32 buf_size;
 
1278
                drsuapi_SecBufferType buf_type;
 
1279
                [size_is(buf_size)] uint8 *buffer;
 
1280
        } drsuapi_SecBuffer;
 
1281
 
 
1282
        typedef struct {
 
1283
                [value(0)] uint32 version;
 
1284
                [range(0,10000)] uint32 buff_count;
 
1285
                [size_is(buff_count)] drsuapi_SecBuffer *buffers;
 
1286
        } drsuapi_SecBufferDesc;
 
1287
 
 
1288
        /*
 
1289
         * Ref: DRS_MSG_ADDENTRYREQ_V3, [MS-DRSR]: 4.1.1.1.4
 
1290
         */
 
1291
        typedef struct {
 
1292
                drsuapi_DsReplicaObjectListItem first_object;
 
1293
                drsuapi_SecBufferDesc *client_creds;
 
1294
        } drsuapi_DsAddEntryRequest3;
 
1295
 
 
1296
        typedef [switch_type(uint32)] union {
1252
1297
                [case(2)] drsuapi_DsAddEntryRequest2 req2;
 
1298
                [case(3)] drsuapi_DsAddEntryRequest3 req3;
1253
1299
        } drsuapi_DsAddEntryRequest;
1254
1300
 
 
1301
        /* Generic extended error info
 
1302
         * commonly used in most places
 
1303
         * where rich error info is returned */
1255
1304
        typedef struct {
1256
 
                uint32 unknown1;
1257
 
                WERROR status;
1258
 
                uint32 unknown2;
1259
 
                uint16 unknown3;
 
1305
                uint32  dsid;           /* implementation-specific diagnostic code */
 
1306
                WERROR  extended_err;   /* 0, STATUS code, or Windows error code */
 
1307
                uint32  extended_data;  /* implementation-specific diagnostic code */
 
1308
                uint16  problem;        /* 0 or PROBLEM error code */
1260
1309
        } drsuapi_DsAddEntryErrorInfoX;
1261
1310
 
1262
 
        typedef struct {
1263
 
                [range(0,10485760)] uint32 size;
1264
 
                [size_is(size)] uint8 *data;
1265
 
        } drsuapi_DsAddEntryExtraErrorBuffer;
1266
 
 
1267
 
        typedef struct {
1268
 
                drsuapi_DsAddEntryErrorInfoX error;
 
1311
        /* Attribute errors
 
1312
         * Ref: ATRERR_DRS_WIRE_V1, [MS-DRSR]: 4.1.1.1.11 */
 
1313
        typedef struct {
 
1314
                uint32  dsid;
 
1315
                WERROR  extended_err;
 
1316
                uint32  extended_data;
 
1317
                uint16  problem;
1269
1318
                drsuapi_DsAttributeId attid;
1270
 
                uint32 unknown2;
1271
 
                drsuapi_DsAddEntryExtraErrorBuffer buffer;
1272
 
        } drsuapi_DsAddEntryExtraError1;
 
1319
                boolean32 is_val_returned;
 
1320
                drsuapi_DsAttributeValue attr_val;
 
1321
        } drsuapi_DsAddEntry_AttrErr_V1;
1273
1322
 
1274
 
        typedef /*[noprint]*/ struct {
1275
 
                drsuapi_DsAddEntryErrorListItem1 *next;
1276
 
                drsuapi_DsAddEntryExtraError1 error;
1277
 
        } drsuapi_DsAddEntryErrorListItem1;
 
1323
        typedef [noprint] struct {
 
1324
                drsuapi_DsAddEntry_AttrErrListItem_V1 *next;
 
1325
                drsuapi_DsAddEntry_AttrErr_V1 err_data;
 
1326
        } drsuapi_DsAddEntry_AttrErrListItem_V1;
1278
1327
 
1279
1328
        typedef struct {
1280
1329
                drsuapi_DsReplicaObjectIdentifier *id;
1281
 
                WERROR status;
1282
 
                drsuapi_DsAddEntryErrorListItem1 first;
1283
 
        } drsuapi_DsAddEntryErrorInfo1;
 
1330
                uint32 count;
 
1331
                drsuapi_DsAddEntry_AttrErrListItem_V1 first;
 
1332
        } drsuapi_DsAddEntryErrorInfo_Attr_V1;
 
1333
 
 
1334
        /* Name resolution error
 
1335
         * Ref: NAMERR_DRS_WIRE_V1, [MS-DRSR]: 4.1.1.1.14 */
 
1336
        typedef struct {
 
1337
                uint32  dsid;
 
1338
                WERROR  extended_err;
 
1339
                uint32  extended_data;
 
1340
                uint16  problem;
 
1341
                drsuapi_DsReplicaObjectIdentifier *id_matched; /* The best match for the supplied object identity */
 
1342
        } drsuapi_DsAddEntryErrorInfo_Name_V1;
 
1343
 
 
1344
        /* Referral error
 
1345
         * Ref: REFERR_DRS_WIRE_V1, [MS-DRSR]: 4.1.1.1.15 */
 
1346
        typedef struct {
 
1347
                [value(83)] uint8  name_res;    /* Must be 'S' */
 
1348
                [value(0)]  uint8  unused_pad;
 
1349
                [value(0)]  uint16 next_rdn;
 
1350
        } drsuapi_NameResOp_V1;
 
1351
 
 
1352
        typedef [enum16bit] enum {
 
1353
                DRSUAPI_CH_REFTYPE_SUPERIOR     = 0x0000, /* referral to a superior DC */
 
1354
                DRSUAPI_CH_REFTYPE_SUBORDINATE  = 0x0001, /* referral to a subordinate DC */
 
1355
                DRSUAPI_CH_REFTYPE_NSSR         = 0x0002, /* Not used */
 
1356
                DRSUAPI_CH_REFTYPE_CROSS        = 0x0003  /* A referral to an external crossRef object */
 
1357
        } drsuapi_DsAddEntry_RefType;
 
1358
 
 
1359
        typedef [enum8bit] enum {
 
1360
                DRSUAPI_SE_CHOICE_BASE_ONLY     = 0x00,
 
1361
                DRSUAPI_SE_CHOICE_IMMED_CHLDRN  = 0x01,
 
1362
                DRSUAPI_SE_CHOICE_WHOLE_SUBTREE = 0x02
 
1363
        } drsuapi_DsAddEntry_ChoiceType;
 
1364
 
 
1365
        /* list of network names of the DCs
 
1366
         * to which the referral is directed */
 
1367
        typedef struct  {
 
1368
                drsuapi_DsaAddressListItem_V1 *next;
 
1369
                lsa_String *address;
 
1370
        } drsuapi_DsaAddressListItem_V1;
 
1371
 
 
1372
        typedef struct {
 
1373
                drsuapi_DsReplicaObjectIdentifier *id_target; /* object to which the referral is directed */
 
1374
                drsuapi_NameResOp_V1 op_state;
 
1375
                [value(0)] uint16 rdn_alias;
 
1376
                [value(0)] uint16 rdn_internal;
 
1377
                drsuapi_DsAddEntry_RefType ref_type;
 
1378
                uint16 addr_list_count;
 
1379
                drsuapi_DsaAddressListItem_V1 *addr_list;
 
1380
                drsuapi_DsAddEntry_RefErrListItem_V1 *next;
 
1381
                boolean32 is_choice_set;
 
1382
                drsuapi_DsAddEntry_ChoiceType choice;
 
1383
        } drsuapi_DsAddEntry_RefErrListItem_V1;
 
1384
 
 
1385
        typedef struct {
 
1386
                uint32  dsid;
 
1387
                WERROR  extended_err;
 
1388
                uint32  extended_data;
 
1389
                drsuapi_DsAddEntry_RefErrListItem_V1 refer;
 
1390
        } drsuapi_DsAddEntryErrorInfo_Referr_V1;
1284
1391
 
1285
1392
        typedef [switch_type(uint32)] union {
1286
 
                [case(1)] drsuapi_DsAddEntryErrorInfo1 error1;
1287
 
/*              [case(2)] drsuapi_DsAddEntryErrorInfo2 error2;
1288
 
                [case(3)] drsuapi_DsAddEntryErrorInfo3 error3;
1289
 
*/              [case(4)] drsuapi_DsAddEntryErrorInfoX errorX;
1290
 
                [case(5)] drsuapi_DsAddEntryErrorInfoX errorX;
1291
 
                [case(6)] drsuapi_DsAddEntryErrorInfoX errorX;
1292
 
                [case(7)] drsuapi_DsAddEntryErrorInfoX errorX;
 
1393
                [case(1)] drsuapi_DsAddEntryErrorInfo_Attr_V1   attr_err;
 
1394
                [case(2)] drsuapi_DsAddEntryErrorInfo_Name_V1   name_err;
 
1395
                [case(3)] drsuapi_DsAddEntryErrorInfo_Referr_V1 referral_err;
 
1396
                [case(4)] drsuapi_DsAddEntryErrorInfoX          security_err;
 
1397
                [case(5)] drsuapi_DsAddEntryErrorInfoX          service_err;
 
1398
                [case(6)] drsuapi_DsAddEntryErrorInfoX          update_err;
 
1399
                [case(7)] drsuapi_DsAddEntryErrorInfoX          system_err;
1293
1400
        } drsuapi_DsAddEntryErrorInfo;
1294
1401
 
1295
1402
        typedef struct {
1296
1403
                WERROR status;
1297
 
                uint32 level;
1298
 
                [switch_is(level)] drsuapi_DsAddEntryErrorInfo *info;
1299
 
        } drsuapi_DsAddEntryError1;
 
1404
                drsuapi_DsAddEntry_DirErr dir_err;
 
1405
                [switch_is(dir_err)] drsuapi_DsAddEntryErrorInfo *info;
 
1406
        } drsuapi_DsAddEntry_ErrData_V1;
1300
1407
 
1301
1408
        typedef [switch_type(uint32)] union {
1302
 
                [case(1)] drsuapi_DsAddEntryError1 info1;
1303
 
        } drsuapi_DsAddEntryError;
 
1409
                [case(1)] drsuapi_DsAddEntry_ErrData_V1 v1;
 
1410
        } drsuapi_DsAddEntry_ErrData;
1304
1411
 
1305
1412
        typedef struct {
1306
1413
                GUID guid;
1309
1416
 
1310
1417
        typedef struct {
1311
1418
                drsuapi_DsReplicaObjectIdentifier *id;
1312
 
                uint32 unknown1;
1313
 
                drsuapi_DsAddEntryErrorInfoX error;
 
1419
                drsuapi_DsAddEntry_DirErr dir_err;
 
1420
                uint32                    dsid;          /* implementation-specific diagnostic code */
 
1421
                WERROR                    extended_err;  /* 0, STATUS code, or Windows error code */
 
1422
                uint32                    extended_data; /* implementation-specific diagnostic code */
 
1423
                uint16                    problem;       /* 0 or PROBLEM error code */
1314
1424
                [range(0,10000)] uint32 count;
1315
1425
                [size_is(count)] drsuapi_DsReplicaObjectIdentifier2 *objects;
1316
1426
        } drsuapi_DsAddEntryCtr2;
1317
1427
 
1318
1428
        typedef struct {
1319
1429
                drsuapi_DsReplicaObjectIdentifier *id;
1320
 
                uint32 level;
1321
 
                [switch_is(level)] drsuapi_DsAddEntryError *error;
 
1430
                uint32 err_ver; /* Must be 1 */
 
1431
                [switch_is(err_ver)] drsuapi_DsAddEntry_ErrData *err_data;
1322
1432
                [range(0,10000)] uint32 count;
1323
1433
                [size_is(count)] drsuapi_DsReplicaObjectIdentifier2 *objects;
1324
1434
        } drsuapi_DsAddEntryCtr3;
1325
1435
 
1326
 
        typedef [switch_type(int32)] union {
 
1436
        typedef [switch_type(uint32)] union {
1327
1437
                [case(2)] drsuapi_DsAddEntryCtr2 ctr2;
1328
1438
                [case(3)] drsuapi_DsAddEntryCtr3 ctr3;
1329
1439
        } drsuapi_DsAddEntryCtr;
1330
1440
 
1331
1441
        [public] WERROR drsuapi_DsAddEntry(
1332
1442
                [in] policy_handle *bind_handle,
1333
 
                [in] int32 level,
 
1443
                [in] uint32 level,
1334
1444
                [in,ref,switch_is(level)] drsuapi_DsAddEntryRequest *req,
1335
 
                [out,ref] int32 *level_out,
 
1445
                [out,ref] uint32 *level_out,
1336
1446
                [out,ref,switch_is(*level_out)] drsuapi_DsAddEntryCtr *ctr
1337
1447
                );
1338
1448
 
1377
1487
                DRSUAPI_DS_REPLICA_INFO_CURSORS3                        = 8,
1378
1488
                DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2                   = 9,
1379
1489
                DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2       = 10,
1380
 
                DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02                     = -2,
1381
 
                DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04                   = -4,
1382
 
                DRSUAPI_DS_REPLICA_INFO_CURSORS05                       = -5,
1383
 
                DRSUAPI_DS_REPLICA_INFO_06                              = -6
 
1490
                DRSUAPI_DS_REPLICA_INFO_REPSTO                          = -2,
 
1491
                DRSUAPI_DS_REPLICA_INFO_CLIENT_CONTEXTS                 = -4,
 
1492
                DRSUAPI_DS_REPLICA_INFO_UPTODATE_VECTOR_V1              = -5,
 
1493
                DRSUAPI_DS_REPLICA_INFO_SERVER_OUTGOING_CALLS           = -6
1384
1494
        } drsuapi_DsReplicaInfoType;
1385
1495
 
1386
1496
        typedef struct {
1387
1497
                drsuapi_DsReplicaInfoType info_type;
1388
1498
                [charset(UTF16),string] uint16 *object_dn;
1389
 
                GUID guid1;
 
1499
                GUID source_dsa_guid;
1390
1500
        } drsuapi_DsReplicaGetInfoRequest1;
1391
1501
 
1392
1502
        typedef struct {
1393
1503
                drsuapi_DsReplicaInfoType info_type;
1394
1504
                [charset(UTF16),string] uint16 *object_dn;
1395
 
                GUID guid1;
1396
 
                uint32 unknown1;
1397
 
                [charset(UTF16),string] uint16 *string1;
1398
 
                [charset(UTF16),string] uint16 *string2;
1399
 
                uint32 unknown2;
 
1505
                GUID source_dsa_guid;
 
1506
                uint32 flags;
 
1507
                [charset(UTF16),string] uint16 *attribute_name;
 
1508
                [charset(UTF16),string] uint16 *value_dn_str;
 
1509
                uint32 enumeration_context;
1400
1510
        } drsuapi_DsReplicaGetInfoRequest2;
1401
1511
 
1402
1512
        typedef [switch_type(drsuapi_DsReplicaGetInfoLevel)] union {
1409
1519
                [charset(UTF16),string] uint16 *source_dsa_obj_dn;
1410
1520
                [charset(UTF16),string] uint16 *source_dsa_address;
1411
1521
                [charset(UTF16),string] uint16 *transport_obj_dn;
1412
 
                drsuapi_DsReplicaNeighbourFlags replica_flags;
 
1522
                drsuapi_DrsOptions replica_flags;
1413
1523
                uint32 reserved;
1414
1524
                GUID naming_context_obj_guid;
1415
1525
                GUID source_dsa_obj_guid;
1472
1582
                DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS  = 4
1473
1583
        } drsuapi_DsReplicaOpType;
1474
1584
 
1475
 
        typedef [switch_type(drsuapi_DsReplicaOpType)] union {
1476
 
                [case(DRSUAPI_DS_REPLICA_OP_TYPE_SYNC)]         drsuapi_DsReplicaSyncOptions sync;
1477
 
                [case(DRSUAPI_DS_REPLICA_OP_TYPE_ADD)]          drsuapi_DsReplicaAddOptions add;
1478
 
                [case(DRSUAPI_DS_REPLICA_OP_TYPE_DELETE)]       drsuapi_DsReplicaDeleteOptions op_delete;
1479
 
                [case(DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY)]       drsuapi_DsReplicaModifyOptions modify;
1480
 
                [case(DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS)]  drsuapi_DsReplicaUpdateRefsOptions update_refs;
1481
 
                [default] uint32 unknown;
1482
 
        } drsuapi_DsRplicaOpOptions;
1483
 
 
1484
1585
        typedef struct {
1485
1586
                NTTIME operation_start;
1486
1587
                uint32 serial_num; /* unique till reboot */
1487
1588
                uint32 priority;
1488
1589
                drsuapi_DsReplicaOpType operation_type;
1489
 
                [switch_is(operation_type)] drsuapi_DsRplicaOpOptions options;
 
1590
                drsuapi_DrsOptions options;
1490
1591
                [charset(UTF16),string] uint16 *nc_dn;
1491
1592
                [charset(UTF16),string] uint16 *remote_dsa_obj_dn;
1492
1593
                [charset(UTF16),string] uint16 *remote_dsa_address;
1516
1617
 
1517
1618
        typedef struct {
1518
1619
                uint32 count;
1519
 
                int32 enumeration_context;
 
1620
                uint32 enumeration_context;
1520
1621
                [size_is(count)] drsuapi_DsReplicaAttrValMetaData array[];
1521
1622
        } drsuapi_DsReplicaAttrValMetaDataCtr;
1522
1623
 
1523
1624
        typedef struct {
1524
1625
                uint32 count;
1525
 
                int32 enumeration_context;
 
1626
                uint32 enumeration_context;
1526
1627
                [size_is(count)] drsuapi_DsReplicaCursor2 array[];
1527
1628
        } drsuapi_DsReplicaCursor2Ctr;
1528
1629
 
1535
1636
 
1536
1637
        typedef struct {
1537
1638
                uint32 count;
1538
 
                int32 enumeration_context;
 
1639
                uint32 enumeration_context;
1539
1640
                [size_is(count)] drsuapi_DsReplicaCursor3 array[];
1540
1641
        } drsuapi_DsReplicaCursor3Ctr;
1541
1642
 
1551
1652
 
1552
1653
        typedef struct {
1553
1654
                uint32 count;
1554
 
                int32 enumeration_context;
 
1655
                uint32 enumeration_context;
1555
1656
                [size_is(count)] drsuapi_DsReplicaObjMetaData2 array[];
1556
1657
        } drsuapi_DsReplicaObjMetaData2Ctr;
1557
1658
 
1572
1673
 
1573
1674
        typedef struct {
1574
1675
                uint32 count;
1575
 
                int32 enumeration_context;
 
1676
                uint32 enumeration_context;
1576
1677
                [size_is(count)] drsuapi_DsReplicaAttrValMetaData2 array[];
1577
1678
        } drsuapi_DsReplicaAttrValMetaData2Ctr;
1578
1679
 
1621
1722
                [case(DRSUAPI_DS_REPLICA_INFO_CURSORS3)] drsuapi_DsReplicaCursor3Ctr *cursors3;
1622
1723
                [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2)] drsuapi_DsReplicaObjMetaData2Ctr *objmetadata2;
1623
1724
                [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2)] drsuapi_DsReplicaAttrValMetaData2Ctr *attrvalmetadata2;
1624
 
                [case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS02)] drsuapi_DsReplicaNeighbourCtr *neighbours02;
1625
 
                [case(DRSUAPI_DS_REPLICA_INFO_CONNECTIONS04)] drsuapi_DsReplicaConnection04Ctr *connections04;
1626
 
                [case(DRSUAPI_DS_REPLICA_INFO_CURSORS05)] drsuapi_DsReplicaCursorCtrEx *cursors05;
1627
 
                [case(DRSUAPI_DS_REPLICA_INFO_06)] drsuapi_DsReplica06Ctr *i06;
 
1725
                [case(DRSUAPI_DS_REPLICA_INFO_REPSTO)] drsuapi_DsReplicaNeighbourCtr *repsto;
 
1726
                [case(DRSUAPI_DS_REPLICA_INFO_CLIENT_CONTEXTS)] drsuapi_DsReplicaConnection04Ctr *clientctx;
 
1727
                [case(DRSUAPI_DS_REPLICA_INFO_UPTODATE_VECTOR_V1)] drsuapi_DsReplicaCursorCtrEx *udv1;
 
1728
                [case(DRSUAPI_DS_REPLICA_INFO_SERVER_OUTGOING_CALLS)] drsuapi_DsReplica06Ctr *srvoutgoingcalls;
1628
1729
        } drsuapi_DsReplicaInfo;
1629
1730
 
1630
1731
        WERROR drsuapi_DsReplicaGetInfo(
1647
1748
                [size_is(num_entries)] drsuapi_DsGetMembershipsCtr1 **ctrl_array;
1648
1749
        } drsuapi_DsGetMemberships2Ctr1;
1649
1750
 
1650
 
        typedef [switch_type(int32)] union {
 
1751
        typedef [switch_type(uint32)] union {
1651
1752
                [case(1)] drsuapi_DsGetMembershipsCtr1 ctr1;
1652
1753
        } drsuapi_DsGetMemberships2Ctr;
1653
1754
 
1656
1757
                [size_is(num_req)] drsuapi_DsGetMembershipsRequest1 **req_array;
1657
1758
        } drsuapi_DsGetMemberships2Request1;
1658
1759
 
1659
 
        typedef [switch_type(int32)] union {
 
1760
        typedef [switch_type(uint32)] union {
1660
1761
                [case(1)] drsuapi_DsGetMemberships2Request1 req1;
1661
1762
        } drsuapi_DsGetMemberships2Request;
1662
1763
 
1663
1764
        WERROR drsuapi_DsGetMemberships2(
1664
1765
                [in] policy_handle *bind_handle,
1665
 
                [in] int32 level,
 
1766
                [in] uint32 level,
1666
1767
                [in,ref] [switch_is(level)] drsuapi_DsGetMemberships2Request *req,
1667
 
                [out,ref] int32 *level_out,
 
1768
                [out,ref] uint32 *level_out,
1668
1769
                [out,ref] [switch_is(*level_out)] drsuapi_DsGetMemberships2Ctr *ctr
1669
1770
                );
1670
1771
 
1686
1787
        typedef struct {
1687
1788
                [range(0,10000)] uint32 num_info;
1688
1789
                [size_is(num_info)] drsuapi_DsSiteCostInfo *info;
1689
 
                uint32 unknown;
 
1790
                [value(0)] uint32 flags_reserved;
1690
1791
        } drsuapi_QuerySitesByCostCtr1;
1691
1792
 
1692
 
        typedef [switch_type(int32)] union {
 
1793
        typedef [switch_type(uint32)] union {
1693
1794
                [case(1)] drsuapi_QuerySitesByCostCtr1 ctr1;
1694
1795
        } drsuapi_QuerySitesByCostCtr;
1695
1796
 
1700
1801
                uint32 flags;
1701
1802
        } drsuapi_QuerySitesByCostRequest1;
1702
1803
 
1703
 
        typedef [switch_type(int32)] union {
 
1804
        typedef [switch_type(uint32)] union {
1704
1805
                [case(1)] drsuapi_QuerySitesByCostRequest1 req1;
1705
1806
        } drsuapi_QuerySitesByCostRequest;
1706
1807
 
1707
1808
        WERROR drsuapi_QuerySitesByCost(
1708
1809
                [in] policy_handle *bind_handle,
1709
 
                [in] int32 level,
 
1810
                [in] uint32 level,
1710
1811
                [in,ref] [switch_is(level)] drsuapi_QuerySitesByCostRequest *req,
1711
 
                [out,ref] int32 *level_out,
 
1812
                [out,ref] uint32 *level_out,
1712
1813
                [out,ref] [switch_is(*level_out)] drsuapi_QuerySitesByCostCtr *ctr
1713
1814
        );
1714
1815
}