/* header auto-generated by pidl */

#ifndef _PIDL_HEADER_drsuapi
#define _PIDL_HEADER_drsuapi

#include <stdint.h>

#include <core/ntstatus.h>

#include <gen_ndr/security.h>
#include <gen_ndr/misc.h>
#include <gen_ndr/lsa.h>
#include <gen_ndr/samr.h>
#ifndef _HEADER_drsuapi
#define _HEADER_drsuapi

#define DRSUAPI_DS_BIND_GUID	( "e24d201a-4fd6-11d1-a3da-0000f875ae0d" )
#define DRSUAPI_DS_BIND_GUID_W2K	( "6abec3d1-3054-41c8-a362-5a0c5b7d5d71" )
#define DRSUAPI_DS_BIND_GUID_W2K3	( "6afab99c-6e26-464a-975f-f58f105218bc" )
#define DRSUAPI_DS_MEMBERSHIP_FLAG_GROUP_ATTR	( 0x1 )
#define DRSUAPI_NTDSDSA_KRB5_SERVICE_GUID	( "E3514235-4B06-11D1-AB04-00C04FC2DCD2" )
/* bitmap drsuapi_DrsOptions */
#define DRSUAPI_DRS_ASYNC_OP ( 0x00000001 )
#define DRSUAPI_DRS_GETCHG_CHECK ( 0x00000002 )
#define DRSUAPI_DRS_UPDATE_NOTIFICATION ( 0x00000002 )
#define DRSUAPI_DRS_ADD_REF ( 0x00000004 )
#define DRSUAPI_DRS_SYNC_ALL ( 0x00000008 )
#define DRSUAPI_DRS_DEL_REF ( 0x00000008 )
#define DRSUAPI_DRS_WRIT_REP ( 0x00000010 )
#define DRSUAPI_DRS_INIT_SYNC ( 0x00000020 )
#define DRSUAPI_DRS_PER_SYNC ( 0x00000040 )
#define DRSUAPI_DRS_MAIL_REP ( 0x00000080 )
#define DRSUAPI_DRS_ASYNC_REP ( 0x00000100 )
#define DRSUAPI_DRS_IGNORE_ERROR ( 0x00000100 )
#define DRSUAPI_DRS_TWOWAY_SYNC ( 0x00000200 )
#define DRSUAPI_DRS_CRITICAL_ONLY ( 0x00000400 )
#define DRSUAPI_DRS_GET_ANC ( 0x00000800 )
#define DRSUAPI_DRS_GET_NC_SIZE ( 0x00001000 )
#define DRSUAPI_DRS_LOCAL_ONLY ( 0x00001000 )
#define DRSUAPI_DRS_NONGC_RO_REP ( 0x00002000 )
#define DRSUAPI_DRS_SYNC_BYNAME ( 0x00004000 )
#define DRSUAPI_DRS_REF_OK ( 0x00004000 )
#define DRSUAPI_DRS_FULL_SYNC_NOW ( 0x00008000 )
#define DRSUAPI_DRS_NO_SOURCE ( 0x00008000 )
#define DRSUAPI_DRS_FULL_SYNC_IN_PROGRESS ( 0x00010000 )
#define DRSUAPI_DRS_FULL_SYNC_PACKET ( 0x00020000 )
#define DRSUAPI_DRS_SYNC_REQUEUE ( 0x00040000 )
#define DRSUAPI_DRS_SYNC_URGENT ( 0x00080000 )
#define DRSUAPI_DRS_REF_GCSPN ( 0x00100000 )
#define DRSUAPI_DRS_NO_DISCARD ( 0x00100000 )
#define DRSUAPI_DRS_NEVER_SYNCED ( 0x00200000 )
#define DRSUAPI_DRS_SPECIAL_SECRET_PROCESSING ( 0x00400000 )
#define DRSUAPI_DRS_INIT_SYNC_NOW ( 0x00800000 )
#define DRSUAPI_DRS_PREEMPTED ( 0x01000000 )
#define DRSUAPI_DRS_SYNC_FORCED ( 0x02000000 )
#define DRSUAPI_DRS_DISABLE_AUTO_SYNC ( 0x04000000 )
#define DRSUAPI_DRS_DISABLE_PERIODIC_SYNC ( 0x08000000 )
#define DRSUAPI_DRS_USE_COMPRESSION ( 0x10000000 )
#define DRSUAPI_DRS_NEVER_NOTIFY ( 0x20000000 )
#define DRSUAPI_DRS_SYNC_PAS ( 0x40000000 )
#define DRSUAPI_DRS_GET_ALL_GROUP_MEMBERSHIP ( 0x80000000 )

/* bitmap drsuapi_DrsMoreOptions */
#define DRSUAPI_DRS_GET_TGT ( 0x00000001 )

/* bitmap drsuapi_DrsUpdate */
#define DRSUAPI_DRS_UPDATE_FLAGS ( 0x00000001 )
#define DRSUAPI_DRS_UPDATE_ADDRESS ( 0x00000002 )
#define DRSUAPI_DRS_UPDATE_SCHEDULE ( 0x00000004 )

/* bitmap drsuapi_SupportedExtensions */
#define DRSUAPI_SUPPORTED_EXTENSION_BASE ( 0x00000001 )
#define DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATION ( 0x00000002 )
#define DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPI ( 0x00000004 )
#define DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2 ( 0x00000008 )
#define DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESS ( 0x00000010 )
#define DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1 ( 0x00000020 )
#define DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATION ( 0x00000040 )
#define DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY ( 0x00000080 )
#define DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTE ( 0x00000100 )
#define DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2 ( 0x00000200 )
#define DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATION ( 0x00000400 )
#define DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2 ( 0x00000800 )
#define DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MOD ( 0x00001000 )
#define DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BIND ( 0x00002000 )
#define DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFO ( 0x00004000 )
#define DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTION ( 0x00008000 )
#define DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01 ( 0x00010000 )
#define DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIP ( 0x00020000 )
#define DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORY ( 0x00040000 )
#define DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3 ( 0x00080000 )
#define DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V5 ( 0x00100000 )
#define DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2 ( 0x00200000 )
#define DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6 ( 0x00400000 )
#define DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCS ( 0x00800000 )
#define DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8 ( 0x01000000 )
#define DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5 ( 0x02000000 )
#define DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6 ( 0x04000000 )
#define DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3 ( 0x08000000 )
#define DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7 ( 0x08000000 )
#define DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECT ( 0x08000000 )
#define DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESS ( 0x10000000 )
#define DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V10 ( 0x20000000 )
#define DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART2 ( 0x40000000 )
#define DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART3 ( 0x80000000 )

/* bitmap drsuapi_SupportedExtensionsExt */
#define DRSUAPI_SUPPORTED_EXTENSION_ADAM ( 0x00000001 )
#define DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2 ( 0x00000002 )
#define DRSUAPI_SUPPORTED_EXTENSION_RECYCLE_BIN ( 0x00000004 )

struct drsuapi_DsBindInfo24 {
	uint32_t supported_extensions;
	struct GUID site_guid;
	uint32_t pid;
}/* [public] */;

struct drsuapi_DsBindInfo28 {
	uint32_t supported_extensions;
	struct GUID site_guid;
	uint32_t pid;
	uint32_t repl_epoch;
}/* [public] */;

struct drsuapi_DsBindInfo32 {
	uint32_t supported_extensions;
	struct GUID site_guid;
	uint32_t pid;
	uint32_t repl_epoch;
	uint32_t supported_extensions_ext;
}/* [public] */;

struct drsuapi_DsBindInfo48 {
	uint32_t supported_extensions;
	struct GUID site_guid;
	uint32_t pid;
	uint32_t repl_epoch;
	uint32_t supported_extensions_ext;
	struct GUID config_dn_guid;
}/* [public] */;

struct drsuapi_DsBindInfo52 {
	uint32_t supported_extensions;
	struct GUID site_guid;
	uint32_t pid;
	uint32_t repl_epoch;
	uint32_t supported_extensions_ext;
	struct GUID config_dn_guid;
	uint32_t supported_capabilities_ext;
}/* [public] */;

struct drsuapi_DsBindInfoFallBack {
	DATA_BLOB info;/* [flag(LIBNDR_FLAG_REMAINING)] */
}/* [public] */;

union drsuapi_DsBindInfo {
	struct drsuapi_DsBindInfo24 info24;/* [case(24),subcontext(0),subcontext_size(24)] */
	struct drsuapi_DsBindInfo28 info28;/* [case(28),subcontext(0),subcontext_size(28)] */
	struct drsuapi_DsBindInfo32 info32;/* [case(32),subcontext(0),subcontext_size(32)] */
	struct drsuapi_DsBindInfo48 info48;/* [case(48),subcontext(0),subcontext_size(48)] */
	struct drsuapi_DsBindInfo52 info52;/* [case(52),subcontext(0),subcontext_size(52)] */
	struct drsuapi_DsBindInfoFallBack Fallback;/* [default,subcontext(0),subcontext_size(48)] */
}/* [nodiscriminant,noprint,nopull,nopush] */;

struct drsuapi_DsBindInfoCtr {
	uint32_t length;/* [range(1,10000)] */
	uint32_t __ndr_length;/* [value(length)] */
	union drsuapi_DsBindInfo info;/* [switch_is(length)] */
}/* [flag(LIBNDR_FLAG_NOALIGN)] */;

struct drsuapi_DsReplicaObjectIdentifier {
	uint32_t __ndr_size;/* [value(ndr_size_drsuapi_DsReplicaObjectIdentifier(r,ndr->flags)-4)] */
	uint32_t __ndr_size_sid;/* [value(ndr_size_dom_sid28(&sid,ndr->flags))] */
	struct GUID guid;
	struct dom_sid28 sid;
	uint32_t __ndr_size_dn;/* [value(strlen_m(dn))] */
	const char *dn;/* [charset(UTF16),size_is(__ndr_size_dn+1)] */
}/* [gensize,public] */;

struct drsuapi_DsReplicaSyncRequest1 {
	struct drsuapi_DsReplicaObjectIdentifier *naming_context;/* [ref] */
	struct GUID source_dsa_guid;
	const char *source_dsa_dns;/* [charset(DOS),unique] */
	uint32_t options;
};

union drsuapi_DsReplicaSyncRequest {
	struct drsuapi_DsReplicaSyncRequest1 req1;/* [case] */
}/* [switch_type(uint32)] */;

struct drsuapi_DsReplicaHighWaterMark {
	uint64_t tmp_highest_usn;
	uint64_t reserved_usn;
	uint64_t highest_usn;
}/* [public] */;

struct drsuapi_DsReplicaCursor {
	struct GUID source_dsa_invocation_id;
	uint64_t highest_usn;
}/* [public] */;

struct drsuapi_DsReplicaCursorCtrEx {
	uint32_t version;/* [value] */
	uint32_t reserved1;/* [value(0)] */
	uint32_t count;/* [range(0,0x100000)] */
	uint32_t reserved2;/* [value(0)] */
	struct drsuapi_DsReplicaCursor *cursors;/* [size_is(count)] */
};

enum drsuapi_DsExtendedOperation
#ifndef USE_UINT_ENUMS
 {
	DRSUAPI_EXOP_NONE=(int)(0x00000000),
	DRSUAPI_EXOP_FSMO_REQ_ROLE=(int)(0x00000001),
	DRSUAPI_EXOP_FSMO_RID_ALLOC=(int)(0x00000002),
	DRSUAPI_EXOP_FSMO_RID_REQ_ROLE=(int)(0x00000003),
	DRSUAPI_EXOP_FSMO_REQ_PDC=(int)(0x00000004),
	DRSUAPI_EXOP_FSMO_ABANDON_ROLE=(int)(0x00000005),
	DRSUAPI_EXOP_REPL_OBJ=(int)(0x00000006),
	DRSUAPI_EXOP_REPL_SECRET=(int)(0x00000007)
}
#else
 { __do_not_use_enum_drsuapi_DsExtendedOperation=INT_MAX}
#define DRSUAPI_EXOP_NONE ( 0x00000000 )
#define DRSUAPI_EXOP_FSMO_REQ_ROLE ( 0x00000001 )
#define DRSUAPI_EXOP_FSMO_RID_ALLOC ( 0x00000002 )
#define DRSUAPI_EXOP_FSMO_RID_REQ_ROLE ( 0x00000003 )
#define DRSUAPI_EXOP_FSMO_REQ_PDC ( 0x00000004 )
#define DRSUAPI_EXOP_FSMO_ABANDON_ROLE ( 0x00000005 )
#define DRSUAPI_EXOP_REPL_OBJ ( 0x00000006 )
#define DRSUAPI_EXOP_REPL_SECRET ( 0x00000007 )
#endif
;

enum drsuapi_DsExtendedError
#ifndef USE_UINT_ENUMS
 {
	DRSUAPI_EXOP_ERR_NONE=(int)(0x00000000),
	DRSUAPI_EXOP_ERR_SUCCESS=(int)(0x00000001),
	DRSUAPI_EXOP_ERR_UNKNOWN_OP=(int)(0x00000002),
	DRSUAPI_EXOP_ERR_FSMO_NOT_OWNER=(int)(0x00000003),
	DRSUAPI_EXOP_ERR_UPDATE_ERR=(int)(0x00000004),
	DRSUAPI_EXOP_ERR_EXCEPTION=(int)(0x00000005),
	DRSUAPI_EXOP_ERR_UNKNOWN_CALLER=(int)(0x00000006),
	DRSUAPI_EXOP_ERR_RID_ALLOC=(int)(0x00000007),
	DRSUAPI_EXOP_ERR_FSMO_OWNER_DELETED=(int)(0x00000008),
	DRSUAPI_EXOP_ERR_FMSO_PENDING_OP=(int)(0x00000009),
	DRSUAPI_EXOP_ERR_MISMATCH=(int)(0x0000000A),
	DRSUAPI_EXOP_ERR_COULDNT_CONTACT=(int)(0x0000000B),
	DRSUAPI_EXOP_ERR_FSMO_REFUSING_ROLES=(int)(0x0000000C),
	DRSUAPI_EXOP_ERR_DIR_ERROR=(int)(0x0000000D),
	DRSUAPI_EXOP_ERR_FSMO_MISSING_SETTINGS=(int)(0x0000000E),
	DRSUAPI_EXOP_ERR_ACCESS_DENIED=(int)(0x0000000F),
	DRSUAPI_EXOP_ERR_PARAM_ERROR=(int)(0x00000010)
}
#else
 { __do_not_use_enum_drsuapi_DsExtendedError=INT_MAX}
#define DRSUAPI_EXOP_ERR_NONE ( 0x00000000 )
#define DRSUAPI_EXOP_ERR_SUCCESS ( 0x00000001 )
#define DRSUAPI_EXOP_ERR_UNKNOWN_OP ( 0x00000002 )
#define DRSUAPI_EXOP_ERR_FSMO_NOT_OWNER ( 0x00000003 )
#define DRSUAPI_EXOP_ERR_UPDATE_ERR ( 0x00000004 )
#define DRSUAPI_EXOP_ERR_EXCEPTION ( 0x00000005 )
#define DRSUAPI_EXOP_ERR_UNKNOWN_CALLER ( 0x00000006 )
#define DRSUAPI_EXOP_ERR_RID_ALLOC ( 0x00000007 )
#define DRSUAPI_EXOP_ERR_FSMO_OWNER_DELETED ( 0x00000008 )
#define DRSUAPI_EXOP_ERR_FMSO_PENDING_OP ( 0x00000009 )
#define DRSUAPI_EXOP_ERR_MISMATCH ( 0x0000000A )
#define DRSUAPI_EXOP_ERR_COULDNT_CONTACT ( 0x0000000B )
#define DRSUAPI_EXOP_ERR_FSMO_REFUSING_ROLES ( 0x0000000C )
#define DRSUAPI_EXOP_ERR_DIR_ERROR ( 0x0000000D )
#define DRSUAPI_EXOP_ERR_FSMO_MISSING_SETTINGS ( 0x0000000E )
#define DRSUAPI_EXOP_ERR_ACCESS_DENIED ( 0x0000000F )
#define DRSUAPI_EXOP_ERR_PARAM_ERROR ( 0x00000010 )
#endif
;

struct drsuapi_DsGetNCChangesRequest5 {
	struct GUID destination_dsa_guid;
	struct GUID source_dsa_invocation_id;
	struct drsuapi_DsReplicaObjectIdentifier *naming_context;/* [ref] */
	struct drsuapi_DsReplicaHighWaterMark highwatermark;
	struct drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;/* [unique] */
	uint32_t replica_flags;
	uint32_t max_object_count;
	uint32_t max_ndr_size;
	enum drsuapi_DsExtendedOperation extended_op;
	uint64_t fsmo_info;
};

struct drsuapi_DsReplicaOID {
	uint32_t length;/* [range(0,10000)] */
	uint8_t *binary_oid;/* [size_is(length),unique] */
}/* [noprint] */;

struct drsuapi_DsReplicaOIDMapping {
	uint32_t id_prefix;
	struct drsuapi_DsReplicaOID oid;
};

struct drsuapi_DsReplicaOIDMapping_Ctr {
	uint32_t num_mappings;/* [range(0,0x100000)] */
	struct drsuapi_DsReplicaOIDMapping *mappings;/* [size_is(num_mappings),unique] */
}/* [public] */;

enum drsuapi_DsObjectClassId
#ifndef USE_UINT_ENUMS
 {
	DRSUAPI_OBJECTCLASS_top=(int)(0x00010000),
	DRSUAPI_OBJECTCLASS_classSchema=(int)(0x0003000d),
	DRSUAPI_OBJECTCLASS_attributeSchema=(int)(0x0003000e)
}
#else
 { __do_not_use_enum_drsuapi_DsObjectClassId=INT_MAX}
#define DRSUAPI_OBJECTCLASS_top ( 0x00010000 )
#define DRSUAPI_OBJECTCLASS_classSchema ( 0x0003000d )
#define DRSUAPI_OBJECTCLASS_attributeSchema ( 0x0003000e )
#endif
;

enum drsuapi_DsAttributeId
#ifndef USE_UINT_ENUMS
 {
	DRSUAPI_ATTID_objectClass=(int)(0x00000000),
	DRSUAPI_ATTID_cn=(int)(0x00000003),
	DRSUAPI_ATTID_ou=(int)(0x0000000b),
	DRSUAPI_ATTID_description=(int)(0x0000000d),
	DRSUAPI_ATTID_member=(int)(0x0000001f),
	DRSUAPI_ATTID_distinguishedName=(int)(0x00000031),
	DRSUAPI_ATTID_instanceType=(int)(0x00020001),
	DRSUAPI_ATTID_whenCreated=(int)(0x00020002),
	DRSUAPI_ATTID_possSuperiors=(int)(0x00020008),
	DRSUAPI_ATTID_displayName=(int)(0x0002000d),
	DRSUAPI_ATTID_hasMasterNCs=(int)(0x0002000e),
	DRSUAPI_ATTID_nCName=(int)(0x00020010),
	DRSUAPI_ATTID_subClassOf=(int)(0x00020015),
	DRSUAPI_ATTID_governsID=(int)(0x00020016),
	DRSUAPI_ATTID_mustContain=(int)(0x00020018),
	DRSUAPI_ATTID_mayContain=(int)(0x00020019),
	DRSUAPI_ATTID_rDNAttId=(int)(0x0002001A),
	DRSUAPI_ATTID_attributeID=(int)(0x0002001e),
	DRSUAPI_ATTID_attributeSyntax=(int)(0x00020020),
	DRSUAPI_ATTID_isSingleValued=(int)(0x00020021),
	DRSUAPI_ATTID_rangeLower=(int)(0x00020022),
	DRSUAPI_ATTID_rangeUpper=(int)(0x00020023),
	DRSUAPI_ATTID_dMDLocation=(int)(0x00020024),
	DRSUAPI_ATTID_isDeleted=(int)(0x00020030),
	DRSUAPI_ATTID_objectVersion=(int)(0x0002004c),
	DRSUAPI_ATTID_invocationId=(int)(0x00020073),
	DRSUAPI_ATTID_showInAdvancedViewOnly=(int)(0x000200a9),
	DRSUAPI_ATTID_adminDisplayName=(int)(0x000200c2),
	DRSUAPI_ATTID_adminDescription=(int)(0x000200e2),
	DRSUAPI_ATTID_oMSyntax=(int)(0x000200e7),
	DRSUAPI_ATTID_ntSecurityDescriptor=(int)(0x00020119),
	DRSUAPI_ATTID_searchFlags=(int)(0x0002014e),
	DRSUAPI_ATTID_auxiliaryClass=(int)(0x0002015f),
	DRSUAPI_ATTID_lDAPDisplayName=(int)(0x000201cc),
	DRSUAPI_ATTID_name=(int)(0x00090001),
	DRSUAPI_ATTID_objectGUID=(int)(0x00090002),
	DRSUAPI_ATTID_replPropertyMetaData=(int)(0x00090003),
	DRSUAPI_ATTID_userAccountControl=(int)(0x00090008),
	DRSUAPI_ATTID_badPwdCount=(int)(0x0009000c),
	DRSUAPI_ATTID_codePage=(int)(0x00090010),
	DRSUAPI_ATTID_countryCode=(int)(0x00090019),
	DRSUAPI_ATTID_currentValue=(int)(0x0009001b),
	DRSUAPI_ATTID_homeDirectory=(int)(0x0009002c),
	DRSUAPI_ATTID_homeDrive=(int)(0x0009002d),
	DRSUAPI_ATTID_lastLogoff=(int)(0x00090033),
	DRSUAPI_ATTID_lastLogon=(int)(0x00090034),
	DRSUAPI_ATTID_dBCSPwd=(int)(0x00090037),
	DRSUAPI_ATTID_scriptPath=(int)(0x0009003e),
	DRSUAPI_ATTID_logonHours=(int)(0x00090040),
	DRSUAPI_ATTID_userWorkstations=(int)(0x00090056),
	DRSUAPI_ATTID_unicodePwd=(int)(0x0009005a),
	DRSUAPI_ATTID_ntPwdHistory=(int)(0x0009005e),
	DRSUAPI_ATTID_pwdLastSet=(int)(0x00090060),
	DRSUAPI_ATTID_primaryGroupID=(int)(0x00090062),
	DRSUAPI_ATTID_priorValue=(int)(0x00090064),
	DRSUAPI_ATTID_supplementalCredentials=(int)(0x0009007d),
	DRSUAPI_ATTID_trustAuthIncoming=(int)(0x00090081),
	DRSUAPI_ATTID_trustDirection=(int)(0x00090084),
	DRSUAPI_ATTID_trustPartner=(int)(0x00090085),
	DRSUAPI_ATTID_trustPosixOffset=(int)(0x00090086),
	DRSUAPI_ATTID_trustAuthOutgoing=(int)(0x00090087),
	DRSUAPI_ATTID_trustType=(int)(0x00090088),
	DRSUAPI_ATTID_userParameters=(int)(0x0009008a),
	DRSUAPI_ATTID_profilePath=(int)(0x0009008b),
	DRSUAPI_ATTID_operatorCount=(int)(0x00090090),
	DRSUAPI_ATTID_objectSid=(int)(0x00090092),
	DRSUAPI_ATTID_schemaIDGUID=(int)(0x00090094),
	DRSUAPI_ATTID_adminCount=(int)(0x00090096),
	DRSUAPI_ATTID_comment=(int)(0x0009009C),
	DRSUAPI_ATTID_accountExpires=(int)(0x0009009f),
	DRSUAPI_ATTID_lmPwdHistory=(int)(0x000900a0),
	DRSUAPI_ATTID_logonCount=(int)(0x000900a9),
	DRSUAPI_ATTID_systemPossSuperiors=(int)(0x000900c3),
	DRSUAPI_ATTID_systemMayContain=(int)(0x000900c4),
	DRSUAPI_ATTID_systemMustContain=(int)(0x000900c5),
	DRSUAPI_ATTID_systemAuxiliaryClass=(int)(0x000900c6),
	DRSUAPI_ATTID_sAMAccountName=(int)(0x000900dd),
	DRSUAPI_ATTID_sAMAccountType=(int)(0x0009012e),
	DRSUAPI_ATTID_options=(int)(0x00090133),
	DRSUAPI_ATTID_fSMORoleOwner=(int)(0x00090171),
	DRSUAPI_ATTID_systemFlags=(int)(0x00090177),
	DRSUAPI_ATTID_trustAttributes=(int)(0x000901d6),
	DRSUAPI_ATTID_trustParent=(int)(0x000901d7),
	DRSUAPI_ATTID_flatName=(int)(0x000901ff),
	DRSUAPI_ATTID_serverReference=(int)(0x00090203),
	DRSUAPI_ATTID_serverReferenceBL=(int)(0x00090204),
	DRSUAPI_ATTID_nonSecurityMember=(int)(0x00090212),
	DRSUAPI_ATTID_initialAuthIncoming=(int)(0x0009021b),
	DRSUAPI_ATTID_initialAuthOutgoing=(int)(0x0009021c),
	DRSUAPI_ATTID_wellKnownObjects=(int)(0x0009026a),
	DRSUAPI_ATTID_dNSHostName=(int)(0x0009026b),
	DRSUAPI_ATTID_isMemberOfPartialAttributeSet=(int)(0x0009027f),
	DRSUAPI_ATTID_managedBy=(int)(0x0009028d),
	DRSUAPI_ATTID_userPrincipalName=(int)(0x00090290),
	DRSUAPI_ATTID_groupType=(int)(0x000902ee),
	DRSUAPI_ATTID_servicePrincipalName=(int)(0x00090303),
	DRSUAPI_ATTID_lastKnownParent=(int)(0x0009030d),
	DRSUAPI_ATTID_objectCategory=(int)(0x0009030e),
	DRSUAPI_ATTID_gPLink=(int)(0x0009037b),
	DRSUAPI_ATTID_transportAddressAttribute=(int)(0x0009037f),
	DRSUAPI_ATTID_schemaInfo=(int)(0x0009054e),
	DRSUAPI_ATTID_msDS_Behavior_Version=(int)(0x000905b3),
	DRSUAPI_ATTID_msDS_TrustForestTrustInfo=(int)(0x000906a6),
	DRSUAPI_ATTID_msDS_KeyVersionNumber=(int)(0x000906f6),
	DRSUAPI_ATTID_msDS_NonMembers=(int)(0x00090701),
	DRSUAPI_ATTID_msDS_MembersForAzRole=(int)(0x0009070e),
	DRSUAPI_ATTID_msDS_HasDomainNCs=(int)(0x0009071c),
	DRSUAPI_ATTID_msDS_hasMasterNCs=(int)(0x0009072c),
	DRSUAPI_ATTID_msDS_NeverRevealGroup=(int)(0x00090786),
	DRSUAPI_ATTID_msDS_RevealOnDemandGroup=(int)(0x00090788),
	DRSUAPI_ATTID_msDS_SupportedEncryptionTypes=(int)(0x000907ab),
	DRSUAPI_ATTID_msDS_HostServiceAccount=(int)(0x00090808),
	DRSUAPI_ATTID_isRecycled=(int)(0x0009080a),
	DRSUAPI_ATTID_INVALID=(int)(0xFFFFFFFF)
}
#else
 { __do_not_use_enum_drsuapi_DsAttributeId=INT_MAX}
#define DRSUAPI_ATTID_objectClass ( 0x00000000 )
#define DRSUAPI_ATTID_cn ( 0x00000003 )
#define DRSUAPI_ATTID_ou ( 0x0000000b )
#define DRSUAPI_ATTID_description ( 0x0000000d )
#define DRSUAPI_ATTID_member ( 0x0000001f )
#define DRSUAPI_ATTID_distinguishedName ( 0x00000031 )
#define DRSUAPI_ATTID_instanceType ( 0x00020001 )
#define DRSUAPI_ATTID_whenCreated ( 0x00020002 )
#define DRSUAPI_ATTID_possSuperiors ( 0x00020008 )
#define DRSUAPI_ATTID_displayName ( 0x0002000d )
#define DRSUAPI_ATTID_hasMasterNCs ( 0x0002000e )
#define DRSUAPI_ATTID_nCName ( 0x00020010 )
#define DRSUAPI_ATTID_subClassOf ( 0x00020015 )
#define DRSUAPI_ATTID_governsID ( 0x00020016 )
#define DRSUAPI_ATTID_mustContain ( 0x00020018 )
#define DRSUAPI_ATTID_mayContain ( 0x00020019 )
#define DRSUAPI_ATTID_rDNAttId ( 0x0002001A )
#define DRSUAPI_ATTID_attributeID ( 0x0002001e )
#define DRSUAPI_ATTID_attributeSyntax ( 0x00020020 )
#define DRSUAPI_ATTID_isSingleValued ( 0x00020021 )
#define DRSUAPI_ATTID_rangeLower ( 0x00020022 )
#define DRSUAPI_ATTID_rangeUpper ( 0x00020023 )
#define DRSUAPI_ATTID_dMDLocation ( 0x00020024 )
#define DRSUAPI_ATTID_isDeleted ( 0x00020030 )
#define DRSUAPI_ATTID_objectVersion ( 0x0002004c )
#define DRSUAPI_ATTID_invocationId ( 0x00020073 )
#define DRSUAPI_ATTID_showInAdvancedViewOnly ( 0x000200a9 )
#define DRSUAPI_ATTID_adminDisplayName ( 0x000200c2 )
#define DRSUAPI_ATTID_adminDescription ( 0x000200e2 )
#define DRSUAPI_ATTID_oMSyntax ( 0x000200e7 )
#define DRSUAPI_ATTID_ntSecurityDescriptor ( 0x00020119 )
#define DRSUAPI_ATTID_searchFlags ( 0x0002014e )
#define DRSUAPI_ATTID_auxiliaryClass ( 0x0002015f )
#define DRSUAPI_ATTID_lDAPDisplayName ( 0x000201cc )
#define DRSUAPI_ATTID_name ( 0x00090001 )
#define DRSUAPI_ATTID_objectGUID ( 0x00090002 )
#define DRSUAPI_ATTID_replPropertyMetaData ( 0x00090003 )
#define DRSUAPI_ATTID_userAccountControl ( 0x00090008 )
#define DRSUAPI_ATTID_badPwdCount ( 0x0009000c )
#define DRSUAPI_ATTID_codePage ( 0x00090010 )
#define DRSUAPI_ATTID_countryCode ( 0x00090019 )
#define DRSUAPI_ATTID_currentValue ( 0x0009001b )
#define DRSUAPI_ATTID_homeDirectory ( 0x0009002c )
#define DRSUAPI_ATTID_homeDrive ( 0x0009002d )
#define DRSUAPI_ATTID_lastLogoff ( 0x00090033 )
#define DRSUAPI_ATTID_lastLogon ( 0x00090034 )
#define DRSUAPI_ATTID_dBCSPwd ( 0x00090037 )
#define DRSUAPI_ATTID_scriptPath ( 0x0009003e )
#define DRSUAPI_ATTID_logonHours ( 0x00090040 )
#define DRSUAPI_ATTID_userWorkstations ( 0x00090056 )
#define DRSUAPI_ATTID_unicodePwd ( 0x0009005a )
#define DRSUAPI_ATTID_ntPwdHistory ( 0x0009005e )
#define DRSUAPI_ATTID_pwdLastSet ( 0x00090060 )
#define DRSUAPI_ATTID_primaryGroupID ( 0x00090062 )
#define DRSUAPI_ATTID_priorValue ( 0x00090064 )
#define DRSUAPI_ATTID_supplementalCredentials ( 0x0009007d )
#define DRSUAPI_ATTID_trustAuthIncoming ( 0x00090081 )
#define DRSUAPI_ATTID_trustDirection ( 0x00090084 )
#define DRSUAPI_ATTID_trustPartner ( 0x00090085 )
#define DRSUAPI_ATTID_trustPosixOffset ( 0x00090086 )
#define DRSUAPI_ATTID_trustAuthOutgoing ( 0x00090087 )
#define DRSUAPI_ATTID_trustType ( 0x00090088 )
#define DRSUAPI_ATTID_userParameters ( 0x0009008a )
#define DRSUAPI_ATTID_profilePath ( 0x0009008b )
#define DRSUAPI_ATTID_operatorCount ( 0x00090090 )
#define DRSUAPI_ATTID_objectSid ( 0x00090092 )
#define DRSUAPI_ATTID_schemaIDGUID ( 0x00090094 )
#define DRSUAPI_ATTID_adminCount ( 0x00090096 )
#define DRSUAPI_ATTID_comment ( 0x0009009C )
#define DRSUAPI_ATTID_accountExpires ( 0x0009009f )
#define DRSUAPI_ATTID_lmPwdHistory ( 0x000900a0 )
#define DRSUAPI_ATTID_logonCount ( 0x000900a9 )
#define DRSUAPI_ATTID_systemPossSuperiors ( 0x000900c3 )
#define DRSUAPI_ATTID_systemMayContain ( 0x000900c4 )
#define DRSUAPI_ATTID_systemMustContain ( 0x000900c5 )
#define DRSUAPI_ATTID_systemAuxiliaryClass ( 0x000900c6 )
#define DRSUAPI_ATTID_sAMAccountName ( 0x000900dd )
#define DRSUAPI_ATTID_sAMAccountType ( 0x0009012e )
#define DRSUAPI_ATTID_options ( 0x00090133 )
#define DRSUAPI_ATTID_fSMORoleOwner ( 0x00090171 )
#define DRSUAPI_ATTID_systemFlags ( 0x00090177 )
#define DRSUAPI_ATTID_trustAttributes ( 0x000901d6 )
#define DRSUAPI_ATTID_trustParent ( 0x000901d7 )
#define DRSUAPI_ATTID_flatName ( 0x000901ff )
#define DRSUAPI_ATTID_serverReference ( 0x00090203 )
#define DRSUAPI_ATTID_serverReferenceBL ( 0x00090204 )
#define DRSUAPI_ATTID_nonSecurityMember ( 0x00090212 )
#define DRSUAPI_ATTID_initialAuthIncoming ( 0x0009021b )
#define DRSUAPI_ATTID_initialAuthOutgoing ( 0x0009021c )
#define DRSUAPI_ATTID_wellKnownObjects ( 0x0009026a )
#define DRSUAPI_ATTID_dNSHostName ( 0x0009026b )
#define DRSUAPI_ATTID_isMemberOfPartialAttributeSet ( 0x0009027f )
#define DRSUAPI_ATTID_managedBy ( 0x0009028d )
#define DRSUAPI_ATTID_userPrincipalName ( 0x00090290 )
#define DRSUAPI_ATTID_groupType ( 0x000902ee )
#define DRSUAPI_ATTID_servicePrincipalName ( 0x00090303 )
#define DRSUAPI_ATTID_lastKnownParent ( 0x0009030d )
#define DRSUAPI_ATTID_objectCategory ( 0x0009030e )
#define DRSUAPI_ATTID_gPLink ( 0x0009037b )
#define DRSUAPI_ATTID_transportAddressAttribute ( 0x0009037f )
#define DRSUAPI_ATTID_schemaInfo ( 0x0009054e )
#define DRSUAPI_ATTID_msDS_Behavior_Version ( 0x000905b3 )
#define DRSUAPI_ATTID_msDS_TrustForestTrustInfo ( 0x000906a6 )
#define DRSUAPI_ATTID_msDS_KeyVersionNumber ( 0x000906f6 )
#define DRSUAPI_ATTID_msDS_NonMembers ( 0x00090701 )
#define DRSUAPI_ATTID_msDS_MembersForAzRole ( 0x0009070e )
#define DRSUAPI_ATTID_msDS_HasDomainNCs ( 0x0009071c )
#define DRSUAPI_ATTID_msDS_hasMasterNCs ( 0x0009072c )
#define DRSUAPI_ATTID_msDS_NeverRevealGroup ( 0x00090786 )
#define DRSUAPI_ATTID_msDS_RevealOnDemandGroup ( 0x00090788 )
#define DRSUAPI_ATTID_msDS_SupportedEncryptionTypes ( 0x000907ab )
#define DRSUAPI_ATTID_msDS_HostServiceAccount ( 0x00090808 )
#define DRSUAPI_ATTID_isRecycled ( 0x0009080a )
#define DRSUAPI_ATTID_INVALID ( 0xFFFFFFFF )
#endif
;

struct drsuapi_DsPartialAttributeSet {
	uint32_t version;/* [value] */
	uint32_t reserved1;/* [value(0)] */
	uint32_t num_attids;/* [range(1,0x100000)] */
	enum drsuapi_DsAttributeId *attids;/* [size_is(num_attids)] */
};

struct drsuapi_DsGetNCChangesRequest8 {
	struct GUID destination_dsa_guid;
	struct GUID source_dsa_invocation_id;
	struct drsuapi_DsReplicaObjectIdentifier *naming_context;/* [ref] */
	struct drsuapi_DsReplicaHighWaterMark highwatermark;
	struct drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;/* [unique] */
	uint32_t replica_flags;
	uint32_t max_object_count;
	uint32_t max_ndr_size;
	enum drsuapi_DsExtendedOperation extended_op;
	uint64_t fsmo_info;
	struct drsuapi_DsPartialAttributeSet *partial_attribute_set;/* [unique] */
	struct drsuapi_DsPartialAttributeSet *partial_attribute_set_ex;/* [unique] */
	struct drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr;
}/* [public] */;

struct drsuapi_DsGetNCChangesRequest10 {
	struct GUID destination_dsa_guid;
	struct GUID source_dsa_invocation_id;
	struct drsuapi_DsReplicaObjectIdentifier *naming_context;/* [ref] */
	struct drsuapi_DsReplicaHighWaterMark highwatermark;
	struct drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;/* [unique] */
	uint32_t replica_flags;
	uint32_t max_object_count;
	uint32_t max_ndr_size;
	enum drsuapi_DsExtendedOperation extended_op;
	uint64_t fsmo_info;
	struct drsuapi_DsPartialAttributeSet *partial_attribute_set;/* [unique] */
	struct drsuapi_DsPartialAttributeSet *partial_attribute_set_ex;/* [unique] */
	struct drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr;
	uint32_t more_flags;
}/* [public] */;

union drsuapi_DsGetNCChangesRequest {
	struct drsuapi_DsGetNCChangesRequest5 req5;/* [case(5)] */
	struct drsuapi_DsGetNCChangesRequest8 req8;/* [case(8)] */
	struct drsuapi_DsGetNCChangesRequest10 req10;/* [case(10)] */
}/* [switch_type(uint32)] */;

struct drsuapi_DsReplicaCursor2 {
	struct GUID source_dsa_invocation_id;
	uint64_t highest_usn;
	NTTIME last_sync_success;
}/* [public] */;

struct drsuapi_DsReplicaCursor2CtrEx {
	uint32_t version;/* [value(2)] */
	uint32_t reserved1;/* [value(0)] */
	uint32_t count;/* [range(0,0x100000)] */
	uint32_t reserved2;/* [value(0)] */
	struct drsuapi_DsReplicaCursor2 *cursors;/* [size_is(count)] */
};

struct drsuapi_DsAttributeValue {
	uint32_t __ndr_size;/* [range(0,26214400),value(ndr_size_DATA_BLOB(0,blob,0))] */
	DATA_BLOB *blob;/* [unique] */
};

struct drsuapi_DsAttributeValueCtr {
	uint32_t num_values;/* [range(0,10485760)] */
	struct drsuapi_DsAttributeValue *values;/* [size_is(num_values),unique] */
};

struct drsuapi_DsReplicaObjectIdentifier3 {
	uint32_t __ndr_size;/* [value(ndr_size_drsuapi_DsReplicaObjectIdentifier3(r,ndr->flags))] */
	uint32_t __ndr_size_sid;/* [value(ndr_size_dom_sid28(&sid,ndr->flags))] */
	struct GUID guid;
	struct dom_sid28 sid;
	uint32_t __ndr_size_dn;/* [value(strlen_m(dn))] */
	const char *dn;/* [charset(UTF16)] */
}/* [gensize,public] */;

struct drsuapi_DsReplicaObjectIdentifier3Binary {
	uint32_t __ndr_size;/* [value(ndr_size_drsuapi_DsReplicaObjectIdentifier3Binary_without_Binary(r,ndr->flags))] */
	uint32_t __ndr_size_sid;/* [value(ndr_size_dom_sid28(&sid,ndr->flags))] */
	struct GUID guid;
	struct dom_sid28 sid;
	uint32_t __ndr_size_dn;/* [value(strlen_m(dn))] */
	const char *dn;/* [charset(UTF16)] */
	uint32_t __ndr_size_binary;/* [value(binary.length+4)] */
	DATA_BLOB binary;/* [flag(LIBNDR_FLAG_REMAINING)] */
}/* [public] */;

struct drsuapi_DsReplicaAttribute {
	enum drsuapi_DsAttributeId attid;
	struct drsuapi_DsAttributeValueCtr value_ctr;
}/* [noprint,public] */;

struct drsuapi_DsReplicaAttributeCtr {
	uint32_t num_attributes;/* [range(0,1048576)] */
	struct drsuapi_DsReplicaAttribute *attributes;/* [size_is(num_attributes),unique] */
};

/* bitmap drsuapi_DsReplicaObjectFlags */
#define DRSUAPI_DS_REPLICA_OBJECT_FROM_MASTER ( 0x00000001 )
#define DRSUAPI_DS_REPLICA_OBJECT_DYNAMIC ( 0x00000002 )
#define DRSUAPI_DS_REPLICA_OBJECT_REMOTE_MODIFY ( 0x00010000 )

struct drsuapi_DsReplicaObject {
	struct drsuapi_DsReplicaObjectIdentifier *identifier;/* [unique] */
	uint32_t flags;
	struct drsuapi_DsReplicaAttributeCtr attribute_ctr;
}/* [public] */;

struct drsuapi_DsReplicaMetaData {
	uint32_t version;
	NTTIME originating_change_time;
	struct GUID originating_invocation_id;
	uint64_t originating_usn;
};

struct drsuapi_DsReplicaMetaDataCtr {
	uint32_t count;/* [range(0,1048576)] */
	struct drsuapi_DsReplicaMetaData *meta_data;/* [size_is(count)] */
}/* [public] */;

struct drsuapi_DsReplicaObjectListItemEx {
	struct drsuapi_DsReplicaObjectListItemEx *next_object;/* [max_recursion(20000),unique] */
	struct drsuapi_DsReplicaObject object;
	uint32_t is_nc_prefix;
	struct GUID *parent_object_guid;/* [unique] */
	struct drsuapi_DsReplicaMetaDataCtr *meta_data_ctr;/* [unique] */
}/* [noprint,public] */;

struct drsuapi_DsGetNCChangesCtr1 {
	struct GUID source_dsa_guid;
	struct GUID source_dsa_invocation_id;
	struct drsuapi_DsReplicaObjectIdentifier *naming_context;/* [unique] */
	struct drsuapi_DsReplicaHighWaterMark old_highwatermark;
	struct drsuapi_DsReplicaHighWaterMark new_highwatermark;
	struct drsuapi_DsReplicaCursorCtrEx *uptodateness_vector;/* [unique] */
	struct drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr;
	enum drsuapi_DsExtendedError extended_ret;
	uint32_t object_count;
	uint32_t __ndr_size;/* [value(ndr_size_drsuapi_DsGetNCChangesCtr1(r,ndr->flags)+55)] */
	struct drsuapi_DsReplicaObjectListItemEx *first_object;/* [unique] */
	uint32_t more_data;
}/* [gensize,public] */;

/* bitmap drsuapi_DsLinkedAttributeFlags */
#define DRSUAPI_DS_LINKED_ATTRIBUTE_FLAG_ACTIVE ( 0x00000001 )

struct drsuapi_DsReplicaLinkedAttribute {
	struct drsuapi_DsReplicaObjectIdentifier *identifier;/* [unique] */
	enum drsuapi_DsAttributeId attid;
	struct drsuapi_DsAttributeValue value;
	uint32_t flags;
	NTTIME originating_add_time;
	struct drsuapi_DsReplicaMetaData meta_data;
}/* [public] */;

struct drsuapi_DsGetNCChangesCtr6 {
	struct GUID source_dsa_guid;
	struct GUID source_dsa_invocation_id;
	struct drsuapi_DsReplicaObjectIdentifier *naming_context;/* [unique] */
	struct drsuapi_DsReplicaHighWaterMark old_highwatermark;
	struct drsuapi_DsReplicaHighWaterMark new_highwatermark;
	struct drsuapi_DsReplicaCursor2CtrEx *uptodateness_vector;/* [unique] */
	struct drsuapi_DsReplicaOIDMapping_Ctr mapping_ctr;
	enum drsuapi_DsExtendedError extended_ret;
	uint32_t object_count;
	uint32_t __ndr_size;/* [value(ndr_size_drsuapi_DsGetNCChangesCtr6(r,ndr->flags)+55)] */
	struct drsuapi_DsReplicaObjectListItemEx *first_object;/* [unique] */
	uint32_t more_data;
	uint32_t nc_object_count;
	uint32_t nc_linked_attributes_count;
	uint32_t linked_attributes_count;/* [range(0,1048576)] */
	struct drsuapi_DsReplicaLinkedAttribute *linked_attributes;/* [size_is(linked_attributes_count),unique] */
	WERROR drs_error;
}/* [gensize,public] */;

struct drsuapi_DsGetNCChangesCtr1TS {
	struct drsuapi_DsGetNCChangesCtr1 ctr1;/* [subcontext(0xFFFFFC01)] */
}/* [public] */;

struct drsuapi_DsGetNCChangesCtr6TS {
	struct drsuapi_DsGetNCChangesCtr6 ctr6;/* [subcontext(0xFFFFFC01)] */
}/* [public] */;

struct drsuapi_DsGetNCChangesMSZIPCtr1 {
	uint32_t decompressed_length;
	uint32_t compressed_length;
	struct drsuapi_DsGetNCChangesCtr1TS *ts;/* [compression(NDR_COMPRESSION_MSZIP,compressed_length,decompressed_length),subcontext(4),subcontext_size(compressed_length),unique] */
}/* [nopush] */;

struct drsuapi_DsGetNCChangesMSZIPCtr6 {
	uint32_t decompressed_length;
	uint32_t compressed_length;
	struct drsuapi_DsGetNCChangesCtr6TS *ts;/* [compression(NDR_COMPRESSION_MSZIP,compressed_length,decompressed_length),subcontext(4),subcontext_size(compressed_length),unique] */
}/* [nopush] */;

struct drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1 {
	uint32_t decompressed_length;
	uint32_t compressed_length;
	struct drsuapi_DsGetNCChangesCtr1TS *ts;/* [compression(NDR_COMPRESSION_WIN2K3_LZ77_DIRECT2,compressed_length,decompressed_length),subcontext(4),subcontext_size(compressed_length),unique] */
}/* [nopush] */;

struct drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6 {
	uint32_t decompressed_length;
	uint32_t compressed_length;
	struct drsuapi_DsGetNCChangesCtr6TS *ts;/* [compression(NDR_COMPRESSION_WIN2K3_LZ77_DIRECT2,compressed_length,decompressed_length),subcontext(4),subcontext_size(compressed_length),unique] */
}/* [nopush] */;

enum drsuapi_DsGetNCChangesCompressionType
#ifndef USE_UINT_ENUMS
 {
	DRSUAPI_COMPRESSION_TYPE_MSZIP=(int)(2),
	DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2=(int)(3)
}
#else
 { __do_not_use_enum_drsuapi_DsGetNCChangesCompressionType=INT_MAX}
#define DRSUAPI_COMPRESSION_TYPE_MSZIP ( 2 )
#define DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2 ( 3 )
#endif
;

union drsuapi_DsGetNCChangesCompressedCtr {
	struct drsuapi_DsGetNCChangesMSZIPCtr1 mszip1;/* [case(1|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] */
	struct drsuapi_DsGetNCChangesMSZIPCtr6 mszip6;/* [case(6|(DRSUAPI_COMPRESSION_TYPE_MSZIP<<16))] */
	struct drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr1 xpress1;/* [case(1|(DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2<<16))] */
	struct drsuapi_DsGetNCChangesWIN2K3_LZ77_DIRECT2Ctr6 xpress6;/* [case(6|(DRSUAPI_COMPRESSION_TYPE_WIN2K3_LZ77_DIRECT2<<16))] */
}/* [flag(LIBNDR_PRINT_ARRAY_HEX),nodiscriminant] */;

struct drsuapi_DsGetNCChangesCtr2 {
	struct drsuapi_DsGetNCChangesMSZIPCtr1 mszip1;
};

struct drsuapi_DsGetNCChangesCtr7 {
	uint32_t level;/* [range(0,6)] */
	enum drsuapi_DsGetNCChangesCompressionType type;/* [range(2,3)] */
	union drsuapi_DsGetNCChangesCompressedCtr ctr;/* [switch_is(level|(type<<16))] */
};

union drsuapi_DsGetNCChangesCtr {
	struct drsuapi_DsGetNCChangesCtr1 ctr1;/* [case] */
	struct drsuapi_DsGetNCChangesCtr2 ctr2;/* [case(2)] */
	struct drsuapi_DsGetNCChangesCtr6 ctr6;/* [case(6)] */
	struct drsuapi_DsGetNCChangesCtr7 ctr7;/* [case(7)] */
}/* [switch_type(uint32)] */;

struct drsuapi_DsReplicaUpdateRefsRequest1 {
	struct drsuapi_DsReplicaObjectIdentifier *naming_context;/* [ref] */
	const char *dest_dsa_dns_name;/* [charset(DOS),ref] */
	struct GUID dest_dsa_guid;
	uint32_t options;
};

union drsuapi_DsReplicaUpdateRefsRequest {
	struct drsuapi_DsReplicaUpdateRefsRequest1 req1;/* [case] */
}/* [switch_type(uint32)] */;

struct drsuapi_DsReplicaAddRequest1 {
	struct drsuapi_DsReplicaObjectIdentifier *naming_context;/* [ref] */
	const char *source_dsa_address;/* [charset(UTF16),unique] */
	uint8_t schedule[84];
	uint32_t options;
};

struct drsuapi_DsReplicaAddRequest2 {
	struct drsuapi_DsReplicaObjectIdentifier *naming_context;/* [ref] */
	struct drsuapi_DsReplicaObjectIdentifier *source_dsa_dn;/* [unique] */
	struct drsuapi_DsReplicaObjectIdentifier *transport_dn;/* [unique] */
	const char *source_dsa_address;/* [charset(UTF16),unique] */
	uint8_t schedule[84];
	uint32_t options;
};

union drsuapi_DsReplicaAddRequest {
	struct drsuapi_DsReplicaAddRequest1 req1;/* [case] */
	struct drsuapi_DsReplicaAddRequest2 req2;/* [case(2)] */
}/* [switch_type(uint32)] */;

struct drsuapi_DsReplicaDelRequest1 {
	struct drsuapi_DsReplicaObjectIdentifier *naming_context;/* [ref] */
	const char *source_dsa_address;/* [charset(UTF8),unique] */
	uint32_t options;
};

union drsuapi_DsReplicaDelRequest {
	struct drsuapi_DsReplicaDelRequest1 req1;/* [case] */
}/* [switch_type(uint32)] */;

struct drsuapi_DsReplicaModRequest1 {
	struct drsuapi_DsReplicaObjectIdentifier *naming_context;/* [ref] */
	struct GUID source_dsa;
	const char *source_dsa_address;/* [charset(UTF16),unique] */
	uint8_t schedule[84];
	uint32_t replica_flags;
	uint32_t modify_fields;
	uint32_t options;
};

union drsuapi_DsReplicaModRequest {
	struct drsuapi_DsReplicaModRequest1 req1;/* [case] */
}/* [switch_type(uint32)] */;

enum drsuapi_DsMembershipType
#ifndef USE_UINT_ENUMS
 {
	DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_AND_DOMAIN_GROUPS=(int)(1),
	DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS=(int)(2),
	DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS=(int)(3),
	DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS2=(int)(4),
	DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_GROUPS=(int)(5),
	DRSUAPI_DS_MEMBERSHIP_TYPE_GROUPMEMBERS=(int)(6),
	DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS2=(int)(7)
}
#else
 { __do_not_use_enum_drsuapi_DsMembershipType=INT_MAX}
#define DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_AND_DOMAIN_GROUPS ( 1 )
#define DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS ( 2 )
#define DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS ( 3 )
#define DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_LOCAL_GROUPS2 ( 4 )
#define DRSUAPI_DS_MEMBERSHIP_TYPE_UNIVERSAL_GROUPS ( 5 )
#define DRSUAPI_DS_MEMBERSHIP_TYPE_GROUPMEMBERS ( 6 )
#define DRSUAPI_DS_MEMBERSHIP_TYPE_DOMAIN_GROUPS2 ( 7 )
#endif
;

struct drsuapi_DsGetMembershipsCtr1 {
	NTSTATUS status;
	uint32_t num_memberships;/* [range(0,10000)] */
	uint32_t num_sids;/* [range(0,10000)] */
	struct drsuapi_DsReplicaObjectIdentifier **info_array;/* [size_is(num_memberships),unique] */
	uint32_t *group_attrs;/* [size_is(num_memberships),unique] */
	struct dom_sid28 **sids;/* [size_is(num_sids),unique] */
};

union drsuapi_DsGetMembershipsCtr {
	struct drsuapi_DsGetMembershipsCtr1 ctr1;/* [case] */
}/* [switch_type(uint32)] */;

struct drsuapi_DsGetMembershipsRequest1 {
	uint32_t count;/* [range(1,10000)] */
	struct drsuapi_DsReplicaObjectIdentifier **info_array;/* [size_is(count),unique] */
	uint32_t flags;
	enum drsuapi_DsMembershipType type;/* [range(1,7)] */
	struct drsuapi_DsReplicaObjectIdentifier *domain;/* [unique] */
};

union drsuapi_DsGetMembershipsRequest {
	struct drsuapi_DsGetMembershipsRequest1 req1;/* [case] */
}/* [switch_type(uint32)] */;

/* bitmap drsuapi_DsGetNT4ChangeLogFlags */
#define DRSUAPI_NT4_CHANGELOG_GET_CHANGELOG ( 0x00000001 )
#define DRSUAPI_NT4_CHANGELOG_GET_SERIAL_NUMBERS ( 0x00000002 )

struct drsuapi_DsGetNT4ChangeLogRequest1 {
	uint32_t flags;
	uint32_t preferred_maximum_length;
	uint32_t restart_length;/* [range(0,0x00A00000)] */
	uint8_t *restart_data;/* [size_is(restart_length),unique] */
};

union drsuapi_DsGetNT4ChangeLogRequest {
	struct drsuapi_DsGetNT4ChangeLogRequest1 req1;/* [case] */
}/* [switch_type(uint32)] */;

struct drsuapi_DsGetNT4ChangeLogInfo1 {
	uint32_t restart_length;/* [range(0,0x00A00000)] */
	uint32_t log_length;/* [range(0,0x00A00000)] */
	uint64_t sam_serial_number;
	NTTIME sam_creation_time;
	uint64_t builtin_serial_number;
	NTTIME builtin_creation_time;
	uint64_t lsa_serial_number;
	NTTIME lsa_creation_time;
	NTSTATUS status;
	uint8_t *restart_data;/* [size_is(restart_length),unique] */
	uint8_t *log_data;/* [size_is(log_length),unique] */
};

union drsuapi_DsGetNT4ChangeLogInfo {
	struct drsuapi_DsGetNT4ChangeLogInfo1 info1;/* [case] */
}/* [switch_type(uint32)] */;

enum drsuapi_DsNameStatus
#ifndef USE_UINT_ENUMS
 {
	DRSUAPI_DS_NAME_STATUS_OK=(int)(0),
	DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR=(int)(1),
	DRSUAPI_DS_NAME_STATUS_NOT_FOUND=(int)(2),
	DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE=(int)(3),
	DRSUAPI_DS_NAME_STATUS_NO_MAPPING=(int)(4),
	DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY=(int)(5),
	DRSUAPI_DS_NAME_STATUS_NO_SYNTACTICAL_MAPPING=(int)(6),
	DRSUAPI_DS_NAME_STATUS_TRUST_REFERRAL=(int)(7)
}
#else
 { __do_not_use_enum_drsuapi_DsNameStatus=INT_MAX}
#define DRSUAPI_DS_NAME_STATUS_OK ( 0 )
#define DRSUAPI_DS_NAME_STATUS_RESOLVE_ERROR ( 1 )
#define DRSUAPI_DS_NAME_STATUS_NOT_FOUND ( 2 )
#define DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE ( 3 )
#define DRSUAPI_DS_NAME_STATUS_NO_MAPPING ( 4 )
#define DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY ( 5 )
#define DRSUAPI_DS_NAME_STATUS_NO_SYNTACTICAL_MAPPING ( 6 )
#define DRSUAPI_DS_NAME_STATUS_TRUST_REFERRAL ( 7 )
#endif
;

enum drsuapi_DsNameFlags
#ifndef USE_UINT_ENUMS
 {
	DRSUAPI_DS_NAME_FLAG_NO_FLAGS=(int)(0x0),
	DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY=(int)(0x1),
	DRSUAPI_DS_NAME_FLAG_EVAL_AT_DC=(int)(0x2),
	DRSUAPI_DS_NAME_FLAG_GCVERIFY=(int)(0x4),
	DRSUAPI_DS_NAME_FLAG_TRUST_REFERRAL=(int)(0x8)
}
#else
 { __do_not_use_enum_drsuapi_DsNameFlags=INT_MAX}
#define DRSUAPI_DS_NAME_FLAG_NO_FLAGS ( 0x0 )
#define DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY ( 0x1 )
#define DRSUAPI_DS_NAME_FLAG_EVAL_AT_DC ( 0x2 )
#define DRSUAPI_DS_NAME_FLAG_GCVERIFY ( 0x4 )
#define DRSUAPI_DS_NAME_FLAG_TRUST_REFERRAL ( 0x8 )
#endif
;

enum drsuapi_DsNameFormat
#ifndef USE_UINT_ENUMS
 {
	DRSUAPI_DS_NAME_FORMAT_UNKNOWN=(int)(0x00000000),
	DRSUAPI_DS_NAME_FORMAT_FQDN_1779=(int)(0x00000001),
	DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT=(int)(0x00000002),
	DRSUAPI_DS_NAME_FORMAT_DISPLAY=(int)(0x00000003),
	DRSUAPI_DS_NAME_FORMAT_GUID=(int)(0x00000006),
	DRSUAPI_DS_NAME_FORMAT_CANONICAL=(int)(0x00000007),
	DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL=(int)(0x00000008),
	DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX=(int)(0x00000009),
	DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL=(int)(0x0000000A),
	DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY=(int)(0x0000000B),
	DRSUAPI_DS_NAME_FORMAT_DNS_DOMAIN=(int)(0x0000000C),
	DRSUAPI_DS_NAME_FORMAT_UPN_AND_ALTSECID=(int)(0xFFFFFFEF),
	DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT_NAME_SANS_DOMAIN_EX=(int)(0xFFFFFFF0),
	DRSUAPI_DS_NAME_FORMAT_LIST_GLOBAL_CATALOG_SERVERS=(int)(0xFFFFFFF1),
	DRSUAPI_DS_NAME_FORMAT_UPN_FOR_LOGON=(int)(0xFFFFFFF2),
	DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_WITH_DCS_IN_SITE=(int)(0xFFFFFFF3),
	DRSUAPI_DS_NAME_FORMAT_STRING_SID_NAME=(int)(0xFFFFFFF4),
	DRSUAPI_DS_NAME_FORMAT_ALT_SECURITY_IDENTITIES_NAME=(int)(0xFFFFFFF5),
	DRSUAPI_DS_NAME_FORMAT_LIST_NCS=(int)(0xFFFFFFF6),
	DRSUAPI_DS_NAME_FORMAT_LIST_DOMAINS=(int)(0xFFFFFFF7),
	DRSUAPI_DS_NAME_FORMAT_MAP_SCHEMA_GUID=(int)(0xFFFFFFF8),
	DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT_NAME_SANS_DOMAIN=(int)(0xFFFFFFF9),
	DRSUAPI_DS_NAME_FORMAT_LIST_ROLES=(int)(0xFFFFFFFA),
	DRSUAPI_DS_NAME_FORMAT_LIST_INFO_FOR_SERVER=(int)(0xFFFFFFFB),
	DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_FOR_DOMAIN_IN_SITE=(int)(0xFFFFFFFC),
	DRSUAPI_DS_NAME_FORMAT_LIST_DOMAINS_IN_SITE=(int)(0xFFFFFFFD),
	DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_IN_SITE=(int)(0xFFFFFFFE),
	DRSUAPI_DS_NAME_FORMAT_LIST_SITES=(int)(0xFFFFFFFF)
}
#else
 { __do_not_use_enum_drsuapi_DsNameFormat=INT_MAX}
#define DRSUAPI_DS_NAME_FORMAT_UNKNOWN ( 0x00000000 )
#define DRSUAPI_DS_NAME_FORMAT_FQDN_1779 ( 0x00000001 )
#define DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT ( 0x00000002 )
#define DRSUAPI_DS_NAME_FORMAT_DISPLAY ( 0x00000003 )
#define DRSUAPI_DS_NAME_FORMAT_GUID ( 0x00000006 )
#define DRSUAPI_DS_NAME_FORMAT_CANONICAL ( 0x00000007 )
#define DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL ( 0x00000008 )
#define DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX ( 0x00000009 )
#define DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL ( 0x0000000A )
#define DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY ( 0x0000000B )
#define DRSUAPI_DS_NAME_FORMAT_DNS_DOMAIN ( 0x0000000C )
#define DRSUAPI_DS_NAME_FORMAT_UPN_AND_ALTSECID ( 0xFFFFFFEF )
#define DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT_NAME_SANS_DOMAIN_EX ( 0xFFFFFFF0 )
#define DRSUAPI_DS_NAME_FORMAT_LIST_GLOBAL_CATALOG_SERVERS ( 0xFFFFFFF1 )
#define DRSUAPI_DS_NAME_FORMAT_UPN_FOR_LOGON ( 0xFFFFFFF2 )
#define DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_WITH_DCS_IN_SITE ( 0xFFFFFFF3 )
#define DRSUAPI_DS_NAME_FORMAT_STRING_SID_NAME ( 0xFFFFFFF4 )
#define DRSUAPI_DS_NAME_FORMAT_ALT_SECURITY_IDENTITIES_NAME ( 0xFFFFFFF5 )
#define DRSUAPI_DS_NAME_FORMAT_LIST_NCS ( 0xFFFFFFF6 )
#define DRSUAPI_DS_NAME_FORMAT_LIST_DOMAINS ( 0xFFFFFFF7 )
#define DRSUAPI_DS_NAME_FORMAT_MAP_SCHEMA_GUID ( 0xFFFFFFF8 )
#define DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT_NAME_SANS_DOMAIN ( 0xFFFFFFF9 )
#define DRSUAPI_DS_NAME_FORMAT_LIST_ROLES ( 0xFFFFFFFA )
#define DRSUAPI_DS_NAME_FORMAT_LIST_INFO_FOR_SERVER ( 0xFFFFFFFB )
#define DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_FOR_DOMAIN_IN_SITE ( 0xFFFFFFFC )
#define DRSUAPI_DS_NAME_FORMAT_LIST_DOMAINS_IN_SITE ( 0xFFFFFFFD )
#define DRSUAPI_DS_NAME_FORMAT_LIST_SERVERS_IN_SITE ( 0xFFFFFFFE )
#define DRSUAPI_DS_NAME_FORMAT_LIST_SITES ( 0xFFFFFFFF )
#endif
;

struct drsuapi_DsNameString {
	const char *str;/* [charset(UTF16),unique] */
};

struct drsuapi_DsNameRequest1 {
	uint32_t codepage;
	uint32_t language;
	enum drsuapi_DsNameFlags format_flags;
	enum drsuapi_DsNameFormat format_offered;
	enum drsuapi_DsNameFormat format_desired;
	uint32_t count;/* [range(1,10000)] */
	struct drsuapi_DsNameString *names;/* [size_is(count),unique] */
};

union drsuapi_DsNameRequest {
	struct drsuapi_DsNameRequest1 req1;/* [case] */
}/* [switch_type(uint32)] */;

struct drsuapi_DsNameInfo1 {
	enum drsuapi_DsNameStatus status;
	const char *dns_domain_name;/* [charset(UTF16),unique] */
	const char *result_name;/* [charset(UTF16),unique] */
};

struct drsuapi_DsNameCtr1 {
	uint32_t count;
	struct drsuapi_DsNameInfo1 *array;/* [size_is(count),unique] */
};

union drsuapi_DsNameCtr {
	struct drsuapi_DsNameCtr1 *ctr1;/* [case,unique] */
}/* [switch_type(uint32)] */;

enum drsuapi_DsSpnOperation
#ifndef USE_UINT_ENUMS
 {
	DRSUAPI_DS_SPN_OPERATION_ADD=(int)(0),
	DRSUAPI_DS_SPN_OPERATION_REPLACE=(int)(1),
	DRSUAPI_DS_SPN_OPERATION_DELETE=(int)(2)
}
#else
 { __do_not_use_enum_drsuapi_DsSpnOperation=INT_MAX}
#define DRSUAPI_DS_SPN_OPERATION_ADD ( 0 )
#define DRSUAPI_DS_SPN_OPERATION_REPLACE ( 1 )
#define DRSUAPI_DS_SPN_OPERATION_DELETE ( 2 )
#endif
;

struct drsuapi_DsWriteAccountSpnRequest1 {
	enum drsuapi_DsSpnOperation operation;
	uint32_t unknown1;
	const char *object_dn;/* [charset(UTF16),unique] */
	uint32_t count;/* [range(0,10000)] */
	struct drsuapi_DsNameString *spn_names;/* [size_is(count),unique] */
};

union drsuapi_DsWriteAccountSpnRequest {
	struct drsuapi_DsWriteAccountSpnRequest1 req1;/* [case] */
}/* [switch_type(uint32)] */;

struct drsuapi_DsWriteAccountSpnResult1 {
	WERROR status;
};

union drsuapi_DsWriteAccountSpnResult {
	struct drsuapi_DsWriteAccountSpnResult1 res1;/* [case] */
}/* [switch_type(uint32)] */;

struct drsuapi_DsRemoveDSServerRequest1 {
	const char *server_dn;/* [charset(UTF16),unique] */
	const char *domain_dn;/* [charset(UTF16),unique] */
	uint32_t commit;
};

union drsuapi_DsRemoveDSServerRequest {
	struct drsuapi_DsRemoveDSServerRequest1 req1;/* [case] */
}/* [switch_type(uint32)] */;

struct drsuapi_DsRemoveDSServerResult1 {
	uint32_t last_dc_in_domain;
};

union drsuapi_DsRemoveDSServerResult {
	struct drsuapi_DsRemoveDSServerResult1 res1;/* [case] */
}/* [switch_type(uint32)] */;

enum drsuapi_DsGetDCInfoCtrLevels
#ifndef USE_UINT_ENUMS
 {
	DRSUAPI_DC_INFO_CTR_1=(int)(1),
	DRSUAPI_DC_INFO_CTR_2=(int)(2),
	DRSUAPI_DC_INFO_CTR_3=(int)(3),
	DRSUAPI_DC_CONNECTION_CTR_01=(int)(0xFFFFFFFF)
}
#else
 { __do_not_use_enum_drsuapi_DsGetDCInfoCtrLevels=INT_MAX}
#define DRSUAPI_DC_INFO_CTR_1 ( 1 )
#define DRSUAPI_DC_INFO_CTR_2 ( 2 )
#define DRSUAPI_DC_INFO_CTR_3 ( 3 )
#define DRSUAPI_DC_CONNECTION_CTR_01 ( 0xFFFFFFFF )
#endif
;

struct drsuapi_DsGetDCInfoRequest1 {
	const char *domain_name;/* [charset(UTF16),unique] */
	enum drsuapi_DsGetDCInfoCtrLevels level;
};

union drsuapi_DsGetDCInfoRequest {
	struct drsuapi_DsGetDCInfoRequest1 req1;/* [case] */
}/* [switch_type(uint32)] */;

struct drsuapi_DsGetDCInfo1 {
	const char *netbios_name;/* [charset(UTF16),unique] */
	const char *dns_name;/* [charset(UTF16),unique] */
	const char *site_name;/* [charset(UTF16),unique] */
	const char *computer_dn;/* [charset(UTF16),unique] */
	const char *server_dn;/* [charset(UTF16),unique] */
	uint32_t is_pdc;
	uint32_t is_enabled;
};

struct drsuapi_DsGetDCInfoCtr1 {
	uint32_t count;/* [range(0,10000)] */
	struct drsuapi_DsGetDCInfo1 *array;/* [size_is(count),unique] */
};

struct drsuapi_DsGetDCInfo2 {
	const char *netbios_name;/* [charset(UTF16),unique] */
	const char *dns_name;/* [charset(UTF16),unique] */
	const char *site_name;/* [charset(UTF16),unique] */
	const char *site_dn;/* [charset(UTF16),unique] */
	const char *computer_dn;/* [charset(UTF16),unique] */
	const char *server_dn;/* [charset(UTF16),unique] */
	const char *ntds_dn;/* [charset(UTF16),unique] */
	uint32_t is_pdc;
	uint32_t is_enabled;
	uint32_t is_gc;
	struct GUID site_guid;
	struct GUID computer_guid;
	struct GUID server_guid;
	struct GUID ntds_guid;
};

struct drsuapi_DsGetDCInfoCtr2 {
	uint32_t count;/* [range(0,10000)] */
	struct drsuapi_DsGetDCInfo2 *array;/* [size_is(count),unique] */
};

struct drsuapi_DsGetDCInfo3 {
	const char *netbios_name;/* [charset(UTF16),unique] */
	const char *dns_name;/* [charset(UTF16),unique] */
	const char *site_name;/* [charset(UTF16),unique] */
	const char *site_dn;/* [charset(UTF16),unique] */
	const char *computer_dn;/* [charset(UTF16),unique] */
	const char *server_dn;/* [charset(UTF16),unique] */
	const char *ntds_dn;/* [charset(UTF16),unique] */
	uint32_t is_pdc;
	uint32_t is_enabled;
	uint32_t is_gc;
	uint32_t is_rodc;
	struct GUID site_guid;
	struct GUID computer_guid;
	struct GUID server_guid;
	struct GUID ntds_guid;
};

struct drsuapi_DsGetDCInfoCtr3 {
	uint32_t count;/* [range(0,10000)] */
	struct drsuapi_DsGetDCInfo3 *array;/* [size_is(count),unique] */
};

struct drsuapi_DsGetDCConnection01 {
	const char * client_ip_address;/* [flag(LIBNDR_FLAG_BIGENDIAN)] */
	uint32_t unknown2;
	uint32_t connection_time;
	uint32_t unknown4;
	uint32_t unknown5;
	uint32_t unknown6;
	const char *client_account;/* [charset(UTF16),unique] */
};

struct drsuapi_DsGetDCConnectionCtr01 {
	uint32_t count;/* [range(0,10000)] */
	struct drsuapi_DsGetDCConnection01 *array;/* [size_is(count),unique] */
};

union drsuapi_DsGetDCInfoCtr {
	struct drsuapi_DsGetDCInfoCtr1 ctr1;/* [case(DRSUAPI_DC_INFO_CTR_1)] */
	struct drsuapi_DsGetDCInfoCtr2 ctr2;/* [case(DRSUAPI_DC_INFO_CTR_2)] */
	struct drsuapi_DsGetDCInfoCtr3 ctr3;/* [case(DRSUAPI_DC_INFO_CTR_3)] */
	struct drsuapi_DsGetDCConnectionCtr01 ctr01;/* [case(DRSUAPI_DC_CONNECTION_CTR_01)] */
}/* [switch_type(drsuapi_DsGetDCInfoCtrLevels)] */;

struct drsuapi_DsReplicaObjectListItem {
	struct drsuapi_DsReplicaObjectListItem *next_object;/* [max_recursion(20000),unique] */
	struct drsuapi_DsReplicaObject object;
}/* [noprint,public] */;

enum drsuapi_DsAddEntry_DirErr
#ifndef USE_UINT_ENUMS
 {
	DRSUAPI_DIRERR_OK=(int)(0),
	DRSUAPI_DIRERR_ATTRIBUTE=(int)(1),
	DRSUAPI_DIRERR_NAME=(int)(2),
	DRSUAPI_DIRERR_REFERRAL=(int)(3),
	DRSUAPI_DIRERR_SECURITY=(int)(4),
	DRSUAPI_DIRERR_SERVICE=(int)(5),
	DRSUAPI_DIRERR_UPDATE=(int)(6),
	DRSUAPI_DIRERR_SYSTEM=(int)(7)
}
#else
 { __do_not_use_enum_drsuapi_DsAddEntry_DirErr=INT_MAX}
#define DRSUAPI_DIRERR_OK ( 0 )
#define DRSUAPI_DIRERR_ATTRIBUTE ( 1 )
#define DRSUAPI_DIRERR_NAME ( 2 )
#define DRSUAPI_DIRERR_REFERRAL ( 3 )
#define DRSUAPI_DIRERR_SECURITY ( 4 )
#define DRSUAPI_DIRERR_SERVICE ( 5 )
#define DRSUAPI_DIRERR_UPDATE ( 6 )
#define DRSUAPI_DIRERR_SYSTEM ( 7 )
#endif
;

struct drsuapi_DsAddEntryRequest2 {
	struct drsuapi_DsReplicaObjectListItem first_object;
};

enum drsuapi_SecBufferType
#ifndef USE_UINT_ENUMS
 {
	DRSUAPI_SECBUFFER_EMPTY=(int)(0x00000000),
	DRSUAPI_SECBUFFER_DATA=(int)(0x00000001),
	DRSUAPI_SECBUFFER_TOKEN=(int)(0x00000002),
	DRSUAPI_SECBUFFER_PKG_PARAMS=(int)(0x00000003),
	DRSUAPI_SECBUFFER_MISSING=(int)(0x00000004),
	DRSUAPI_SECBUFFER_EXTRA=(int)(0x00000005),
	DRSUAPI_SECBUFFER_STREAM_TRAILER=(int)(0x00000006),
	DRSUAPI_SECBUFFER_STREAM_HEADER=(int)(0x00000007),
	DRSUAPI_SECBUFFER_READONLY=(int)(0x80000000)
}
#else
 { __do_not_use_enum_drsuapi_SecBufferType=INT_MAX}
#define DRSUAPI_SECBUFFER_EMPTY ( 0x00000000 )
#define DRSUAPI_SECBUFFER_DATA ( 0x00000001 )
#define DRSUAPI_SECBUFFER_TOKEN ( 0x00000002 )
#define DRSUAPI_SECBUFFER_PKG_PARAMS ( 0x00000003 )
#define DRSUAPI_SECBUFFER_MISSING ( 0x00000004 )
#define DRSUAPI_SECBUFFER_EXTRA ( 0x00000005 )
#define DRSUAPI_SECBUFFER_STREAM_TRAILER ( 0x00000006 )
#define DRSUAPI_SECBUFFER_STREAM_HEADER ( 0x00000007 )
#define DRSUAPI_SECBUFFER_READONLY ( 0x80000000 )
#endif
;

struct drsuapi_SecBuffer {
	uint32_t buf_size;/* [range(0,10000)] */
	enum drsuapi_SecBufferType buf_type;
	uint8_t *buffer;/* [size_is(buf_size),unique] */
};

struct drsuapi_SecBufferDesc {
	uint32_t version;/* [value(0)] */
	uint32_t buff_count;/* [range(0,10000)] */
	struct drsuapi_SecBuffer *buffers;/* [size_is(buff_count),unique] */
};

struct drsuapi_DsAddEntryRequest3 {
	struct drsuapi_DsReplicaObjectListItem first_object;
	struct drsuapi_SecBufferDesc *client_creds;/* [unique] */
};

union drsuapi_DsAddEntryRequest {
	struct drsuapi_DsAddEntryRequest2 req2;/* [case(2)] */
	struct drsuapi_DsAddEntryRequest3 req3;/* [case(3)] */
}/* [switch_type(uint32)] */;

struct drsuapi_DsAddEntryErrorInfoX {
	uint32_t dsid;
	WERROR extended_err;
	uint32_t extended_data;
	uint16_t problem;
};

struct drsuapi_DsAddEntry_AttrErr_V1 {
	uint32_t dsid;
	WERROR extended_err;
	uint32_t extended_data;
	uint16_t problem;
	enum drsuapi_DsAttributeId attid;
	uint32_t is_val_returned;
	struct drsuapi_DsAttributeValue attr_val;
};

struct drsuapi_DsAddEntry_AttrErrListItem_V1 {
	struct drsuapi_DsAddEntry_AttrErrListItem_V1 *next;/* [max_recursion(20000),unique] */
	struct drsuapi_DsAddEntry_AttrErr_V1 err_data;
}/* [noprint] */;

struct drsuapi_DsAddEntryErrorInfo_Attr_V1 {
	struct drsuapi_DsReplicaObjectIdentifier *id;/* [unique] */
	uint32_t count;
	struct drsuapi_DsAddEntry_AttrErrListItem_V1 first;
};

struct drsuapi_DsAddEntryErrorInfo_Name_V1 {
	uint32_t dsid;
	WERROR extended_err;
	uint32_t extended_data;
	uint16_t problem;
	struct drsuapi_DsReplicaObjectIdentifier *id_matched;/* [unique] */
};

struct drsuapi_NameResOp_V1 {
	uint8_t name_res;/* [value(83)] */
	uint8_t unused_pad;/* [value(0)] */
	uint16_t next_rdn;/* [value(0)] */
};

enum drsuapi_DsAddEntry_RefType
#ifndef USE_UINT_ENUMS
 {
	DRSUAPI_CH_REFTYPE_SUPERIOR=(int)(0x0000),
	DRSUAPI_CH_REFTYPE_SUBORDINATE=(int)(0x0001),
	DRSUAPI_CH_REFTYPE_NSSR=(int)(0x0002),
	DRSUAPI_CH_REFTYPE_CROSS=(int)(0x0003)
}
#else
 { __do_not_use_enum_drsuapi_DsAddEntry_RefType=INT_MAX}
#define DRSUAPI_CH_REFTYPE_SUPERIOR ( 0x0000 )
#define DRSUAPI_CH_REFTYPE_SUBORDINATE ( 0x0001 )
#define DRSUAPI_CH_REFTYPE_NSSR ( 0x0002 )
#define DRSUAPI_CH_REFTYPE_CROSS ( 0x0003 )
#endif
;

enum drsuapi_DsAddEntry_ChoiceType
#ifndef USE_UINT_ENUMS
 {
	DRSUAPI_SE_CHOICE_BASE_ONLY=(int)(0x00),
	DRSUAPI_SE_CHOICE_IMMED_CHLDRN=(int)(0x01),
	DRSUAPI_SE_CHOICE_WHOLE_SUBTREE=(int)(0x02)
}
#else
 { __do_not_use_enum_drsuapi_DsAddEntry_ChoiceType=INT_MAX}
#define DRSUAPI_SE_CHOICE_BASE_ONLY ( 0x00 )
#define DRSUAPI_SE_CHOICE_IMMED_CHLDRN ( 0x01 )
#define DRSUAPI_SE_CHOICE_WHOLE_SUBTREE ( 0x02 )
#endif
;

struct drsuapi_DsaAddressListItem_V1 {
	struct drsuapi_DsaAddressListItem_V1 *next;/* [max_recursion(1024),unique] */
	struct lsa_String *address;/* [unique] */
};

struct drsuapi_DsAddEntry_RefErrListItem_V1 {
	struct drsuapi_DsReplicaObjectIdentifier *id_target;/* [unique] */
	struct drsuapi_NameResOp_V1 op_state;
	uint16_t rdn_alias;/* [value(0)] */
	uint16_t rdn_internal;/* [value(0)] */
	enum drsuapi_DsAddEntry_RefType ref_type;
	uint16_t addr_list_count;
	struct drsuapi_DsaAddressListItem_V1 *addr_list;/* [unique] */
	struct drsuapi_DsAddEntry_RefErrListItem_V1 *next;/* [max_recursion(20000),unique] */
	uint32_t is_choice_set;
	enum drsuapi_DsAddEntry_ChoiceType choice;
};

struct drsuapi_DsAddEntryErrorInfo_Referr_V1 {
	uint32_t dsid;
	WERROR extended_err;
	uint32_t extended_data;
	struct drsuapi_DsAddEntry_RefErrListItem_V1 refer;
};

union drsuapi_DsAddEntryErrorInfo {
	struct drsuapi_DsAddEntryErrorInfo_Attr_V1 attr_err;/* [case] */
	struct drsuapi_DsAddEntryErrorInfo_Name_V1 name_err;/* [case(2)] */
	struct drsuapi_DsAddEntryErrorInfo_Referr_V1 referral_err;/* [case(3)] */
	struct drsuapi_DsAddEntryErrorInfoX security_err;/* [case(4)] */
	struct drsuapi_DsAddEntryErrorInfoX service_err;/* [case(5)] */
	struct drsuapi_DsAddEntryErrorInfoX update_err;/* [case(6)] */
	struct drsuapi_DsAddEntryErrorInfoX system_err;/* [case(7)] */
}/* [switch_type(uint32)] */;

struct drsuapi_DsAddEntry_ErrData_V1 {
	WERROR status;
	enum drsuapi_DsAddEntry_DirErr dir_err;
	union drsuapi_DsAddEntryErrorInfo *info;/* [switch_is(dir_err),unique] */
};

union drsuapi_DsAddEntry_ErrData {
	struct drsuapi_DsAddEntry_ErrData_V1 v1;/* [case] */
}/* [switch_type(uint32)] */;

struct drsuapi_DsReplicaObjectIdentifier2 {
	struct GUID guid;
	struct dom_sid28 sid;
};

struct drsuapi_DsAddEntryCtr2 {
	struct drsuapi_DsReplicaObjectIdentifier *id;/* [unique] */
	enum drsuapi_DsAddEntry_DirErr dir_err;
	uint32_t dsid;
	WERROR extended_err;
	uint32_t extended_data;
	uint16_t problem;
	uint32_t count;/* [range(0,10000)] */
	struct drsuapi_DsReplicaObjectIdentifier2 *objects;/* [size_is(count),unique] */
};

struct drsuapi_DsAddEntryCtr3 {
	struct drsuapi_DsReplicaObjectIdentifier *id;/* [unique] */
	uint32_t err_ver;
	union drsuapi_DsAddEntry_ErrData *err_data;/* [switch_is(err_ver),unique] */
	uint32_t count;/* [range(0,10000)] */
	struct drsuapi_DsReplicaObjectIdentifier2 *objects;/* [size_is(count),unique] */
};

union drsuapi_DsAddEntryCtr {
	struct drsuapi_DsAddEntryCtr2 ctr2;/* [case(2)] */
	struct drsuapi_DsAddEntryCtr3 ctr3;/* [case(3)] */
}/* [switch_type(uint32)] */;

/* bitmap drsuapi_DsExecuteKCCFlags */
#define DRSUAPI_DS_EXECUTE_KCC_ASYNCHRONOUS_OPERATION ( 0x00000001 )
#define DRSUAPI_DS_EXECUTE_KCC_DAMPED ( 0x00000002 )

struct drsuapi_DsExecuteKCC1 {
	uint32_t taskID;
	uint32_t flags;
};

union drsuapi_DsExecuteKCCRequest {
	struct drsuapi_DsExecuteKCC1 ctr1;/* [case] */
}/* [switch_type(uint32)] */;

enum drsuapi_DsReplicaGetInfoLevel
#ifndef USE_UINT_ENUMS
 {
	DRSUAPI_DS_REPLICA_GET_INFO=(int)(1),
	DRSUAPI_DS_REPLICA_GET_INFO2=(int)(2)
}
#else
 { __do_not_use_enum_drsuapi_DsReplicaGetInfoLevel=INT_MAX}
#define DRSUAPI_DS_REPLICA_GET_INFO ( 1 )
#define DRSUAPI_DS_REPLICA_GET_INFO2 ( 2 )
#endif
;

enum drsuapi_DsReplicaInfoType
#ifndef USE_UINT_ENUMS
 {
	DRSUAPI_DS_REPLICA_INFO_NEIGHBORS=(int)(0),
	DRSUAPI_DS_REPLICA_INFO_CURSORS=(int)(1),
	DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA=(int)(2),
	DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES=(int)(3),
	DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES=(int)(4),
	DRSUAPI_DS_REPLICA_INFO_PENDING_OPS=(int)(5),
	DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA=(int)(6),
	DRSUAPI_DS_REPLICA_INFO_CURSORS2=(int)(7),
	DRSUAPI_DS_REPLICA_INFO_CURSORS3=(int)(8),
	DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2=(int)(9),
	DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2=(int)(10),
	DRSUAPI_DS_REPLICA_INFO_REPSTO=(int)(-2),
	DRSUAPI_DS_REPLICA_INFO_CLIENT_CONTEXTS=(int)(-4),
	DRSUAPI_DS_REPLICA_INFO_UPTODATE_VECTOR_V1=(int)(-5),
	DRSUAPI_DS_REPLICA_INFO_SERVER_OUTGOING_CALLS=(int)(-6)
}
#else
 { __do_not_use_enum_drsuapi_DsReplicaInfoType=INT_MAX}
#define DRSUAPI_DS_REPLICA_INFO_NEIGHBORS ( 0 )
#define DRSUAPI_DS_REPLICA_INFO_CURSORS ( 1 )
#define DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA ( 2 )
#define DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES ( 3 )
#define DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES ( 4 )
#define DRSUAPI_DS_REPLICA_INFO_PENDING_OPS ( 5 )
#define DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA ( 6 )
#define DRSUAPI_DS_REPLICA_INFO_CURSORS2 ( 7 )
#define DRSUAPI_DS_REPLICA_INFO_CURSORS3 ( 8 )
#define DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2 ( 9 )
#define DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2 ( 10 )
#define DRSUAPI_DS_REPLICA_INFO_REPSTO ( -2 )
#define DRSUAPI_DS_REPLICA_INFO_CLIENT_CONTEXTS ( -4 )
#define DRSUAPI_DS_REPLICA_INFO_UPTODATE_VECTOR_V1 ( -5 )
#define DRSUAPI_DS_REPLICA_INFO_SERVER_OUTGOING_CALLS ( -6 )
#endif
;

struct drsuapi_DsReplicaGetInfoRequest1 {
	enum drsuapi_DsReplicaInfoType info_type;
	const char *object_dn;/* [charset(UTF16),unique] */
	struct GUID source_dsa_guid;
};

struct drsuapi_DsReplicaGetInfoRequest2 {
	enum drsuapi_DsReplicaInfoType info_type;
	const char *object_dn;/* [charset(UTF16),unique] */
	struct GUID source_dsa_guid;
	uint32_t flags;
	const char *attribute_name;/* [charset(UTF16),unique] */
	const char *value_dn_str;/* [charset(UTF16),unique] */
	uint32_t enumeration_context;
};

union drsuapi_DsReplicaGetInfoRequest {
	struct drsuapi_DsReplicaGetInfoRequest1 req1;/* [case(DRSUAPI_DS_REPLICA_GET_INFO)] */
	struct drsuapi_DsReplicaGetInfoRequest2 req2;/* [case(DRSUAPI_DS_REPLICA_GET_INFO2)] */
}/* [switch_type(drsuapi_DsReplicaGetInfoLevel)] */;

struct drsuapi_DsReplicaNeighbour {
	const char *naming_context_dn;/* [charset(UTF16),unique] */
	const char *source_dsa_obj_dn;/* [charset(UTF16),unique] */
	const char *source_dsa_address;/* [charset(UTF16),unique] */
	const char *transport_obj_dn;/* [charset(UTF16),unique] */
	uint32_t replica_flags;
	uint32_t reserved;
	struct GUID naming_context_obj_guid;
	struct GUID source_dsa_obj_guid;
	struct GUID source_dsa_invocation_id;
	struct GUID transport_obj_guid;
	uint64_t tmp_highest_usn;
	uint64_t highest_usn;
	NTTIME last_success;
	NTTIME last_attempt;
	WERROR result_last_attempt;
	uint32_t consecutive_sync_failures;
};

struct drsuapi_DsReplicaNeighbourCtr {
	uint32_t count;
	uint32_t reserved;
	struct drsuapi_DsReplicaNeighbour *array;/* [size_is(count)] */
};

struct drsuapi_DsReplicaCursorCtr {
	uint32_t count;
	uint32_t reserved;
	struct drsuapi_DsReplicaCursor *array;/* [size_is(count)] */
};

struct drsuapi_DsReplicaObjMetaData {
	const char *attribute_name;/* [charset(UTF16),unique] */
	uint32_t version;
	NTTIME originating_change_time;
	struct GUID originating_invocation_id;
	uint64_t originating_usn;
	uint64_t local_usn;
};

struct drsuapi_DsReplicaObjMetaDataCtr {
	uint32_t count;
	uint32_t reserved;
	struct drsuapi_DsReplicaObjMetaData *array;/* [size_is(count)] */
};

struct drsuapi_DsReplicaKccDsaFailure {
	const char *dsa_obj_dn;/* [charset(UTF16),unique] */
	struct GUID dsa_obj_guid;
	NTTIME first_failure;
	uint32_t num_failures;
	WERROR last_result;
};

struct drsuapi_DsReplicaKccDsaFailuresCtr {
	uint32_t count;
	uint32_t reserved;
	struct drsuapi_DsReplicaKccDsaFailure *array;/* [size_is(count)] */
};

enum drsuapi_DsReplicaOpType
#ifndef USE_UINT_ENUMS
 {
	DRSUAPI_DS_REPLICA_OP_TYPE_SYNC=(int)(0),
	DRSUAPI_DS_REPLICA_OP_TYPE_ADD=(int)(1),
	DRSUAPI_DS_REPLICA_OP_TYPE_DELETE=(int)(2),
	DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY=(int)(3),
	DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS=(int)(4)
}
#else
 { __do_not_use_enum_drsuapi_DsReplicaOpType=INT_MAX}
#define DRSUAPI_DS_REPLICA_OP_TYPE_SYNC ( 0 )
#define DRSUAPI_DS_REPLICA_OP_TYPE_ADD ( 1 )
#define DRSUAPI_DS_REPLICA_OP_TYPE_DELETE ( 2 )
#define DRSUAPI_DS_REPLICA_OP_TYPE_MODIFY ( 3 )
#define DRSUAPI_DS_REPLICA_OP_TYPE_UPDATE_REFS ( 4 )
#endif
;

struct drsuapi_DsReplicaOp {
	NTTIME operation_start;
	uint32_t serial_num;
	uint32_t priority;
	enum drsuapi_DsReplicaOpType operation_type;
	uint32_t options;
	const char *nc_dn;/* [charset(UTF16),unique] */
	const char *remote_dsa_obj_dn;/* [charset(UTF16),unique] */
	const char *remote_dsa_address;/* [charset(UTF16),unique] */
	struct GUID nc_obj_guid;
	struct GUID remote_dsa_obj_guid;
};

struct drsuapi_DsReplicaOpCtr {
	NTTIME time;
	uint32_t count;
	struct drsuapi_DsReplicaOp *array;/* [size_is(count)] */
};

struct drsuapi_DsReplicaAttrValMetaData {
	const char *attribute_name;/* [charset(UTF16),unique] */
	const char *object_dn;/* [charset(UTF16),unique] */
	uint32_t __ndr_size_binary;/* [value(ndr_size_DATA_BLOB(0,binary,0))] */
	DATA_BLOB *binary;/* [unique] */
	NTTIME deleted;
	NTTIME created;
	uint32_t version;
	NTTIME originating_change_time;
	struct GUID originating_invocation_id;
	uint64_t originating_usn;
	uint64_t local_usn;
};

struct drsuapi_DsReplicaAttrValMetaDataCtr {
	uint32_t count;
	uint32_t enumeration_context;
	struct drsuapi_DsReplicaAttrValMetaData *array;/* [size_is(count)] */
};

struct drsuapi_DsReplicaCursor2Ctr {
	uint32_t count;
	uint32_t enumeration_context;
	struct drsuapi_DsReplicaCursor2 *array;/* [size_is(count)] */
};

struct drsuapi_DsReplicaCursor3 {
	struct GUID source_dsa_invocation_id;
	uint64_t highest_usn;
	NTTIME last_sync_success;
	const char *source_dsa_obj_dn;/* [charset(UTF16),unique] */
};

struct drsuapi_DsReplicaCursor3Ctr {
	uint32_t count;
	uint32_t enumeration_context;
	struct drsuapi_DsReplicaCursor3 *array;/* [size_is(count)] */
};

struct drsuapi_DsReplicaObjMetaData2 {
	const char *attribute_name;/* [charset(UTF16),unique] */
	uint32_t version;
	NTTIME originating_change_time;
	struct GUID originating_invocation_id;
	uint64_t originating_usn;
	uint64_t local_usn;
	const char *originating_dsa_dn;/* [charset(UTF16),unique] */
};

struct drsuapi_DsReplicaObjMetaData2Ctr {
	uint32_t count;
	uint32_t enumeration_context;
	struct drsuapi_DsReplicaObjMetaData2 *array;/* [size_is(count)] */
};

struct drsuapi_DsReplicaAttrValMetaData2 {
	const char *attribute_name;/* [charset(UTF16),unique] */
	const char *object_dn;/* [charset(UTF16),unique] */
	uint32_t __ndr_size_binary;/* [value(ndr_size_DATA_BLOB(0,binary,0))] */
	DATA_BLOB *binary;/* [unique] */
	NTTIME deleted;
	NTTIME created;
	uint32_t version;
	NTTIME originating_change_time;
	struct GUID originating_invocation_id;
	uint64_t originating_usn;
	uint64_t local_usn;
	const char *originating_dsa_dn;/* [charset(UTF16),unique] */
};

struct drsuapi_DsReplicaAttrValMetaData2Ctr {
	uint32_t count;
	uint32_t enumeration_context;
	struct drsuapi_DsReplicaAttrValMetaData2 *array;/* [size_is(count)] */
};

struct drsuapi_DsReplicaConnection04 {
	uint64_t u1;
	uint32_t u2;
	uint32_t u3;
	struct GUID bind_guid;
	NTTIME bind_time;
	const char * client_ip_address;/* [flag(LIBNDR_FLAG_BIGENDIAN)] */
	uint32_t u5;
};

struct drsuapi_DsReplicaConnection04Ctr {
	uint32_t count;/* [range(0,10000)] */
	uint32_t reserved;
	struct drsuapi_DsReplicaConnection04 *array;/* [size_is(count)] */
};

struct drsuapi_DsReplica06 {
	const char *str1;/* [charset(UTF16),unique] */
	uint32_t u1;
	uint32_t u2;
	uint32_t u3;
	uint32_t u4;
	uint32_t u5;
	uint64_t u6;
	uint32_t u7;
};

struct drsuapi_DsReplica06Ctr {
	uint32_t count;/* [range(0,256)] */
	uint32_t reserved;
	struct drsuapi_DsReplica06 *array;/* [size_is(count)] */
};

union drsuapi_DsReplicaInfo {
	struct drsuapi_DsReplicaNeighbourCtr *neighbours;/* [case(DRSUAPI_DS_REPLICA_INFO_NEIGHBORS),unique] */
	struct drsuapi_DsReplicaCursorCtr *cursors;/* [case(DRSUAPI_DS_REPLICA_INFO_CURSORS),unique] */
	struct drsuapi_DsReplicaObjMetaDataCtr *objmetadata;/* [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA),unique] */
	struct drsuapi_DsReplicaKccDsaFailuresCtr *connectfailures;/* [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_CONNECT_FAILURES),unique] */
	struct drsuapi_DsReplicaKccDsaFailuresCtr *linkfailures;/* [case(DRSUAPI_DS_REPLICA_INFO_KCC_DSA_LINK_FAILURES),unique] */
	struct drsuapi_DsReplicaOpCtr *pendingops;/* [case(DRSUAPI_DS_REPLICA_INFO_PENDING_OPS),unique] */
	struct drsuapi_DsReplicaAttrValMetaDataCtr *attrvalmetadata;/* [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA),unique] */
	struct drsuapi_DsReplicaCursor2Ctr *cursors2;/* [case(DRSUAPI_DS_REPLICA_INFO_CURSORS2),unique] */
	struct drsuapi_DsReplicaCursor3Ctr *cursors3;/* [case(DRSUAPI_DS_REPLICA_INFO_CURSORS3),unique] */
	struct drsuapi_DsReplicaObjMetaData2Ctr *objmetadata2;/* [case(DRSUAPI_DS_REPLICA_INFO_OBJ_METADATA2),unique] */
	struct drsuapi_DsReplicaAttrValMetaData2Ctr *attrvalmetadata2;/* [case(DRSUAPI_DS_REPLICA_INFO_ATTRIBUTE_VALUE_METADATA2),unique] */
	struct drsuapi_DsReplicaNeighbourCtr *repsto;/* [case(DRSUAPI_DS_REPLICA_INFO_REPSTO),unique] */
	struct drsuapi_DsReplicaConnection04Ctr *clientctx;/* [case(DRSUAPI_DS_REPLICA_INFO_CLIENT_CONTEXTS),unique] */
	struct drsuapi_DsReplicaCursorCtrEx *udv1;/* [case(DRSUAPI_DS_REPLICA_INFO_UPTODATE_VECTOR_V1),unique] */
	struct drsuapi_DsReplica06Ctr *srvoutgoingcalls;/* [case(DRSUAPI_DS_REPLICA_INFO_SERVER_OUTGOING_CALLS),unique] */
}/* [switch_type(drsuapi_DsReplicaInfoType)] */;

struct drsuapi_DsGetMemberships2Ctr1 {
	uint32_t num_entries;/* [range(0,10000)] */
	struct drsuapi_DsGetMembershipsCtr1 **ctrl_array;/* [size_is(num_entries),unique] */
};

union drsuapi_DsGetMemberships2Ctr {
	struct drsuapi_DsGetMembershipsCtr1 ctr1;/* [case] */
}/* [switch_type(uint32)] */;

struct drsuapi_DsGetMemberships2Request1 {
	uint32_t num_req;/* [range(1,10000)] */
	struct drsuapi_DsGetMembershipsRequest1 **req_array;/* [size_is(num_req),unique] */
};

union drsuapi_DsGetMemberships2Request {
	struct drsuapi_DsGetMemberships2Request1 req1;/* [case] */
}/* [switch_type(uint32)] */;

struct drsuapi_DsSiteCostInfo {
	WERROR error_code;
	uint32_t site_cost;
};

struct drsuapi_QuerySitesByCostCtr1 {
	uint32_t num_info;/* [range(0,10000)] */
	struct drsuapi_DsSiteCostInfo *info;/* [size_is(num_info),unique] */
	uint32_t flags_reserved;/* [value(0)] */
};

union drsuapi_QuerySitesByCostCtr {
	struct drsuapi_QuerySitesByCostCtr1 ctr1;/* [case] */
}/* [switch_type(uint32)] */;

struct drsuapi_QuerySitesByCostRequest1 {
	const char *site_from;/* [charset(UTF16),unique] */
	uint32_t num_req;/* [range(1,10000)] */
	const char **site_to;/* [charset(UTF16),size_is(num_req),unique] */
	uint32_t flags;
};

union drsuapi_QuerySitesByCostRequest {
	struct drsuapi_QuerySitesByCostRequest1 req1;/* [case] */
}/* [switch_type(uint32)] */;


struct drsuapi_DsBind {
	struct {
		struct GUID *bind_guid;/* [unique] */
		struct drsuapi_DsBindInfoCtr *bind_info;/* [unique] */
	} in;

	struct {
		struct policy_handle *bind_handle;/* [ref] */
		struct drsuapi_DsBindInfoCtr *bind_info;/* [unique] */
		WERROR result;
	} out;

};


struct drsuapi_DsUnbind {
	struct {
		struct policy_handle *bind_handle;/* [ref] */
	} in;

	struct {
		struct policy_handle *bind_handle;/* [ref] */
		WERROR result;
	} out;

};


struct drsuapi_DsReplicaSync {
	struct {
		struct policy_handle *bind_handle;/* [ref] */
		uint32_t level;
		union drsuapi_DsReplicaSyncRequest *req;/* [ref,switch_is(level)] */
	} in;

	struct {
		WERROR result;
	} out;

};


struct drsuapi_DsGetNCChanges {
	struct {
		struct policy_handle *bind_handle;/* [ref] */
		uint32_t level;
		union drsuapi_DsGetNCChangesRequest *req;/* [ref,switch_is(level)] */
	} in;

	struct {
		uint32_t *level_out;/* [ref] */
		union drsuapi_DsGetNCChangesCtr *ctr;/* [ref,switch_is(*level_out)] */
		WERROR result;
	} out;

};


struct drsuapi_DsReplicaUpdateRefs {
	struct {
		struct policy_handle *bind_handle;/* [ref] */
		uint32_t level;
		union drsuapi_DsReplicaUpdateRefsRequest req;/* [switch_is(level)] */
	} in;

	struct {
		WERROR result;
	} out;

};


struct drsuapi_DsReplicaAdd {
	struct {
		struct policy_handle *bind_handle;/* [ref] */
		uint32_t level;
		union drsuapi_DsReplicaAddRequest req;/* [switch_is(level)] */
	} in;

	struct {
		WERROR result;
	} out;

};


struct drsuapi_DsReplicaDel {
	struct {
		struct policy_handle *bind_handle;/* [ref] */
		uint32_t level;
		union drsuapi_DsReplicaDelRequest req;/* [switch_is(level)] */
	} in;

	struct {
		WERROR result;
	} out;

};


struct drsuapi_DsReplicaMod {
	struct {
		struct policy_handle *bind_handle;/* [ref] */
		uint32_t level;
		union drsuapi_DsReplicaModRequest req;/* [switch_is(level)] */
	} in;

	struct {
		WERROR result;
	} out;

};


struct DRSUAPI_VERIFY_NAMES {
	struct {
		WERROR result;
	} out;

};


struct drsuapi_DsGetMemberships {
	struct {
		struct policy_handle *bind_handle;/* [ref] */
		uint32_t level;
		union drsuapi_DsGetMembershipsRequest *req;/* [ref,switch_is(level)] */
	} in;

	struct {
		uint32_t *level_out;/* [ref] */
		union drsuapi_DsGetMembershipsCtr *ctr;/* [ref,switch_is(*level_out)] */
		WERROR result;
	} out;

};


struct DRSUAPI_INTER_DOMAIN_MOVE {
	struct {
		WERROR result;
	} out;

};


struct drsuapi_DsGetNT4ChangeLog {
	struct {
		struct policy_handle *bind_handle;/* [ref] */
		uint32_t level;
		union drsuapi_DsGetNT4ChangeLogRequest *req;/* [ref,switch_is(level)] */
	} in;

	struct {
		uint32_t *level_out;/* [ref] */
		union drsuapi_DsGetNT4ChangeLogInfo *info;/* [ref,switch_is(*level_out)] */
		WERROR result;
	} out;

};


struct drsuapi_DsCrackNames {
	struct {
		struct policy_handle *bind_handle;/* [ref] */
		uint32_t level;
		union drsuapi_DsNameRequest *req;/* [ref,switch_is(level)] */
	} in;

	struct {
		uint32_t *level_out;/* [ref] */
		union drsuapi_DsNameCtr *ctr;/* [ref,switch_is(*level_out)] */
		WERROR result;
	} out;

};


struct drsuapi_DsWriteAccountSpn {
	struct {
		struct policy_handle *bind_handle;/* [ref] */
		uint32_t level;
		union drsuapi_DsWriteAccountSpnRequest *req;/* [ref,switch_is(level)] */
	} in;

	struct {
		uint32_t *level_out;/* [ref] */
		union drsuapi_DsWriteAccountSpnResult *res;/* [ref,switch_is(*level_out)] */
		WERROR result;
	} out;

};


struct drsuapi_DsRemoveDSServer {
	struct {
		struct policy_handle *bind_handle;/* [ref] */
		uint32_t level;
		union drsuapi_DsRemoveDSServerRequest *req;/* [ref,switch_is(level)] */
	} in;

	struct {
		uint32_t *level_out;/* [ref] */
		union drsuapi_DsRemoveDSServerResult *res;/* [ref,switch_is(*level_out)] */
		WERROR result;
	} out;

};


struct DRSUAPI_REMOVE_DS_DOMAIN {
	struct {
		WERROR result;
	} out;

};


struct drsuapi_DsGetDomainControllerInfo {
	struct {
		struct policy_handle *bind_handle;/* [ref] */
		uint32_t level;
		union drsuapi_DsGetDCInfoRequest *req;/* [ref,switch_is(level)] */
	} in;

	struct {
		enum drsuapi_DsGetDCInfoCtrLevels *level_out;/* [ref] */
		union drsuapi_DsGetDCInfoCtr *ctr;/* [ref,switch_is(*level_out)] */
		WERROR result;
	} out;

};


struct drsuapi_DsAddEntry {
	struct {
		struct policy_handle *bind_handle;/* [ref] */
		uint32_t level;
		union drsuapi_DsAddEntryRequest *req;/* [ref,switch_is(level)] */
	} in;

	struct {
		uint32_t *level_out;/* [ref] */
		union drsuapi_DsAddEntryCtr *ctr;/* [ref,switch_is(*level_out)] */
		WERROR result;
	} out;

};


struct drsuapi_DsExecuteKCC {
	struct {
		struct policy_handle *bind_handle;/* [ref] */
		uint32_t level;
		union drsuapi_DsExecuteKCCRequest *req;/* [ref,switch_is(level)] */
	} in;

	struct {
		WERROR result;
	} out;

};


struct drsuapi_DsReplicaGetInfo {
	struct {
		struct policy_handle *bind_handle;/* [ref] */
		enum drsuapi_DsReplicaGetInfoLevel level;
		union drsuapi_DsReplicaGetInfoRequest *req;/* [ref,switch_is(level)] */
	} in;

	struct {
		enum drsuapi_DsReplicaInfoType *info_type;/* [ref] */
		union drsuapi_DsReplicaInfo *info;/* [ref,switch_is(*info_type)] */
		WERROR result;
	} out;

};


struct DRSUAPI_ADD_SID_HISTORY {
	struct {
		WERROR result;
	} out;

};


struct drsuapi_DsGetMemberships2 {
	struct {
		struct policy_handle *bind_handle;/* [ref] */
		uint32_t level;
		union drsuapi_DsGetMemberships2Request *req;/* [ref,switch_is(level)] */
	} in;

	struct {
		uint32_t *level_out;/* [ref] */
		union drsuapi_DsGetMemberships2Ctr *ctr;/* [ref,switch_is(*level_out)] */
		WERROR result;
	} out;

};


struct DRSUAPI_REPLICA_VERIFY_OBJECTS {
	struct {
		WERROR result;
	} out;

};


struct DRSUAPI_GET_OBJECT_EXISTENCE {
	struct {
		WERROR result;
	} out;

};


struct drsuapi_QuerySitesByCost {
	struct {
		struct policy_handle *bind_handle;/* [ref] */
		uint32_t level;
		union drsuapi_QuerySitesByCostRequest *req;/* [ref,switch_is(level)] */
	} in;

	struct {
		uint32_t *level_out;/* [ref] */
		union drsuapi_QuerySitesByCostCtr *ctr;/* [ref,switch_is(*level_out)] */
		WERROR result;
	} out;

};

#endif /* _HEADER_drsuapi */
#endif /* _PIDL_HEADER_drsuapi */
