1/* 2 Unix SMB/CIFS implementation. 3 SMB parameters and setup 4 Copyright (C) Gerald Carter 2002 5 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program; if not, write to the Free Software 18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 19*/ 20 21#ifndef _RPC_DS_H /* _RPC_LSA_H */ 22#define _RPC_DS_H 23 24/* Opcodes available on PIPE_LSARPC_DS */ 25 26#define DS_GETPRIMDOMINFO 0x00 27#define DS_NOP 0xFF /* no op -- placeholder */ 28 29/* Opcodes available on PIPE_NETLOGON */ 30 31#define DS_ENUM_DOM_TRUSTS 0x28 32 33 34/* macros for RPC's */ 35 36/* DSROLE_PRIMARY_DOMAIN_INFO_BASIC */ 37 38/* flags */ 39 40#define DSROLE_PRIMARY_DS_RUNNING 0x00000001 41#define DSROLE_PRIMARY_DS_MIXED_MODE 0x00000002 42#define DSROLE_UPGRADE_IN_PROGRESS 0x00000004 43#define DSROLE_PRIMARY_DOMAIN_GUID_PRESENT 0x01000000 44 45/* machine role */ 46 47#define DSROLE_DOMAIN_MEMBER_WKS 1 48#define DSROLE_STANDALONE_SRV 2 49#define DSROLE_DOMAIN_MEMBER_SRV 3 50#define DSROLE_BDC 4 51#define DSROLE_PDC 5 52 53/* Settings for the domainFunctionality attribute in the rootDSE */ 54 55#define DS_DOMAIN_FUNCTION_2000 0 56#define DS_DOMAIN_FUCNTION_2003_MIXED 1 57#define DS_DOMAIN_FUNCTION_2003 2 58 59 60 61typedef struct 62{ 63 uint16 machine_role; 64 uint32 flags; 65 uint32 netbios_ptr; 66 uint32 dnsname_ptr; 67 uint32 forestname_ptr; 68 69 struct GUID domain_guid; 70 UNISTR2 netbios_domain; 71 UNISTR2 dns_domain; /* our dns domain */ 72 UNISTR2 forest_domain; /* root domain of the forest to which we belong */ 73} DSROLE_PRIMARY_DOMAIN_INFO_BASIC; 74 75typedef struct 76{ 77 DSROLE_PRIMARY_DOMAIN_INFO_BASIC *basic; 78} DS_DOMINFO_CTR; 79 80/* info levels for ds_getprimdominfo() */ 81 82#define DsRolePrimaryDomainInfoBasic 1 83 84 85/* DS_Q_GETPRIMDOMINFO - DsGetPrimaryDomainInformation() request */ 86typedef struct 87{ 88 uint16 level; 89} DS_Q_GETPRIMDOMINFO; 90 91/* DS_R_GETPRIMDOMINFO - DsGetPrimaryDomainInformation() response */ 92typedef struct 93{ 94 uint32 ptr; 95 96 uint16 level; 97 uint16 unknown0; /* 0x455c -- maybe just alignment? */ 98 99 DS_DOMINFO_CTR info; 100 101 NTSTATUS status; 102} DS_R_GETPRIMDOMINFO; 103 104typedef struct { 105 /* static portion of structure */ 106 uint32 netbios_ptr; 107 uint32 dns_ptr; 108 uint32 flags; 109 uint32 parent_index; 110 uint32 trust_type; 111 uint32 trust_attributes; 112 uint32 sid_ptr; 113 struct GUID guid; 114 115 UNISTR2 netbios_domain; 116 UNISTR2 dns_domain; 117 DOM_SID2 sid; 118 119} DS_DOMAIN_TRUSTS; 120 121struct ds_domain_trust { 122 /* static portion of structure */ 123 uint32 flags; 124 uint32 parent_index; 125 uint32 trust_type; 126 uint32 trust_attributes; 127 struct GUID guid; 128 129 DOM_SID sid; 130 char *netbios_domain; 131 char *dns_domain; 132}; 133 134typedef struct { 135 136 uint32 ptr; 137 uint32 max_count; 138 DS_DOMAIN_TRUSTS *trusts; 139 140} DS_DOMAIN_TRUSTS_CTR; 141 142#define DS_DOMAIN_IN_FOREST 0x0001 /* domains in the forest to which 143 we belong; even different domain trees */ 144#define DS_DOMAIN_DIRECT_OUTBOUND 0x0002 /* trusted domains */ 145#define DS_DOMAIN_TREE_ROOT 0x0004 /* root of our forest; also available in 146 DsRoleGetPrimaryDomainInfo() */ 147#define DS_DOMAIN_PRIMARY 0x0008 /* our domain */ 148#define DS_DOMAIN_NATIVE_MODE 0x0010 /* native mode AD servers */ 149#define DS_DOMAIN_DIRECT_INBOUND 0x0020 /* trusting domains */ 150 151/* DS_Q_ENUM_DOM_TRUSTS - DsEnumerateDomainTrusts() request */ 152typedef struct 153{ 154 uint32 server_ptr; 155 UNISTR2 server; 156 uint32 flags; 157 158} DS_Q_ENUM_DOM_TRUSTS; 159 160/* DS_R_ENUM_DOM_TRUSTS - DsEnumerateDomainTrusts() response */ 161typedef struct 162{ 163 uint32 num_domains; 164 DS_DOMAIN_TRUSTS_CTR domains; 165 166 NTSTATUS status; 167 168} DS_R_ENUM_DOM_TRUSTS; 169 170 171#endif /* _RPC_DS_H */ 172