/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _DSSETUP_NDL_
#define _DSSETUP_NDL_
/*
* Active Directory Service Setup
*
* Originally this interface contained a number of operations, as listed
* below, but due to a buffer overflow security issue, all operations
* except DsRoleGetPrimaryDomainInfo have been deprecated (MS04-011).
*/
#include "ndrtypes.ndl"
#define DSSETUP_OPNUM_DsRoleGetPrimaryDomainInfo 0x00
#define DSSETUP_OPNUM_DsRoleDnsNameToFlatName 0x01
#define DSSETUP_OPNUM_DsRoleDcAsDc 0x02
#define DSSETUP_OPNUM_DsRoleDcAsReplica 0x03
#define DSSETUP_OPNUM_DsRoleDemoteDc 0x04
#define DSSETUP_OPNUM_DsRoleGetDcOperationProgress 0x05
#define DSSETUP_OPNUM_DsRoleGetDcOperationResults 0x06
#define DSSETUP_OPNUM_DsRoleCancel 0x07
#define DSSETUP_OPNUM_DsRoleServerSaveStateForUpgrade 0x08
#define DSSETUP_OPNUM_DsRoleUpgradeDownlevelServer 0x09
#define DSSETUP_OPNUM_DsRoleAbortDownlevelServerUpgrade 0x0a
/*
* DS roles
*/
#define DS_ROLE_STANDALONE_WORKSTATION 0
#define DS_ROLE_MEMBER_WORKSTATION 1
#define DS_ROLE_STANDALONE_SERVER 2
#define DS_ROLE_MEMBER_SERVER 3
#define DS_ROLE_BACKUP_DC 4
#define DS_ROLE_PRIMARY_DC 5
/*
* DS role flags
*/
#define DS_ROLE_PRIMARY_DS_RUNNING 0x00000001
#define DS_ROLE_PRIMARY_DS_MIXED_MODE 0x00000002
#define DS_ROLE_UPGRADE_IN_PROGRESS 0x00000004
#define DS_ROLE_PRIMARY_DOMAIN_GUID_PRESENT 0x01000000
/*
* DS role upgrade
*/
#define DS_ROLE_NOT_UPGRADING 0
#define DS_ROLE_UPGRADING 1
/*
* DS role previous
*/
#define DS_ROLE_PREVIOUS_UNKNOWN 0
#define DS_ROLE_PREVIOUS_PRIMARY 1
#define DS_ROLE_PREVIOUS_BACKUP 2
/*
* DS role state
*/
#define DS_ROLE_OP_IDLE 0
#define DS_ROLE_OP_ACTIVE 1
#define DS_ROLE_OP_NEEDS_REBOOT 2
/*
* DS role information levels
*/
#define DS_ROLE_BASIC_INFORMATION 1
#define DS_ROLE_UPGRADE_STATUS 2
#define DS_ROLE_OP_STATUS 3
struct dssetup_uuid {
DWORD data1;
WORD data2;
WORD data3;
BYTE data4[8];
};
typedef struct dssetup_uuid dssetup_uuid_t;
/*
* DS_ROLE_BASIC_INFORMATION
*/
struct dssetup_DsRolePrimaryDomInfo1 {
DWORD role;
DWORD flags;
LPTSTR nt_domain;
LPTSTR dns_domain;
LPTSTR forest;
dssetup_uuid_t domain_guid;
};
typedef struct dssetup_DsRolePrimaryDomInfo1 ds_primary_domain_info_t;
/*
* DS_ROLE_UPGRADE_STATUS
*/
struct dssetup_DsRolePrimaryDomInfo2 {
DWORD upgrade_state;
DWORD previous_role;
};
/*
* DS_ROLE_OP_STATUS
*/
struct dssetup_DsRolePrimaryDomInfo3 {
DWORD status;
};
union dssetup_GetPrimaryDomainInfo_ru {
UNION_INFO_ENT(1,dssetup_DsRolePrimaryDomInfo);
UNION_INFO_ENT(2,dssetup_DsRolePrimaryDomInfo);
UNION_INFO_ENT(3,dssetup_DsRolePrimaryDomInfo);
DEFAULT char *nullptr;
};
struct dssetup_GetPrimaryDomainInfo {
WORD switch_value;
SWITCH(switch_value)
union dssetup_GetPrimaryDomainInfo_ru ru;
};
typedef struct dssetup_GetPrimaryDomainInfo dssetup_GetPrimaryDomainInfo_t;
OPERATION(DSSETUP_OPNUM_DsRoleGetPrimaryDomainInfo)
struct dssetup_DsRoleGetPrimaryDomainInfo {
IN WORD level;
OUT struct dssetup_GetPrimaryDomainInfo *info;
OUT DWORD status;
};
typedef struct dssetup_DsRoleGetPrimaryDomainInfo
dssetup_DsRoleGetPrimaryDomainInfo_t;
/*
***********************************************************************
* DSSETUP interface definiton.
***********************************************************************
*/
INTERFACE(0)
union dssetup_interface {
CASE(DSSETUP_OPNUM_DsRoleGetPrimaryDomainInfo)
struct dssetup_DsRoleGetPrimaryDomainInfo GetPrimaryDomainInfo;
};
typedef union dssetup_interface dssetup_interface_t;
EXTERNTYPEINFO(dssetup_interface)
#endif /* _DSSETUP_NDL_ */