summaryrefslogtreecommitdiff
path: root/source3/include/rpc_netlogon.h
blob: 958078d5ca3983b9d3dbb0fd026ef4516239d36c (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) Andrew Tridgell 1992-1997
   Copyright (C) Luke Kenneth Casson Leighton 1996-1997
   Copyright (C) Paul Ashton 1997
   Copyright (C) Jean François Micouleau 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 3 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, see <http://www.gnu.org/licenses/>.
*/

#ifndef _RPC_NETLOGON_H /* _RPC_NETLOGON_H */
#define _RPC_NETLOGON_H 


/* NETLOGON pipe */
#define NET_SAMLOGON		0x02
#define NET_SAMLOGOFF		0x03
#define NET_REQCHAL		0x04
#define NET_AUTH		0x05
#define NET_SRVPWSET		0x06
#define NET_SAM_DELTAS		0x07
#define NET_GETDCNAME		0x0b
#define NET_LOGON_CTRL		0x0c
#define NET_GETANYDCNAME	0x0d
#define NET_AUTH2		0x0f
#define NET_LOGON_CTRL2		0x0e
#define NET_SAM_SYNC		0x10
#define NET_TRUST_DOM_LIST	0x13
#define NET_DSR_GETDCNAME	0x14
#define NET_AUTH3		0x1a
#define NET_DSR_GETDCNAMEEX	0x1b
#define NET_DSR_GETSITENAME	0x1c
#define NET_DSR_GETDCNAMEEX2	0x22
#define NET_SAMLOGON_EX		0x27

/* flags use when sending a NETLOGON_CONTROL request */

#define NETLOGON_CONTROL_SYNC			0x2
#define NETLOGON_CONTROL_REDISCOVER		0x5
#define NETLOGON_CONTROL_TC_QUERY		0x6
#define NETLOGON_CONTROL_TRANSPORT_NOTIFY	0x7
#define NETLOGON_CONTROL_SET_DBFLAG		0xfffe

/* Some flag values reverse engineered from NLTEST.EXE */
/* used in the NETLOGON_CONTROL[2] reply */

#define NL_CTRL_IN_SYNC          0x0000
#define NL_CTRL_REPL_NEEDED      0x0001
#define NL_CTRL_REPL_IN_PROGRESS 0x0002
#define NL_CTRL_FULL_SYNC        0x0004

#define LOGON_KRB5_FAIL_CLOCK_SKEW	0x02000000

/* Flags for controlling the behaviour of a particular logon */

/* sets NETLOGON_SERVER_TRUST_ACCOUNT user_flag */
#if 0
#define MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT	0x00000020
#define MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT	0x00000800

/* updates the "logon time" on network logon */
#define MSV1_0_UPDATE_LOGON_STATISTICS		0x00000004

/* returns the user parameters in the driveletter */
#define MSV1_0_RETURN_USER_PARAMETERS		0x00000008

/* returns the profilepath in the driveletter and 
 * sets LOGON_PROFILE_PATH_RETURNED user_flag */
#define MSV1_0_RETURN_PROFILE_PATH		0x00000200
#endif

#define INTERACTIVE_LOGON_TYPE 1
#define NET_LOGON_TYPE 2

/* LOCKOUT_STRING */
typedef struct account_lockout_string {
	uint32 array_size;
	uint32 offset;
	uint32 length;
/*	uint16 *bindata;	*/
	uint64 lockout_duration;
	uint64 reset_count;
	uint32 bad_attempt_lockout;
	uint32 dummy;
} LOCKOUT_STRING;

/* HDR_LOCKOUT_STRING */
typedef struct hdr_account_lockout_string {
	uint16 size;
	uint16 length;
	uint32 buffer;
} HDR_LOCKOUT_STRING;

#define DSGETDC_VALID_FLAGS ( \
    DS_FORCE_REDISCOVERY | \
    DS_DIRECTORY_SERVICE_REQUIRED | \
    DS_DIRECTORY_SERVICE_PREFERRED | \
    DS_GC_SERVER_REQUIRED | \
    DS_PDC_REQUIRED | \
    DS_BACKGROUND_ONLY | \
    DS_IP_REQUIRED | \
    DS_KDC_REQUIRED | \
    DS_TIMESERV_REQUIRED | \
    DS_WRITABLE_REQUIRED | \
    DS_GOOD_TIMESERV_PREFERRED | \
    DS_AVOID_SELF | \
    DS_ONLY_LDAP_NEEDED | \
    DS_IS_FLAT_NAME | \
    DS_IS_DNS_NAME | \
    DS_RETURN_FLAT_NAME  | \
    DS_RETURN_DNS_NAME )

struct DS_DOMAIN_CONTROLLER_INFO {
	const char *domain_controller_name;
	const char *domain_controller_address;
	int32 domain_controller_address_type;
	struct GUID *domain_guid;
	const char *domain_name;
	const char *dns_forest_name;
	uint32 flags;
	const char *dc_site_name;
	const char *client_site_name;
};

#endif /* _RPC_NETLOGON_H */