1 /*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
24 */
25
26 #ifndef _DSSETUP_NDL_
27 #define _DSSETUP_NDL_
28
29 /*
30 * Active Directory Service Setup
31 *
32 * Originally this interface contained a number of operations, as listed
33 * below, but due to a buffer overflow security issue, all operations
34 * except DsRoleGetPrimaryDomainInfo have been deprecated (MS04-011).
35 */
36
37 #include "ndrtypes.ndl"
38
39
40 #define DSSETUP_OPNUM_DsRoleGetPrimaryDomainInfo 0x00
41 #define DSSETUP_OPNUM_DsRoleDnsNameToFlatName 0x01
42 #define DSSETUP_OPNUM_DsRoleDcAsDc 0x02
43 #define DSSETUP_OPNUM_DsRoleDcAsReplica 0x03
44 #define DSSETUP_OPNUM_DsRoleDemoteDc 0x04
45 #define DSSETUP_OPNUM_DsRoleGetDcOperationProgress 0x05
46 #define DSSETUP_OPNUM_DsRoleGetDcOperationResults 0x06
47 #define DSSETUP_OPNUM_DsRoleCancel 0x07
48 #define DSSETUP_OPNUM_DsRoleServerSaveStateForUpgrade 0x08
49 #define DSSETUP_OPNUM_DsRoleUpgradeDownlevelServer 0x09
50 #define DSSETUP_OPNUM_DsRoleAbortDownlevelServerUpgrade 0x0a
51
52 /*
53 * DS roles
54 */
55 #define DS_ROLE_STANDALONE_WORKSTATION 0
56 #define DS_ROLE_MEMBER_WORKSTATION 1
57 #define DS_ROLE_STANDALONE_SERVER 2
58 #define DS_ROLE_MEMBER_SERVER 3
59 #define DS_ROLE_BACKUP_DC 4
60 #define DS_ROLE_PRIMARY_DC 5
61
62 /*
63 * DS role flags
64 */
65 #define DS_ROLE_PRIMARY_DS_RUNNING 0x00000001
66 #define DS_ROLE_PRIMARY_DS_MIXED_MODE 0x00000002
67 #define DS_ROLE_UPGRADE_IN_PROGRESS 0x00000004
68 #define DS_ROLE_PRIMARY_DOMAIN_GUID_PRESENT 0x01000000
69
70 /*
71 * DS role upgrade
72 */
73 #define DS_ROLE_NOT_UPGRADING 0
74 #define DS_ROLE_UPGRADING 1
75
76 /*
77 * DS role previous
78 */
79 #define DS_ROLE_PREVIOUS_UNKNOWN 0
80 #define DS_ROLE_PREVIOUS_PRIMARY 1
81 #define DS_ROLE_PREVIOUS_BACKUP 2
82
83 /*
84 * DS role state
85 */
86 #define DS_ROLE_OP_IDLE 0
87 #define DS_ROLE_OP_ACTIVE 1
88 #define DS_ROLE_OP_NEEDS_REBOOT 2
89
90 /*
91 * DS role information levels
92 */
93 #define DS_ROLE_BASIC_INFORMATION 1
94 #define DS_ROLE_UPGRADE_STATUS 2
95 #define DS_ROLE_OP_STATUS 3
96
97 struct dssetup_uuid {
98 DWORD data1;
99 WORD data2;
100 WORD data3;
101 BYTE data4[8];
102 };
103 typedef struct dssetup_uuid dssetup_uuid_t;
104
105 /*
106 * DS_ROLE_BASIC_INFORMATION
107 */
108 struct dssetup_DsRolePrimaryDomInfo1 {
109 DWORD role;
110 DWORD flags;
111 LPTSTR nt_domain;
112 LPTSTR dns_domain;
113 LPTSTR forest;
114 dssetup_uuid_t domain_guid;
115 };
116 typedef struct dssetup_DsRolePrimaryDomInfo1 ds_primary_domain_info_t;
117
118 /*
119 * DS_ROLE_UPGRADE_STATUS
120 */
121 struct dssetup_DsRolePrimaryDomInfo2 {
122 DWORD upgrade_state;
123 DWORD previous_role;
124 };
125
126 /*
127 * DS_ROLE_OP_STATUS
128 */
129 struct dssetup_DsRolePrimaryDomInfo3 {
130 DWORD status;
131 };
132
133 union dssetup_GetPrimaryDomainInfo_ru {
134 UNION_INFO_ENT(1,dssetup_DsRolePrimaryDomInfo);
135 UNION_INFO_ENT(2,dssetup_DsRolePrimaryDomInfo);
136 UNION_INFO_ENT(3,dssetup_DsRolePrimaryDomInfo);
137 DEFAULT char *nullptr;
138 };
139
140 struct dssetup_GetPrimaryDomainInfo {
141 WORD switch_value;
142 SWITCH(switch_value)
143 union dssetup_GetPrimaryDomainInfo_ru ru;
144 };
145 typedef struct dssetup_GetPrimaryDomainInfo dssetup_GetPrimaryDomainInfo_t;
146
147 OPERATION(DSSETUP_OPNUM_DsRoleGetPrimaryDomainInfo)
148 struct dssetup_DsRoleGetPrimaryDomainInfo {
149 IN WORD level;
150 OUT struct dssetup_GetPrimaryDomainInfo *info;
151 OUT DWORD status;
152 };
153 typedef struct dssetup_DsRoleGetPrimaryDomainInfo
154 dssetup_DsRoleGetPrimaryDomainInfo_t;
155
156
157 /*
158 ***********************************************************************
159 * DSSETUP interface definiton.
160 ***********************************************************************
161 */
162 INTERFACE(0)
163 union dssetup_interface {
164 CASE(DSSETUP_OPNUM_DsRoleGetPrimaryDomainInfo)
165 struct dssetup_DsRoleGetPrimaryDomainInfo GetPrimaryDomainInfo;
166 };
167 typedef union dssetup_interface dssetup_interface_t;
168 EXTERNTYPEINFO(dssetup_interface)
169
170 #endif /* _DSSETUP_NDL_ */