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