2002-10-04 19:11:36 +00:00
/*
Unix SMB / CIFS implementation .
SMB parameters and setup
Copyright ( C ) Gerald Carter 2002
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
2007-07-09 19:25:36 +00:00
the Free Software Foundation ; either version 3 of the License , or
2002-10-04 19:11:36 +00:00
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
2007-07-10 00:52:41 +00:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
2002-10-04 19:11:36 +00:00
*/
# ifndef _RPC_DS_H /* _RPC_LSA_H */
# define _RPC_DS_H
/* Opcodes available on PIPE_LSARPC_DS */
# define DS_GETPRIMDOMINFO 0x00
2003-08-14 21:14:28 +00:00
# define DS_NOP 0xFF /* no op -- placeholder */
2002-10-04 19:11:36 +00:00
2003-07-30 17:29:00 +00:00
/* Opcodes available on PIPE_NETLOGON */
# define DS_ENUM_DOM_TRUSTS 0x28
2002-10-04 19:11:36 +00:00
/* macros for RPC's */
2003-08-14 21:14:28 +00:00
/* DSROLE_PRIMARY_DOMAIN_INFO_BASIC */
/* flags */
2002-10-04 19:11:36 +00:00
# define DSROLE_PRIMARY_DS_RUNNING 0x00000001
# define DSROLE_PRIMARY_DS_MIXED_MODE 0x00000002
# define DSROLE_UPGRADE_IN_PROGRESS 0x00000004
# define DSROLE_PRIMARY_DOMAIN_GUID_PRESENT 0x01000000
2003-08-14 21:14:28 +00:00
/* machine role */
2007-04-06 18:52:30 +00:00
# define DSROLE_DOMAIN_MEMBER_WKS 1
2003-08-14 21:14:28 +00:00
# define DSROLE_STANDALONE_SRV 2
# define DSROLE_DOMAIN_MEMBER_SRV 3
# define DSROLE_BDC 4
# define DSROLE_PDC 5
2007-01-03 16:05:00 +00:00
/* Settings for the domainFunctionality attribute in the rootDSE */
2006-07-11 18:45:22 +00:00
# define DS_DOMAIN_FUNCTION_2000 0
# define DS_DOMAIN_FUCNTION_2003_MIXED 1
# define DS_DOMAIN_FUNCTION_2003 2
2002-10-04 19:11:36 +00:00
typedef struct
{
uint16 machine_role ;
2007-04-06 18:52:30 +00:00
uint32 flags ;
2002-10-04 19:11:36 +00:00
uint32 netbios_ptr ;
uint32 dnsname_ptr ;
uint32 forestname_ptr ;
2007-04-06 18:52:30 +00:00
struct GUID domain_guid ;
2002-10-04 19:11:36 +00:00
UNISTR2 netbios_domain ;
2003-07-31 05:43:47 +00:00
UNISTR2 dns_domain ; /* our dns domain */
UNISTR2 forest_domain ; /* root domain of the forest to which we belong */
2002-10-04 19:11:36 +00:00
} DSROLE_PRIMARY_DOMAIN_INFO_BASIC ;
typedef struct
{
DSROLE_PRIMARY_DOMAIN_INFO_BASIC * basic ;
} DS_DOMINFO_CTR ;
/* info levels for ds_getprimdominfo() */
# define DsRolePrimaryDomainInfoBasic 1
/* DS_Q_GETPRIMDOMINFO - DsGetPrimaryDomainInformation() request */
typedef struct
{
uint16 level ;
} DS_Q_GETPRIMDOMINFO ;
/* DS_R_GETPRIMDOMINFO - DsGetPrimaryDomainInformation() response */
typedef struct
{
uint32 ptr ;
uint16 level ;
uint16 unknown0 ; /* 0x455c -- maybe just alignment? */
DS_DOMINFO_CTR info ;
NTSTATUS status ;
} DS_R_GETPRIMDOMINFO ;
2003-07-30 17:29:00 +00:00
typedef struct {
/* static portion of structure */
uint32 netbios_ptr ;
uint32 dns_ptr ;
uint32 flags ;
uint32 parent_index ;
uint32 trust_type ;
uint32 trust_attributes ;
uint32 sid_ptr ;
2006-09-19 00:12:11 +00:00
struct GUID guid ;
2003-07-30 17:29:00 +00:00
UNISTR2 netbios_domain ;
UNISTR2 dns_domain ;
DOM_SID2 sid ;
} DS_DOMAIN_TRUSTS ;
2004-01-05 02:04:37 +00:00
struct ds_domain_trust {
/* static portion of structure */
uint32 flags ;
uint32 parent_index ;
uint32 trust_type ;
uint32 trust_attributes ;
2006-09-19 00:12:11 +00:00
struct GUID guid ;
2004-01-05 02:04:37 +00:00
DOM_SID sid ;
char * netbios_domain ;
char * dns_domain ;
} ;
2003-07-30 17:29:00 +00:00
typedef struct {
uint32 ptr ;
uint32 max_count ;
DS_DOMAIN_TRUSTS * trusts ;
} DS_DOMAIN_TRUSTS_CTR ;
2007-05-06 19:17:30 +00:00
/* Trust flags */
2003-07-31 05:43:47 +00:00
# define DS_DOMAIN_IN_FOREST 0x0001 / * domains in the forest to which
we belong ; even different domain trees */
# define DS_DOMAIN_DIRECT_OUTBOUND 0x0002 /* trusted domains */
2007-05-06 19:17:30 +00:00
# define DS_DOMAIN_TREE_ROOT 0x0004 /* root of a forest */
2003-07-31 05:43:47 +00:00
# define DS_DOMAIN_PRIMARY 0x0008 /* our domain */
# define DS_DOMAIN_NATIVE_MODE 0x0010 /* native mode AD servers */
# define DS_DOMAIN_DIRECT_INBOUND 0x0020 /* trusting domains */
2007-05-06 19:17:30 +00:00
/* Trust types */
# define DS_DOMAIN_TRUST_TYPE_DOWNLEVEL 0x00000001
# define DS_DOMAIN_TRUST_TYPE_UPLEVEL 0x00000002
/* Trust attributes */
# define DS_DOMAIN_TRUST_ATTRIB_NON_TRANSITIVE 0x00000001
# define DS_DOMAIN_TRUST_ATTRIB_UPLEVEL_ONLY 0x00000002
# define DS_DOMAIN_TRUST_ATTRIB_QUARANTINED_DOMAIN 0x00000004
# define DS_DOMAIN_TRUST_ATTRIB_FOREST_TRANSITIVE 0x00000008
# define DS_DOMAIN_TRUST_ATTRIB_CROSS_ORG 0x00000010
# define DS_DOMAIN_TRUST_ATTRIB_IN_FOREST 0x00000020
# define DS_DOMAIN_TRUST_ATTRIB_EXTERNAL 0x00000040
2003-07-30 17:29:00 +00:00
/* DS_Q_ENUM_DOM_TRUSTS - DsEnumerateDomainTrusts() request */
typedef struct
{
uint32 server_ptr ;
UNISTR2 server ;
uint32 flags ;
} DS_Q_ENUM_DOM_TRUSTS ;
/* DS_R_ENUM_DOM_TRUSTS - DsEnumerateDomainTrusts() response */
typedef struct
{
uint32 num_domains ;
DS_DOMAIN_TRUSTS_CTR domains ;
NTSTATUS status ;
2002-10-04 19:11:36 +00:00
2003-07-30 17:29:00 +00:00
} DS_R_ENUM_DOM_TRUSTS ;
2002-10-04 19:11:36 +00:00
# endif /* _RPC_DS_H */