Home | History | Annotate | Download | only in ndl
      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_ */
    171