1/*
2  dssetup interface definition
3*/
4
5import "misc/misc.idl";
6
7[
8	uuid("3919286a-b10c-11d0-9ba8-00c04fd92ef5"),
9	version(0.0),
10	endpoint("ncacn_np:[\\pipe\\lsarpc]", "ncacn_np:[\\pipe\\lsass]", "ncacn_ip_tcp:", "ncalrpc:"),
11	pointer_default(unique),
12	helpstring("Active Directory Setup")
13] interface dssetup
14{
15	/**********************************************/
16	/* Function 0x00                              */
17
18	typedef enum {
19		DS_ROLE_STANDALONE_WORKSTATION = 0,
20		DS_ROLE_MEMBER_WORKSTATION     = 1,
21		DS_ROLE_STANDALONE_SERVER      = 2,
22		DS_ROLE_MEMBER_SERVER          = 3,
23		DS_ROLE_BACKUP_DC              = 4,
24		DS_ROLE_PRIMARY_DC             = 5
25	} dssetup_DsRole;
26
27	typedef [bitmap32bit] bitmap {
28		DS_ROLE_PRIMARY_DS_RUNNING		= 0x00000001,
29		DS_ROLE_PRIMARY_DS_MIXED_MODE		= 0x00000002,
30		DS_ROLE_UPGRADE_IN_PROGRESS		= 0x00000004,
31		DS_ROLE_PRIMARY_DOMAIN_GUID_PRESENT	= 0x01000000
32	} dssetup_DsRoleFlags;
33
34	typedef struct {
35		dssetup_DsRole		role;
36		dssetup_DsRoleFlags	flags;
37		[charset(UTF16),string] uint16			*domain;
38		[charset(UTF16),string] uint16			*dns_domain;
39		[charset(UTF16),string] uint16			*forest;
40		GUID			domain_guid;
41	} dssetup_DsRolePrimaryDomInfoBasic;
42
43	typedef [v1_enum] enum {
44		DS_ROLE_NOT_UPGRADING = 0,
45		DS_ROLE_UPGRADING     = 1
46	} dssetup_DsUpgrade;
47
48	typedef enum {
49		DS_ROLE_PREVIOUS_UNKNOWN = 0,
50		DS_ROLE_PREVIOUS_PRIMARY = 1,
51		DS_ROLE_PREVIOUS_BACKUP  = 2
52	} dssetup_DsPrevious;
53
54	typedef struct {
55		dssetup_DsUpgrade	upgrading;
56		dssetup_DsPrevious	previous_role;
57	} dssetup_DsRoleUpgradeStatus;
58
59	typedef enum {
60		DS_ROLE_OP_IDLE         = 0,
61		DS_ROLE_OP_ACTIVE       = 1,
62		DS_ROLE_OP_NEEDS_REBOOT = 2
63	} dssetup_DsRoleOp;
64
65	typedef struct {
66		dssetup_DsRoleOp status;
67	} dssetup_DsRoleOpStatus;
68
69	typedef enum {
70		DS_ROLE_BASIC_INFORMATION	= 1,
71		DS_ROLE_UPGRADE_STATUS		= 2,
72		DS_ROLE_OP_STATUS		= 3
73	} dssetup_DsRoleInfoLevel;
74
75	typedef [switch_type(dssetup_DsRoleInfoLevel)] union {
76		[case(DS_ROLE_BASIC_INFORMATION)] dssetup_DsRolePrimaryDomInfoBasic	basic;
77		[case(DS_ROLE_UPGRADE_STATUS)]    dssetup_DsRoleUpgradeStatus    	upgrade;
78		[case(DS_ROLE_OP_STATUS)]         dssetup_DsRoleOpStatus		opstatus;
79	} dssetup_DsRoleInfo;
80
81	WERROR dssetup_DsRoleGetPrimaryDomainInformation(
82		[in] dssetup_DsRoleInfoLevel level,
83		[out,switch_is(level),unique] dssetup_DsRoleInfo *info
84		);
85
86	/*
87	  w2k3 has removed all the calls below from their implementation.
88	  These stubs are left here only as a way of documenting the names
89	  of the calls in case they ever turn up on the wire.
90	*/
91	[todo] WERROR dssetup_DsRoleDnsNameToFlatName();
92	[todo] WERROR dssetup_DsRoleDcAsDc();
93	[todo] WERROR dssetup_DsRoleDcAsReplica();
94	[todo] WERROR dssetup_DsRoleDemoteDc();
95	[todo] WERROR dssetup_DsRoleGetDcOperationProgress();
96	[todo] WERROR dssetup_DsRoleGetDcOperationResults();
97	[todo] WERROR dssetup_DsRoleCancel();
98	[todo] WERROR dssetup_DsRoleServerSaveStateForUpgrade();
99	[todo] WERROR dssetup_DsRoleUpgradeDownlevelServer();
100	[todo] WERROR dssetup_DsRoleAbortDownlevelServerUpgrade();
101}
102