xref: /illumos-gate/usr/src/uts/common/smbsrv/ndl/dssetup.ndl (revision e0d8bef656731559f2d1d5dca0077a6a66c6f8b9)
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
97struct dssetup_uuid {
98	DWORD	data1;
99	WORD	data2;
100	WORD	data3;
101	BYTE	data4[8];
102};
103typedef struct dssetup_uuid dssetup_uuid_t;
104
105/*
106 * DS_ROLE_BASIC_INFORMATION
107 */
108struct 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};
116typedef struct dssetup_DsRolePrimaryDomInfo1 ds_primary_domain_info_t;
117
118/*
119 * DS_ROLE_UPGRADE_STATUS
120 */
121struct dssetup_DsRolePrimaryDomInfo2 {
122	DWORD upgrade_state;
123	DWORD previous_role;
124};
125
126/*
127 * DS_ROLE_OP_STATUS
128 */
129struct dssetup_DsRolePrimaryDomInfo3 {
130	DWORD status;
131};
132
133union 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
140struct dssetup_GetPrimaryDomainInfo {
141	WORD switch_value;
142    SWITCH(switch_value)
143	union dssetup_GetPrimaryDomainInfo_ru ru;
144};
145typedef struct dssetup_GetPrimaryDomainInfo dssetup_GetPrimaryDomainInfo_t;
146
147OPERATION(DSSETUP_OPNUM_DsRoleGetPrimaryDomainInfo)
148struct dssetup_DsRoleGetPrimaryDomainInfo {
149	IN	WORD level;
150	OUT	struct dssetup_GetPrimaryDomainInfo *info;
151	OUT	DWORD status;
152};
153typedef struct dssetup_DsRoleGetPrimaryDomainInfo
154    dssetup_DsRoleGetPrimaryDomainInfo_t;
155
156
157/*
158 ***********************************************************************
159 * DSSETUP interface definiton.
160 ***********************************************************************
161 */
162INTERFACE(0)
163union dssetup_interface {
164	CASE(DSSETUP_OPNUM_DsRoleGetPrimaryDomainInfo)
165		struct dssetup_DsRoleGetPrimaryDomainInfo GetPrimaryDomainInfo;
166};
167typedef union dssetup_interface dssetup_interface_t;
168EXTERNTYPEINFO(dssetup_interface)
169
170#endif /* _DSSETUP_NDL_ */
171