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
- the Free Software Foundation; either version 2 of the License, or
+ the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _RPC_DS_H /* _RPC_LSA_H */
#define _RPC_DS_H
-#include "rpc_misc.h"
-
-
/* Opcodes available on PIPE_LSARPC_DS */
#define DS_GETPRIMDOMINFO 0x00
#define DS_ENUM_DOM_TRUSTS 0x28
-
/* macros for RPC's */
/* DSROLE_PRIMARY_DOMAIN_INFO_BASIC */
/* machine role */
+#define DSROLE_DOMAIN_MEMBER_WKS 1
#define DSROLE_STANDALONE_SRV 2
#define DSROLE_DOMAIN_MEMBER_SRV 3
#define DSROLE_BDC 4
#define DSROLE_PDC 5
+/* Settings for the domainFunctionality attribute in the rootDSE */
+
+#define DS_DOMAIN_FUNCTION_2000 0
+#define DS_DOMAIN_FUCNTION_2003_MIXED 1
+#define DS_DOMAIN_FUNCTION_2003 2
typedef struct
{
uint16 machine_role;
- uint16 unknown; /* 0x6173 -- maybe just alignment? */
-
- uint32 flags;
-
+ uint32 flags;
uint32 netbios_ptr;
uint32 dnsname_ptr;
uint32 forestname_ptr;
- struct uuid domain_guid;
-
+ struct GUID domain_guid;
UNISTR2 netbios_domain;
-
UNISTR2 dns_domain; /* our dns domain */
UNISTR2 forest_domain; /* root domain of the forest to which we belong */
} DSROLE_PRIMARY_DOMAIN_INFO_BASIC;
#define DsRolePrimaryDomainInfoBasic 1
-
/* DS_Q_GETPRIMDOMINFO - DsGetPrimaryDomainInformation() request */
typedef struct
{
uint32 trust_type;
uint32 trust_attributes;
uint32 sid_ptr;
- struct uuid guid;
+ struct GUID guid;
UNISTR2 netbios_domain;
UNISTR2 dns_domain;
} DS_DOMAIN_TRUSTS;
+struct ds_domain_trust {
+ /* static portion of structure */
+ uint32 flags;
+ uint32 parent_index;
+ uint32 trust_type;
+ uint32 trust_attributes;
+ struct GUID guid;
+
+ DOM_SID sid;
+ char *netbios_domain;
+ char *dns_domain;
+};
+
typedef struct {
uint32 ptr;
} DS_DOMAIN_TRUSTS_CTR;
+/* Trust flags */
+
#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 */
-#define DS_DOMAIN_TREE_ROOT 0x0004 /* root of our forest; also available in
- DsRoleGetPrimaryDomainInfo() */
+#define DS_DOMAIN_TREE_ROOT 0x0004 /* root of a forest */
#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 */
+/* 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
+
+
+
/* DS_Q_ENUM_DOM_TRUSTS - DsEnumerateDomainTrusts() request */
typedef struct
{