summaryrefslogtreecommitdiff
path: root/source3/include/rpc_ds.h
blob: 22b2430595894051fb0dea6962a118cf2fe92b67 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/* 
   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
   the Free Software Foundation; either version 2 of the License, or
   (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
   along with this program; if not, write to the Free Software
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#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

/* Opcodes available on PIPE_NETLOGON */

#define DS_ENUM_DOM_TRUSTS      0x28


/* macros for RPC's */

#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

typedef struct
{
	uint16		machine_role;
	uint16		unknown;		/* 0x6173 -- maybe just alignment? */
	
	uint32		flags;
	
	uint32		netbios_ptr;
	uint32		dnsname_ptr;
	uint32		forestname_ptr;
	
	GUID		domain_guid;
	
	UNISTR2	netbios_domain;
	/* these 2 might be reversed in order.  I can't tell from 
	   my tests as both values are the same --jerry */
	UNISTR2	dns_domain;
	UNISTR2	forest_domain;
} 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;

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;
	GUID		guid;
	
	UNISTR2		netbios_domain;
	UNISTR2		dns_domain;
	DOM_SID2	sid;

} DS_DOMAIN_TRUSTS;

typedef struct {

	uint32			ptr;
	uint32			max_count;
	DS_DOMAIN_TRUSTS 	*trusts;
	
} DS_DOMAIN_TRUSTS_CTR;

/* 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;

} DS_R_ENUM_DOM_TRUSTS;


#endif /* _RPC_DS_H */