r23784: use the GPLv3 boilerplate as recommended by the FSF and the license text
[vlendec/samba-autobuild/.git] / source3 / include / rpc_ds.h
index 4d3f5416ac2b3ab775961ae2544230415e0486cc..1ba02aede0a1f29a14dc4fc4d93ba9f189ca0389 100644 (file)
@@ -5,7 +5,7 @@
       
    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
@@ -33,7 +29,6 @@
 
 #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;
@@ -81,7 +77,6 @@ typedef struct
 
 #define DsRolePrimaryDomainInfoBasic           1
 
-
 /* DS_Q_GETPRIMDOMINFO - DsGetPrimaryDomainInformation() request */
 typedef struct 
 {
@@ -110,7 +105,7 @@ typedef struct {
        uint32          trust_type;
        uint32          trust_attributes;
        uint32          sid_ptr;
-       struct uuid     guid;
+       struct GUID     guid;
        
        UNISTR2         netbios_domain;
        UNISTR2         dns_domain;
@@ -118,6 +113,19 @@ typedef struct {
 
 } 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;
@@ -126,15 +134,33 @@ typedef struct {
        
 } 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 
 {