This commit includes part of the patch from metze posted to the list, and a few
[kai/samba.git] / source3 / sam / get_set_domain.c
1 /* 
2    Unix SMB/CIFS implementation.
3    SAM_DOMAIN access routines
4    Copyright (C) Andrew Bartlett                        2002
5    Copyright (C) Stefan (metze) Metzmacher      2002
6    Copyright (C) Jelmer Vernooij                        2002
7       
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 2 of the License, or
11    (at your option) any later version.
12    
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17    
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, write to the Free Software
20    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 */
22
23 #include "includes.h"
24
25 #undef DBGC_CLASS
26 #define DBGC_CLASS DBGC_SAM
27
28 NTSTATUS sam_get_domain_sid(SAM_DOMAIN_HANDLE *domain, const DOM_SID **sid)
29 {
30         SAM_ASSERT(domain &&sid);
31
32         *sid = &(domain->private.sid);
33
34         return NT_STATUS_OK;
35 }
36
37 NTSTATUS sam_get_domain_num_accounts(SAM_DOMAIN_HANDLE *domain, uint32 *num_accounts)
38 {
39         SAM_ASSERT(domain &&num_accounts);
40
41         *num_accounts = domain->private.num_accounts;
42
43         return NT_STATUS_OK;
44 }
45
46 NTSTATUS sam_get_domain_num_groups(SAM_DOMAIN_HANDLE *domain, uint32 *num_groups)
47 {
48         SAM_ASSERT(domain &&num_groups);
49
50         *num_groups = domain->private.num_groups;
51
52         return NT_STATUS_OK;
53 }
54
55 NTSTATUS sam_get_domain_num_aliases(SAM_DOMAIN_HANDLE *domain, uint32 *num_aliases)
56 {
57         SAM_ASSERT(domain &&num_aliases);
58
59         *num_aliases = domain->private.num_aliases;
60
61         return NT_STATUS_OK;
62 }
63
64 NTSTATUS sam_get_domain_name(SAM_DOMAIN_HANDLE *domain, const char **domain_name)
65 {
66         SAM_ASSERT(domain &&domain_name);
67
68         *domain_name = domain->private.name;
69
70         return NT_STATUS_OK;
71 }
72
73 NTSTATUS sam_get_domain_server(SAM_DOMAIN_HANDLE *domain, const char **server_name)
74 {
75         SAM_ASSERT(domain &&server_name);
76
77         *server_name = domain->private.servername;
78
79         return NT_STATUS_OK;
80 }
81
82 NTSTATUS sam_get_domain_max_pwdage(SAM_DOMAIN_HANDLE *domain, NTTIME *max_passwordage)
83 {
84         SAM_ASSERT(domain &&max_passwordage);
85
86         *max_passwordage = domain->private.max_passwordage;
87
88         return NT_STATUS_OK;
89 }
90
91 NTSTATUS sam_get_domain_min_pwdage(SAM_DOMAIN_HANDLE *domain, NTTIME *min_passwordage)
92 {
93         SAM_ASSERT(domain &&min_passwordage);
94
95         *min_passwordage = domain->private.min_passwordage;
96
97         return NT_STATUS_OK;
98 }
99
100 NTSTATUS sam_get_domain_lockout_duration(SAM_DOMAIN_HANDLE *domain, NTTIME *lockout_duration)
101 {
102         SAM_ASSERT(domain &&lockout_duration);
103
104         *lockout_duration = domain->private.lockout_duration;
105
106         return NT_STATUS_OK;
107 }
108
109 NTSTATUS sam_get_domain_reset_count(SAM_DOMAIN_HANDLE *domain, NTTIME *reset_lockout_count)
110 {
111         SAM_ASSERT(domain &&reset_lockout_count);
112         
113         *reset_lockout_count = domain->private.reset_count;
114
115         return NT_STATUS_OK;
116 }
117
118 NTSTATUS sam_get_domain_min_pwdlength(SAM_DOMAIN_HANDLE *domain, uint16 *min_passwordlength)
119 {
120         SAM_ASSERT(domain &&min_passwordlength);
121
122         *min_passwordlength = domain->private.min_passwordlength;
123
124         return NT_STATUS_OK;
125 }
126
127 NTSTATUS sam_get_domain_pwd_history(SAM_DOMAIN_HANDLE *domain, uint16 *password_history)
128 {
129         SAM_ASSERT(domain &&password_history);
130
131         *password_history = domain->private.password_history;
132
133         return NT_STATUS_OK;
134 }
135
136 NTSTATUS sam_get_domain_lockout_count(SAM_DOMAIN_HANDLE *domain, uint16 *lockout_count)
137 {
138         SAM_ASSERT(domain &&lockout_count);
139
140         *lockout_count = domain->private.lockout_count;
141
142         return NT_STATUS_OK;
143 }
144
145 NTSTATUS sam_get_domain_force_logoff(SAM_DOMAIN_HANDLE *domain, BOOL *force_logoff)
146 {
147         SAM_ASSERT(domain &&force_logoff);
148
149         *force_logoff = domain->private.force_logoff;
150
151         return NT_STATUS_OK;
152 }
153
154
155 NTSTATUS sam_get_domain_login_pwdchange(SAM_DOMAIN_HANDLE *domain, BOOL *login_pwdchange)
156 {
157         SAM_ASSERT(domain && login_pwdchange);
158
159         *login_pwdchange = domain->private.login_pwdchange;
160
161         return NT_STATUS_OK;
162 }
163
164 /* Set */
165
166 NTSTATUS sam_set_domain_name(SAM_DOMAIN_HANDLE *domain, const char *domain_name)
167 {
168         SAM_ASSERT(domain);
169
170         domain->private.name = talloc_strdup(domain->mem_ctx, domain_name);
171
172         return NT_STATUS_OK;
173 }
174
175
176 NTSTATUS sam_set_domain_max_pwdage(SAM_DOMAIN_HANDLE *domain, NTTIME max_passwordage)
177 {
178         SAM_ASSERT(domain);
179
180         domain->private.max_passwordage = max_passwordage;
181
182         return NT_STATUS_OK;
183 }
184
185 NTSTATUS sam_set_domain_min_pwdage(SAM_DOMAIN_HANDLE *domain, NTTIME min_passwordage)
186 {
187         SAM_ASSERT(domain);
188
189         domain->private.min_passwordage = min_passwordage;
190
191         return NT_STATUS_OK;
192 }
193
194 NTSTATUS sam_set_domain_lockout_duration(SAM_DOMAIN_HANDLE *domain, NTTIME lockout_duration)
195 {
196         SAM_ASSERT(domain);
197
198         domain->private.lockout_duration = lockout_duration;
199
200         return NT_STATUS_OK;
201 }
202 NTSTATUS sam_set_domain_reset_count(SAM_DOMAIN_HANDLE *domain, NTTIME reset_lockout_count)
203 {
204         SAM_ASSERT(domain);
205
206         domain->private.reset_count = reset_lockout_count;
207
208         return NT_STATUS_OK;
209 }
210
211 NTSTATUS sam_set_domain_min_pwdlength(SAM_DOMAIN_HANDLE *domain, uint16 min_passwordlength)
212 {
213         SAM_ASSERT(domain);
214
215         domain->private.min_passwordlength = min_passwordlength;
216
217         return NT_STATUS_OK;
218 }
219
220 NTSTATUS sam_set_domain_pwd_history(SAM_DOMAIN_HANDLE *domain, uint16 password_history)
221 {
222         SAM_ASSERT(domain);
223
224         domain->private.password_history = password_history;
225
226         return NT_STATUS_OK;
227 }
228
229 NTSTATUS sam_set_domain_lockout_count(SAM_DOMAIN_HANDLE *domain, uint16 lockout_count)
230 {
231         SAM_ASSERT(domain);
232
233         domain->private.lockout_count = lockout_count;
234
235         return NT_STATUS_OK;
236 }
237
238 NTSTATUS sam_set_domain_force_logoff(SAM_DOMAIN_HANDLE *domain, BOOL force_logoff)
239 {
240         SAM_ASSERT(domain);
241
242         domain->private.force_logoff = force_logoff;
243
244         return NT_STATUS_OK;
245 }
246
247 NTSTATUS sam_set_domain_login_pwdchange(SAM_DOMAIN_HANDLE *domain, BOOL login_pwdchange)
248 {
249         SAM_ASSERT(domain);
250
251         domain->private.login_pwdchange = login_pwdchange;
252
253         return NT_STATUS_OK;
254 }
255
256 NTSTATUS sam_set_domain_server(SAM_DOMAIN_HANDLE *domain, const char *server_name)
257 {
258         SAM_ASSERT(domain);
259
260         domain->private.servername = talloc_strdup(domain->mem_ctx, server_name);
261
262         return NT_STATUS_OK;
263 }