fb5c4603ee09b99a8fb39dbba17da64540781c85
[jra/samba/.git] / source / librpc / gen_ndr / ndr_netlogon.c
1 /* parser auto-generated by pidl */
2
3 #include "includes.h"
4 #include "librpc/gen_ndr/ndr_netlogon.h"
5
6 #include "librpc/gen_ndr/ndr_lsa.h"
7 #include "librpc/gen_ndr/ndr_samr.h"
8 #include "librpc/gen_ndr/ndr_security.h"
9 static enum ndr_err_code ndr_push_netr_UasInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_UasInfo *r)
10 {
11         if (ndr_flags & NDR_SCALARS) {
12                 NDR_CHECK(ndr_push_align(ndr, 4));
13                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->account_name));
14                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->priv));
15                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->auth_flags));
16                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->logon_count));
17                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->bad_pw_count));
18                 NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->last_logon));
19                 NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->last_logoff));
20                 NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->logoff_time));
21                 NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->kickoff_time));
22                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->password_age));
23                 NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->pw_can_change));
24                 NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->pw_must_change));
25                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->computer));
26                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
27                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->script_path));
28                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown));
29         }
30         if (ndr_flags & NDR_BUFFERS) {
31                 if (r->account_name) {
32                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->account_name, CH_UTF16)));
33                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
34                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->account_name, CH_UTF16)));
35                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->account_name, ndr_charset_length(r->account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
36                 }
37                 if (r->computer) {
38                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->computer, CH_UTF16)));
39                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
40                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->computer, CH_UTF16)));
41                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->computer, ndr_charset_length(r->computer, CH_UTF16), sizeof(uint16_t), CH_UTF16));
42                 }
43                 if (r->domain) {
44                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
45                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
46                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
47                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain, ndr_charset_length(r->domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
48                 }
49                 if (r->script_path) {
50                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->script_path, CH_UTF16)));
51                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
52                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->script_path, CH_UTF16)));
53                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->script_path, ndr_charset_length(r->script_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
54                 }
55         }
56         return NDR_ERR_SUCCESS;
57 }
58
59 static enum ndr_err_code ndr_pull_netr_UasInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_UasInfo *r)
60 {
61         uint32_t _ptr_account_name;
62         TALLOC_CTX *_mem_save_account_name_0;
63         uint32_t _ptr_computer;
64         TALLOC_CTX *_mem_save_computer_0;
65         uint32_t _ptr_domain;
66         TALLOC_CTX *_mem_save_domain_0;
67         uint32_t _ptr_script_path;
68         TALLOC_CTX *_mem_save_script_path_0;
69         if (ndr_flags & NDR_SCALARS) {
70                 NDR_CHECK(ndr_pull_align(ndr, 4));
71                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_account_name));
72                 if (_ptr_account_name) {
73                         NDR_PULL_ALLOC(ndr, r->account_name);
74                 } else {
75                         r->account_name = NULL;
76                 }
77                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->priv));
78                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->auth_flags));
79                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->logon_count));
80                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->bad_pw_count));
81                 NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->last_logon));
82                 NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->last_logoff));
83                 NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->logoff_time));
84                 NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->kickoff_time));
85                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->password_age));
86                 NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->pw_can_change));
87                 NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->pw_must_change));
88                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer));
89                 if (_ptr_computer) {
90                         NDR_PULL_ALLOC(ndr, r->computer);
91                 } else {
92                         r->computer = NULL;
93                 }
94                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
95                 if (_ptr_domain) {
96                         NDR_PULL_ALLOC(ndr, r->domain);
97                 } else {
98                         r->domain = NULL;
99                 }
100                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_script_path));
101                 if (_ptr_script_path) {
102                         NDR_PULL_ALLOC(ndr, r->script_path);
103                 } else {
104                         r->script_path = NULL;
105                 }
106                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown));
107         }
108         if (ndr_flags & NDR_BUFFERS) {
109                 if (r->account_name) {
110                         _mem_save_account_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
111                         NDR_PULL_SET_MEM_CTX(ndr, r->account_name, 0);
112                         NDR_CHECK(ndr_pull_array_size(ndr, &r->account_name));
113                         NDR_CHECK(ndr_pull_array_length(ndr, &r->account_name));
114                         if (ndr_get_array_length(ndr, &r->account_name) > ndr_get_array_size(ndr, &r->account_name)) {
115                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->account_name), ndr_get_array_length(ndr, &r->account_name));
116                         }
117                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->account_name), sizeof(uint16_t)));
118                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->account_name, ndr_get_array_length(ndr, &r->account_name), sizeof(uint16_t), CH_UTF16));
119                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_account_name_0, 0);
120                 }
121                 if (r->computer) {
122                         _mem_save_computer_0 = NDR_PULL_GET_MEM_CTX(ndr);
123                         NDR_PULL_SET_MEM_CTX(ndr, r->computer, 0);
124                         NDR_CHECK(ndr_pull_array_size(ndr, &r->computer));
125                         NDR_CHECK(ndr_pull_array_length(ndr, &r->computer));
126                         if (ndr_get_array_length(ndr, &r->computer) > ndr_get_array_size(ndr, &r->computer)) {
127                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->computer), ndr_get_array_length(ndr, &r->computer));
128                         }
129                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->computer), sizeof(uint16_t)));
130                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->computer, ndr_get_array_length(ndr, &r->computer), sizeof(uint16_t), CH_UTF16));
131                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_0, 0);
132                 }
133                 if (r->domain) {
134                         _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
135                         NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
136                         NDR_CHECK(ndr_pull_array_size(ndr, &r->domain));
137                         NDR_CHECK(ndr_pull_array_length(ndr, &r->domain));
138                         if (ndr_get_array_length(ndr, &r->domain) > ndr_get_array_size(ndr, &r->domain)) {
139                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->domain), ndr_get_array_length(ndr, &r->domain));
140                         }
141                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t)));
142                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t), CH_UTF16));
143                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
144                 }
145                 if (r->script_path) {
146                         _mem_save_script_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
147                         NDR_PULL_SET_MEM_CTX(ndr, r->script_path, 0);
148                         NDR_CHECK(ndr_pull_array_size(ndr, &r->script_path));
149                         NDR_CHECK(ndr_pull_array_length(ndr, &r->script_path));
150                         if (ndr_get_array_length(ndr, &r->script_path) > ndr_get_array_size(ndr, &r->script_path)) {
151                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->script_path), ndr_get_array_length(ndr, &r->script_path));
152                         }
153                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->script_path), sizeof(uint16_t)));
154                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->script_path, ndr_get_array_length(ndr, &r->script_path), sizeof(uint16_t), CH_UTF16));
155                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_script_path_0, 0);
156                 }
157         }
158         return NDR_ERR_SUCCESS;
159 }
160
161 _PUBLIC_ void ndr_print_netr_UasInfo(struct ndr_print *ndr, const char *name, const struct netr_UasInfo *r)
162 {
163         ndr_print_struct(ndr, name, "netr_UasInfo");
164         ndr->depth++;
165         ndr_print_ptr(ndr, "account_name", r->account_name);
166         ndr->depth++;
167         if (r->account_name) {
168                 ndr_print_string(ndr, "account_name", r->account_name);
169         }
170         ndr->depth--;
171         ndr_print_uint32(ndr, "priv", r->priv);
172         ndr_print_uint32(ndr, "auth_flags", r->auth_flags);
173         ndr_print_uint32(ndr, "logon_count", r->logon_count);
174         ndr_print_uint32(ndr, "bad_pw_count", r->bad_pw_count);
175         ndr_print_time_t(ndr, "last_logon", r->last_logon);
176         ndr_print_time_t(ndr, "last_logoff", r->last_logoff);
177         ndr_print_time_t(ndr, "logoff_time", r->logoff_time);
178         ndr_print_time_t(ndr, "kickoff_time", r->kickoff_time);
179         ndr_print_uint32(ndr, "password_age", r->password_age);
180         ndr_print_time_t(ndr, "pw_can_change", r->pw_can_change);
181         ndr_print_time_t(ndr, "pw_must_change", r->pw_must_change);
182         ndr_print_ptr(ndr, "computer", r->computer);
183         ndr->depth++;
184         if (r->computer) {
185                 ndr_print_string(ndr, "computer", r->computer);
186         }
187         ndr->depth--;
188         ndr_print_ptr(ndr, "domain", r->domain);
189         ndr->depth++;
190         if (r->domain) {
191                 ndr_print_string(ndr, "domain", r->domain);
192         }
193         ndr->depth--;
194         ndr_print_ptr(ndr, "script_path", r->script_path);
195         ndr->depth++;
196         if (r->script_path) {
197                 ndr_print_string(ndr, "script_path", r->script_path);
198         }
199         ndr->depth--;
200         ndr_print_uint32(ndr, "unknown", r->unknown);
201         ndr->depth--;
202 }
203
204 static enum ndr_err_code ndr_push_netr_UasLogoffInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_UasLogoffInfo *r)
205 {
206         if (ndr_flags & NDR_SCALARS) {
207                 NDR_CHECK(ndr_push_align(ndr, 4));
208                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->duration));
209                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->logon_count));
210         }
211         if (ndr_flags & NDR_BUFFERS) {
212         }
213         return NDR_ERR_SUCCESS;
214 }
215
216 static enum ndr_err_code ndr_pull_netr_UasLogoffInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_UasLogoffInfo *r)
217 {
218         if (ndr_flags & NDR_SCALARS) {
219                 NDR_CHECK(ndr_pull_align(ndr, 4));
220                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->duration));
221                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->logon_count));
222         }
223         if (ndr_flags & NDR_BUFFERS) {
224         }
225         return NDR_ERR_SUCCESS;
226 }
227
228 _PUBLIC_ void ndr_print_netr_UasLogoffInfo(struct ndr_print *ndr, const char *name, const struct netr_UasLogoffInfo *r)
229 {
230         ndr_print_struct(ndr, name, "netr_UasLogoffInfo");
231         ndr->depth++;
232         ndr_print_uint32(ndr, "duration", r->duration);
233         ndr_print_uint16(ndr, "logon_count", r->logon_count);
234         ndr->depth--;
235 }
236
237 static enum ndr_err_code ndr_push_netr_AcctLockStr(struct ndr_push *ndr, int ndr_flags, const struct netr_AcctLockStr *r)
238 {
239         uint32_t cntr_bindata_1;
240         if (ndr_flags & NDR_SCALARS) {
241                 NDR_CHECK(ndr_push_align(ndr, 4));
242                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->size));
243                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
244                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->bindata));
245         }
246         if (ndr_flags & NDR_BUFFERS) {
247                 if (r->bindata) {
248                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size / 2));
249                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
250                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length / 2));
251                         for (cntr_bindata_1 = 0; cntr_bindata_1 < r->length / 2; cntr_bindata_1++) {
252                                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->bindata[cntr_bindata_1]));
253                         }
254                 }
255         }
256         return NDR_ERR_SUCCESS;
257 }
258
259 static enum ndr_err_code ndr_pull_netr_AcctLockStr(struct ndr_pull *ndr, int ndr_flags, struct netr_AcctLockStr *r)
260 {
261         uint32_t _ptr_bindata;
262         uint32_t cntr_bindata_1;
263         TALLOC_CTX *_mem_save_bindata_0;
264         TALLOC_CTX *_mem_save_bindata_1;
265         if (ndr_flags & NDR_SCALARS) {
266                 NDR_CHECK(ndr_pull_align(ndr, 4));
267                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
268                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
269                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_bindata));
270                 if (_ptr_bindata) {
271                         NDR_PULL_ALLOC(ndr, r->bindata);
272                 } else {
273                         r->bindata = NULL;
274                 }
275         }
276         if (ndr_flags & NDR_BUFFERS) {
277                 if (r->bindata) {
278                         _mem_save_bindata_0 = NDR_PULL_GET_MEM_CTX(ndr);
279                         NDR_PULL_SET_MEM_CTX(ndr, r->bindata, 0);
280                         NDR_CHECK(ndr_pull_array_size(ndr, &r->bindata));
281                         NDR_CHECK(ndr_pull_array_length(ndr, &r->bindata));
282                         if (ndr_get_array_length(ndr, &r->bindata) > ndr_get_array_size(ndr, &r->bindata)) {
283                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->bindata), ndr_get_array_length(ndr, &r->bindata));
284                         }
285                         NDR_PULL_ALLOC_N(ndr, r->bindata, ndr_get_array_size(ndr, &r->bindata));
286                         _mem_save_bindata_1 = NDR_PULL_GET_MEM_CTX(ndr);
287                         NDR_PULL_SET_MEM_CTX(ndr, r->bindata, 0);
288                         for (cntr_bindata_1 = 0; cntr_bindata_1 < r->length / 2; cntr_bindata_1++) {
289                                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->bindata[cntr_bindata_1]));
290                         }
291                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bindata_1, 0);
292                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_bindata_0, 0);
293                 }
294                 if (r->bindata) {
295                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->bindata, r->size / 2));
296                 }
297                 if (r->bindata) {
298                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->bindata, r->length / 2));
299                 }
300         }
301         return NDR_ERR_SUCCESS;
302 }
303
304 _PUBLIC_ void ndr_print_netr_AcctLockStr(struct ndr_print *ndr, const char *name, const struct netr_AcctLockStr *r)
305 {
306         uint32_t cntr_bindata_1;
307         ndr_print_struct(ndr, name, "netr_AcctLockStr");
308         ndr->depth++;
309         ndr_print_uint16(ndr, "size", r->size);
310         ndr_print_uint16(ndr, "length", r->length);
311         ndr_print_ptr(ndr, "bindata", r->bindata);
312         ndr->depth++;
313         if (r->bindata) {
314                 ndr->print(ndr, "%s: ARRAY(%d)", "bindata", r->length / 2);
315                 ndr->depth++;
316                 for (cntr_bindata_1=0;cntr_bindata_1<r->length / 2;cntr_bindata_1++) {
317                         char *idx_1=NULL;
318                         asprintf(&idx_1, "[%d]", cntr_bindata_1);
319                         if (idx_1) {
320                                 ndr_print_uint16(ndr, "bindata", r->bindata[cntr_bindata_1]);
321                                 free(idx_1);
322                         }
323                 }
324                 ndr->depth--;
325         }
326         ndr->depth--;
327         ndr->depth--;
328 }
329
330 _PUBLIC_ enum ndr_err_code ndr_push_netr_LogonParameterControl(struct ndr_push *ndr, int ndr_flags, uint32_t r)
331 {
332         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
333         return NDR_ERR_SUCCESS;
334 }
335
336 _PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonParameterControl(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
337 {
338         uint32_t v;
339         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
340         *r = v;
341         return NDR_ERR_SUCCESS;
342 }
343
344 _PUBLIC_ void ndr_print_netr_LogonParameterControl(struct ndr_print *ndr, const char *name, uint32_t r)
345 {
346         ndr_print_uint32(ndr, name, r);
347         ndr->depth++;
348         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_CLEARTEXT_PASSWORD_ALLOWED", MSV1_0_CLEARTEXT_PASSWORD_ALLOWED, r);
349         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_UPDATE_LOGON_STATISTICS", MSV1_0_UPDATE_LOGON_STATISTICS, r);
350         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_RETURN_USER_PARAMETERS", MSV1_0_RETURN_USER_PARAMETERS, r);
351         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT", MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT, r);
352         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_RETURN_PROFILE_PATH", MSV1_0_RETURN_PROFILE_PATH, r);
353         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT", MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT, r);
354         ndr->depth--;
355 }
356
357 static enum ndr_err_code ndr_push_netr_IdentityInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_IdentityInfo *r)
358 {
359         if (ndr_flags & NDR_SCALARS) {
360                 NDR_CHECK(ndr_push_align(ndr, 4));
361                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
362                 NDR_CHECK(ndr_push_netr_LogonParameterControl(ndr, NDR_SCALARS, r->parameter_control));
363                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->logon_id_low));
364                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->logon_id_high));
365                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->account_name));
366                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->workstation));
367         }
368         if (ndr_flags & NDR_BUFFERS) {
369                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
370                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->account_name));
371                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->workstation));
372         }
373         return NDR_ERR_SUCCESS;
374 }
375
376 static enum ndr_err_code ndr_pull_netr_IdentityInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_IdentityInfo *r)
377 {
378         if (ndr_flags & NDR_SCALARS) {
379                 NDR_CHECK(ndr_pull_align(ndr, 4));
380                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
381                 NDR_CHECK(ndr_pull_netr_LogonParameterControl(ndr, NDR_SCALARS, &r->parameter_control));
382                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->logon_id_low));
383                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->logon_id_high));
384                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->account_name));
385                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->workstation));
386         }
387         if (ndr_flags & NDR_BUFFERS) {
388                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
389                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->account_name));
390                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->workstation));
391         }
392         return NDR_ERR_SUCCESS;
393 }
394
395 _PUBLIC_ void ndr_print_netr_IdentityInfo(struct ndr_print *ndr, const char *name, const struct netr_IdentityInfo *r)
396 {
397         ndr_print_struct(ndr, name, "netr_IdentityInfo");
398         ndr->depth++;
399         ndr_print_lsa_String(ndr, "domain_name", &r->domain_name);
400         ndr_print_netr_LogonParameterControl(ndr, "parameter_control", r->parameter_control);
401         ndr_print_uint32(ndr, "logon_id_low", r->logon_id_low);
402         ndr_print_uint32(ndr, "logon_id_high", r->logon_id_high);
403         ndr_print_lsa_String(ndr, "account_name", &r->account_name);
404         ndr_print_lsa_String(ndr, "workstation", &r->workstation);
405         ndr->depth--;
406 }
407
408 static enum ndr_err_code ndr_push_netr_PasswordInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_PasswordInfo *r)
409 {
410         if (ndr_flags & NDR_SCALARS) {
411                 NDR_CHECK(ndr_push_align(ndr, 4));
412                 NDR_CHECK(ndr_push_netr_IdentityInfo(ndr, NDR_SCALARS, &r->identity_info));
413                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, &r->lmpassword));
414                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, &r->ntpassword));
415         }
416         if (ndr_flags & NDR_BUFFERS) {
417                 NDR_CHECK(ndr_push_netr_IdentityInfo(ndr, NDR_BUFFERS, &r->identity_info));
418                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_BUFFERS, &r->lmpassword));
419                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_BUFFERS, &r->ntpassword));
420         }
421         return NDR_ERR_SUCCESS;
422 }
423
424 static enum ndr_err_code ndr_pull_netr_PasswordInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_PasswordInfo *r)
425 {
426         if (ndr_flags & NDR_SCALARS) {
427                 NDR_CHECK(ndr_pull_align(ndr, 4));
428                 NDR_CHECK(ndr_pull_netr_IdentityInfo(ndr, NDR_SCALARS, &r->identity_info));
429                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, &r->lmpassword));
430                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, &r->ntpassword));
431         }
432         if (ndr_flags & NDR_BUFFERS) {
433                 NDR_CHECK(ndr_pull_netr_IdentityInfo(ndr, NDR_BUFFERS, &r->identity_info));
434                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_BUFFERS, &r->lmpassword));
435                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_BUFFERS, &r->ntpassword));
436         }
437         return NDR_ERR_SUCCESS;
438 }
439
440 _PUBLIC_ void ndr_print_netr_PasswordInfo(struct ndr_print *ndr, const char *name, const struct netr_PasswordInfo *r)
441 {
442         ndr_print_struct(ndr, name, "netr_PasswordInfo");
443         ndr->depth++;
444         ndr_print_netr_IdentityInfo(ndr, "identity_info", &r->identity_info);
445         ndr_print_samr_Password(ndr, "lmpassword", &r->lmpassword);
446         ndr_print_samr_Password(ndr, "ntpassword", &r->ntpassword);
447         ndr->depth--;
448 }
449
450 static enum ndr_err_code ndr_push_netr_ChallengeResponse(struct ndr_push *ndr, int ndr_flags, const struct netr_ChallengeResponse *r)
451 {
452         {
453                 uint32_t _flags_save_STRUCT = ndr->flags;
454                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
455                 if (ndr_flags & NDR_SCALARS) {
456                         NDR_CHECK(ndr_push_align(ndr, 4));
457                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
458                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
459                         NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
460                 }
461                 if (ndr_flags & NDR_BUFFERS) {
462                         if (r->data) {
463                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
464                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
465                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
466                                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, r->length));
467                         }
468                 }
469                 ndr->flags = _flags_save_STRUCT;
470         }
471         return NDR_ERR_SUCCESS;
472 }
473
474 static enum ndr_err_code ndr_pull_netr_ChallengeResponse(struct ndr_pull *ndr, int ndr_flags, struct netr_ChallengeResponse *r)
475 {
476         uint32_t _ptr_data;
477         TALLOC_CTX *_mem_save_data_0;
478         {
479                 uint32_t _flags_save_STRUCT = ndr->flags;
480                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
481                 if (ndr_flags & NDR_SCALARS) {
482                         NDR_CHECK(ndr_pull_align(ndr, 4));
483                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
484                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
485                         NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
486                         if (_ptr_data) {
487                                 NDR_PULL_ALLOC(ndr, r->data);
488                         } else {
489                                 r->data = NULL;
490                         }
491                 }
492                 if (ndr_flags & NDR_BUFFERS) {
493                         if (r->data) {
494                                 _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
495                                 NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
496                                 NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
497                                 NDR_CHECK(ndr_pull_array_length(ndr, &r->data));
498                                 if (ndr_get_array_length(ndr, &r->data) > ndr_get_array_size(ndr, &r->data)) {
499                                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->data), ndr_get_array_length(ndr, &r->data));
500                                 }
501                                 NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
502                                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, ndr_get_array_length(ndr, &r->data)));
503                                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
504                         }
505                         if (r->data) {
506                                 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->length));
507                         }
508                         if (r->data) {
509                                 NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->data, r->length));
510                         }
511                 }
512                 ndr->flags = _flags_save_STRUCT;
513         }
514         return NDR_ERR_SUCCESS;
515 }
516
517 _PUBLIC_ void ndr_print_netr_ChallengeResponse(struct ndr_print *ndr, const char *name, const struct netr_ChallengeResponse *r)
518 {
519         ndr_print_struct(ndr, name, "netr_ChallengeResponse");
520         {
521                 uint32_t _flags_save_STRUCT = ndr->flags;
522                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
523                 ndr->depth++;
524                 ndr_print_uint16(ndr, "length", r->length);
525                 ndr_print_uint16(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->length:r->size);
526                 ndr_print_ptr(ndr, "data", r->data);
527                 ndr->depth++;
528                 if (r->data) {
529                         ndr_print_array_uint8(ndr, "data", r->data, r->length);
530                 }
531                 ndr->depth--;
532                 ndr->depth--;
533                 ndr->flags = _flags_save_STRUCT;
534         }
535 }
536
537 static enum ndr_err_code ndr_push_netr_NetworkInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_NetworkInfo *r)
538 {
539         {
540                 uint32_t _flags_save_STRUCT = ndr->flags;
541                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
542                 if (ndr_flags & NDR_SCALARS) {
543                         NDR_CHECK(ndr_push_align(ndr, 4));
544                         NDR_CHECK(ndr_push_netr_IdentityInfo(ndr, NDR_SCALARS, &r->identity_info));
545                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->challenge, 8));
546                         NDR_CHECK(ndr_push_netr_ChallengeResponse(ndr, NDR_SCALARS, &r->nt));
547                         NDR_CHECK(ndr_push_netr_ChallengeResponse(ndr, NDR_SCALARS, &r->lm));
548                 }
549                 if (ndr_flags & NDR_BUFFERS) {
550                         NDR_CHECK(ndr_push_netr_IdentityInfo(ndr, NDR_BUFFERS, &r->identity_info));
551                         NDR_CHECK(ndr_push_netr_ChallengeResponse(ndr, NDR_BUFFERS, &r->nt));
552                         NDR_CHECK(ndr_push_netr_ChallengeResponse(ndr, NDR_BUFFERS, &r->lm));
553                 }
554                 ndr->flags = _flags_save_STRUCT;
555         }
556         return NDR_ERR_SUCCESS;
557 }
558
559 static enum ndr_err_code ndr_pull_netr_NetworkInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_NetworkInfo *r)
560 {
561         {
562                 uint32_t _flags_save_STRUCT = ndr->flags;
563                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
564                 if (ndr_flags & NDR_SCALARS) {
565                         NDR_CHECK(ndr_pull_align(ndr, 4));
566                         NDR_CHECK(ndr_pull_netr_IdentityInfo(ndr, NDR_SCALARS, &r->identity_info));
567                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->challenge, 8));
568                         NDR_CHECK(ndr_pull_netr_ChallengeResponse(ndr, NDR_SCALARS, &r->nt));
569                         NDR_CHECK(ndr_pull_netr_ChallengeResponse(ndr, NDR_SCALARS, &r->lm));
570                 }
571                 if (ndr_flags & NDR_BUFFERS) {
572                         NDR_CHECK(ndr_pull_netr_IdentityInfo(ndr, NDR_BUFFERS, &r->identity_info));
573                         NDR_CHECK(ndr_pull_netr_ChallengeResponse(ndr, NDR_BUFFERS, &r->nt));
574                         NDR_CHECK(ndr_pull_netr_ChallengeResponse(ndr, NDR_BUFFERS, &r->lm));
575                 }
576                 ndr->flags = _flags_save_STRUCT;
577         }
578         return NDR_ERR_SUCCESS;
579 }
580
581 _PUBLIC_ void ndr_print_netr_NetworkInfo(struct ndr_print *ndr, const char *name, const struct netr_NetworkInfo *r)
582 {
583         ndr_print_struct(ndr, name, "netr_NetworkInfo");
584         {
585                 uint32_t _flags_save_STRUCT = ndr->flags;
586                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
587                 ndr->depth++;
588                 ndr_print_netr_IdentityInfo(ndr, "identity_info", &r->identity_info);
589                 ndr_print_array_uint8(ndr, "challenge", r->challenge, 8);
590                 ndr_print_netr_ChallengeResponse(ndr, "nt", &r->nt);
591                 ndr_print_netr_ChallengeResponse(ndr, "lm", &r->lm);
592                 ndr->depth--;
593                 ndr->flags = _flags_save_STRUCT;
594         }
595 }
596
597 _PUBLIC_ enum ndr_err_code ndr_push_netr_LogonLevel(struct ndr_push *ndr, int ndr_flags, const union netr_LogonLevel *r)
598 {
599         if (ndr_flags & NDR_SCALARS) {
600                 int level = ndr_push_get_switch_value(ndr, r);
601                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level));
602                 switch (level) {
603                         case 1: {
604                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->password));
605                         break; }
606
607                         case 2: {
608                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->network));
609                         break; }
610
611                         case 3: {
612                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->password));
613                         break; }
614
615                         case 5: {
616                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->password));
617                         break; }
618
619                         case 6: {
620                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->network));
621                         break; }
622
623                         default:
624                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
625                 }
626         }
627         if (ndr_flags & NDR_BUFFERS) {
628                 int level = ndr_push_get_switch_value(ndr, r);
629                 switch (level) {
630                         case 1:
631                                 if (r->password) {
632                                         NDR_CHECK(ndr_push_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
633                                 }
634                         break;
635
636                         case 2:
637                                 if (r->network) {
638                                         NDR_CHECK(ndr_push_netr_NetworkInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->network));
639                                 }
640                         break;
641
642                         case 3:
643                                 if (r->password) {
644                                         NDR_CHECK(ndr_push_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
645                                 }
646                         break;
647
648                         case 5:
649                                 if (r->password) {
650                                         NDR_CHECK(ndr_push_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
651                                 }
652                         break;
653
654                         case 6:
655                                 if (r->network) {
656                                         NDR_CHECK(ndr_push_netr_NetworkInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->network));
657                                 }
658                         break;
659
660                         default:
661                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
662                 }
663         }
664         return NDR_ERR_SUCCESS;
665 }
666
667 _PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonLevel(struct ndr_pull *ndr, int ndr_flags, union netr_LogonLevel *r)
668 {
669         int level;
670         uint16_t _level;
671         TALLOC_CTX *_mem_save_password_0;
672         TALLOC_CTX *_mem_save_network_0;
673         level = ndr_pull_get_switch_value(ndr, r);
674         if (ndr_flags & NDR_SCALARS) {
675                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
676                 if (_level != level) {
677                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
678                 }
679                 switch (level) {
680                         case 1: {
681                                 uint32_t _ptr_password;
682                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
683                                 if (_ptr_password) {
684                                         NDR_PULL_ALLOC(ndr, r->password);
685                                 } else {
686                                         r->password = NULL;
687                                 }
688                         break; }
689
690                         case 2: {
691                                 uint32_t _ptr_network;
692                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_network));
693                                 if (_ptr_network) {
694                                         NDR_PULL_ALLOC(ndr, r->network);
695                                 } else {
696                                         r->network = NULL;
697                                 }
698                         break; }
699
700                         case 3: {
701                                 uint32_t _ptr_password;
702                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
703                                 if (_ptr_password) {
704                                         NDR_PULL_ALLOC(ndr, r->password);
705                                 } else {
706                                         r->password = NULL;
707                                 }
708                         break; }
709
710                         case 5: {
711                                 uint32_t _ptr_password;
712                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
713                                 if (_ptr_password) {
714                                         NDR_PULL_ALLOC(ndr, r->password);
715                                 } else {
716                                         r->password = NULL;
717                                 }
718                         break; }
719
720                         case 6: {
721                                 uint32_t _ptr_network;
722                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_network));
723                                 if (_ptr_network) {
724                                         NDR_PULL_ALLOC(ndr, r->network);
725                                 } else {
726                                         r->network = NULL;
727                                 }
728                         break; }
729
730                         default:
731                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
732                 }
733         }
734         if (ndr_flags & NDR_BUFFERS) {
735                 switch (level) {
736                         case 1:
737                                 if (r->password) {
738                                         _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
739                                         NDR_PULL_SET_MEM_CTX(ndr, r->password, 0);
740                                         NDR_CHECK(ndr_pull_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
741                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
742                                 }
743                         break;
744
745                         case 2:
746                                 if (r->network) {
747                                         _mem_save_network_0 = NDR_PULL_GET_MEM_CTX(ndr);
748                                         NDR_PULL_SET_MEM_CTX(ndr, r->network, 0);
749                                         NDR_CHECK(ndr_pull_netr_NetworkInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->network));
750                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_network_0, 0);
751                                 }
752                         break;
753
754                         case 3:
755                                 if (r->password) {
756                                         _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
757                                         NDR_PULL_SET_MEM_CTX(ndr, r->password, 0);
758                                         NDR_CHECK(ndr_pull_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
759                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
760                                 }
761                         break;
762
763                         case 5:
764                                 if (r->password) {
765                                         _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
766                                         NDR_PULL_SET_MEM_CTX(ndr, r->password, 0);
767                                         NDR_CHECK(ndr_pull_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
768                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
769                                 }
770                         break;
771
772                         case 6:
773                                 if (r->network) {
774                                         _mem_save_network_0 = NDR_PULL_GET_MEM_CTX(ndr);
775                                         NDR_PULL_SET_MEM_CTX(ndr, r->network, 0);
776                                         NDR_CHECK(ndr_pull_netr_NetworkInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->network));
777                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_network_0, 0);
778                                 }
779                         break;
780
781                         default:
782                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
783                 }
784         }
785         return NDR_ERR_SUCCESS;
786 }
787
788 _PUBLIC_ void ndr_print_netr_LogonLevel(struct ndr_print *ndr, const char *name, const union netr_LogonLevel *r)
789 {
790         int level;
791         level = ndr_print_get_switch_value(ndr, r);
792         ndr_print_union(ndr, name, level, "netr_LogonLevel");
793         switch (level) {
794                 case 1:
795                         ndr_print_ptr(ndr, "password", r->password);
796                         ndr->depth++;
797                         if (r->password) {
798                                 ndr_print_netr_PasswordInfo(ndr, "password", r->password);
799                         }
800                         ndr->depth--;
801                 break;
802
803                 case 2:
804                         ndr_print_ptr(ndr, "network", r->network);
805                         ndr->depth++;
806                         if (r->network) {
807                                 ndr_print_netr_NetworkInfo(ndr, "network", r->network);
808                         }
809                         ndr->depth--;
810                 break;
811
812                 case 3:
813                         ndr_print_ptr(ndr, "password", r->password);
814                         ndr->depth++;
815                         if (r->password) {
816                                 ndr_print_netr_PasswordInfo(ndr, "password", r->password);
817                         }
818                         ndr->depth--;
819                 break;
820
821                 case 5:
822                         ndr_print_ptr(ndr, "password", r->password);
823                         ndr->depth++;
824                         if (r->password) {
825                                 ndr_print_netr_PasswordInfo(ndr, "password", r->password);
826                         }
827                         ndr->depth--;
828                 break;
829
830                 case 6:
831                         ndr_print_ptr(ndr, "network", r->network);
832                         ndr->depth++;
833                         if (r->network) {
834                                 ndr_print_netr_NetworkInfo(ndr, "network", r->network);
835                         }
836                         ndr->depth--;
837                 break;
838
839                 default:
840                         ndr_print_bad_level(ndr, name, level);
841         }
842 }
843
844 _PUBLIC_ enum ndr_err_code ndr_push_netr_UserSessionKey(struct ndr_push *ndr, int ndr_flags, const struct netr_UserSessionKey *r)
845 {
846         {
847                 uint32_t _flags_save_STRUCT = ndr->flags;
848                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
849                 if (ndr_flags & NDR_SCALARS) {
850                         NDR_CHECK(ndr_push_align(ndr, 1));
851                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->key, 16));
852                 }
853                 if (ndr_flags & NDR_BUFFERS) {
854                 }
855                 ndr->flags = _flags_save_STRUCT;
856         }
857         return NDR_ERR_SUCCESS;
858 }
859
860 _PUBLIC_ enum ndr_err_code ndr_pull_netr_UserSessionKey(struct ndr_pull *ndr, int ndr_flags, struct netr_UserSessionKey *r)
861 {
862         {
863                 uint32_t _flags_save_STRUCT = ndr->flags;
864                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
865                 if (ndr_flags & NDR_SCALARS) {
866                         NDR_CHECK(ndr_pull_align(ndr, 1));
867                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->key, 16));
868                 }
869                 if (ndr_flags & NDR_BUFFERS) {
870                 }
871                 ndr->flags = _flags_save_STRUCT;
872         }
873         return NDR_ERR_SUCCESS;
874 }
875
876 _PUBLIC_ void ndr_print_netr_UserSessionKey(struct ndr_print *ndr, const char *name, const struct netr_UserSessionKey *r)
877 {
878         ndr_print_struct(ndr, name, "netr_UserSessionKey");
879         {
880                 uint32_t _flags_save_STRUCT = ndr->flags;
881                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
882                 ndr->depth++;
883                 ndr_print_array_uint8(ndr, "key", r->key, 16);
884                 ndr->depth--;
885                 ndr->flags = _flags_save_STRUCT;
886         }
887 }
888
889 _PUBLIC_ enum ndr_err_code ndr_push_netr_LMSessionKey(struct ndr_push *ndr, int ndr_flags, const struct netr_LMSessionKey *r)
890 {
891         {
892                 uint32_t _flags_save_STRUCT = ndr->flags;
893                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
894                 if (ndr_flags & NDR_SCALARS) {
895                         NDR_CHECK(ndr_push_align(ndr, 1));
896                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->key, 8));
897                 }
898                 if (ndr_flags & NDR_BUFFERS) {
899                 }
900                 ndr->flags = _flags_save_STRUCT;
901         }
902         return NDR_ERR_SUCCESS;
903 }
904
905 _PUBLIC_ enum ndr_err_code ndr_pull_netr_LMSessionKey(struct ndr_pull *ndr, int ndr_flags, struct netr_LMSessionKey *r)
906 {
907         {
908                 uint32_t _flags_save_STRUCT = ndr->flags;
909                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
910                 if (ndr_flags & NDR_SCALARS) {
911                         NDR_CHECK(ndr_pull_align(ndr, 1));
912                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->key, 8));
913                 }
914                 if (ndr_flags & NDR_BUFFERS) {
915                 }
916                 ndr->flags = _flags_save_STRUCT;
917         }
918         return NDR_ERR_SUCCESS;
919 }
920
921 _PUBLIC_ void ndr_print_netr_LMSessionKey(struct ndr_print *ndr, const char *name, const struct netr_LMSessionKey *r)
922 {
923         ndr_print_struct(ndr, name, "netr_LMSessionKey");
924         {
925                 uint32_t _flags_save_STRUCT = ndr->flags;
926                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
927                 ndr->depth++;
928                 ndr_print_array_uint8(ndr, "key", r->key, 8);
929                 ndr->depth--;
930                 ndr->flags = _flags_save_STRUCT;
931         }
932 }
933
934 _PUBLIC_ enum ndr_err_code ndr_push_netr_UserFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
935 {
936         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
937         return NDR_ERR_SUCCESS;
938 }
939
940 _PUBLIC_ enum ndr_err_code ndr_pull_netr_UserFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
941 {
942         uint32_t v;
943         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
944         *r = v;
945         return NDR_ERR_SUCCESS;
946 }
947
948 _PUBLIC_ void ndr_print_netr_UserFlags(struct ndr_print *ndr, const char *name, uint32_t r)
949 {
950         ndr_print_uint32(ndr, name, r);
951         ndr->depth++;
952         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_GUEST", NETLOGON_GUEST, r);
953         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NOENCRYPTION", NETLOGON_NOENCRYPTION, r);
954         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_CACHED_ACCOUNT", NETLOGON_CACHED_ACCOUNT, r);
955         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_USED_LM_PASSWORD", NETLOGON_USED_LM_PASSWORD, r);
956         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_EXTRA_SIDS", NETLOGON_EXTRA_SIDS, r);
957         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_SUBAUTH_SESSION_KEY", NETLOGON_SUBAUTH_SESSION_KEY, r);
958         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_SERVER_TRUST_ACCOUNT", NETLOGON_SERVER_TRUST_ACCOUNT, r);
959         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NTLMV2_ENABLED", NETLOGON_NTLMV2_ENABLED, r);
960         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_RESOURCE_GROUPS", NETLOGON_RESOURCE_GROUPS, r);
961         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_PROFILE_PATH_RETURNED", NETLOGON_PROFILE_PATH_RETURNED, r);
962         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_GRACE_LOGON", NETLOGON_GRACE_LOGON, r);
963         ndr->depth--;
964 }
965
966 static enum ndr_err_code ndr_push_netr_SamBaseInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_SamBaseInfo *r)
967 {
968         uint32_t cntr_unknown_0;
969         if (ndr_flags & NDR_SCALARS) {
970                 NDR_CHECK(ndr_push_align(ndr, 4));
971                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_logon));
972                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_logoff));
973                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->acct_expiry));
974                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_password_change));
975                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->allow_password_change));
976                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->force_password_change));
977                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->account_name));
978                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->full_name));
979                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->logon_script));
980                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->profile_path));
981                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->home_directory));
982                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->home_drive));
983                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->logon_count));
984                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->bad_password_count));
985                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
986                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->primary_gid));
987                 NDR_CHECK(ndr_push_samr_RidWithAttributeArray(ndr, NDR_SCALARS, &r->groups));
988                 NDR_CHECK(ndr_push_netr_UserFlags(ndr, NDR_SCALARS, r->user_flags));
989                 NDR_CHECK(ndr_push_netr_UserSessionKey(ndr, NDR_SCALARS, &r->key));
990                 NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS, &r->logon_server));
991                 NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS, &r->domain));
992                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain_sid));
993                 NDR_CHECK(ndr_push_netr_LMSessionKey(ndr, NDR_SCALARS, &r->LMSessKey));
994                 NDR_CHECK(ndr_push_samr_AcctFlags(ndr, NDR_SCALARS, r->acct_flags));
995                 for (cntr_unknown_0 = 0; cntr_unknown_0 < 7; cntr_unknown_0++) {
996                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown[cntr_unknown_0]));
997                 }
998         }
999         if (ndr_flags & NDR_BUFFERS) {
1000                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->account_name));
1001                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->full_name));
1002                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->logon_script));
1003                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->profile_path));
1004                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->home_directory));
1005                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->home_drive));
1006                 NDR_CHECK(ndr_push_samr_RidWithAttributeArray(ndr, NDR_BUFFERS, &r->groups));
1007                 NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_BUFFERS, &r->logon_server));
1008                 NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_BUFFERS, &r->domain));
1009                 if (r->domain_sid) {
1010                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_sid));
1011                 }
1012         }
1013         return NDR_ERR_SUCCESS;
1014 }
1015
1016 static enum ndr_err_code ndr_pull_netr_SamBaseInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_SamBaseInfo *r)
1017 {
1018         uint32_t _ptr_domain_sid;
1019         TALLOC_CTX *_mem_save_domain_sid_0;
1020         uint32_t cntr_unknown_0;
1021         if (ndr_flags & NDR_SCALARS) {
1022                 NDR_CHECK(ndr_pull_align(ndr, 4));
1023                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_logon));
1024                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_logoff));
1025                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->acct_expiry));
1026                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_password_change));
1027                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->allow_password_change));
1028                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->force_password_change));
1029                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->account_name));
1030                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->full_name));
1031                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->logon_script));
1032                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->profile_path));
1033                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->home_directory));
1034                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->home_drive));
1035                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->logon_count));
1036                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->bad_password_count));
1037                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
1038                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->primary_gid));
1039                 NDR_CHECK(ndr_pull_samr_RidWithAttributeArray(ndr, NDR_SCALARS, &r->groups));
1040                 NDR_CHECK(ndr_pull_netr_UserFlags(ndr, NDR_SCALARS, &r->user_flags));
1041                 NDR_CHECK(ndr_pull_netr_UserSessionKey(ndr, NDR_SCALARS, &r->key));
1042                 NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS, &r->logon_server));
1043                 NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS, &r->domain));
1044                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_sid));
1045                 if (_ptr_domain_sid) {
1046                         NDR_PULL_ALLOC(ndr, r->domain_sid);
1047                 } else {
1048                         r->domain_sid = NULL;
1049                 }
1050                 NDR_CHECK(ndr_pull_netr_LMSessionKey(ndr, NDR_SCALARS, &r->LMSessKey));
1051                 NDR_CHECK(ndr_pull_samr_AcctFlags(ndr, NDR_SCALARS, &r->acct_flags));
1052                 for (cntr_unknown_0 = 0; cntr_unknown_0 < 7; cntr_unknown_0++) {
1053                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown[cntr_unknown_0]));
1054                 }
1055         }
1056         if (ndr_flags & NDR_BUFFERS) {
1057                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->account_name));
1058                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->full_name));
1059                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->logon_script));
1060                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->profile_path));
1061                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->home_directory));
1062                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->home_drive));
1063                 NDR_CHECK(ndr_pull_samr_RidWithAttributeArray(ndr, NDR_BUFFERS, &r->groups));
1064                 NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_BUFFERS, &r->logon_server));
1065                 NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_BUFFERS, &r->domain));
1066                 if (r->domain_sid) {
1067                         _mem_save_domain_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
1068                         NDR_PULL_SET_MEM_CTX(ndr, r->domain_sid, 0);
1069                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_sid));
1070                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_sid_0, 0);
1071                 }
1072         }
1073         return NDR_ERR_SUCCESS;
1074 }
1075
1076 _PUBLIC_ void ndr_print_netr_SamBaseInfo(struct ndr_print *ndr, const char *name, const struct netr_SamBaseInfo *r)
1077 {
1078         uint32_t cntr_unknown_0;
1079         ndr_print_struct(ndr, name, "netr_SamBaseInfo");
1080         ndr->depth++;
1081         ndr_print_NTTIME(ndr, "last_logon", r->last_logon);
1082         ndr_print_NTTIME(ndr, "last_logoff", r->last_logoff);
1083         ndr_print_NTTIME(ndr, "acct_expiry", r->acct_expiry);
1084         ndr_print_NTTIME(ndr, "last_password_change", r->last_password_change);
1085         ndr_print_NTTIME(ndr, "allow_password_change", r->allow_password_change);
1086         ndr_print_NTTIME(ndr, "force_password_change", r->force_password_change);
1087         ndr_print_lsa_String(ndr, "account_name", &r->account_name);
1088         ndr_print_lsa_String(ndr, "full_name", &r->full_name);
1089         ndr_print_lsa_String(ndr, "logon_script", &r->logon_script);
1090         ndr_print_lsa_String(ndr, "profile_path", &r->profile_path);
1091         ndr_print_lsa_String(ndr, "home_directory", &r->home_directory);
1092         ndr_print_lsa_String(ndr, "home_drive", &r->home_drive);
1093         ndr_print_uint16(ndr, "logon_count", r->logon_count);
1094         ndr_print_uint16(ndr, "bad_password_count", r->bad_password_count);
1095         ndr_print_uint32(ndr, "rid", r->rid);
1096         ndr_print_uint32(ndr, "primary_gid", r->primary_gid);
1097         ndr_print_samr_RidWithAttributeArray(ndr, "groups", &r->groups);
1098         ndr_print_netr_UserFlags(ndr, "user_flags", r->user_flags);
1099         ndr_print_netr_UserSessionKey(ndr, "key", &r->key);
1100         ndr_print_lsa_StringLarge(ndr, "logon_server", &r->logon_server);
1101         ndr_print_lsa_StringLarge(ndr, "domain", &r->domain);
1102         ndr_print_ptr(ndr, "domain_sid", r->domain_sid);
1103         ndr->depth++;
1104         if (r->domain_sid) {
1105                 ndr_print_dom_sid2(ndr, "domain_sid", r->domain_sid);
1106         }
1107         ndr->depth--;
1108         ndr_print_netr_LMSessionKey(ndr, "LMSessKey", &r->LMSessKey);
1109         ndr_print_samr_AcctFlags(ndr, "acct_flags", r->acct_flags);
1110         ndr->print(ndr, "%s: ARRAY(%d)", "unknown", 7);
1111         ndr->depth++;
1112         for (cntr_unknown_0=0;cntr_unknown_0<7;cntr_unknown_0++) {
1113                 char *idx_0=NULL;
1114                 asprintf(&idx_0, "[%d]", cntr_unknown_0);
1115                 if (idx_0) {
1116                         ndr_print_uint32(ndr, "unknown", r->unknown[cntr_unknown_0]);
1117                         free(idx_0);
1118                 }
1119         }
1120         ndr->depth--;
1121         ndr->depth--;
1122 }
1123
1124 static enum ndr_err_code ndr_push_netr_SamInfo2(struct ndr_push *ndr, int ndr_flags, const struct netr_SamInfo2 *r)
1125 {
1126         if (ndr_flags & NDR_SCALARS) {
1127                 NDR_CHECK(ndr_push_align(ndr, 4));
1128                 NDR_CHECK(ndr_push_netr_SamBaseInfo(ndr, NDR_SCALARS, &r->base));
1129         }
1130         if (ndr_flags & NDR_BUFFERS) {
1131                 NDR_CHECK(ndr_push_netr_SamBaseInfo(ndr, NDR_BUFFERS, &r->base));
1132         }
1133         return NDR_ERR_SUCCESS;
1134 }
1135
1136 static enum ndr_err_code ndr_pull_netr_SamInfo2(struct ndr_pull *ndr, int ndr_flags, struct netr_SamInfo2 *r)
1137 {
1138         if (ndr_flags & NDR_SCALARS) {
1139                 NDR_CHECK(ndr_pull_align(ndr, 4));
1140                 NDR_CHECK(ndr_pull_netr_SamBaseInfo(ndr, NDR_SCALARS, &r->base));
1141         }
1142         if (ndr_flags & NDR_BUFFERS) {
1143                 NDR_CHECK(ndr_pull_netr_SamBaseInfo(ndr, NDR_BUFFERS, &r->base));
1144         }
1145         return NDR_ERR_SUCCESS;
1146 }
1147
1148 _PUBLIC_ void ndr_print_netr_SamInfo2(struct ndr_print *ndr, const char *name, const struct netr_SamInfo2 *r)
1149 {
1150         ndr_print_struct(ndr, name, "netr_SamInfo2");
1151         ndr->depth++;
1152         ndr_print_netr_SamBaseInfo(ndr, "base", &r->base);
1153         ndr->depth--;
1154 }
1155
1156 static enum ndr_err_code ndr_push_netr_SidAttr(struct ndr_push *ndr, int ndr_flags, const struct netr_SidAttr *r)
1157 {
1158         if (ndr_flags & NDR_SCALARS) {
1159                 NDR_CHECK(ndr_push_align(ndr, 4));
1160                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
1161                 NDR_CHECK(ndr_push_samr_GroupAttrs(ndr, NDR_SCALARS, r->attributes));
1162         }
1163         if (ndr_flags & NDR_BUFFERS) {
1164                 if (r->sid) {
1165                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
1166                 }
1167         }
1168         return NDR_ERR_SUCCESS;
1169 }
1170
1171 static enum ndr_err_code ndr_pull_netr_SidAttr(struct ndr_pull *ndr, int ndr_flags, struct netr_SidAttr *r)
1172 {
1173         uint32_t _ptr_sid;
1174         TALLOC_CTX *_mem_save_sid_0;
1175         if (ndr_flags & NDR_SCALARS) {
1176                 NDR_CHECK(ndr_pull_align(ndr, 4));
1177                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
1178                 if (_ptr_sid) {
1179                         NDR_PULL_ALLOC(ndr, r->sid);
1180                 } else {
1181                         r->sid = NULL;
1182                 }
1183                 NDR_CHECK(ndr_pull_samr_GroupAttrs(ndr, NDR_SCALARS, &r->attributes));
1184         }
1185         if (ndr_flags & NDR_BUFFERS) {
1186                 if (r->sid) {
1187                         _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
1188                         NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
1189                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
1190                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
1191                 }
1192         }
1193         return NDR_ERR_SUCCESS;
1194 }
1195
1196 _PUBLIC_ void ndr_print_netr_SidAttr(struct ndr_print *ndr, const char *name, const struct netr_SidAttr *r)
1197 {
1198         ndr_print_struct(ndr, name, "netr_SidAttr");
1199         ndr->depth++;
1200         ndr_print_ptr(ndr, "sid", r->sid);
1201         ndr->depth++;
1202         if (r->sid) {
1203                 ndr_print_dom_sid2(ndr, "sid", r->sid);
1204         }
1205         ndr->depth--;
1206         ndr_print_samr_GroupAttrs(ndr, "attributes", r->attributes);
1207         ndr->depth--;
1208 }
1209
1210 _PUBLIC_ enum ndr_err_code ndr_push_netr_SamInfo3(struct ndr_push *ndr, int ndr_flags, const struct netr_SamInfo3 *r)
1211 {
1212         uint32_t cntr_sids_1;
1213         if (ndr_flags & NDR_SCALARS) {
1214                 NDR_CHECK(ndr_push_align(ndr, 4));
1215                 NDR_CHECK(ndr_push_netr_SamBaseInfo(ndr, NDR_SCALARS, &r->base));
1216                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sidcount));
1217                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sids));
1218         }
1219         if (ndr_flags & NDR_BUFFERS) {
1220                 NDR_CHECK(ndr_push_netr_SamBaseInfo(ndr, NDR_BUFFERS, &r->base));
1221                 if (r->sids) {
1222                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sidcount));
1223                         for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
1224                                 NDR_CHECK(ndr_push_netr_SidAttr(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
1225                         }
1226                         for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
1227                                 NDR_CHECK(ndr_push_netr_SidAttr(ndr, NDR_BUFFERS, &r->sids[cntr_sids_1]));
1228                         }
1229                 }
1230         }
1231         return NDR_ERR_SUCCESS;
1232 }
1233
1234 _PUBLIC_ enum ndr_err_code ndr_pull_netr_SamInfo3(struct ndr_pull *ndr, int ndr_flags, struct netr_SamInfo3 *r)
1235 {
1236         uint32_t _ptr_sids;
1237         uint32_t cntr_sids_1;
1238         TALLOC_CTX *_mem_save_sids_0;
1239         TALLOC_CTX *_mem_save_sids_1;
1240         if (ndr_flags & NDR_SCALARS) {
1241                 NDR_CHECK(ndr_pull_align(ndr, 4));
1242                 NDR_CHECK(ndr_pull_netr_SamBaseInfo(ndr, NDR_SCALARS, &r->base));
1243                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sidcount));
1244                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sids));
1245                 if (_ptr_sids) {
1246                         NDR_PULL_ALLOC(ndr, r->sids);
1247                 } else {
1248                         r->sids = NULL;
1249                 }
1250         }
1251         if (ndr_flags & NDR_BUFFERS) {
1252                 NDR_CHECK(ndr_pull_netr_SamBaseInfo(ndr, NDR_BUFFERS, &r->base));
1253                 if (r->sids) {
1254                         _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
1255                         NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
1256                         NDR_CHECK(ndr_pull_array_size(ndr, &r->sids));
1257                         NDR_PULL_ALLOC_N(ndr, r->sids, ndr_get_array_size(ndr, &r->sids));
1258                         _mem_save_sids_1 = NDR_PULL_GET_MEM_CTX(ndr);
1259                         NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
1260                         for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
1261                                 NDR_CHECK(ndr_pull_netr_SidAttr(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
1262                         }
1263                         for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
1264                                 NDR_CHECK(ndr_pull_netr_SidAttr(ndr, NDR_BUFFERS, &r->sids[cntr_sids_1]));
1265                         }
1266                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_1, 0);
1267                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, 0);
1268                 }
1269                 if (r->sids) {
1270                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->sidcount));
1271                 }
1272         }
1273         return NDR_ERR_SUCCESS;
1274 }
1275
1276 _PUBLIC_ void ndr_print_netr_SamInfo3(struct ndr_print *ndr, const char *name, const struct netr_SamInfo3 *r)
1277 {
1278         uint32_t cntr_sids_1;
1279         ndr_print_struct(ndr, name, "netr_SamInfo3");
1280         ndr->depth++;
1281         ndr_print_netr_SamBaseInfo(ndr, "base", &r->base);
1282         ndr_print_uint32(ndr, "sidcount", r->sidcount);
1283         ndr_print_ptr(ndr, "sids", r->sids);
1284         ndr->depth++;
1285         if (r->sids) {
1286                 ndr->print(ndr, "%s: ARRAY(%d)", "sids", r->sidcount);
1287                 ndr->depth++;
1288                 for (cntr_sids_1=0;cntr_sids_1<r->sidcount;cntr_sids_1++) {
1289                         char *idx_1=NULL;
1290                         asprintf(&idx_1, "[%d]", cntr_sids_1);
1291                         if (idx_1) {
1292                                 ndr_print_netr_SidAttr(ndr, "sids", &r->sids[cntr_sids_1]);
1293                                 free(idx_1);
1294                         }
1295                 }
1296                 ndr->depth--;
1297         }
1298         ndr->depth--;
1299         ndr->depth--;
1300 }
1301
1302 static enum ndr_err_code ndr_push_netr_SamInfo6(struct ndr_push *ndr, int ndr_flags, const struct netr_SamInfo6 *r)
1303 {
1304         uint32_t cntr_sids_1;
1305         uint32_t cntr_unknown4_0;
1306         if (ndr_flags & NDR_SCALARS) {
1307                 NDR_CHECK(ndr_push_align(ndr, 4));
1308                 NDR_CHECK(ndr_push_netr_SamBaseInfo(ndr, NDR_SCALARS, &r->base));
1309                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sidcount));
1310                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sids));
1311                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->forest));
1312                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->principle));
1313                 for (cntr_unknown4_0 = 0; cntr_unknown4_0 < 20; cntr_unknown4_0++) {
1314                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown4[cntr_unknown4_0]));
1315                 }
1316         }
1317         if (ndr_flags & NDR_BUFFERS) {
1318                 NDR_CHECK(ndr_push_netr_SamBaseInfo(ndr, NDR_BUFFERS, &r->base));
1319                 if (r->sids) {
1320                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sidcount));
1321                         for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
1322                                 NDR_CHECK(ndr_push_netr_SidAttr(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
1323                         }
1324                         for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
1325                                 NDR_CHECK(ndr_push_netr_SidAttr(ndr, NDR_BUFFERS, &r->sids[cntr_sids_1]));
1326                         }
1327                 }
1328                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->forest));
1329                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->principle));
1330         }
1331         return NDR_ERR_SUCCESS;
1332 }
1333
1334 static enum ndr_err_code ndr_pull_netr_SamInfo6(struct ndr_pull *ndr, int ndr_flags, struct netr_SamInfo6 *r)
1335 {
1336         uint32_t _ptr_sids;
1337         uint32_t cntr_sids_1;
1338         TALLOC_CTX *_mem_save_sids_0;
1339         TALLOC_CTX *_mem_save_sids_1;
1340         uint32_t cntr_unknown4_0;
1341         if (ndr_flags & NDR_SCALARS) {
1342                 NDR_CHECK(ndr_pull_align(ndr, 4));
1343                 NDR_CHECK(ndr_pull_netr_SamBaseInfo(ndr, NDR_SCALARS, &r->base));
1344                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sidcount));
1345                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sids));
1346                 if (_ptr_sids) {
1347                         NDR_PULL_ALLOC(ndr, r->sids);
1348                 } else {
1349                         r->sids = NULL;
1350                 }
1351                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->forest));
1352                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->principle));
1353                 for (cntr_unknown4_0 = 0; cntr_unknown4_0 < 20; cntr_unknown4_0++) {
1354                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown4[cntr_unknown4_0]));
1355                 }
1356         }
1357         if (ndr_flags & NDR_BUFFERS) {
1358                 NDR_CHECK(ndr_pull_netr_SamBaseInfo(ndr, NDR_BUFFERS, &r->base));
1359                 if (r->sids) {
1360                         _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
1361                         NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
1362                         NDR_CHECK(ndr_pull_array_size(ndr, &r->sids));
1363                         NDR_PULL_ALLOC_N(ndr, r->sids, ndr_get_array_size(ndr, &r->sids));
1364                         _mem_save_sids_1 = NDR_PULL_GET_MEM_CTX(ndr);
1365                         NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
1366                         for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
1367                                 NDR_CHECK(ndr_pull_netr_SidAttr(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
1368                         }
1369                         for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
1370                                 NDR_CHECK(ndr_pull_netr_SidAttr(ndr, NDR_BUFFERS, &r->sids[cntr_sids_1]));
1371                         }
1372                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_1, 0);
1373                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, 0);
1374                 }
1375                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->forest));
1376                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->principle));
1377                 if (r->sids) {
1378                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->sidcount));
1379                 }
1380         }
1381         return NDR_ERR_SUCCESS;
1382 }
1383
1384 _PUBLIC_ void ndr_print_netr_SamInfo6(struct ndr_print *ndr, const char *name, const struct netr_SamInfo6 *r)
1385 {
1386         uint32_t cntr_sids_1;
1387         uint32_t cntr_unknown4_0;
1388         ndr_print_struct(ndr, name, "netr_SamInfo6");
1389         ndr->depth++;
1390         ndr_print_netr_SamBaseInfo(ndr, "base", &r->base);
1391         ndr_print_uint32(ndr, "sidcount", r->sidcount);
1392         ndr_print_ptr(ndr, "sids", r->sids);
1393         ndr->depth++;
1394         if (r->sids) {
1395                 ndr->print(ndr, "%s: ARRAY(%d)", "sids", r->sidcount);
1396                 ndr->depth++;
1397                 for (cntr_sids_1=0;cntr_sids_1<r->sidcount;cntr_sids_1++) {
1398                         char *idx_1=NULL;
1399                         asprintf(&idx_1, "[%d]", cntr_sids_1);
1400                         if (idx_1) {
1401                                 ndr_print_netr_SidAttr(ndr, "sids", &r->sids[cntr_sids_1]);
1402                                 free(idx_1);
1403                         }
1404                 }
1405                 ndr->depth--;
1406         }
1407         ndr->depth--;
1408         ndr_print_lsa_String(ndr, "forest", &r->forest);
1409         ndr_print_lsa_String(ndr, "principle", &r->principle);
1410         ndr->print(ndr, "%s: ARRAY(%d)", "unknown4", 20);
1411         ndr->depth++;
1412         for (cntr_unknown4_0=0;cntr_unknown4_0<20;cntr_unknown4_0++) {
1413                 char *idx_0=NULL;
1414                 asprintf(&idx_0, "[%d]", cntr_unknown4_0);
1415                 if (idx_0) {
1416                         ndr_print_uint32(ndr, "unknown4", r->unknown4[cntr_unknown4_0]);
1417                         free(idx_0);
1418                 }
1419         }
1420         ndr->depth--;
1421         ndr->depth--;
1422 }
1423
1424 static enum ndr_err_code ndr_push_netr_PacInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_PacInfo *r)
1425 {
1426         uint32_t cntr_expansionroom_0;
1427         if (ndr_flags & NDR_SCALARS) {
1428                 NDR_CHECK(ndr_push_align(ndr, 4));
1429                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pac_size));
1430                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->pac));
1431                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->logon_domain));
1432                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->logon_server));
1433                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->principal_name));
1434                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->auth_size));
1435                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->auth));
1436                 NDR_CHECK(ndr_push_netr_UserSessionKey(ndr, NDR_SCALARS, &r->user_session_key));
1437                 for (cntr_expansionroom_0 = 0; cntr_expansionroom_0 < 10; cntr_expansionroom_0++) {
1438                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->expansionroom[cntr_expansionroom_0]));
1439                 }
1440                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
1441                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
1442                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
1443                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
1444         }
1445         if (ndr_flags & NDR_BUFFERS) {
1446                 if (r->pac) {
1447                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pac_size));
1448                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->pac, r->pac_size));
1449                 }
1450                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->logon_domain));
1451                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->logon_server));
1452                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->principal_name));
1453                 if (r->auth) {
1454                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->auth_size));
1455                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->auth, r->auth_size));
1456                 }
1457                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
1458                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
1459                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
1460                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
1461         }
1462         return NDR_ERR_SUCCESS;
1463 }
1464
1465 static enum ndr_err_code ndr_pull_netr_PacInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_PacInfo *r)
1466 {
1467         uint32_t _ptr_pac;
1468         TALLOC_CTX *_mem_save_pac_0;
1469         uint32_t _ptr_auth;
1470         TALLOC_CTX *_mem_save_auth_0;
1471         uint32_t cntr_expansionroom_0;
1472         if (ndr_flags & NDR_SCALARS) {
1473                 NDR_CHECK(ndr_pull_align(ndr, 4));
1474                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pac_size));
1475                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_pac));
1476                 if (_ptr_pac) {
1477                         NDR_PULL_ALLOC(ndr, r->pac);
1478                 } else {
1479                         r->pac = NULL;
1480                 }
1481                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->logon_domain));
1482                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->logon_server));
1483                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->principal_name));
1484                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->auth_size));
1485                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_auth));
1486                 if (_ptr_auth) {
1487                         NDR_PULL_ALLOC(ndr, r->auth);
1488                 } else {
1489                         r->auth = NULL;
1490                 }
1491                 NDR_CHECK(ndr_pull_netr_UserSessionKey(ndr, NDR_SCALARS, &r->user_session_key));
1492                 for (cntr_expansionroom_0 = 0; cntr_expansionroom_0 < 10; cntr_expansionroom_0++) {
1493                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->expansionroom[cntr_expansionroom_0]));
1494                 }
1495                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
1496                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
1497                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
1498                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
1499         }
1500         if (ndr_flags & NDR_BUFFERS) {
1501                 if (r->pac) {
1502                         _mem_save_pac_0 = NDR_PULL_GET_MEM_CTX(ndr);
1503                         NDR_PULL_SET_MEM_CTX(ndr, r->pac, 0);
1504                         NDR_CHECK(ndr_pull_array_size(ndr, &r->pac));
1505                         NDR_PULL_ALLOC_N(ndr, r->pac, ndr_get_array_size(ndr, &r->pac));
1506                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->pac, ndr_get_array_size(ndr, &r->pac)));
1507                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_pac_0, 0);
1508                 }
1509                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->logon_domain));
1510                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->logon_server));
1511                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->principal_name));
1512                 if (r->auth) {
1513                         _mem_save_auth_0 = NDR_PULL_GET_MEM_CTX(ndr);
1514                         NDR_PULL_SET_MEM_CTX(ndr, r->auth, 0);
1515                         NDR_CHECK(ndr_pull_array_size(ndr, &r->auth));
1516                         NDR_PULL_ALLOC_N(ndr, r->auth, ndr_get_array_size(ndr, &r->auth));
1517                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->auth, ndr_get_array_size(ndr, &r->auth)));
1518                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_auth_0, 0);
1519                 }
1520                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
1521                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
1522                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
1523                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
1524                 if (r->pac) {
1525                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->pac, r->pac_size));
1526                 }
1527                 if (r->auth) {
1528                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->auth, r->auth_size));
1529                 }
1530         }
1531         return NDR_ERR_SUCCESS;
1532 }
1533
1534 _PUBLIC_ void ndr_print_netr_PacInfo(struct ndr_print *ndr, const char *name, const struct netr_PacInfo *r)
1535 {
1536         uint32_t cntr_expansionroom_0;
1537         ndr_print_struct(ndr, name, "netr_PacInfo");
1538         ndr->depth++;
1539         ndr_print_uint32(ndr, "pac_size", r->pac_size);
1540         ndr_print_ptr(ndr, "pac", r->pac);
1541         ndr->depth++;
1542         if (r->pac) {
1543                 ndr_print_array_uint8(ndr, "pac", r->pac, r->pac_size);
1544         }
1545         ndr->depth--;
1546         ndr_print_lsa_String(ndr, "logon_domain", &r->logon_domain);
1547         ndr_print_lsa_String(ndr, "logon_server", &r->logon_server);
1548         ndr_print_lsa_String(ndr, "principal_name", &r->principal_name);
1549         ndr_print_uint32(ndr, "auth_size", r->auth_size);
1550         ndr_print_ptr(ndr, "auth", r->auth);
1551         ndr->depth++;
1552         if (r->auth) {
1553                 ndr_print_array_uint8(ndr, "auth", r->auth, r->auth_size);
1554         }
1555         ndr->depth--;
1556         ndr_print_netr_UserSessionKey(ndr, "user_session_key", &r->user_session_key);
1557         ndr->print(ndr, "%s: ARRAY(%d)", "expansionroom", 10);
1558         ndr->depth++;
1559         for (cntr_expansionroom_0=0;cntr_expansionroom_0<10;cntr_expansionroom_0++) {
1560                 char *idx_0=NULL;
1561                 asprintf(&idx_0, "[%d]", cntr_expansionroom_0);
1562                 if (idx_0) {
1563                         ndr_print_uint32(ndr, "expansionroom", r->expansionroom[cntr_expansionroom_0]);
1564                         free(idx_0);
1565                 }
1566         }
1567         ndr->depth--;
1568         ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
1569         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
1570         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
1571         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
1572         ndr->depth--;
1573 }
1574
1575 _PUBLIC_ enum ndr_err_code ndr_push_netr_Validation(struct ndr_push *ndr, int ndr_flags, const union netr_Validation *r)
1576 {
1577         if (ndr_flags & NDR_SCALARS) {
1578                 int level = ndr_push_get_switch_value(ndr, r);
1579                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level));
1580                 switch (level) {
1581                         case 2: {
1582                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sam2));
1583                         break; }
1584
1585                         case 3: {
1586                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sam3));
1587                         break; }
1588
1589                         case 4: {
1590                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->pac));
1591                         break; }
1592
1593                         case 5: {
1594                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->pac));
1595                         break; }
1596
1597                         case 6: {
1598                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sam6));
1599                         break; }
1600
1601                         default:
1602                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
1603                 }
1604         }
1605         if (ndr_flags & NDR_BUFFERS) {
1606                 int level = ndr_push_get_switch_value(ndr, r);
1607                 switch (level) {
1608                         case 2:
1609                                 if (r->sam2) {
1610                                         NDR_CHECK(ndr_push_netr_SamInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam2));
1611                                 }
1612                         break;
1613
1614                         case 3:
1615                                 if (r->sam3) {
1616                                         NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam3));
1617                                 }
1618                         break;
1619
1620                         case 4:
1621                                 if (r->pac) {
1622                                         NDR_CHECK(ndr_push_netr_PacInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->pac));
1623                                 }
1624                         break;
1625
1626                         case 5:
1627                                 if (r->pac) {
1628                                         NDR_CHECK(ndr_push_netr_PacInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->pac));
1629                                 }
1630                         break;
1631
1632                         case 6:
1633                                 if (r->sam6) {
1634                                         NDR_CHECK(ndr_push_netr_SamInfo6(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam6));
1635                                 }
1636                         break;
1637
1638                         default:
1639                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
1640                 }
1641         }
1642         return NDR_ERR_SUCCESS;
1643 }
1644
1645 _PUBLIC_ enum ndr_err_code ndr_pull_netr_Validation(struct ndr_pull *ndr, int ndr_flags, union netr_Validation *r)
1646 {
1647         int level;
1648         uint16_t _level;
1649         TALLOC_CTX *_mem_save_sam2_0;
1650         TALLOC_CTX *_mem_save_sam3_0;
1651         TALLOC_CTX *_mem_save_pac_0;
1652         TALLOC_CTX *_mem_save_sam6_0;
1653         level = ndr_pull_get_switch_value(ndr, r);
1654         if (ndr_flags & NDR_SCALARS) {
1655                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
1656                 if (_level != level) {
1657                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
1658                 }
1659                 switch (level) {
1660                         case 2: {
1661                                 uint32_t _ptr_sam2;
1662                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sam2));
1663                                 if (_ptr_sam2) {
1664                                         NDR_PULL_ALLOC(ndr, r->sam2);
1665                                 } else {
1666                                         r->sam2 = NULL;
1667                                 }
1668                         break; }
1669
1670                         case 3: {
1671                                 uint32_t _ptr_sam3;
1672                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sam3));
1673                                 if (_ptr_sam3) {
1674                                         NDR_PULL_ALLOC(ndr, r->sam3);
1675                                 } else {
1676                                         r->sam3 = NULL;
1677                                 }
1678                         break; }
1679
1680                         case 4: {
1681                                 uint32_t _ptr_pac;
1682                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_pac));
1683                                 if (_ptr_pac) {
1684                                         NDR_PULL_ALLOC(ndr, r->pac);
1685                                 } else {
1686                                         r->pac = NULL;
1687                                 }
1688                         break; }
1689
1690                         case 5: {
1691                                 uint32_t _ptr_pac;
1692                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_pac));
1693                                 if (_ptr_pac) {
1694                                         NDR_PULL_ALLOC(ndr, r->pac);
1695                                 } else {
1696                                         r->pac = NULL;
1697                                 }
1698                         break; }
1699
1700                         case 6: {
1701                                 uint32_t _ptr_sam6;
1702                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sam6));
1703                                 if (_ptr_sam6) {
1704                                         NDR_PULL_ALLOC(ndr, r->sam6);
1705                                 } else {
1706                                         r->sam6 = NULL;
1707                                 }
1708                         break; }
1709
1710                         default:
1711                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
1712                 }
1713         }
1714         if (ndr_flags & NDR_BUFFERS) {
1715                 switch (level) {
1716                         case 2:
1717                                 if (r->sam2) {
1718                                         _mem_save_sam2_0 = NDR_PULL_GET_MEM_CTX(ndr);
1719                                         NDR_PULL_SET_MEM_CTX(ndr, r->sam2, 0);
1720                                         NDR_CHECK(ndr_pull_netr_SamInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam2));
1721                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sam2_0, 0);
1722                                 }
1723                         break;
1724
1725                         case 3:
1726                                 if (r->sam3) {
1727                                         _mem_save_sam3_0 = NDR_PULL_GET_MEM_CTX(ndr);
1728                                         NDR_PULL_SET_MEM_CTX(ndr, r->sam3, 0);
1729                                         NDR_CHECK(ndr_pull_netr_SamInfo3(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam3));
1730                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sam3_0, 0);
1731                                 }
1732                         break;
1733
1734                         case 4:
1735                                 if (r->pac) {
1736                                         _mem_save_pac_0 = NDR_PULL_GET_MEM_CTX(ndr);
1737                                         NDR_PULL_SET_MEM_CTX(ndr, r->pac, 0);
1738                                         NDR_CHECK(ndr_pull_netr_PacInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->pac));
1739                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_pac_0, 0);
1740                                 }
1741                         break;
1742
1743                         case 5:
1744                                 if (r->pac) {
1745                                         _mem_save_pac_0 = NDR_PULL_GET_MEM_CTX(ndr);
1746                                         NDR_PULL_SET_MEM_CTX(ndr, r->pac, 0);
1747                                         NDR_CHECK(ndr_pull_netr_PacInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->pac));
1748                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_pac_0, 0);
1749                                 }
1750                         break;
1751
1752                         case 6:
1753                                 if (r->sam6) {
1754                                         _mem_save_sam6_0 = NDR_PULL_GET_MEM_CTX(ndr);
1755                                         NDR_PULL_SET_MEM_CTX(ndr, r->sam6, 0);
1756                                         NDR_CHECK(ndr_pull_netr_SamInfo6(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam6));
1757                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sam6_0, 0);
1758                                 }
1759                         break;
1760
1761                         default:
1762                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
1763                 }
1764         }
1765         return NDR_ERR_SUCCESS;
1766 }
1767
1768 _PUBLIC_ void ndr_print_netr_Validation(struct ndr_print *ndr, const char *name, const union netr_Validation *r)
1769 {
1770         int level;
1771         level = ndr_print_get_switch_value(ndr, r);
1772         ndr_print_union(ndr, name, level, "netr_Validation");
1773         switch (level) {
1774                 case 2:
1775                         ndr_print_ptr(ndr, "sam2", r->sam2);
1776                         ndr->depth++;
1777                         if (r->sam2) {
1778                                 ndr_print_netr_SamInfo2(ndr, "sam2", r->sam2);
1779                         }
1780                         ndr->depth--;
1781                 break;
1782
1783                 case 3:
1784                         ndr_print_ptr(ndr, "sam3", r->sam3);
1785                         ndr->depth++;
1786                         if (r->sam3) {
1787                                 ndr_print_netr_SamInfo3(ndr, "sam3", r->sam3);
1788                         }
1789                         ndr->depth--;
1790                 break;
1791
1792                 case 4:
1793                         ndr_print_ptr(ndr, "pac", r->pac);
1794                         ndr->depth++;
1795                         if (r->pac) {
1796                                 ndr_print_netr_PacInfo(ndr, "pac", r->pac);
1797                         }
1798                         ndr->depth--;
1799                 break;
1800
1801                 case 5:
1802                         ndr_print_ptr(ndr, "pac", r->pac);
1803                         ndr->depth++;
1804                         if (r->pac) {
1805                                 ndr_print_netr_PacInfo(ndr, "pac", r->pac);
1806                         }
1807                         ndr->depth--;
1808                 break;
1809
1810                 case 6:
1811                         ndr_print_ptr(ndr, "sam6", r->sam6);
1812                         ndr->depth++;
1813                         if (r->sam6) {
1814                                 ndr_print_netr_SamInfo6(ndr, "sam6", r->sam6);
1815                         }
1816                         ndr->depth--;
1817                 break;
1818
1819                 default:
1820                         ndr_print_bad_level(ndr, name, level);
1821         }
1822 }
1823
1824 _PUBLIC_ enum ndr_err_code ndr_push_netr_Credential(struct ndr_push *ndr, int ndr_flags, const struct netr_Credential *r)
1825 {
1826         {
1827                 uint32_t _flags_save_STRUCT = ndr->flags;
1828                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1829                 if (ndr_flags & NDR_SCALARS) {
1830                         NDR_CHECK(ndr_push_align(ndr, 1));
1831                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, 8));
1832                 }
1833                 if (ndr_flags & NDR_BUFFERS) {
1834                 }
1835                 ndr->flags = _flags_save_STRUCT;
1836         }
1837         return NDR_ERR_SUCCESS;
1838 }
1839
1840 _PUBLIC_ enum ndr_err_code ndr_pull_netr_Credential(struct ndr_pull *ndr, int ndr_flags, struct netr_Credential *r)
1841 {
1842         {
1843                 uint32_t _flags_save_STRUCT = ndr->flags;
1844                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1845                 if (ndr_flags & NDR_SCALARS) {
1846                         NDR_CHECK(ndr_pull_align(ndr, 1));
1847                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, 8));
1848                 }
1849                 if (ndr_flags & NDR_BUFFERS) {
1850                 }
1851                 ndr->flags = _flags_save_STRUCT;
1852         }
1853         return NDR_ERR_SUCCESS;
1854 }
1855
1856 _PUBLIC_ void ndr_print_netr_Credential(struct ndr_print *ndr, const char *name, const struct netr_Credential *r)
1857 {
1858         ndr_print_struct(ndr, name, "netr_Credential");
1859         {
1860                 uint32_t _flags_save_STRUCT = ndr->flags;
1861                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1862                 ndr->depth++;
1863                 ndr_print_array_uint8(ndr, "data", r->data, 8);
1864                 ndr->depth--;
1865                 ndr->flags = _flags_save_STRUCT;
1866         }
1867 }
1868
1869 _PUBLIC_ enum ndr_err_code ndr_push_netr_Authenticator(struct ndr_push *ndr, int ndr_flags, const struct netr_Authenticator *r)
1870 {
1871         if (ndr_flags & NDR_SCALARS) {
1872                 NDR_CHECK(ndr_push_align(ndr, 4));
1873                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, &r->cred));
1874                 NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->timestamp));
1875         }
1876         if (ndr_flags & NDR_BUFFERS) {
1877         }
1878         return NDR_ERR_SUCCESS;
1879 }
1880
1881 _PUBLIC_ enum ndr_err_code ndr_pull_netr_Authenticator(struct ndr_pull *ndr, int ndr_flags, struct netr_Authenticator *r)
1882 {
1883         if (ndr_flags & NDR_SCALARS) {
1884                 NDR_CHECK(ndr_pull_align(ndr, 4));
1885                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, &r->cred));
1886                 NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->timestamp));
1887         }
1888         if (ndr_flags & NDR_BUFFERS) {
1889         }
1890         return NDR_ERR_SUCCESS;
1891 }
1892
1893 _PUBLIC_ void ndr_print_netr_Authenticator(struct ndr_print *ndr, const char *name, const struct netr_Authenticator *r)
1894 {
1895         ndr_print_struct(ndr, name, "netr_Authenticator");
1896         ndr->depth++;
1897         ndr_print_netr_Credential(ndr, "cred", &r->cred);
1898         ndr_print_time_t(ndr, "timestamp", r->timestamp);
1899         ndr->depth--;
1900 }
1901
1902 static enum ndr_err_code ndr_push_netr_DELTA_DELETE_USER(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_DELETE_USER *r)
1903 {
1904         if (ndr_flags & NDR_SCALARS) {
1905                 NDR_CHECK(ndr_push_align(ndr, 4));
1906                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->account_name));
1907                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
1908                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
1909                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
1910                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
1911                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
1912                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
1913                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
1914                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
1915         }
1916         if (ndr_flags & NDR_BUFFERS) {
1917                 if (r->account_name) {
1918                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->account_name, CH_UTF16)));
1919                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
1920                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->account_name, CH_UTF16)));
1921                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->account_name, ndr_charset_length(r->account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
1922                 }
1923                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
1924                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
1925                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
1926                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
1927         }
1928         return NDR_ERR_SUCCESS;
1929 }
1930
1931 static enum ndr_err_code ndr_pull_netr_DELTA_DELETE_USER(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_DELETE_USER *r)
1932 {
1933         uint32_t _ptr_account_name;
1934         TALLOC_CTX *_mem_save_account_name_0;
1935         if (ndr_flags & NDR_SCALARS) {
1936                 NDR_CHECK(ndr_pull_align(ndr, 4));
1937                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_account_name));
1938                 if (_ptr_account_name) {
1939                         NDR_PULL_ALLOC(ndr, r->account_name);
1940                 } else {
1941                         r->account_name = NULL;
1942                 }
1943                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
1944                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
1945                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
1946                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
1947                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
1948                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
1949                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
1950                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
1951         }
1952         if (ndr_flags & NDR_BUFFERS) {
1953                 if (r->account_name) {
1954                         _mem_save_account_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
1955                         NDR_PULL_SET_MEM_CTX(ndr, r->account_name, 0);
1956                         NDR_CHECK(ndr_pull_array_size(ndr, &r->account_name));
1957                         NDR_CHECK(ndr_pull_array_length(ndr, &r->account_name));
1958                         if (ndr_get_array_length(ndr, &r->account_name) > ndr_get_array_size(ndr, &r->account_name)) {
1959                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->account_name), ndr_get_array_length(ndr, &r->account_name));
1960                         }
1961                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->account_name), sizeof(uint16_t)));
1962                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->account_name, ndr_get_array_length(ndr, &r->account_name), sizeof(uint16_t), CH_UTF16));
1963                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_account_name_0, 0);
1964                 }
1965                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
1966                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
1967                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
1968                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
1969         }
1970         return NDR_ERR_SUCCESS;
1971 }
1972
1973 _PUBLIC_ void ndr_print_netr_DELTA_DELETE_USER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_USER *r)
1974 {
1975         ndr_print_struct(ndr, name, "netr_DELTA_DELETE_USER");
1976         ndr->depth++;
1977         ndr_print_ptr(ndr, "account_name", r->account_name);
1978         ndr->depth++;
1979         if (r->account_name) {
1980                 ndr_print_string(ndr, "account_name", r->account_name);
1981         }
1982         ndr->depth--;
1983         ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
1984         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
1985         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
1986         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
1987         ndr_print_uint32(ndr, "unknown5", r->unknown5);
1988         ndr_print_uint32(ndr, "unknown6", r->unknown6);
1989         ndr_print_uint32(ndr, "unknown7", r->unknown7);
1990         ndr_print_uint32(ndr, "unknown8", r->unknown8);
1991         ndr->depth--;
1992 }
1993
1994 static enum ndr_err_code ndr_push_netr_USER_KEY16(struct ndr_push *ndr, int ndr_flags, const struct netr_USER_KEY16 *r)
1995 {
1996         if (ndr_flags & NDR_SCALARS) {
1997                 NDR_CHECK(ndr_push_align(ndr, 4));
1998                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
1999                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
2000                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags));
2001                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, &r->pwd));
2002         }
2003         if (ndr_flags & NDR_BUFFERS) {
2004                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_BUFFERS, &r->pwd));
2005         }
2006         return NDR_ERR_SUCCESS;
2007 }
2008
2009 static enum ndr_err_code ndr_pull_netr_USER_KEY16(struct ndr_pull *ndr, int ndr_flags, struct netr_USER_KEY16 *r)
2010 {
2011         if (ndr_flags & NDR_SCALARS) {
2012                 NDR_CHECK(ndr_pull_align(ndr, 4));
2013                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
2014                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
2015                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags));
2016                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, &r->pwd));
2017         }
2018         if (ndr_flags & NDR_BUFFERS) {
2019                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_BUFFERS, &r->pwd));
2020         }
2021         return NDR_ERR_SUCCESS;
2022 }
2023
2024 _PUBLIC_ void ndr_print_netr_USER_KEY16(struct ndr_print *ndr, const char *name, const struct netr_USER_KEY16 *r)
2025 {
2026         ndr_print_struct(ndr, name, "netr_USER_KEY16");
2027         ndr->depth++;
2028         ndr_print_uint16(ndr, "length", r->length);
2029         ndr_print_uint16(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->length:r->size);
2030         ndr_print_uint32(ndr, "flags", r->flags);
2031         ndr_print_samr_Password(ndr, "pwd", &r->pwd);
2032         ndr->depth--;
2033 }
2034
2035 static enum ndr_err_code ndr_push_netr_PasswordHistory(struct ndr_push *ndr, int ndr_flags, const struct netr_PasswordHistory *r)
2036 {
2037         if (ndr_flags & NDR_SCALARS) {
2038                 NDR_CHECK(ndr_push_align(ndr, 4));
2039                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->nt_length));
2040                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->nt_length));
2041                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->nt_flags));
2042                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->lm_length));
2043                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->lm_length));
2044                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lm_flags));
2045                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->nt_history, r->nt_length));
2046                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->lm_history, r->lm_length));
2047         }
2048         if (ndr_flags & NDR_BUFFERS) {
2049         }
2050         return NDR_ERR_SUCCESS;
2051 }
2052
2053 static enum ndr_err_code ndr_pull_netr_PasswordHistory(struct ndr_pull *ndr, int ndr_flags, struct netr_PasswordHistory *r)
2054 {
2055         if (ndr_flags & NDR_SCALARS) {
2056                 NDR_CHECK(ndr_pull_align(ndr, 4));
2057                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->nt_length));
2058                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->nt_size));
2059                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->nt_flags));
2060                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->lm_length));
2061                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->lm_size));
2062                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lm_flags));
2063                 NDR_PULL_ALLOC_N(ndr, r->nt_history, r->nt_length);
2064                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->nt_history, r->nt_length));
2065                 NDR_PULL_ALLOC_N(ndr, r->lm_history, r->lm_length);
2066                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->lm_history, r->lm_length));
2067         }
2068         if (ndr_flags & NDR_BUFFERS) {
2069         }
2070         return NDR_ERR_SUCCESS;
2071 }
2072
2073 _PUBLIC_ void ndr_print_netr_PasswordHistory(struct ndr_print *ndr, const char *name, const struct netr_PasswordHistory *r)
2074 {
2075         ndr_print_struct(ndr, name, "netr_PasswordHistory");
2076         ndr->depth++;
2077         ndr_print_uint16(ndr, "nt_length", r->nt_length);
2078         ndr_print_uint16(ndr, "nt_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->nt_length:r->nt_size);
2079         ndr_print_uint32(ndr, "nt_flags", r->nt_flags);
2080         ndr_print_uint16(ndr, "lm_length", r->lm_length);
2081         ndr_print_uint16(ndr, "lm_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->lm_length:r->lm_size);
2082         ndr_print_uint32(ndr, "lm_flags", r->lm_flags);
2083         ndr_print_array_uint8(ndr, "nt_history", r->nt_history, r->nt_length);
2084         ndr_print_array_uint8(ndr, "lm_history", r->lm_history, r->lm_length);
2085         ndr->depth--;
2086 }
2087
2088 static enum ndr_err_code ndr_push_netr_USER_KEYS2(struct ndr_push *ndr, int ndr_flags, const struct netr_USER_KEYS2 *r)
2089 {
2090         if (ndr_flags & NDR_SCALARS) {
2091                 NDR_CHECK(ndr_push_align(ndr, 4));
2092                 NDR_CHECK(ndr_push_netr_USER_KEY16(ndr, NDR_SCALARS, &r->lmpassword));
2093                 NDR_CHECK(ndr_push_netr_USER_KEY16(ndr, NDR_SCALARS, &r->ntpassword));
2094                 NDR_CHECK(ndr_push_netr_PasswordHistory(ndr, NDR_SCALARS, &r->history));
2095         }
2096         if (ndr_flags & NDR_BUFFERS) {
2097                 NDR_CHECK(ndr_push_netr_USER_KEY16(ndr, NDR_BUFFERS, &r->lmpassword));
2098                 NDR_CHECK(ndr_push_netr_USER_KEY16(ndr, NDR_BUFFERS, &r->ntpassword));
2099         }
2100         return NDR_ERR_SUCCESS;
2101 }
2102
2103 static enum ndr_err_code ndr_pull_netr_USER_KEYS2(struct ndr_pull *ndr, int ndr_flags, struct netr_USER_KEYS2 *r)
2104 {
2105         if (ndr_flags & NDR_SCALARS) {
2106                 NDR_CHECK(ndr_pull_align(ndr, 4));
2107                 NDR_CHECK(ndr_pull_netr_USER_KEY16(ndr, NDR_SCALARS, &r->lmpassword));
2108                 NDR_CHECK(ndr_pull_netr_USER_KEY16(ndr, NDR_SCALARS, &r->ntpassword));
2109                 NDR_CHECK(ndr_pull_netr_PasswordHistory(ndr, NDR_SCALARS, &r->history));
2110         }
2111         if (ndr_flags & NDR_BUFFERS) {
2112                 NDR_CHECK(ndr_pull_netr_USER_KEY16(ndr, NDR_BUFFERS, &r->lmpassword));
2113                 NDR_CHECK(ndr_pull_netr_USER_KEY16(ndr, NDR_BUFFERS, &r->ntpassword));
2114         }
2115         return NDR_ERR_SUCCESS;
2116 }
2117
2118 _PUBLIC_ void ndr_print_netr_USER_KEYS2(struct ndr_print *ndr, const char *name, const struct netr_USER_KEYS2 *r)
2119 {
2120         ndr_print_struct(ndr, name, "netr_USER_KEYS2");
2121         ndr->depth++;
2122         ndr_print_netr_USER_KEY16(ndr, "lmpassword", &r->lmpassword);
2123         ndr_print_netr_USER_KEY16(ndr, "ntpassword", &r->ntpassword);
2124         ndr_print_netr_PasswordHistory(ndr, "history", &r->history);
2125         ndr->depth--;
2126 }
2127
2128 static enum ndr_err_code ndr_push_netr_USER_KEY_UNION(struct ndr_push *ndr, int ndr_flags, const struct netr_USER_KEY_UNION *r)
2129 {
2130         if (ndr_flags & NDR_SCALARS) {
2131                 NDR_CHECK(ndr_push_align(ndr, 4));
2132                 NDR_CHECK(ndr_push_netr_USER_KEYS2(ndr, NDR_SCALARS, &r->keys2));
2133         }
2134         if (ndr_flags & NDR_BUFFERS) {
2135                 NDR_CHECK(ndr_push_netr_USER_KEYS2(ndr, NDR_BUFFERS, &r->keys2));
2136         }
2137         return NDR_ERR_SUCCESS;
2138 }
2139
2140 static enum ndr_err_code ndr_pull_netr_USER_KEY_UNION(struct ndr_pull *ndr, int ndr_flags, struct netr_USER_KEY_UNION *r)
2141 {
2142         if (ndr_flags & NDR_SCALARS) {
2143                 NDR_CHECK(ndr_pull_align(ndr, 4));
2144                 NDR_CHECK(ndr_pull_netr_USER_KEYS2(ndr, NDR_SCALARS, &r->keys2));
2145         }
2146         if (ndr_flags & NDR_BUFFERS) {
2147                 NDR_CHECK(ndr_pull_netr_USER_KEYS2(ndr, NDR_BUFFERS, &r->keys2));
2148         }
2149         return NDR_ERR_SUCCESS;
2150 }
2151
2152 _PUBLIC_ void ndr_print_netr_USER_KEY_UNION(struct ndr_print *ndr, const char *name, const struct netr_USER_KEY_UNION *r)
2153 {
2154         ndr_print_struct(ndr, name, "netr_USER_KEY_UNION");
2155         ndr->depth++;
2156         ndr_print_netr_USER_KEYS2(ndr, "keys2", &r->keys2);
2157         ndr->depth--;
2158 }
2159
2160 _PUBLIC_ enum ndr_err_code ndr_push_netr_USER_KEYS(struct ndr_push *ndr, int ndr_flags, const struct netr_USER_KEYS *r)
2161 {
2162         if (ndr_flags & NDR_SCALARS) {
2163                 NDR_CHECK(ndr_push_align(ndr, 4));
2164                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
2165                 NDR_CHECK(ndr_push_netr_USER_KEY_UNION(ndr, NDR_SCALARS, &r->keys));
2166         }
2167         if (ndr_flags & NDR_BUFFERS) {
2168                 NDR_CHECK(ndr_push_netr_USER_KEY_UNION(ndr, NDR_BUFFERS, &r->keys));
2169         }
2170         return NDR_ERR_SUCCESS;
2171 }
2172
2173 _PUBLIC_ enum ndr_err_code ndr_pull_netr_USER_KEYS(struct ndr_pull *ndr, int ndr_flags, struct netr_USER_KEYS *r)
2174 {
2175         if (ndr_flags & NDR_SCALARS) {
2176                 NDR_CHECK(ndr_pull_align(ndr, 4));
2177                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
2178                 NDR_CHECK(ndr_pull_netr_USER_KEY_UNION(ndr, NDR_SCALARS, &r->keys));
2179         }
2180         if (ndr_flags & NDR_BUFFERS) {
2181                 NDR_CHECK(ndr_pull_netr_USER_KEY_UNION(ndr, NDR_BUFFERS, &r->keys));
2182         }
2183         return NDR_ERR_SUCCESS;
2184 }
2185
2186 _PUBLIC_ void ndr_print_netr_USER_KEYS(struct ndr_print *ndr, const char *name, const struct netr_USER_KEYS *r)
2187 {
2188         ndr_print_struct(ndr, name, "netr_USER_KEYS");
2189         ndr->depth++;
2190         ndr_print_uint32(ndr, "version", r->version);
2191         ndr_print_netr_USER_KEY_UNION(ndr, "keys", &r->keys);
2192         ndr->depth--;
2193 }
2194
2195 static enum ndr_err_code ndr_push_netr_USER_PRIVATE_INFO(struct ndr_push *ndr, int ndr_flags, const struct netr_USER_PRIVATE_INFO *r)
2196 {
2197         if (ndr_flags & NDR_SCALARS) {
2198                 NDR_CHECK(ndr_push_align(ndr, 4));
2199                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->SensitiveDataFlag));
2200                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->DataLength));
2201                 {
2202                         uint32_t _flags_save_uint8 = ndr->flags;
2203                         ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
2204                         NDR_CHECK(ndr_push_unique_ptr(ndr, r->SensitiveData));
2205                         ndr->flags = _flags_save_uint8;
2206                 }
2207         }
2208         if (ndr_flags & NDR_BUFFERS) {
2209                 {
2210                         uint32_t _flags_save_uint8 = ndr->flags;
2211                         ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
2212                         if (r->SensitiveData) {
2213                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->DataLength));
2214                                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->SensitiveData, r->DataLength));
2215                         }
2216                         ndr->flags = _flags_save_uint8;
2217                 }
2218         }
2219         return NDR_ERR_SUCCESS;
2220 }
2221
2222 static enum ndr_err_code ndr_pull_netr_USER_PRIVATE_INFO(struct ndr_pull *ndr, int ndr_flags, struct netr_USER_PRIVATE_INFO *r)
2223 {
2224         uint32_t _ptr_SensitiveData;
2225         TALLOC_CTX *_mem_save_SensitiveData_0;
2226         if (ndr_flags & NDR_SCALARS) {
2227                 NDR_CHECK(ndr_pull_align(ndr, 4));
2228                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->SensitiveDataFlag));
2229                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->DataLength));
2230                 {
2231                         uint32_t _flags_save_uint8 = ndr->flags;
2232                         ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
2233                         NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_SensitiveData));
2234                         if (_ptr_SensitiveData) {
2235                                 NDR_PULL_ALLOC(ndr, r->SensitiveData);
2236                         } else {
2237                                 r->SensitiveData = NULL;
2238                         }
2239                         ndr->flags = _flags_save_uint8;
2240                 }
2241         }
2242         if (ndr_flags & NDR_BUFFERS) {
2243                 {
2244                         uint32_t _flags_save_uint8 = ndr->flags;
2245                         ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
2246                         if (r->SensitiveData) {
2247                                 _mem_save_SensitiveData_0 = NDR_PULL_GET_MEM_CTX(ndr);
2248                                 NDR_PULL_SET_MEM_CTX(ndr, r->SensitiveData, 0);
2249                                 NDR_CHECK(ndr_pull_array_size(ndr, &r->SensitiveData));
2250                                 NDR_PULL_ALLOC_N(ndr, r->SensitiveData, ndr_get_array_size(ndr, &r->SensitiveData));
2251                                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->SensitiveData, ndr_get_array_size(ndr, &r->SensitiveData)));
2252                                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_SensitiveData_0, 0);
2253                         }
2254                         ndr->flags = _flags_save_uint8;
2255                 }
2256                 if (r->SensitiveData) {
2257                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->SensitiveData, r->DataLength));
2258                 }
2259         }
2260         return NDR_ERR_SUCCESS;
2261 }
2262
2263 _PUBLIC_ void ndr_print_netr_USER_PRIVATE_INFO(struct ndr_print *ndr, const char *name, const struct netr_USER_PRIVATE_INFO *r)
2264 {
2265         ndr_print_struct(ndr, name, "netr_USER_PRIVATE_INFO");
2266         ndr->depth++;
2267         ndr_print_uint8(ndr, "SensitiveDataFlag", r->SensitiveDataFlag);
2268         ndr_print_uint32(ndr, "DataLength", r->DataLength);
2269         ndr_print_ptr(ndr, "SensitiveData", r->SensitiveData);
2270         ndr->depth++;
2271         if (r->SensitiveData) {
2272                 ndr_print_array_uint8(ndr, "SensitiveData", r->SensitiveData, r->DataLength);
2273         }
2274         ndr->depth--;
2275         ndr->depth--;
2276 }
2277
2278 static enum ndr_err_code ndr_push_netr_DELTA_USER(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_USER *r)
2279 {
2280         if (ndr_flags & NDR_SCALARS) {
2281                 NDR_CHECK(ndr_push_align(ndr, 4));
2282                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->account_name));
2283                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->full_name));
2284                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
2285                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->primary_gid));
2286                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->home_directory));
2287                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->home_drive));
2288                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->logon_script));
2289                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->description));
2290                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->workstations));
2291                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_logon));
2292                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_logoff));
2293                 NDR_CHECK(ndr_push_samr_LogonHours(ndr, NDR_SCALARS, &r->logon_hours));
2294                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->bad_password_count));
2295                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->logon_count));
2296                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_password_change));
2297                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->acct_expiry));
2298                 NDR_CHECK(ndr_push_samr_AcctFlags(ndr, NDR_SCALARS, r->acct_flags));
2299                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, &r->lmpassword));
2300                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, &r->ntpassword));
2301                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->nt_password_present));
2302                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->lm_password_present));
2303                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->password_expired));
2304                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->comment));
2305                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->parameters));
2306                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->country_code));
2307                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->code_page));
2308                 NDR_CHECK(ndr_push_netr_USER_PRIVATE_INFO(ndr, NDR_SCALARS, &r->user_private_info));
2309                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
2310                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
2311                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->profile_path));
2312                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2313                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2314                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2315                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
2316                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
2317                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
2318                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
2319         }
2320         if (ndr_flags & NDR_BUFFERS) {
2321                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->account_name));
2322                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->full_name));
2323                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->home_directory));
2324                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->home_drive));
2325                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->logon_script));
2326                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->description));
2327                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->workstations));
2328                 NDR_CHECK(ndr_push_samr_LogonHours(ndr, NDR_BUFFERS, &r->logon_hours));
2329                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_BUFFERS, &r->lmpassword));
2330                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_BUFFERS, &r->ntpassword));
2331                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->comment));
2332                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->parameters));
2333                 NDR_CHECK(ndr_push_netr_USER_PRIVATE_INFO(ndr, NDR_BUFFERS, &r->user_private_info));
2334                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
2335                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->profile_path));
2336                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2337                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2338                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2339         }
2340         return NDR_ERR_SUCCESS;
2341 }
2342
2343 static enum ndr_err_code ndr_pull_netr_DELTA_USER(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_USER *r)
2344 {
2345         if (ndr_flags & NDR_SCALARS) {
2346                 NDR_CHECK(ndr_pull_align(ndr, 4));
2347                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->account_name));
2348                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->full_name));
2349                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
2350                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->primary_gid));
2351                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->home_directory));
2352                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->home_drive));
2353                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->logon_script));
2354                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->description));
2355                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->workstations));
2356                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_logon));
2357                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_logoff));
2358                 NDR_CHECK(ndr_pull_samr_LogonHours(ndr, NDR_SCALARS, &r->logon_hours));
2359                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->bad_password_count));
2360                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->logon_count));
2361                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_password_change));
2362                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->acct_expiry));
2363                 NDR_CHECK(ndr_pull_samr_AcctFlags(ndr, NDR_SCALARS, &r->acct_flags));
2364                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, &r->lmpassword));
2365                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, &r->ntpassword));
2366                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->nt_password_present));
2367                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->lm_password_present));
2368                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->password_expired));
2369                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->comment));
2370                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->parameters));
2371                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->country_code));
2372                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->code_page));
2373                 NDR_CHECK(ndr_pull_netr_USER_PRIVATE_INFO(ndr, NDR_SCALARS, &r->user_private_info));
2374                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
2375                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
2376                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->profile_path));
2377                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2378                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2379                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2380                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
2381                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
2382                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
2383                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
2384         }
2385         if (ndr_flags & NDR_BUFFERS) {
2386                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->account_name));
2387                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->full_name));
2388                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->home_directory));
2389                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->home_drive));
2390                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->logon_script));
2391                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->description));
2392                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->workstations));
2393                 NDR_CHECK(ndr_pull_samr_LogonHours(ndr, NDR_BUFFERS, &r->logon_hours));
2394                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_BUFFERS, &r->lmpassword));
2395                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_BUFFERS, &r->ntpassword));
2396                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->comment));
2397                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->parameters));
2398                 NDR_CHECK(ndr_pull_netr_USER_PRIVATE_INFO(ndr, NDR_BUFFERS, &r->user_private_info));
2399                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
2400                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->profile_path));
2401                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2402                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2403                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2404         }
2405         return NDR_ERR_SUCCESS;
2406 }
2407
2408 _PUBLIC_ void ndr_print_netr_DELTA_USER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_USER *r)
2409 {
2410         ndr_print_struct(ndr, name, "netr_DELTA_USER");
2411         ndr->depth++;
2412         ndr_print_lsa_String(ndr, "account_name", &r->account_name);
2413         ndr_print_lsa_String(ndr, "full_name", &r->full_name);
2414         ndr_print_uint32(ndr, "rid", r->rid);
2415         ndr_print_uint32(ndr, "primary_gid", r->primary_gid);
2416         ndr_print_lsa_String(ndr, "home_directory", &r->home_directory);
2417         ndr_print_lsa_String(ndr, "home_drive", &r->home_drive);
2418         ndr_print_lsa_String(ndr, "logon_script", &r->logon_script);
2419         ndr_print_lsa_String(ndr, "description", &r->description);
2420         ndr_print_lsa_String(ndr, "workstations", &r->workstations);
2421         ndr_print_NTTIME(ndr, "last_logon", r->last_logon);
2422         ndr_print_NTTIME(ndr, "last_logoff", r->last_logoff);
2423         ndr_print_samr_LogonHours(ndr, "logon_hours", &r->logon_hours);
2424         ndr_print_uint16(ndr, "bad_password_count", r->bad_password_count);
2425         ndr_print_uint16(ndr, "logon_count", r->logon_count);
2426         ndr_print_NTTIME(ndr, "last_password_change", r->last_password_change);
2427         ndr_print_NTTIME(ndr, "acct_expiry", r->acct_expiry);
2428         ndr_print_samr_AcctFlags(ndr, "acct_flags", r->acct_flags);
2429         ndr_print_samr_Password(ndr, "lmpassword", &r->lmpassword);
2430         ndr_print_samr_Password(ndr, "ntpassword", &r->ntpassword);
2431         ndr_print_uint8(ndr, "nt_password_present", r->nt_password_present);
2432         ndr_print_uint8(ndr, "lm_password_present", r->lm_password_present);
2433         ndr_print_uint8(ndr, "password_expired", r->password_expired);
2434         ndr_print_lsa_String(ndr, "comment", &r->comment);
2435         ndr_print_lsa_String(ndr, "parameters", &r->parameters);
2436         ndr_print_uint16(ndr, "country_code", r->country_code);
2437         ndr_print_uint16(ndr, "code_page", r->code_page);
2438         ndr_print_netr_USER_PRIVATE_INFO(ndr, "user_private_info", &r->user_private_info);
2439         ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
2440         ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
2441         ndr_print_lsa_String(ndr, "profile_path", &r->profile_path);
2442         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
2443         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
2444         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
2445         ndr_print_uint32(ndr, "unknown5", r->unknown5);
2446         ndr_print_uint32(ndr, "unknown6", r->unknown6);
2447         ndr_print_uint32(ndr, "unknown7", r->unknown7);
2448         ndr_print_uint32(ndr, "unknown8", r->unknown8);
2449         ndr->depth--;
2450 }
2451
2452 static enum ndr_err_code ndr_push_netr_DELTA_DOMAIN(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_DOMAIN *r)
2453 {
2454         if (ndr_flags & NDR_SCALARS) {
2455                 NDR_CHECK(ndr_push_align(ndr, 4));
2456                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
2457                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->comment));
2458                 NDR_CHECK(ndr_push_dlong(ndr, NDR_SCALARS, r->force_logoff_time));
2459                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->min_password_length));
2460                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->password_history_length));
2461                 NDR_CHECK(ndr_push_dlong(ndr, NDR_SCALARS, r->max_password_age));
2462                 NDR_CHECK(ndr_push_dlong(ndr, NDR_SCALARS, r->min_password_age));
2463                 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->sequence_num));
2464                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->domain_create_time));
2465                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
2466                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
2467                 NDR_CHECK(ndr_push_netr_AcctLockStr(ndr, NDR_SCALARS, &r->account_lockout));
2468                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2469                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2470                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2471                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->logon_to_chgpass));
2472                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
2473                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
2474                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
2475         }
2476         if (ndr_flags & NDR_BUFFERS) {
2477                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
2478                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->comment));
2479                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
2480                 NDR_CHECK(ndr_push_netr_AcctLockStr(ndr, NDR_BUFFERS, &r->account_lockout));
2481                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2482                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2483                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2484         }
2485         return NDR_ERR_SUCCESS;
2486 }
2487
2488 static enum ndr_err_code ndr_pull_netr_DELTA_DOMAIN(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_DOMAIN *r)
2489 {
2490         if (ndr_flags & NDR_SCALARS) {
2491                 NDR_CHECK(ndr_pull_align(ndr, 4));
2492                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
2493                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->comment));
2494                 NDR_CHECK(ndr_pull_dlong(ndr, NDR_SCALARS, &r->force_logoff_time));
2495                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->min_password_length));
2496                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->password_history_length));
2497                 NDR_CHECK(ndr_pull_dlong(ndr, NDR_SCALARS, &r->max_password_age));
2498                 NDR_CHECK(ndr_pull_dlong(ndr, NDR_SCALARS, &r->min_password_age));
2499                 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->sequence_num));
2500                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->domain_create_time));
2501                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
2502                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
2503                 NDR_CHECK(ndr_pull_netr_AcctLockStr(ndr, NDR_SCALARS, &r->account_lockout));
2504                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2505                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2506                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2507                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->logon_to_chgpass));
2508                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
2509                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
2510                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
2511         }
2512         if (ndr_flags & NDR_BUFFERS) {
2513                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
2514                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->comment));
2515                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
2516                 NDR_CHECK(ndr_pull_netr_AcctLockStr(ndr, NDR_BUFFERS, &r->account_lockout));
2517                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2518                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2519                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2520         }
2521         return NDR_ERR_SUCCESS;
2522 }
2523
2524 _PUBLIC_ void ndr_print_netr_DELTA_DOMAIN(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DOMAIN *r)
2525 {
2526         ndr_print_struct(ndr, name, "netr_DELTA_DOMAIN");
2527         ndr->depth++;
2528         ndr_print_lsa_String(ndr, "domain_name", &r->domain_name);
2529         ndr_print_lsa_String(ndr, "comment", &r->comment);
2530         ndr_print_dlong(ndr, "force_logoff_time", r->force_logoff_time);
2531         ndr_print_uint16(ndr, "min_password_length", r->min_password_length);
2532         ndr_print_uint16(ndr, "password_history_length", r->password_history_length);
2533         ndr_print_dlong(ndr, "max_password_age", r->max_password_age);
2534         ndr_print_dlong(ndr, "min_password_age", r->min_password_age);
2535         ndr_print_udlong(ndr, "sequence_num", r->sequence_num);
2536         ndr_print_NTTIME(ndr, "domain_create_time", r->domain_create_time);
2537         ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
2538         ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
2539         ndr_print_netr_AcctLockStr(ndr, "account_lockout", &r->account_lockout);
2540         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
2541         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
2542         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
2543         ndr_print_uint32(ndr, "logon_to_chgpass", r->logon_to_chgpass);
2544         ndr_print_uint32(ndr, "unknown6", r->unknown6);
2545         ndr_print_uint32(ndr, "unknown7", r->unknown7);
2546         ndr_print_uint32(ndr, "unknown8", r->unknown8);
2547         ndr->depth--;
2548 }
2549
2550 static enum ndr_err_code ndr_push_netr_DELTA_GROUP(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_GROUP *r)
2551 {
2552         if (ndr_flags & NDR_SCALARS) {
2553                 NDR_CHECK(ndr_push_align(ndr, 4));
2554                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->group_name));
2555                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
2556                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attributes));
2557                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->description));
2558                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
2559                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
2560                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
2561                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2562                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2563                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2564                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
2565                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
2566                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
2567                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
2568         }
2569         if (ndr_flags & NDR_BUFFERS) {
2570                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->group_name));
2571                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->description));
2572                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
2573                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
2574                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2575                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2576                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2577         }
2578         return NDR_ERR_SUCCESS;
2579 }
2580
2581 static enum ndr_err_code ndr_pull_netr_DELTA_GROUP(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_GROUP *r)
2582 {
2583         if (ndr_flags & NDR_SCALARS) {
2584                 NDR_CHECK(ndr_pull_align(ndr, 4));
2585                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->group_name));
2586                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
2587                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attributes));
2588                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->description));
2589                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
2590                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
2591                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
2592                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2593                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2594                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2595                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
2596                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
2597                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
2598                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
2599         }
2600         if (ndr_flags & NDR_BUFFERS) {
2601                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->group_name));
2602                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->description));
2603                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
2604                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
2605                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2606                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2607                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2608         }
2609         return NDR_ERR_SUCCESS;
2610 }
2611
2612 _PUBLIC_ void ndr_print_netr_DELTA_GROUP(struct ndr_print *ndr, const char *name, const struct netr_DELTA_GROUP *r)
2613 {
2614         ndr_print_struct(ndr, name, "netr_DELTA_GROUP");
2615         ndr->depth++;
2616         ndr_print_lsa_String(ndr, "group_name", &r->group_name);
2617         ndr_print_uint32(ndr, "rid", r->rid);
2618         ndr_print_uint32(ndr, "attributes", r->attributes);
2619         ndr_print_lsa_String(ndr, "description", &r->description);
2620         ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
2621         ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
2622         ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
2623         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
2624         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
2625         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
2626         ndr_print_uint32(ndr, "unknown5", r->unknown5);
2627         ndr_print_uint32(ndr, "unknown6", r->unknown6);
2628         ndr_print_uint32(ndr, "unknown7", r->unknown7);
2629         ndr_print_uint32(ndr, "unknown8", r->unknown8);
2630         ndr->depth--;
2631 }
2632
2633 static enum ndr_err_code ndr_push_netr_DELTA_RENAME(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_RENAME *r)
2634 {
2635         if (ndr_flags & NDR_SCALARS) {
2636                 NDR_CHECK(ndr_push_align(ndr, 4));
2637                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->OldName));
2638                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->NewName));
2639                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
2640                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2641                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2642                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2643                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
2644                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
2645                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
2646                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
2647         }
2648         if (ndr_flags & NDR_BUFFERS) {
2649                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->OldName));
2650                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->NewName));
2651                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
2652                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2653                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2654                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2655         }
2656         return NDR_ERR_SUCCESS;
2657 }
2658
2659 static enum ndr_err_code ndr_pull_netr_DELTA_RENAME(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_RENAME *r)
2660 {
2661         if (ndr_flags & NDR_SCALARS) {
2662                 NDR_CHECK(ndr_pull_align(ndr, 4));
2663                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->OldName));
2664                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->NewName));
2665                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
2666                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2667                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2668                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2669                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
2670                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
2671                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
2672                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
2673         }
2674         if (ndr_flags & NDR_BUFFERS) {
2675                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->OldName));
2676                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->NewName));
2677                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
2678                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2679                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2680                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2681         }
2682         return NDR_ERR_SUCCESS;
2683 }
2684
2685 _PUBLIC_ void ndr_print_netr_DELTA_RENAME(struct ndr_print *ndr, const char *name, const struct netr_DELTA_RENAME *r)
2686 {
2687         ndr_print_struct(ndr, name, "netr_DELTA_RENAME");
2688         ndr->depth++;
2689         ndr_print_lsa_String(ndr, "OldName", &r->OldName);
2690         ndr_print_lsa_String(ndr, "NewName", &r->NewName);
2691         ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
2692         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
2693         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
2694         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
2695         ndr_print_uint32(ndr, "unknown5", r->unknown5);
2696         ndr_print_uint32(ndr, "unknown6", r->unknown6);
2697         ndr_print_uint32(ndr, "unknown7", r->unknown7);
2698         ndr_print_uint32(ndr, "unknown8", r->unknown8);
2699         ndr->depth--;
2700 }
2701
2702 static enum ndr_err_code ndr_push_netr_DELTA_GROUP_MEMBER(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_GROUP_MEMBER *r)
2703 {
2704         uint32_t cntr_rids_1;
2705         uint32_t cntr_attribs_1;
2706         if (ndr_flags & NDR_SCALARS) {
2707                 NDR_CHECK(ndr_push_align(ndr, 4));
2708                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->rids));
2709                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->attribs));
2710                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_rids));
2711                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
2712                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
2713                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown3));
2714                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown4));
2715         }
2716         if (ndr_flags & NDR_BUFFERS) {
2717                 if (r->rids) {
2718                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_rids));
2719                         for (cntr_rids_1 = 0; cntr_rids_1 < r->num_rids; cntr_rids_1++) {
2720                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rids[cntr_rids_1]));
2721                         }
2722                 }
2723                 if (r->attribs) {
2724                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_rids));
2725                         for (cntr_attribs_1 = 0; cntr_attribs_1 < r->num_rids; cntr_attribs_1++) {
2726                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attribs[cntr_attribs_1]));
2727                         }
2728                 }
2729         }
2730         return NDR_ERR_SUCCESS;
2731 }
2732
2733 static enum ndr_err_code ndr_pull_netr_DELTA_GROUP_MEMBER(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_GROUP_MEMBER *r)
2734 {
2735         uint32_t _ptr_rids;
2736         uint32_t cntr_rids_1;
2737         TALLOC_CTX *_mem_save_rids_0;
2738         TALLOC_CTX *_mem_save_rids_1;
2739         uint32_t _ptr_attribs;
2740         uint32_t cntr_attribs_1;
2741         TALLOC_CTX *_mem_save_attribs_0;
2742         TALLOC_CTX *_mem_save_attribs_1;
2743         if (ndr_flags & NDR_SCALARS) {
2744                 NDR_CHECK(ndr_pull_align(ndr, 4));
2745                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rids));
2746                 if (_ptr_rids) {
2747                         NDR_PULL_ALLOC(ndr, r->rids);
2748                 } else {
2749                         r->rids = NULL;
2750                 }
2751                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_attribs));
2752                 if (_ptr_attribs) {
2753                         NDR_PULL_ALLOC(ndr, r->attribs);
2754                 } else {
2755                         r->attribs = NULL;
2756                 }
2757                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_rids));
2758                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
2759                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
2760                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown3));
2761                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown4));
2762         }
2763         if (ndr_flags & NDR_BUFFERS) {
2764                 if (r->rids) {
2765                         _mem_save_rids_0 = NDR_PULL_GET_MEM_CTX(ndr);
2766                         NDR_PULL_SET_MEM_CTX(ndr, r->rids, 0);
2767                         NDR_CHECK(ndr_pull_array_size(ndr, &r->rids));
2768                         NDR_PULL_ALLOC_N(ndr, r->rids, ndr_get_array_size(ndr, &r->rids));
2769                         _mem_save_rids_1 = NDR_PULL_GET_MEM_CTX(ndr);
2770                         NDR_PULL_SET_MEM_CTX(ndr, r->rids, 0);
2771                         for (cntr_rids_1 = 0; cntr_rids_1 < r->num_rids; cntr_rids_1++) {
2772                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rids[cntr_rids_1]));
2773                         }
2774                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rids_1, 0);
2775                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rids_0, 0);
2776                 }
2777                 if (r->attribs) {
2778                         _mem_save_attribs_0 = NDR_PULL_GET_MEM_CTX(ndr);
2779                         NDR_PULL_SET_MEM_CTX(ndr, r->attribs, 0);
2780                         NDR_CHECK(ndr_pull_array_size(ndr, &r->attribs));
2781                         NDR_PULL_ALLOC_N(ndr, r->attribs, ndr_get_array_size(ndr, &r->attribs));
2782                         _mem_save_attribs_1 = NDR_PULL_GET_MEM_CTX(ndr);
2783                         NDR_PULL_SET_MEM_CTX(ndr, r->attribs, 0);
2784                         for (cntr_attribs_1 = 0; cntr_attribs_1 < r->num_rids; cntr_attribs_1++) {
2785                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attribs[cntr_attribs_1]));
2786                         }
2787                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_attribs_1, 0);
2788                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_attribs_0, 0);
2789                 }
2790                 if (r->rids) {
2791                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->rids, r->num_rids));
2792                 }
2793                 if (r->attribs) {
2794                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->attribs, r->num_rids));
2795                 }
2796         }
2797         return NDR_ERR_SUCCESS;
2798 }
2799
2800 _PUBLIC_ void ndr_print_netr_DELTA_GROUP_MEMBER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_GROUP_MEMBER *r)
2801 {
2802         uint32_t cntr_rids_1;
2803         uint32_t cntr_attribs_1;
2804         ndr_print_struct(ndr, name, "netr_DELTA_GROUP_MEMBER");
2805         ndr->depth++;
2806         ndr_print_ptr(ndr, "rids", r->rids);
2807         ndr->depth++;
2808         if (r->rids) {
2809                 ndr->print(ndr, "%s: ARRAY(%d)", "rids", r->num_rids);
2810                 ndr->depth++;
2811                 for (cntr_rids_1=0;cntr_rids_1<r->num_rids;cntr_rids_1++) {
2812                         char *idx_1=NULL;
2813                         asprintf(&idx_1, "[%d]", cntr_rids_1);
2814                         if (idx_1) {
2815                                 ndr_print_uint32(ndr, "rids", r->rids[cntr_rids_1]);
2816                                 free(idx_1);
2817                         }
2818                 }
2819                 ndr->depth--;
2820         }
2821         ndr->depth--;
2822         ndr_print_ptr(ndr, "attribs", r->attribs);
2823         ndr->depth++;
2824         if (r->attribs) {
2825                 ndr->print(ndr, "%s: ARRAY(%d)", "attribs", r->num_rids);
2826                 ndr->depth++;
2827                 for (cntr_attribs_1=0;cntr_attribs_1<r->num_rids;cntr_attribs_1++) {
2828                         char *idx_1=NULL;
2829                         asprintf(&idx_1, "[%d]", cntr_attribs_1);
2830                         if (idx_1) {
2831                                 ndr_print_uint32(ndr, "attribs", r->attribs[cntr_attribs_1]);
2832                                 free(idx_1);
2833                         }
2834                 }
2835                 ndr->depth--;
2836         }
2837         ndr->depth--;
2838         ndr_print_uint32(ndr, "num_rids", r->num_rids);
2839         ndr_print_uint32(ndr, "unknown1", r->unknown1);
2840         ndr_print_uint32(ndr, "unknown2", r->unknown2);
2841         ndr_print_uint32(ndr, "unknown3", r->unknown3);
2842         ndr_print_uint32(ndr, "unknown4", r->unknown4);
2843         ndr->depth--;
2844 }
2845
2846 static enum ndr_err_code ndr_push_netr_DELTA_ALIAS(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_ALIAS *r)
2847 {
2848         if (ndr_flags & NDR_SCALARS) {
2849                 NDR_CHECK(ndr_push_align(ndr, 4));
2850                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->alias_name));
2851                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
2852                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
2853                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
2854                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->description));
2855                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2856                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2857                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2858                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
2859                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
2860                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
2861                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
2862         }
2863         if (ndr_flags & NDR_BUFFERS) {
2864                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->alias_name));
2865                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
2866                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->description));
2867                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2868                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2869                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2870         }
2871         return NDR_ERR_SUCCESS;
2872 }
2873
2874 static enum ndr_err_code ndr_pull_netr_DELTA_ALIAS(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_ALIAS *r)
2875 {
2876         if (ndr_flags & NDR_SCALARS) {
2877                 NDR_CHECK(ndr_pull_align(ndr, 4));
2878                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->alias_name));
2879                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
2880                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
2881                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
2882                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->description));
2883                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2884                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2885                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2886                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
2887                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
2888                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
2889                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
2890         }
2891         if (ndr_flags & NDR_BUFFERS) {
2892                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->alias_name));
2893                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
2894                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->description));
2895                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2896                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2897                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2898         }
2899         return NDR_ERR_SUCCESS;
2900 }
2901
2902 _PUBLIC_ void ndr_print_netr_DELTA_ALIAS(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ALIAS *r)
2903 {
2904         ndr_print_struct(ndr, name, "netr_DELTA_ALIAS");
2905         ndr->depth++;
2906         ndr_print_lsa_String(ndr, "alias_name", &r->alias_name);
2907         ndr_print_uint32(ndr, "rid", r->rid);
2908         ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
2909         ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
2910         ndr_print_lsa_String(ndr, "description", &r->description);
2911         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
2912         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
2913         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
2914         ndr_print_uint32(ndr, "unknown5", r->unknown5);
2915         ndr_print_uint32(ndr, "unknown6", r->unknown6);
2916         ndr_print_uint32(ndr, "unknown7", r->unknown7);
2917         ndr_print_uint32(ndr, "unknown8", r->unknown8);
2918         ndr->depth--;
2919 }
2920
2921 static enum ndr_err_code ndr_push_netr_DELTA_ALIAS_MEMBER(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_ALIAS_MEMBER *r)
2922 {
2923         if (ndr_flags & NDR_SCALARS) {
2924                 NDR_CHECK(ndr_push_align(ndr, 4));
2925                 NDR_CHECK(ndr_push_lsa_SidArray(ndr, NDR_SCALARS, &r->sids));
2926                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
2927                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
2928                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown3));
2929                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown4));
2930         }
2931         if (ndr_flags & NDR_BUFFERS) {
2932                 NDR_CHECK(ndr_push_lsa_SidArray(ndr, NDR_BUFFERS, &r->sids));
2933         }
2934         return NDR_ERR_SUCCESS;
2935 }
2936
2937 static enum ndr_err_code ndr_pull_netr_DELTA_ALIAS_MEMBER(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_ALIAS_MEMBER *r)
2938 {
2939         if (ndr_flags & NDR_SCALARS) {
2940                 NDR_CHECK(ndr_pull_align(ndr, 4));
2941                 NDR_CHECK(ndr_pull_lsa_SidArray(ndr, NDR_SCALARS, &r->sids));
2942                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
2943                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
2944                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown3));
2945                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown4));
2946         }
2947         if (ndr_flags & NDR_BUFFERS) {
2948                 NDR_CHECK(ndr_pull_lsa_SidArray(ndr, NDR_BUFFERS, &r->sids));
2949         }
2950         return NDR_ERR_SUCCESS;
2951 }
2952
2953 _PUBLIC_ void ndr_print_netr_DELTA_ALIAS_MEMBER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ALIAS_MEMBER *r)
2954 {
2955         ndr_print_struct(ndr, name, "netr_DELTA_ALIAS_MEMBER");
2956         ndr->depth++;
2957         ndr_print_lsa_SidArray(ndr, "sids", &r->sids);
2958         ndr_print_uint32(ndr, "unknown1", r->unknown1);
2959         ndr_print_uint32(ndr, "unknown2", r->unknown2);
2960         ndr_print_uint32(ndr, "unknown3", r->unknown3);
2961         ndr_print_uint32(ndr, "unknown4", r->unknown4);
2962         ndr->depth--;
2963 }
2964
2965 static enum ndr_err_code ndr_push_netr_QUOTA_LIMITS(struct ndr_push *ndr, int ndr_flags, const struct netr_QUOTA_LIMITS *r)
2966 {
2967         if (ndr_flags & NDR_SCALARS) {
2968                 NDR_CHECK(ndr_push_align(ndr, 4));
2969                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pagedpoollimit));
2970                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->nonpagedpoollimit));
2971                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minimumworkingsetsize));
2972                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maximumworkingsetsize));
2973                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pagefilelimit));
2974                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->timelimit));
2975         }
2976         if (ndr_flags & NDR_BUFFERS) {
2977         }
2978         return NDR_ERR_SUCCESS;
2979 }
2980
2981 static enum ndr_err_code ndr_pull_netr_QUOTA_LIMITS(struct ndr_pull *ndr, int ndr_flags, struct netr_QUOTA_LIMITS *r)
2982 {
2983         if (ndr_flags & NDR_SCALARS) {
2984                 NDR_CHECK(ndr_pull_align(ndr, 4));
2985                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pagedpoollimit));
2986                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->nonpagedpoollimit));
2987                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minimumworkingsetsize));
2988                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maximumworkingsetsize));
2989                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pagefilelimit));
2990                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->timelimit));
2991         }
2992         if (ndr_flags & NDR_BUFFERS) {
2993         }
2994         return NDR_ERR_SUCCESS;
2995 }
2996
2997 _PUBLIC_ void ndr_print_netr_QUOTA_LIMITS(struct ndr_print *ndr, const char *name, const struct netr_QUOTA_LIMITS *r)
2998 {
2999         ndr_print_struct(ndr, name, "netr_QUOTA_LIMITS");
3000         ndr->depth++;
3001         ndr_print_uint32(ndr, "pagedpoollimit", r->pagedpoollimit);
3002         ndr_print_uint32(ndr, "nonpagedpoollimit", r->nonpagedpoollimit);
3003         ndr_print_uint32(ndr, "minimumworkingsetsize", r->minimumworkingsetsize);
3004         ndr_print_uint32(ndr, "maximumworkingsetsize", r->maximumworkingsetsize);
3005         ndr_print_uint32(ndr, "pagefilelimit", r->pagefilelimit);
3006         ndr_print_NTTIME(ndr, "timelimit", r->timelimit);
3007         ndr->depth--;
3008 }
3009
3010 static enum ndr_err_code ndr_push_netr_DELTA_POLICY(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_POLICY *r)
3011 {
3012         uint32_t cntr_eventauditoptions_1;
3013         if (ndr_flags & NDR_SCALARS) {
3014                 NDR_CHECK(ndr_push_align(ndr, 4));
3015                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxlogsize));
3016                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->auditretentionperiod));
3017                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->auditingmode));
3018                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxauditeventcount));
3019                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->eventauditoptions));
3020                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->primary_domain_name));
3021                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
3022                 NDR_CHECK(ndr_push_netr_QUOTA_LIMITS(ndr, NDR_SCALARS, &r->quota_limits));
3023                 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->sequence_num));
3024                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->db_create_time));
3025                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
3026                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
3027                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
3028                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
3029                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
3030                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
3031                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
3032                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
3033                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
3034                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
3035         }
3036         if (ndr_flags & NDR_BUFFERS) {
3037                 if (r->eventauditoptions) {
3038                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxauditeventcount + 1));
3039                         for (cntr_eventauditoptions_1 = 0; cntr_eventauditoptions_1 < r->maxauditeventcount + 1; cntr_eventauditoptions_1++) {
3040                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->eventauditoptions[cntr_eventauditoptions_1]));
3041                         }
3042                 }
3043                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->primary_domain_name));
3044                 if (r->sid) {
3045                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
3046                 }
3047                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
3048                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
3049                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
3050                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
3051                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
3052         }
3053         return NDR_ERR_SUCCESS;
3054 }
3055
3056 static enum ndr_err_code ndr_pull_netr_DELTA_POLICY(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_POLICY *r)
3057 {
3058         uint32_t _ptr_eventauditoptions;
3059         uint32_t cntr_eventauditoptions_1;
3060         TALLOC_CTX *_mem_save_eventauditoptions_0;
3061         TALLOC_CTX *_mem_save_eventauditoptions_1;
3062         uint32_t _ptr_sid;
3063         TALLOC_CTX *_mem_save_sid_0;
3064         if (ndr_flags & NDR_SCALARS) {
3065                 NDR_CHECK(ndr_pull_align(ndr, 4));
3066                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxlogsize));
3067                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->auditretentionperiod));
3068                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->auditingmode));
3069                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxauditeventcount));
3070                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_eventauditoptions));
3071                 if (_ptr_eventauditoptions) {
3072                         NDR_PULL_ALLOC(ndr, r->eventauditoptions);
3073                 } else {
3074                         r->eventauditoptions = NULL;
3075                 }
3076                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->primary_domain_name));
3077                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
3078                 if (_ptr_sid) {
3079                         NDR_PULL_ALLOC(ndr, r->sid);
3080                 } else {
3081                         r->sid = NULL;
3082                 }
3083                 NDR_CHECK(ndr_pull_netr_QUOTA_LIMITS(ndr, NDR_SCALARS, &r->quota_limits));
3084                 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->sequence_num));
3085                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->db_create_time));
3086                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
3087                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
3088                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
3089                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
3090                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
3091                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
3092                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
3093                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
3094                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
3095                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
3096         }
3097         if (ndr_flags & NDR_BUFFERS) {
3098                 if (r->eventauditoptions) {
3099                         _mem_save_eventauditoptions_0 = NDR_PULL_GET_MEM_CTX(ndr);
3100                         NDR_PULL_SET_MEM_CTX(ndr, r->eventauditoptions, 0);
3101                         NDR_CHECK(ndr_pull_array_size(ndr, &r->eventauditoptions));
3102                         NDR_PULL_ALLOC_N(ndr, r->eventauditoptions, ndr_get_array_size(ndr, &r->eventauditoptions));
3103                         _mem_save_eventauditoptions_1 = NDR_PULL_GET_MEM_CTX(ndr);
3104                         NDR_PULL_SET_MEM_CTX(ndr, r->eventauditoptions, 0);
3105                         for (cntr_eventauditoptions_1 = 0; cntr_eventauditoptions_1 < r->maxauditeventcount + 1; cntr_eventauditoptions_1++) {
3106                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->eventauditoptions[cntr_eventauditoptions_1]));
3107                         }
3108                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_eventauditoptions_1, 0);
3109                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_eventauditoptions_0, 0);
3110                 }
3111                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->primary_domain_name));
3112                 if (r->sid) {
3113                         _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
3114                         NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
3115                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
3116                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
3117                 }
3118                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
3119                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
3120                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
3121                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
3122                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
3123                 if (r->eventauditoptions) {
3124                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->eventauditoptions, r->maxauditeventcount + 1));
3125                 }
3126         }
3127         return NDR_ERR_SUCCESS;
3128 }
3129
3130 _PUBLIC_ void ndr_print_netr_DELTA_POLICY(struct ndr_print *ndr, const char *name, const struct netr_DELTA_POLICY *r)
3131 {
3132         uint32_t cntr_eventauditoptions_1;
3133         ndr_print_struct(ndr, name, "netr_DELTA_POLICY");
3134         ndr->depth++;
3135         ndr_print_uint32(ndr, "maxlogsize", r->maxlogsize);
3136         ndr_print_NTTIME(ndr, "auditretentionperiod", r->auditretentionperiod);
3137         ndr_print_uint8(ndr, "auditingmode", r->auditingmode);
3138         ndr_print_uint32(ndr, "maxauditeventcount", r->maxauditeventcount);
3139         ndr_print_ptr(ndr, "eventauditoptions", r->eventauditoptions);
3140         ndr->depth++;
3141         if (r->eventauditoptions) {
3142                 ndr->print(ndr, "%s: ARRAY(%d)", "eventauditoptions", r->maxauditeventcount + 1);
3143                 ndr->depth++;
3144                 for (cntr_eventauditoptions_1=0;cntr_eventauditoptions_1<r->maxauditeventcount + 1;cntr_eventauditoptions_1++) {
3145                         char *idx_1=NULL;
3146                         asprintf(&idx_1, "[%d]", cntr_eventauditoptions_1);
3147                         if (idx_1) {
3148                                 ndr_print_uint32(ndr, "eventauditoptions", r->eventauditoptions[cntr_eventauditoptions_1]);
3149                                 free(idx_1);
3150                         }
3151                 }
3152                 ndr->depth--;
3153         }
3154         ndr->depth--;
3155         ndr_print_lsa_String(ndr, "primary_domain_name", &r->primary_domain_name);
3156         ndr_print_ptr(ndr, "sid", r->sid);
3157         ndr->depth++;
3158         if (r->sid) {
3159                 ndr_print_dom_sid2(ndr, "sid", r->sid);
3160         }
3161         ndr->depth--;
3162         ndr_print_netr_QUOTA_LIMITS(ndr, "quota_limits", &r->quota_limits);
3163         ndr_print_udlong(ndr, "sequence_num", r->sequence_num);
3164         ndr_print_NTTIME(ndr, "db_create_time", r->db_create_time);
3165         ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
3166         ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
3167         ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
3168         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
3169         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
3170         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
3171         ndr_print_uint32(ndr, "unknown5", r->unknown5);
3172         ndr_print_uint32(ndr, "unknown6", r->unknown6);
3173         ndr_print_uint32(ndr, "unknown7", r->unknown7);
3174         ndr_print_uint32(ndr, "unknown8", r->unknown8);
3175         ndr->depth--;
3176 }
3177
3178 static enum ndr_err_code ndr_push_netr_DELTA_TRUSTED_DOMAIN(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_TRUSTED_DOMAIN *r)
3179 {
3180         uint32_t cntr_controller_names_1;
3181         if (ndr_flags & NDR_SCALARS) {
3182                 NDR_CHECK(ndr_push_align(ndr, 4));
3183                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
3184                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_controllers));
3185                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->controller_names));
3186                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
3187                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
3188                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
3189                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
3190                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
3191                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
3192                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->posix_offset));
3193                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
3194                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
3195                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
3196         }
3197         if (ndr_flags & NDR_BUFFERS) {
3198                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
3199                 if (r->controller_names) {
3200                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_controllers));
3201                         for (cntr_controller_names_1 = 0; cntr_controller_names_1 < r->num_controllers; cntr_controller_names_1++) {
3202                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->controller_names[cntr_controller_names_1]));
3203                         }
3204                         for (cntr_controller_names_1 = 0; cntr_controller_names_1 < r->num_controllers; cntr_controller_names_1++) {
3205                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->controller_names[cntr_controller_names_1]));
3206                         }
3207                 }
3208                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
3209                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
3210                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
3211                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
3212                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
3213         }
3214         return NDR_ERR_SUCCESS;
3215 }
3216
3217 static enum ndr_err_code ndr_pull_netr_DELTA_TRUSTED_DOMAIN(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_TRUSTED_DOMAIN *r)
3218 {
3219         uint32_t _ptr_controller_names;
3220         uint32_t cntr_controller_names_1;
3221         TALLOC_CTX *_mem_save_controller_names_0;
3222         TALLOC_CTX *_mem_save_controller_names_1;
3223         if (ndr_flags & NDR_SCALARS) {
3224                 NDR_CHECK(ndr_pull_align(ndr, 4));
3225                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
3226                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_controllers));
3227                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_controller_names));
3228                 if (_ptr_controller_names) {
3229                         NDR_PULL_ALLOC(ndr, r->controller_names);
3230                 } else {
3231                         r->controller_names = NULL;
3232                 }
3233                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
3234                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
3235                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
3236                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
3237                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
3238                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
3239                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->posix_offset));
3240                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
3241                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
3242                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
3243         }
3244         if (ndr_flags & NDR_BUFFERS) {
3245                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
3246                 if (r->controller_names) {
3247                         _mem_save_controller_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
3248                         NDR_PULL_SET_MEM_CTX(ndr, r->controller_names, 0);
3249                         NDR_CHECK(ndr_pull_array_size(ndr, &r->controller_names));
3250                         NDR_PULL_ALLOC_N(ndr, r->controller_names, ndr_get_array_size(ndr, &r->controller_names));
3251                         _mem_save_controller_names_1 = NDR_PULL_GET_MEM_CTX(ndr);
3252                         NDR_PULL_SET_MEM_CTX(ndr, r->controller_names, 0);
3253                         for (cntr_controller_names_1 = 0; cntr_controller_names_1 < r->num_controllers; cntr_controller_names_1++) {
3254                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->controller_names[cntr_controller_names_1]));
3255                         }
3256                         for (cntr_controller_names_1 = 0; cntr_controller_names_1 < r->num_controllers; cntr_controller_names_1++) {
3257                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->controller_names[cntr_controller_names_1]));
3258                         }
3259                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_controller_names_1, 0);
3260                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_controller_names_0, 0);
3261                 }
3262                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
3263                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
3264                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
3265                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
3266                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
3267                 if (r->controller_names) {
3268                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->controller_names, r->num_controllers));
3269                 }
3270         }
3271         return NDR_ERR_SUCCESS;
3272 }
3273
3274 _PUBLIC_ void ndr_print_netr_DELTA_TRUSTED_DOMAIN(struct ndr_print *ndr, const char *name, const struct netr_DELTA_TRUSTED_DOMAIN *r)
3275 {
3276         uint32_t cntr_controller_names_1;
3277         ndr_print_struct(ndr, name, "netr_DELTA_TRUSTED_DOMAIN");
3278         ndr->depth++;
3279         ndr_print_lsa_String(ndr, "domain_name", &r->domain_name);
3280         ndr_print_uint32(ndr, "num_controllers", r->num_controllers);
3281         ndr_print_ptr(ndr, "controller_names", r->controller_names);
3282         ndr->depth++;
3283         if (r->controller_names) {
3284                 ndr->print(ndr, "%s: ARRAY(%d)", "controller_names", r->num_controllers);
3285                 ndr->depth++;
3286                 for (cntr_controller_names_1=0;cntr_controller_names_1<r->num_controllers;cntr_controller_names_1++) {
3287                         char *idx_1=NULL;
3288                         asprintf(&idx_1, "[%d]", cntr_controller_names_1);
3289                         if (idx_1) {
3290                                 ndr_print_lsa_String(ndr, "controller_names", &r->controller_names[cntr_controller_names_1]);
3291                                 free(idx_1);
3292                         }
3293                 }
3294                 ndr->depth--;
3295         }
3296         ndr->depth--;
3297         ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
3298         ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
3299         ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
3300         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
3301         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
3302         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
3303         ndr_print_uint32(ndr, "posix_offset", r->posix_offset);
3304         ndr_print_uint32(ndr, "unknown6", r->unknown6);
3305         ndr_print_uint32(ndr, "unknown7", r->unknown7);
3306         ndr_print_uint32(ndr, "unknown8", r->unknown8);
3307         ndr->depth--;
3308 }
3309
3310 static enum ndr_err_code ndr_push_netr_DELTA_DELETE_TRUST(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_DELETE_TRUST *r)
3311 {
3312         if (ndr_flags & NDR_SCALARS) {
3313                 NDR_CHECK(ndr_push_align(ndr, 2));
3314                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->unknown));
3315         }
3316         if (ndr_flags & NDR_BUFFERS) {
3317         }
3318         return NDR_ERR_SUCCESS;
3319 }
3320
3321 static enum ndr_err_code ndr_pull_netr_DELTA_DELETE_TRUST(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_DELETE_TRUST *r)
3322 {
3323         if (ndr_flags & NDR_SCALARS) {
3324                 NDR_CHECK(ndr_pull_align(ndr, 2));
3325                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unknown));
3326         }
3327         if (ndr_flags & NDR_BUFFERS) {
3328         }
3329         return NDR_ERR_SUCCESS;
3330 }
3331
3332 _PUBLIC_ void ndr_print_netr_DELTA_DELETE_TRUST(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_TRUST *r)
3333 {
3334         ndr_print_struct(ndr, name, "netr_DELTA_DELETE_TRUST");
3335         ndr->depth++;
3336         ndr_print_uint16(ndr, "unknown", r->unknown);
3337         ndr->depth--;
3338 }
3339
3340 static enum ndr_err_code ndr_push_netr_DELTA_ACCOUNT(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_ACCOUNT *r)
3341 {
3342         uint32_t cntr_privilege_attrib_1;
3343         uint32_t cntr_privilege_name_1;
3344         if (ndr_flags & NDR_SCALARS) {
3345                 NDR_CHECK(ndr_push_align(ndr, 4));
3346                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->privilege_entries));
3347                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->privilege_control));
3348                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->privilege_attrib));
3349                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->privilege_name));
3350                 NDR_CHECK(ndr_push_netr_QUOTA_LIMITS(ndr, NDR_SCALARS, &r->quotalimits));
3351                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->system_flags));
3352                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
3353                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
3354                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
3355                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
3356                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
3357                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
3358                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
3359                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
3360                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
3361                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
3362         }
3363         if (ndr_flags & NDR_BUFFERS) {
3364                 if (r->privilege_attrib) {
3365                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->privilege_entries));
3366                         for (cntr_privilege_attrib_1 = 0; cntr_privilege_attrib_1 < r->privilege_entries; cntr_privilege_attrib_1++) {
3367                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->privilege_attrib[cntr_privilege_attrib_1]));
3368                         }
3369                 }
3370                 if (r->privilege_name) {
3371                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->privilege_entries));
3372                         for (cntr_privilege_name_1 = 0; cntr_privilege_name_1 < r->privilege_entries; cntr_privilege_name_1++) {
3373                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->privilege_name[cntr_privilege_name_1]));
3374                         }
3375                         for (cntr_privilege_name_1 = 0; cntr_privilege_name_1 < r->privilege_entries; cntr_privilege_name_1++) {
3376                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->privilege_name[cntr_privilege_name_1]));
3377                         }
3378                 }
3379                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
3380                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
3381                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
3382                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
3383                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
3384         }
3385         return NDR_ERR_SUCCESS;
3386 }
3387
3388 static enum ndr_err_code ndr_pull_netr_DELTA_ACCOUNT(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_ACCOUNT *r)
3389 {
3390         uint32_t _ptr_privilege_attrib;
3391         uint32_t cntr_privilege_attrib_1;
3392         TALLOC_CTX *_mem_save_privilege_attrib_0;
3393         TALLOC_CTX *_mem_save_privilege_attrib_1;
3394         uint32_t _ptr_privilege_name;
3395         uint32_t cntr_privilege_name_1;
3396         TALLOC_CTX *_mem_save_privilege_name_0;
3397         TALLOC_CTX *_mem_save_privilege_name_1;
3398         if (ndr_flags & NDR_SCALARS) {
3399                 NDR_CHECK(ndr_pull_align(ndr, 4));
3400                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->privilege_entries));
3401                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->privilege_control));
3402                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_privilege_attrib));
3403                 if (_ptr_privilege_attrib) {
3404                         NDR_PULL_ALLOC(ndr, r->privilege_attrib);
3405                 } else {
3406                         r->privilege_attrib = NULL;
3407                 }
3408                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_privilege_name));
3409                 if (_ptr_privilege_name) {
3410                         NDR_PULL_ALLOC(ndr, r->privilege_name);
3411                 } else {
3412                         r->privilege_name = NULL;
3413                 }
3414                 NDR_CHECK(ndr_pull_netr_QUOTA_LIMITS(ndr, NDR_SCALARS, &r->quotalimits));
3415                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->system_flags));
3416                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
3417                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
3418                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
3419                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
3420                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
3421                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
3422                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
3423                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
3424                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
3425                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
3426         }
3427         if (ndr_flags & NDR_BUFFERS) {
3428                 if (r->privilege_attrib) {
3429                         _mem_save_privilege_attrib_0 = NDR_PULL_GET_MEM_CTX(ndr);
3430                         NDR_PULL_SET_MEM_CTX(ndr, r->privilege_attrib, 0);
3431                         NDR_CHECK(ndr_pull_array_size(ndr, &r->privilege_attrib));
3432                         NDR_PULL_ALLOC_N(ndr, r->privilege_attrib, ndr_get_array_size(ndr, &r->privilege_attrib));
3433                         _mem_save_privilege_attrib_1 = NDR_PULL_GET_MEM_CTX(ndr);
3434                         NDR_PULL_SET_MEM_CTX(ndr, r->privilege_attrib, 0);
3435                         for (cntr_privilege_attrib_1 = 0; cntr_privilege_attrib_1 < r->privilege_entries; cntr_privilege_attrib_1++) {
3436                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->privilege_attrib[cntr_privilege_attrib_1]));
3437                         }
3438                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_privilege_attrib_1, 0);
3439                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_privilege_attrib_0, 0);
3440                 }
3441                 if (r->privilege_name) {
3442                         _mem_save_privilege_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3443                         NDR_PULL_SET_MEM_CTX(ndr, r->privilege_name, 0);
3444                         NDR_CHECK(ndr_pull_array_size(ndr, &r->privilege_name));
3445                         NDR_PULL_ALLOC_N(ndr, r->privilege_name, ndr_get_array_size(ndr, &r->privilege_name));
3446                         _mem_save_privilege_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
3447                         NDR_PULL_SET_MEM_CTX(ndr, r->privilege_name, 0);
3448                         for (cntr_privilege_name_1 = 0; cntr_privilege_name_1 < r->privilege_entries; cntr_privilege_name_1++) {
3449                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->privilege_name[cntr_privilege_name_1]));
3450                         }
3451                         for (cntr_privilege_name_1 = 0; cntr_privilege_name_1 < r->privilege_entries; cntr_privilege_name_1++) {
3452                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->privilege_name[cntr_privilege_name_1]));
3453                         }
3454                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_privilege_name_1, 0);
3455                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_privilege_name_0, 0);
3456                 }
3457                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
3458                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
3459                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
3460                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
3461                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
3462                 if (r->privilege_attrib) {
3463                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->privilege_attrib, r->privilege_entries));
3464                 }
3465                 if (r->privilege_name) {
3466                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->privilege_name, r->privilege_entries));
3467                 }
3468         }
3469         return NDR_ERR_SUCCESS;
3470 }
3471
3472 _PUBLIC_ void ndr_print_netr_DELTA_ACCOUNT(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ACCOUNT *r)
3473 {
3474         uint32_t cntr_privilege_attrib_1;
3475         uint32_t cntr_privilege_name_1;
3476         ndr_print_struct(ndr, name, "netr_DELTA_ACCOUNT");
3477         ndr->depth++;
3478         ndr_print_uint32(ndr, "privilege_entries", r->privilege_entries);
3479         ndr_print_uint32(ndr, "privilege_control", r->privilege_control);
3480         ndr_print_ptr(ndr, "privilege_attrib", r->privilege_attrib);
3481         ndr->depth++;
3482         if (r->privilege_attrib) {
3483                 ndr->print(ndr, "%s: ARRAY(%d)", "privilege_attrib", r->privilege_entries);
3484                 ndr->depth++;
3485                 for (cntr_privilege_attrib_1=0;cntr_privilege_attrib_1<r->privilege_entries;cntr_privilege_attrib_1++) {
3486                         char *idx_1=NULL;
3487                         asprintf(&idx_1, "[%d]", cntr_privilege_attrib_1);
3488                         if (idx_1) {
3489                                 ndr_print_uint32(ndr, "privilege_attrib", r->privilege_attrib[cntr_privilege_attrib_1]);
3490                                 free(idx_1);
3491                         }
3492                 }
3493                 ndr->depth--;
3494         }
3495         ndr->depth--;
3496         ndr_print_ptr(ndr, "privilege_name", r->privilege_name);
3497         ndr->depth++;
3498         if (r->privilege_name) {
3499                 ndr->print(ndr, "%s: ARRAY(%d)", "privilege_name", r->privilege_entries);
3500                 ndr->depth++;
3501                 for (cntr_privilege_name_1=0;cntr_privilege_name_1<r->privilege_entries;cntr_privilege_name_1++) {
3502                         char *idx_1=NULL;
3503                         asprintf(&idx_1, "[%d]", cntr_privilege_name_1);
3504                         if (idx_1) {
3505                                 ndr_print_lsa_String(ndr, "privilege_name", &r->privilege_name[cntr_privilege_name_1]);
3506                                 free(idx_1);
3507                         }
3508                 }
3509                 ndr->depth--;
3510         }
3511         ndr->depth--;
3512         ndr_print_netr_QUOTA_LIMITS(ndr, "quotalimits", &r->quotalimits);
3513         ndr_print_uint32(ndr, "system_flags", r->system_flags);
3514         ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
3515         ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
3516         ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
3517         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
3518         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
3519         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
3520         ndr_print_uint32(ndr, "unknown5", r->unknown5);
3521         ndr_print_uint32(ndr, "unknown6", r->unknown6);
3522         ndr_print_uint32(ndr, "unknown7", r->unknown7);
3523         ndr_print_uint32(ndr, "unknown8", r->unknown8);
3524         ndr->depth--;
3525 }
3526
3527 static enum ndr_err_code ndr_push_netr_DELTA_DELETE_ACCOUNT(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_DELETE_ACCOUNT *r)
3528 {
3529         if (ndr_flags & NDR_SCALARS) {
3530                 NDR_CHECK(ndr_push_align(ndr, 2));
3531                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->unknown));
3532         }
3533         if (ndr_flags & NDR_BUFFERS) {
3534         }
3535         return NDR_ERR_SUCCESS;
3536 }
3537
3538 static enum ndr_err_code ndr_pull_netr_DELTA_DELETE_ACCOUNT(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_DELETE_ACCOUNT *r)
3539 {
3540         if (ndr_flags & NDR_SCALARS) {
3541                 NDR_CHECK(ndr_pull_align(ndr, 2));
3542                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unknown));
3543         }
3544         if (ndr_flags & NDR_BUFFERS) {
3545         }
3546         return NDR_ERR_SUCCESS;
3547 }
3548
3549 _PUBLIC_ void ndr_print_netr_DELTA_DELETE_ACCOUNT(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_ACCOUNT *r)
3550 {
3551         ndr_print_struct(ndr, name, "netr_DELTA_DELETE_ACCOUNT");
3552         ndr->depth++;
3553         ndr_print_uint16(ndr, "unknown", r->unknown);
3554         ndr->depth--;
3555 }
3556
3557 static enum ndr_err_code ndr_push_netr_DELTA_DELETE_SECRET(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_DELETE_SECRET *r)
3558 {
3559         if (ndr_flags & NDR_SCALARS) {
3560                 NDR_CHECK(ndr_push_align(ndr, 2));
3561                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->unknown));
3562         }
3563         if (ndr_flags & NDR_BUFFERS) {
3564         }
3565         return NDR_ERR_SUCCESS;
3566 }
3567
3568 static enum ndr_err_code ndr_pull_netr_DELTA_DELETE_SECRET(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_DELETE_SECRET *r)
3569 {
3570         if (ndr_flags & NDR_SCALARS) {
3571                 NDR_CHECK(ndr_pull_align(ndr, 2));
3572                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unknown));
3573         }
3574         if (ndr_flags & NDR_BUFFERS) {
3575         }
3576         return NDR_ERR_SUCCESS;
3577 }
3578
3579 _PUBLIC_ void ndr_print_netr_DELTA_DELETE_SECRET(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_SECRET *r)
3580 {
3581         ndr_print_struct(ndr, name, "netr_DELTA_DELETE_SECRET");
3582         ndr->depth++;
3583         ndr_print_uint16(ndr, "unknown", r->unknown);
3584         ndr->depth--;
3585 }
3586
3587 static enum ndr_err_code ndr_push_netr_CIPHER_VALUE(struct ndr_push *ndr, int ndr_flags, const struct netr_CIPHER_VALUE *r)
3588 {
3589         if (ndr_flags & NDR_SCALARS) {
3590                 NDR_CHECK(ndr_push_align(ndr, 4));
3591                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->len));
3592                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxlen));
3593                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->cipher_data));
3594         }
3595         if (ndr_flags & NDR_BUFFERS) {
3596                 if (r->cipher_data) {
3597                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxlen));
3598                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3599                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->len));
3600                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->cipher_data, r->len));
3601                 }
3602         }
3603         return NDR_ERR_SUCCESS;
3604 }
3605
3606 static enum ndr_err_code ndr_pull_netr_CIPHER_VALUE(struct ndr_pull *ndr, int ndr_flags, struct netr_CIPHER_VALUE *r)
3607 {
3608         uint32_t _ptr_cipher_data;
3609         TALLOC_CTX *_mem_save_cipher_data_0;
3610         if (ndr_flags & NDR_SCALARS) {
3611                 NDR_CHECK(ndr_pull_align(ndr, 4));
3612                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->len));
3613                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxlen));
3614                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_cipher_data));
3615                 if (_ptr_cipher_data) {
3616                         NDR_PULL_ALLOC(ndr, r->cipher_data);
3617                 } else {
3618                         r->cipher_data = NULL;
3619                 }
3620         }
3621         if (ndr_flags & NDR_BUFFERS) {
3622                 if (r->cipher_data) {
3623                         _mem_save_cipher_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
3624                         NDR_PULL_SET_MEM_CTX(ndr, r->cipher_data, 0);
3625                         NDR_CHECK(ndr_pull_array_size(ndr, &r->cipher_data));
3626                         NDR_CHECK(ndr_pull_array_length(ndr, &r->cipher_data));
3627                         if (ndr_get_array_length(ndr, &r->cipher_data) > ndr_get_array_size(ndr, &r->cipher_data)) {
3628                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->cipher_data), ndr_get_array_length(ndr, &r->cipher_data));
3629                         }
3630                         NDR_PULL_ALLOC_N(ndr, r->cipher_data, ndr_get_array_size(ndr, &r->cipher_data));
3631                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->cipher_data, ndr_get_array_length(ndr, &r->cipher_data)));
3632                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_cipher_data_0, 0);
3633                 }
3634                 if (r->cipher_data) {
3635                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->cipher_data, r->maxlen));
3636                 }
3637                 if (r->cipher_data) {
3638                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->cipher_data, r->len));
3639                 }
3640         }
3641         return NDR_ERR_SUCCESS;
3642 }
3643
3644 _PUBLIC_ void ndr_print_netr_CIPHER_VALUE(struct ndr_print *ndr, const char *name, const struct netr_CIPHER_VALUE *r)
3645 {
3646         ndr_print_struct(ndr, name, "netr_CIPHER_VALUE");
3647         ndr->depth++;
3648         ndr_print_uint32(ndr, "len", r->len);
3649         ndr_print_uint32(ndr, "maxlen", r->maxlen);
3650         ndr_print_ptr(ndr, "cipher_data", r->cipher_data);
3651         ndr->depth++;
3652         if (r->cipher_data) {
3653                 ndr_print_array_uint8(ndr, "cipher_data", r->cipher_data, r->len);
3654         }
3655         ndr->depth--;
3656         ndr->depth--;
3657 }
3658
3659 static enum ndr_err_code ndr_push_netr_DELTA_SECRET(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_SECRET *r)
3660 {
3661         if (ndr_flags & NDR_SCALARS) {
3662                 NDR_CHECK(ndr_push_align(ndr, 4));
3663                 NDR_CHECK(ndr_push_netr_CIPHER_VALUE(ndr, NDR_SCALARS, &r->current_cipher));
3664                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->current_cipher_set_time));
3665                 NDR_CHECK(ndr_push_netr_CIPHER_VALUE(ndr, NDR_SCALARS, &r->old_cipher));
3666                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->old_cipher_set_time));
3667                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
3668                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
3669                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
3670                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
3671                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
3672                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
3673                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
3674                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
3675                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
3676                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
3677         }
3678         if (ndr_flags & NDR_BUFFERS) {
3679                 NDR_CHECK(ndr_push_netr_CIPHER_VALUE(ndr, NDR_BUFFERS, &r->current_cipher));
3680                 NDR_CHECK(ndr_push_netr_CIPHER_VALUE(ndr, NDR_BUFFERS, &r->old_cipher));
3681                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
3682                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
3683                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
3684                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
3685                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
3686         }
3687         return NDR_ERR_SUCCESS;
3688 }
3689
3690 static enum ndr_err_code ndr_pull_netr_DELTA_SECRET(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_SECRET *r)
3691 {
3692         if (ndr_flags & NDR_SCALARS) {
3693                 NDR_CHECK(ndr_pull_align(ndr, 4));
3694                 NDR_CHECK(ndr_pull_netr_CIPHER_VALUE(ndr, NDR_SCALARS, &r->current_cipher));
3695                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->current_cipher_set_time));
3696                 NDR_CHECK(ndr_pull_netr_CIPHER_VALUE(ndr, NDR_SCALARS, &r->old_cipher));
3697                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->old_cipher_set_time));
3698                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
3699                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
3700                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
3701                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
3702                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
3703                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
3704                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
3705                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
3706                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
3707                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
3708         }
3709         if (ndr_flags & NDR_BUFFERS) {
3710                 NDR_CHECK(ndr_pull_netr_CIPHER_VALUE(ndr, NDR_BUFFERS, &r->current_cipher));
3711                 NDR_CHECK(ndr_pull_netr_CIPHER_VALUE(ndr, NDR_BUFFERS, &r->old_cipher));
3712                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
3713                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
3714                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
3715                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
3716                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
3717         }
3718         return NDR_ERR_SUCCESS;
3719 }
3720
3721 _PUBLIC_ void ndr_print_netr_DELTA_SECRET(struct ndr_print *ndr, const char *name, const struct netr_DELTA_SECRET *r)
3722 {
3723         ndr_print_struct(ndr, name, "netr_DELTA_SECRET");
3724         ndr->depth++;
3725         ndr_print_netr_CIPHER_VALUE(ndr, "current_cipher", &r->current_cipher);
3726         ndr_print_NTTIME(ndr, "current_cipher_set_time", r->current_cipher_set_time);
3727         ndr_print_netr_CIPHER_VALUE(ndr, "old_cipher", &r->old_cipher);
3728         ndr_print_NTTIME(ndr, "old_cipher_set_time", r->old_cipher_set_time);
3729         ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
3730         ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
3731         ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
3732         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
3733         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
3734         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
3735         ndr_print_uint32(ndr, "unknown5", r->unknown5);
3736         ndr_print_uint32(ndr, "unknown6", r->unknown6);
3737         ndr_print_uint32(ndr, "unknown7", r->unknown7);
3738         ndr_print_uint32(ndr, "unknown8", r->unknown8);
3739         ndr->depth--;
3740 }
3741
3742 static enum ndr_err_code ndr_push_netr_DeltaEnum(struct ndr_push *ndr, int ndr_flags, enum netr_DeltaEnum r)
3743 {
3744         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
3745         return NDR_ERR_SUCCESS;
3746 }
3747
3748 static enum ndr_err_code ndr_pull_netr_DeltaEnum(struct ndr_pull *ndr, int ndr_flags, enum netr_DeltaEnum *r)
3749 {
3750         uint16_t v;
3751         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
3752         *r = v;
3753         return NDR_ERR_SUCCESS;
3754 }
3755
3756 _PUBLIC_ void ndr_print_netr_DeltaEnum(struct ndr_print *ndr, const char *name, enum netr_DeltaEnum r)
3757 {
3758         const char *val = NULL;
3759
3760         switch (r) {
3761                 case NETR_DELTA_DOMAIN: val = "NETR_DELTA_DOMAIN"; break;
3762                 case NETR_DELTA_GROUP: val = "NETR_DELTA_GROUP"; break;
3763                 case NETR_DELTA_DELETE_GROUP: val = "NETR_DELTA_DELETE_GROUP"; break;
3764                 case NETR_DELTA_RENAME_GROUP: val = "NETR_DELTA_RENAME_GROUP"; break;
3765                 case NETR_DELTA_USER: val = "NETR_DELTA_USER"; break;
3766                 case NETR_DELTA_DELETE_USER: val = "NETR_DELTA_DELETE_USER"; break;
3767                 case NETR_DELTA_RENAME_USER: val = "NETR_DELTA_RENAME_USER"; break;
3768                 case NETR_DELTA_GROUP_MEMBER: val = "NETR_DELTA_GROUP_MEMBER"; break;
3769                 case NETR_DELTA_ALIAS: val = "NETR_DELTA_ALIAS"; break;
3770                 case NETR_DELTA_DELETE_ALIAS: val = "NETR_DELTA_DELETE_ALIAS"; break;
3771                 case NETR_DELTA_RENAME_ALIAS: val = "NETR_DELTA_RENAME_ALIAS"; break;
3772                 case NETR_DELTA_ALIAS_MEMBER: val = "NETR_DELTA_ALIAS_MEMBER"; break;
3773                 case NETR_DELTA_POLICY: val = "NETR_DELTA_POLICY"; break;
3774                 case NETR_DELTA_TRUSTED_DOMAIN: val = "NETR_DELTA_TRUSTED_DOMAIN"; break;
3775                 case NETR_DELTA_DELETE_TRUST: val = "NETR_DELTA_DELETE_TRUST"; break;
3776                 case NETR_DELTA_ACCOUNT: val = "NETR_DELTA_ACCOUNT"; break;
3777                 case NETR_DELTA_DELETE_ACCOUNT: val = "NETR_DELTA_DELETE_ACCOUNT"; break;
3778                 case NETR_DELTA_SECRET: val = "NETR_DELTA_SECRET"; break;
3779                 case NETR_DELTA_DELETE_SECRET: val = "NETR_DELTA_DELETE_SECRET"; break;
3780                 case NETR_DELTA_DELETE_GROUP2: val = "NETR_DELTA_DELETE_GROUP2"; break;
3781                 case NETR_DELTA_DELETE_USER2: val = "NETR_DELTA_DELETE_USER2"; break;
3782                 case NETR_DELTA_MODIFY_COUNT: val = "NETR_DELTA_MODIFY_COUNT"; break;
3783         }
3784         ndr_print_enum(ndr, name, "ENUM", val, r);
3785 }
3786
3787 static enum ndr_err_code ndr_push_netr_DELTA_UNION(struct ndr_push *ndr, int ndr_flags, const union netr_DELTA_UNION *r)
3788 {
3789         if (ndr_flags & NDR_SCALARS) {
3790                 int level = ndr_push_get_switch_value(ndr, r);
3791                 NDR_CHECK(ndr_push_netr_DeltaEnum(ndr, NDR_SCALARS, level));
3792                 switch (level) {
3793                         case NETR_DELTA_DOMAIN: {
3794                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
3795                         break; }
3796
3797                         case NETR_DELTA_GROUP: {
3798                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->group));
3799                         break; }
3800
3801                         case NETR_DELTA_DELETE_GROUP: {
3802                         break; }
3803
3804                         case NETR_DELTA_RENAME_GROUP: {
3805                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->rename_group));
3806                         break; }
3807
3808                         case NETR_DELTA_USER: {
3809                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->user));
3810                         break; }
3811
3812                         case NETR_DELTA_DELETE_USER: {
3813                         break; }
3814
3815                         case NETR_DELTA_RENAME_USER: {
3816                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->rename_user));
3817                         break; }
3818
3819                         case NETR_DELTA_GROUP_MEMBER: {
3820                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->group_member));
3821                         break; }
3822
3823                         case NETR_DELTA_ALIAS: {
3824                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->alias));
3825                         break; }
3826
3827                         case NETR_DELTA_DELETE_ALIAS: {
3828                         break; }
3829
3830                         case NETR_DELTA_RENAME_ALIAS: {
3831                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->rename_alias));
3832                         break; }
3833
3834                         case NETR_DELTA_ALIAS_MEMBER: {
3835                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->alias_member));
3836                         break; }
3837
3838                         case NETR_DELTA_POLICY: {
3839                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->policy));
3840                         break; }
3841
3842                         case NETR_DELTA_TRUSTED_DOMAIN: {
3843                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->trusted_domain));
3844                         break; }
3845
3846                         case NETR_DELTA_DELETE_TRUST: {
3847                                 NDR_CHECK(ndr_push_netr_DELTA_DELETE_TRUST(ndr, NDR_SCALARS, &r->delete_trust));
3848                         break; }
3849
3850                         case NETR_DELTA_ACCOUNT: {
3851                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->account));
3852                         break; }
3853
3854                         case NETR_DELTA_DELETE_ACCOUNT: {
3855                                 NDR_CHECK(ndr_push_netr_DELTA_DELETE_ACCOUNT(ndr, NDR_SCALARS, &r->delete_account));
3856                         break; }
3857
3858                         case NETR_DELTA_SECRET: {
3859                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->secret));
3860                         break; }
3861
3862                         case NETR_DELTA_DELETE_SECRET: {
3863                                 NDR_CHECK(ndr_push_netr_DELTA_DELETE_SECRET(ndr, NDR_SCALARS, &r->delete_secret));
3864                         break; }
3865
3866                         case NETR_DELTA_DELETE_GROUP2: {
3867                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->delete_group));
3868                         break; }
3869
3870                         case NETR_DELTA_DELETE_USER2: {
3871                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->delete_user));
3872                         break; }
3873
3874                         case NETR_DELTA_MODIFY_COUNT: {
3875                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->modified_count));
3876                         break; }
3877
3878                         default:
3879                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
3880                 }
3881         }
3882         if (ndr_flags & NDR_BUFFERS) {
3883                 int level = ndr_push_get_switch_value(ndr, r);
3884                 switch (level) {
3885                         case NETR_DELTA_DOMAIN:
3886                                 if (r->domain) {
3887                                         NDR_CHECK(ndr_push_netr_DELTA_DOMAIN(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain));
3888                                 }
3889                         break;
3890
3891                         case NETR_DELTA_GROUP:
3892                                 if (r->group) {
3893                                         NDR_CHECK(ndr_push_netr_DELTA_GROUP(ndr, NDR_SCALARS|NDR_BUFFERS, r->group));
3894                                 }
3895                         break;
3896
3897                         case NETR_DELTA_DELETE_GROUP:
3898                         break;
3899
3900                         case NETR_DELTA_RENAME_GROUP:
3901                                 if (r->rename_group) {
3902                                         NDR_CHECK(ndr_push_netr_DELTA_RENAME(ndr, NDR_SCALARS|NDR_BUFFERS, r->rename_group));
3903                                 }
3904                         break;
3905
3906                         case NETR_DELTA_USER:
3907                                 if (r->user) {
3908                                         NDR_CHECK(ndr_push_netr_DELTA_USER(ndr, NDR_SCALARS|NDR_BUFFERS, r->user));
3909                                 }
3910                         break;
3911
3912                         case NETR_DELTA_DELETE_USER:
3913                         break;
3914
3915                         case NETR_DELTA_RENAME_USER:
3916                                 if (r->rename_user) {
3917                                         NDR_CHECK(ndr_push_netr_DELTA_RENAME(ndr, NDR_SCALARS|NDR_BUFFERS, r->rename_user));
3918                                 }
3919                         break;
3920
3921                         case NETR_DELTA_GROUP_MEMBER:
3922                                 if (r->group_member) {
3923                                         NDR_CHECK(ndr_push_netr_DELTA_GROUP_MEMBER(ndr, NDR_SCALARS|NDR_BUFFERS, r->group_member));
3924                                 }
3925                         break;
3926
3927                         case NETR_DELTA_ALIAS:
3928                                 if (r->alias) {
3929                                         NDR_CHECK(ndr_push_netr_DELTA_ALIAS(ndr, NDR_SCALARS|NDR_BUFFERS, r->alias));
3930                                 }
3931                         break;
3932
3933                         case NETR_DELTA_DELETE_ALIAS:
3934                         break;
3935
3936                         case NETR_DELTA_RENAME_ALIAS:
3937                                 if (r->rename_alias) {
3938                                         NDR_CHECK(ndr_push_netr_DELTA_RENAME(ndr, NDR_SCALARS|NDR_BUFFERS, r->rename_alias));
3939                                 }
3940                         break;
3941
3942                         case NETR_DELTA_ALIAS_MEMBER:
3943                                 if (r->alias_member) {
3944                                         NDR_CHECK(ndr_push_netr_DELTA_ALIAS_MEMBER(ndr, NDR_SCALARS|NDR_BUFFERS, r->alias_member));
3945                                 }
3946                         break;
3947
3948                         case NETR_DELTA_POLICY:
3949                                 if (r->policy) {
3950                                         NDR_CHECK(ndr_push_netr_DELTA_POLICY(ndr, NDR_SCALARS|NDR_BUFFERS, r->policy));
3951                                 }
3952                         break;
3953
3954                         case NETR_DELTA_TRUSTED_DOMAIN:
3955                                 if (r->trusted_domain) {
3956                                         NDR_CHECK(ndr_push_netr_DELTA_TRUSTED_DOMAIN(ndr, NDR_SCALARS|NDR_BUFFERS, r->trusted_domain));
3957                                 }
3958                         break;
3959
3960                         case NETR_DELTA_DELETE_TRUST:
3961                         break;
3962
3963                         case NETR_DELTA_ACCOUNT:
3964                                 if (r->account) {
3965                                         NDR_CHECK(ndr_push_netr_DELTA_ACCOUNT(ndr, NDR_SCALARS|NDR_BUFFERS, r->account));
3966                                 }
3967                         break;
3968
3969                         case NETR_DELTA_DELETE_ACCOUNT:
3970                         break;
3971
3972                         case NETR_DELTA_SECRET:
3973                                 if (r->secret) {
3974                                         NDR_CHECK(ndr_push_netr_DELTA_SECRET(ndr, NDR_SCALARS|NDR_BUFFERS, r->secret));
3975                                 }
3976                         break;
3977
3978                         case NETR_DELTA_DELETE_SECRET:
3979                         break;
3980
3981                         case NETR_DELTA_DELETE_GROUP2:
3982                                 if (r->delete_group) {
3983                                         NDR_CHECK(ndr_push_netr_DELTA_DELETE_USER(ndr, NDR_SCALARS|NDR_BUFFERS, r->delete_group));
3984                                 }
3985                         break;
3986
3987                         case NETR_DELTA_DELETE_USER2:
3988                                 if (r->delete_user) {
3989                                         NDR_CHECK(ndr_push_netr_DELTA_DELETE_USER(ndr, NDR_SCALARS|NDR_BUFFERS, r->delete_user));
3990                                 }
3991                         break;
3992
3993                         case NETR_DELTA_MODIFY_COUNT:
3994                                 if (r->modified_count) {
3995                                         NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, *r->modified_count));
3996                                 }
3997                         break;
3998
3999                         default:
4000                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
4001                 }
4002         }
4003         return NDR_ERR_SUCCESS;
4004 }
4005
4006 static enum ndr_err_code ndr_pull_netr_DELTA_UNION(struct ndr_pull *ndr, int ndr_flags, union netr_DELTA_UNION *r)
4007 {
4008         int level;
4009         uint16_t _level;
4010         TALLOC_CTX *_mem_save_domain_0;
4011         TALLOC_CTX *_mem_save_group_0;
4012         TALLOC_CTX *_mem_save_rename_group_0;
4013         TALLOC_CTX *_mem_save_user_0;
4014         TALLOC_CTX *_mem_save_rename_user_0;
4015         TALLOC_CTX *_mem_save_group_member_0;
4016         TALLOC_CTX *_mem_save_alias_0;
4017         TALLOC_CTX *_mem_save_rename_alias_0;
4018         TALLOC_CTX *_mem_save_alias_member_0;
4019         TALLOC_CTX *_mem_save_policy_0;
4020         TALLOC_CTX *_mem_save_trusted_domain_0;
4021         TALLOC_CTX *_mem_save_account_0;
4022         TALLOC_CTX *_mem_save_secret_0;
4023         TALLOC_CTX *_mem_save_delete_group_0;
4024         TALLOC_CTX *_mem_save_delete_user_0;
4025         TALLOC_CTX *_mem_save_modified_count_0;
4026         level = ndr_pull_get_switch_value(ndr, r);
4027         if (ndr_flags & NDR_SCALARS) {
4028                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
4029                 if (_level != level) {
4030                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
4031                 }
4032                 switch (level) {
4033                         case NETR_DELTA_DOMAIN: {
4034                                 uint32_t _ptr_domain;
4035                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
4036                                 if (_ptr_domain) {
4037                                         NDR_PULL_ALLOC(ndr, r->domain);
4038                                 } else {
4039                                         r->domain = NULL;
4040                                 }
4041                         break; }
4042
4043                         case NETR_DELTA_GROUP: {
4044                                 uint32_t _ptr_group;
4045                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group));
4046                                 if (_ptr_group) {
4047                                         NDR_PULL_ALLOC(ndr, r->group);
4048                                 } else {
4049                                         r->group = NULL;
4050                                 }
4051                         break; }
4052
4053                         case NETR_DELTA_DELETE_GROUP: {
4054                         break; }
4055
4056                         case NETR_DELTA_RENAME_GROUP: {
4057                                 uint32_t _ptr_rename_group;
4058                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rename_group));
4059                                 if (_ptr_rename_group) {
4060                                         NDR_PULL_ALLOC(ndr, r->rename_group);
4061                                 } else {
4062                                         r->rename_group = NULL;
4063                                 }
4064                         break; }
4065
4066                         case NETR_DELTA_USER: {
4067                                 uint32_t _ptr_user;
4068                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user));
4069                                 if (_ptr_user) {
4070                                         NDR_PULL_ALLOC(ndr, r->user);
4071                                 } else {
4072                                         r->user = NULL;
4073                                 }
4074                         break; }
4075
4076                         case NETR_DELTA_DELETE_USER: {
4077                         break; }
4078
4079                         case NETR_DELTA_RENAME_USER: {
4080                                 uint32_t _ptr_rename_user;
4081                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rename_user));
4082                                 if (_ptr_rename_user) {
4083                                         NDR_PULL_ALLOC(ndr, r->rename_user);
4084                                 } else {
4085                                         r->rename_user = NULL;
4086                                 }
4087                         break; }
4088
4089                         case NETR_DELTA_GROUP_MEMBER: {
4090                                 uint32_t _ptr_group_member;
4091                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_member));
4092                                 if (_ptr_group_member) {
4093                                         NDR_PULL_ALLOC(ndr, r->group_member);
4094                                 } else {
4095                                         r->group_member = NULL;
4096                                 }
4097                         break; }
4098
4099                         case NETR_DELTA_ALIAS: {
4100                                 uint32_t _ptr_alias;
4101                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_alias));
4102                                 if (_ptr_alias) {
4103                                         NDR_PULL_ALLOC(ndr, r->alias);
4104                                 } else {
4105                                         r->alias = NULL;
4106                                 }
4107                         break; }
4108
4109                         case NETR_DELTA_DELETE_ALIAS: {
4110                         break; }
4111
4112                         case NETR_DELTA_RENAME_ALIAS: {
4113                                 uint32_t _ptr_rename_alias;
4114                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rename_alias));
4115                                 if (_ptr_rename_alias) {
4116                                         NDR_PULL_ALLOC(ndr, r->rename_alias);
4117                                 } else {
4118                                         r->rename_alias = NULL;
4119                                 }
4120                         break; }
4121
4122                         case NETR_DELTA_ALIAS_MEMBER: {
4123                                 uint32_t _ptr_alias_member;
4124                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_alias_member));
4125                                 if (_ptr_alias_member) {
4126                                         NDR_PULL_ALLOC(ndr, r->alias_member);
4127                                 } else {
4128                                         r->alias_member = NULL;
4129                                 }
4130                         break; }
4131
4132                         case NETR_DELTA_POLICY: {
4133                                 uint32_t _ptr_policy;
4134                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_policy));
4135                                 if (_ptr_policy) {
4136                                         NDR_PULL_ALLOC(ndr, r->policy);
4137                                 } else {
4138                                         r->policy = NULL;
4139                                 }
4140                         break; }
4141
4142                         case NETR_DELTA_TRUSTED_DOMAIN: {
4143                                 uint32_t _ptr_trusted_domain;
4144                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_trusted_domain));
4145                                 if (_ptr_trusted_domain) {
4146                                         NDR_PULL_ALLOC(ndr, r->trusted_domain);
4147                                 } else {
4148                                         r->trusted_domain = NULL;
4149                                 }
4150                         break; }
4151
4152                         case NETR_DELTA_DELETE_TRUST: {
4153                                 NDR_CHECK(ndr_pull_netr_DELTA_DELETE_TRUST(ndr, NDR_SCALARS, &r->delete_trust));
4154                         break; }
4155
4156                         case NETR_DELTA_ACCOUNT: {
4157                                 uint32_t _ptr_account;
4158                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_account));
4159                                 if (_ptr_account) {
4160                                         NDR_PULL_ALLOC(ndr, r->account);
4161                                 } else {
4162                                         r->account = NULL;
4163                                 }
4164                         break; }
4165
4166                         case NETR_DELTA_DELETE_ACCOUNT: {
4167                                 NDR_CHECK(ndr_pull_netr_DELTA_DELETE_ACCOUNT(ndr, NDR_SCALARS, &r->delete_account));
4168                         break; }
4169
4170                         case NETR_DELTA_SECRET: {
4171                                 uint32_t _ptr_secret;
4172                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_secret));
4173                                 if (_ptr_secret) {
4174                                         NDR_PULL_ALLOC(ndr, r->secret);
4175                                 } else {
4176                                         r->secret = NULL;
4177                                 }
4178                         break; }
4179
4180                         case NETR_DELTA_DELETE_SECRET: {
4181                                 NDR_CHECK(ndr_pull_netr_DELTA_DELETE_SECRET(ndr, NDR_SCALARS, &r->delete_secret));
4182                         break; }
4183
4184                         case NETR_DELTA_DELETE_GROUP2: {
4185                                 uint32_t _ptr_delete_group;
4186                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delete_group));
4187                                 if (_ptr_delete_group) {
4188                                         NDR_PULL_ALLOC(ndr, r->delete_group);
4189                                 } else {
4190                                         r->delete_group = NULL;
4191                                 }
4192                         break; }
4193
4194                         case NETR_DELTA_DELETE_USER2: {
4195                                 uint32_t _ptr_delete_user;
4196                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delete_user));
4197                                 if (_ptr_delete_user) {
4198                                         NDR_PULL_ALLOC(ndr, r->delete_user);
4199                                 } else {
4200                                         r->delete_user = NULL;
4201                                 }
4202                         break; }
4203
4204                         case NETR_DELTA_MODIFY_COUNT: {
4205                                 uint32_t _ptr_modified_count;
4206                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_modified_count));
4207                                 if (_ptr_modified_count) {
4208                                         NDR_PULL_ALLOC(ndr, r->modified_count);
4209                                 } else {
4210                                         r->modified_count = NULL;
4211                                 }
4212                         break; }
4213
4214                         default:
4215                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
4216                 }
4217         }
4218         if (ndr_flags & NDR_BUFFERS) {
4219                 switch (level) {
4220                         case NETR_DELTA_DOMAIN:
4221                                 if (r->domain) {
4222                                         _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
4223                                         NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
4224                                         NDR_CHECK(ndr_pull_netr_DELTA_DOMAIN(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain));
4225                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
4226                                 }
4227                         break;
4228
4229                         case NETR_DELTA_GROUP:
4230                                 if (r->group) {
4231                                         _mem_save_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
4232                                         NDR_PULL_SET_MEM_CTX(ndr, r->group, 0);
4233                                         NDR_CHECK(ndr_pull_netr_DELTA_GROUP(ndr, NDR_SCALARS|NDR_BUFFERS, r->group));
4234                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_0, 0);
4235                                 }
4236                         break;
4237
4238                         case NETR_DELTA_DELETE_GROUP:
4239                         break;
4240
4241                         case NETR_DELTA_RENAME_GROUP:
4242                                 if (r->rename_group) {
4243                                         _mem_save_rename_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
4244                                         NDR_PULL_SET_MEM_CTX(ndr, r->rename_group, 0);
4245                                         NDR_CHECK(ndr_pull_netr_DELTA_RENAME(ndr, NDR_SCALARS|NDR_BUFFERS, r->rename_group));
4246                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rename_group_0, 0);
4247                                 }
4248                         break;
4249
4250                         case NETR_DELTA_USER:
4251                                 if (r->user) {
4252                                         _mem_save_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
4253                                         NDR_PULL_SET_MEM_CTX(ndr, r->user, 0);
4254                                         NDR_CHECK(ndr_pull_netr_DELTA_USER(ndr, NDR_SCALARS|NDR_BUFFERS, r->user));
4255                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_0, 0);
4256                                 }
4257                         break;
4258
4259                         case NETR_DELTA_DELETE_USER:
4260                         break;
4261
4262                         case NETR_DELTA_RENAME_USER:
4263                                 if (r->rename_user) {
4264                                         _mem_save_rename_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
4265                                         NDR_PULL_SET_MEM_CTX(ndr, r->rename_user, 0);
4266                                         NDR_CHECK(ndr_pull_netr_DELTA_RENAME(ndr, NDR_SCALARS|NDR_BUFFERS, r->rename_user));
4267                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rename_user_0, 0);
4268                                 }
4269                         break;
4270
4271                         case NETR_DELTA_GROUP_MEMBER:
4272                                 if (r->group_member) {
4273                                         _mem_save_group_member_0 = NDR_PULL_GET_MEM_CTX(ndr);
4274                                         NDR_PULL_SET_MEM_CTX(ndr, r->group_member, 0);
4275                                         NDR_CHECK(ndr_pull_netr_DELTA_GROUP_MEMBER(ndr, NDR_SCALARS|NDR_BUFFERS, r->group_member));
4276                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_member_0, 0);
4277                                 }
4278                         break;
4279
4280                         case NETR_DELTA_ALIAS:
4281                                 if (r->alias) {
4282                                         _mem_save_alias_0 = NDR_PULL_GET_MEM_CTX(ndr);
4283                                         NDR_PULL_SET_MEM_CTX(ndr, r->alias, 0);
4284                                         NDR_CHECK(ndr_pull_netr_DELTA_ALIAS(ndr, NDR_SCALARS|NDR_BUFFERS, r->alias));
4285                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_alias_0, 0);
4286                                 }
4287                         break;
4288
4289                         case NETR_DELTA_DELETE_ALIAS:
4290                         break;
4291
4292                         case NETR_DELTA_RENAME_ALIAS:
4293                                 if (r->rename_alias) {
4294                                         _mem_save_rename_alias_0 = NDR_PULL_GET_MEM_CTX(ndr);
4295                                         NDR_PULL_SET_MEM_CTX(ndr, r->rename_alias, 0);
4296                                         NDR_CHECK(ndr_pull_netr_DELTA_RENAME(ndr, NDR_SCALARS|NDR_BUFFERS, r->rename_alias));
4297                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rename_alias_0, 0);
4298                                 }
4299                         break;
4300
4301                         case NETR_DELTA_ALIAS_MEMBER:
4302                                 if (r->alias_member) {
4303                                         _mem_save_alias_member_0 = NDR_PULL_GET_MEM_CTX(ndr);
4304                                         NDR_PULL_SET_MEM_CTX(ndr, r->alias_member, 0);
4305                                         NDR_CHECK(ndr_pull_netr_DELTA_ALIAS_MEMBER(ndr, NDR_SCALARS|NDR_BUFFERS, r->alias_member));
4306                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_alias_member_0, 0);
4307                                 }
4308                         break;
4309
4310                         case NETR_DELTA_POLICY:
4311                                 if (r->policy) {
4312                                         _mem_save_policy_0 = NDR_PULL_GET_MEM_CTX(ndr);
4313                                         NDR_PULL_SET_MEM_CTX(ndr, r->policy, 0);
4314                                         NDR_CHECK(ndr_pull_netr_DELTA_POLICY(ndr, NDR_SCALARS|NDR_BUFFERS, r->policy));
4315                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_policy_0, 0);
4316                                 }
4317                         break;
4318
4319                         case NETR_DELTA_TRUSTED_DOMAIN:
4320                                 if (r->trusted_domain) {
4321                                         _mem_save_trusted_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
4322                                         NDR_PULL_SET_MEM_CTX(ndr, r->trusted_domain, 0);
4323                                         NDR_CHECK(ndr_pull_netr_DELTA_TRUSTED_DOMAIN(ndr, NDR_SCALARS|NDR_BUFFERS, r->trusted_domain));
4324                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusted_domain_0, 0);
4325                                 }
4326                         break;
4327
4328                         case NETR_DELTA_DELETE_TRUST:
4329                         break;
4330
4331                         case NETR_DELTA_ACCOUNT:
4332                                 if (r->account) {
4333                                         _mem_save_account_0 = NDR_PULL_GET_MEM_CTX(ndr);
4334                                         NDR_PULL_SET_MEM_CTX(ndr, r->account, 0);
4335                                         NDR_CHECK(ndr_pull_netr_DELTA_ACCOUNT(ndr, NDR_SCALARS|NDR_BUFFERS, r->account));
4336                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_account_0, 0);
4337                                 }
4338                         break;
4339
4340                         case NETR_DELTA_DELETE_ACCOUNT:
4341                         break;
4342
4343                         case NETR_DELTA_SECRET:
4344                                 if (r->secret) {
4345                                         _mem_save_secret_0 = NDR_PULL_GET_MEM_CTX(ndr);
4346                                         NDR_PULL_SET_MEM_CTX(ndr, r->secret, 0);
4347                                         NDR_CHECK(ndr_pull_netr_DELTA_SECRET(ndr, NDR_SCALARS|NDR_BUFFERS, r->secret));
4348                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secret_0, 0);
4349                                 }
4350                         break;
4351
4352                         case NETR_DELTA_DELETE_SECRET:
4353                         break;
4354
4355                         case NETR_DELTA_DELETE_GROUP2:
4356                                 if (r->delete_group) {
4357                                         _mem_save_delete_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
4358                                         NDR_PULL_SET_MEM_CTX(ndr, r->delete_group, 0);
4359                                         NDR_CHECK(ndr_pull_netr_DELTA_DELETE_USER(ndr, NDR_SCALARS|NDR_BUFFERS, r->delete_group));
4360                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delete_group_0, 0);
4361                                 }
4362                         break;
4363
4364                         case NETR_DELTA_DELETE_USER2:
4365                                 if (r->delete_user) {
4366                                         _mem_save_delete_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
4367                                         NDR_PULL_SET_MEM_CTX(ndr, r->delete_user, 0);
4368                                         NDR_CHECK(ndr_pull_netr_DELTA_DELETE_USER(ndr, NDR_SCALARS|NDR_BUFFERS, r->delete_user));
4369                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delete_user_0, 0);
4370                                 }
4371                         break;
4372
4373                         case NETR_DELTA_MODIFY_COUNT:
4374                                 if (r->modified_count) {
4375                                         _mem_save_modified_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
4376                                         NDR_PULL_SET_MEM_CTX(ndr, r->modified_count, 0);
4377                                         NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, r->modified_count));
4378                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_modified_count_0, 0);
4379                                 }
4380                         break;
4381
4382                         default:
4383                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
4384                 }
4385         }
4386         return NDR_ERR_SUCCESS;
4387 }
4388
4389 _PUBLIC_ void ndr_print_netr_DELTA_UNION(struct ndr_print *ndr, const char *name, const union netr_DELTA_UNION *r)
4390 {
4391         int level;
4392         level = ndr_print_get_switch_value(ndr, r);
4393         ndr_print_union(ndr, name, level, "netr_DELTA_UNION");
4394         switch (level) {
4395                 case NETR_DELTA_DOMAIN:
4396                         ndr_print_ptr(ndr, "domain", r->domain);
4397                         ndr->depth++;
4398                         if (r->domain) {
4399                                 ndr_print_netr_DELTA_DOMAIN(ndr, "domain", r->domain);
4400                         }
4401                         ndr->depth--;
4402                 break;
4403
4404                 case NETR_DELTA_GROUP:
4405                         ndr_print_ptr(ndr, "group", r->group);
4406                         ndr->depth++;
4407                         if (r->group) {
4408                                 ndr_print_netr_DELTA_GROUP(ndr, "group", r->group);
4409                         }
4410                         ndr->depth--;
4411                 break;
4412
4413                 case NETR_DELTA_DELETE_GROUP:
4414                 break;
4415
4416                 case NETR_DELTA_RENAME_GROUP:
4417                         ndr_print_ptr(ndr, "rename_group", r->rename_group);
4418                         ndr->depth++;
4419                         if (r->rename_group) {
4420                                 ndr_print_netr_DELTA_RENAME(ndr, "rename_group", r->rename_group);
4421                         }
4422                         ndr->depth--;
4423                 break;
4424
4425                 case NETR_DELTA_USER:
4426                         ndr_print_ptr(ndr, "user", r->user);
4427                         ndr->depth++;
4428                         if (r->user) {
4429                                 ndr_print_netr_DELTA_USER(ndr, "user", r->user);
4430                         }
4431                         ndr->depth--;
4432                 break;
4433
4434                 case NETR_DELTA_DELETE_USER:
4435                 break;
4436
4437                 case NETR_DELTA_RENAME_USER:
4438                         ndr_print_ptr(ndr, "rename_user", r->rename_user);
4439                         ndr->depth++;
4440                         if (r->rename_user) {
4441                                 ndr_print_netr_DELTA_RENAME(ndr, "rename_user", r->rename_user);
4442                         }
4443                         ndr->depth--;
4444                 break;
4445
4446                 case NETR_DELTA_GROUP_MEMBER:
4447                         ndr_print_ptr(ndr, "group_member", r->group_member);
4448                         ndr->depth++;
4449                         if (r->group_member) {
4450                                 ndr_print_netr_DELTA_GROUP_MEMBER(ndr, "group_member", r->group_member);
4451                         }
4452                         ndr->depth--;
4453                 break;
4454
4455                 case NETR_DELTA_ALIAS:
4456                         ndr_print_ptr(ndr, "alias", r->alias);
4457                         ndr->depth++;
4458                         if (r->alias) {
4459                                 ndr_print_netr_DELTA_ALIAS(ndr, "alias", r->alias);
4460                         }
4461                         ndr->depth--;
4462                 break;
4463
4464                 case NETR_DELTA_DELETE_ALIAS:
4465                 break;
4466
4467                 case NETR_DELTA_RENAME_ALIAS:
4468                         ndr_print_ptr(ndr, "rename_alias", r->rename_alias);
4469                         ndr->depth++;
4470                         if (r->rename_alias) {
4471                                 ndr_print_netr_DELTA_RENAME(ndr, "rename_alias", r->rename_alias);
4472                         }
4473                         ndr->depth--;
4474                 break;
4475
4476                 case NETR_DELTA_ALIAS_MEMBER:
4477                         ndr_print_ptr(ndr, "alias_member", r->alias_member);
4478                         ndr->depth++;
4479                         if (r->alias_member) {
4480                                 ndr_print_netr_DELTA_ALIAS_MEMBER(ndr, "alias_member", r->alias_member);
4481                         }
4482                         ndr->depth--;
4483                 break;
4484
4485                 case NETR_DELTA_POLICY:
4486                         ndr_print_ptr(ndr, "policy", r->policy);
4487                         ndr->depth++;
4488                         if (r->policy) {
4489                                 ndr_print_netr_DELTA_POLICY(ndr, "policy", r->policy);
4490                         }
4491                         ndr->depth--;
4492                 break;
4493
4494                 case NETR_DELTA_TRUSTED_DOMAIN:
4495                         ndr_print_ptr(ndr, "trusted_domain", r->trusted_domain);
4496                         ndr->depth++;
4497                         if (r->trusted_domain) {
4498                                 ndr_print_netr_DELTA_TRUSTED_DOMAIN(ndr, "trusted_domain", r->trusted_domain);
4499                         }
4500                         ndr->depth--;
4501                 break;
4502
4503                 case NETR_DELTA_DELETE_TRUST:
4504                         ndr_print_netr_DELTA_DELETE_TRUST(ndr, "delete_trust", &r->delete_trust);
4505                 break;
4506
4507                 case NETR_DELTA_ACCOUNT:
4508                         ndr_print_ptr(ndr, "account", r->account);
4509                         ndr->depth++;
4510                         if (r->account) {
4511                                 ndr_print_netr_DELTA_ACCOUNT(ndr, "account", r->account);
4512                         }
4513                         ndr->depth--;
4514                 break;
4515
4516                 case NETR_DELTA_DELETE_ACCOUNT:
4517                         ndr_print_netr_DELTA_DELETE_ACCOUNT(ndr, "delete_account", &r->delete_account);
4518                 break;
4519
4520                 case NETR_DELTA_SECRET:
4521                         ndr_print_ptr(ndr, "secret", r->secret);
4522                         ndr->depth++;
4523                         if (r->secret) {
4524                                 ndr_print_netr_DELTA_SECRET(ndr, "secret", r->secret);
4525                         }
4526                         ndr->depth--;
4527                 break;
4528
4529                 case NETR_DELTA_DELETE_SECRET:
4530                         ndr_print_netr_DELTA_DELETE_SECRET(ndr, "delete_secret", &r->delete_secret);
4531                 break;
4532
4533                 case NETR_DELTA_DELETE_GROUP2:
4534                         ndr_print_ptr(ndr, "delete_group", r->delete_group);
4535                         ndr->depth++;
4536                         if (r->delete_group) {
4537                                 ndr_print_netr_DELTA_DELETE_USER(ndr, "delete_group", r->delete_group);
4538                         }
4539                         ndr->depth--;
4540                 break;
4541
4542                 case NETR_DELTA_DELETE_USER2:
4543                         ndr_print_ptr(ndr, "delete_user", r->delete_user);
4544                         ndr->depth++;
4545                         if (r->delete_user) {
4546                                 ndr_print_netr_DELTA_DELETE_USER(ndr, "delete_user", r->delete_user);
4547                         }
4548                         ndr->depth--;
4549                 break;
4550
4551                 case NETR_DELTA_MODIFY_COUNT:
4552                         ndr_print_ptr(ndr, "modified_count", r->modified_count);
4553                         ndr->depth++;
4554                         if (r->modified_count) {
4555                                 ndr_print_udlong(ndr, "modified_count", *r->modified_count);
4556                         }
4557                         ndr->depth--;
4558                 break;
4559
4560                 default:
4561                         ndr_print_bad_level(ndr, name, level);
4562         }
4563 }
4564
4565 static enum ndr_err_code ndr_push_netr_DELTA_ID_UNION(struct ndr_push *ndr, int ndr_flags, const union netr_DELTA_ID_UNION *r)
4566 {
4567         if (ndr_flags & NDR_SCALARS) {
4568                 int level = ndr_push_get_switch_value(ndr, r);
4569                 NDR_CHECK(ndr_push_netr_DeltaEnum(ndr, NDR_SCALARS, level));
4570                 switch (level) {
4571                         case NETR_DELTA_DOMAIN: {
4572                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4573                         break; }
4574
4575                         case NETR_DELTA_GROUP: {
4576                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4577                         break; }
4578
4579                         case NETR_DELTA_DELETE_GROUP: {
4580                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4581                         break; }
4582
4583                         case NETR_DELTA_RENAME_GROUP: {
4584                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4585                         break; }
4586
4587                         case NETR_DELTA_USER: {
4588                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4589                         break; }
4590
4591                         case NETR_DELTA_DELETE_USER: {
4592                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4593                         break; }
4594
4595                         case NETR_DELTA_RENAME_USER: {
4596                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4597                         break; }
4598
4599                         case NETR_DELTA_GROUP_MEMBER: {
4600                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4601                         break; }
4602
4603                         case NETR_DELTA_ALIAS: {
4604                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4605                         break; }
4606
4607                         case NETR_DELTA_DELETE_ALIAS: {
4608                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4609                         break; }
4610
4611                         case NETR_DELTA_RENAME_ALIAS: {
4612                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4613                         break; }
4614
4615                         case NETR_DELTA_ALIAS_MEMBER: {
4616                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4617                         break; }
4618
4619                         case NETR_DELTA_POLICY: {
4620                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
4621                         break; }
4622
4623                         case NETR_DELTA_TRUSTED_DOMAIN: {
4624                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
4625                         break; }
4626
4627                         case NETR_DELTA_DELETE_TRUST: {
4628                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
4629                         break; }
4630
4631                         case NETR_DELTA_ACCOUNT: {
4632                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
4633                         break; }
4634
4635                         case NETR_DELTA_DELETE_ACCOUNT: {
4636                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
4637                         break; }
4638
4639                         case NETR_DELTA_SECRET: {
4640                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
4641                         break; }
4642
4643                         case NETR_DELTA_DELETE_SECRET: {
4644                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
4645                         break; }
4646
4647                         case NETR_DELTA_DELETE_GROUP2: {
4648                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4649                         break; }
4650
4651                         case NETR_DELTA_DELETE_USER2: {
4652                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4653                         break; }
4654
4655                         case NETR_DELTA_MODIFY_COUNT: {
4656                         break; }
4657
4658                         default:
4659                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
4660                 }
4661         }
4662         if (ndr_flags & NDR_BUFFERS) {
4663                 int level = ndr_push_get_switch_value(ndr, r);
4664                 switch (level) {
4665                         case NETR_DELTA_DOMAIN:
4666                         break;
4667
4668                         case NETR_DELTA_GROUP:
4669                         break;
4670
4671                         case NETR_DELTA_DELETE_GROUP:
4672                         break;
4673
4674                         case NETR_DELTA_RENAME_GROUP:
4675                         break;
4676
4677                         case NETR_DELTA_USER:
4678                         break;
4679
4680                         case NETR_DELTA_DELETE_USER:
4681                         break;
4682
4683                         case NETR_DELTA_RENAME_USER:
4684                         break;
4685
4686                         case NETR_DELTA_GROUP_MEMBER:
4687                         break;
4688
4689                         case NETR_DELTA_ALIAS:
4690                         break;
4691
4692                         case NETR_DELTA_DELETE_ALIAS:
4693                         break;
4694
4695                         case NETR_DELTA_RENAME_ALIAS:
4696                         break;
4697
4698                         case NETR_DELTA_ALIAS_MEMBER:
4699                         break;
4700
4701                         case NETR_DELTA_POLICY:
4702                                 if (r->sid) {
4703                                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
4704                                 }
4705                         break;
4706
4707                         case NETR_DELTA_TRUSTED_DOMAIN:
4708                                 if (r->sid) {
4709                                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
4710                                 }
4711                         break;
4712
4713                         case NETR_DELTA_DELETE_TRUST:
4714                                 if (r->sid) {
4715                                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
4716                                 }
4717                         break;
4718
4719                         case NETR_DELTA_ACCOUNT:
4720                                 if (r->sid) {
4721                                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
4722                                 }
4723                         break;
4724
4725                         case NETR_DELTA_DELETE_ACCOUNT:
4726                                 if (r->sid) {
4727                                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
4728                                 }
4729                         break;
4730
4731                         case NETR_DELTA_SECRET:
4732                                 if (r->name) {
4733                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
4734                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4735                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
4736                                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4737                                 }
4738                         break;
4739
4740                         case NETR_DELTA_DELETE_SECRET:
4741                                 if (r->name) {
4742                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
4743                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4744                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
4745                                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4746                                 }
4747                         break;
4748
4749                         case NETR_DELTA_DELETE_GROUP2:
4750                         break;
4751
4752                         case NETR_DELTA_DELETE_USER2:
4753                         break;
4754
4755                         case NETR_DELTA_MODIFY_COUNT:
4756                         break;
4757
4758                         default:
4759                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
4760                 }
4761         }
4762         return NDR_ERR_SUCCESS;
4763 }
4764
4765 static enum ndr_err_code ndr_pull_netr_DELTA_ID_UNION(struct ndr_pull *ndr, int ndr_flags, union netr_DELTA_ID_UNION *r)
4766 {
4767         int level;
4768         uint16_t _level;
4769         TALLOC_CTX *_mem_save_sid_0;
4770         TALLOC_CTX *_mem_save_name_0;
4771         level = ndr_pull_get_switch_value(ndr, r);
4772         if (ndr_flags & NDR_SCALARS) {
4773                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
4774                 if (_level != level) {
4775                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
4776                 }
4777                 switch (level) {
4778                         case NETR_DELTA_DOMAIN: {
4779                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
4780                         break; }
4781
4782                         case NETR_DELTA_GROUP: {
4783                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
4784                         break; }
4785
4786                         case NETR_DELTA_DELETE_GROUP: {
4787                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
4788                         break; }
4789
4790                         case NETR_DELTA_RENAME_GROUP: {
4791                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
4792                         break; }
4793
4794                         case NETR_DELTA_USER: {
4795                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
4796                         break; }
4797
4798                         case NETR_DELTA_DELETE_USER: {
4799                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
4800                         break; }
4801
4802                         case NETR_DELTA_RENAME_USER: {
4803                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
4804                         break; }
4805
4806                         case NETR_DELTA_GROUP_MEMBER: {
4807                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
4808                         break; }
4809
4810                         case NETR_DELTA_ALIAS: {
4811                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
4812                         break; }
4813
4814                         case NETR_DELTA_DELETE_ALIAS: {
4815                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
4816                         break; }
4817
4818                         case NETR_DELTA_RENAME_ALIAS: {
4819                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
4820                         break; }
4821
4822                         case NETR_DELTA_ALIAS_MEMBER: {
4823                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
4824                         break; }
4825
4826                         case NETR_DELTA_POLICY: {
4827                                 uint32_t _ptr_sid;
4828                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
4829                                 if (_ptr_sid) {
4830                                         NDR_PULL_ALLOC(ndr, r->sid);
4831                                 } else {
4832                                         r->sid = NULL;
4833                                 }
4834                         break; }
4835
4836                         case NETR_DELTA_TRUSTED_DOMAIN: {
4837                                 uint32_t _ptr_sid;
4838                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
4839                                 if (_ptr_sid) {
4840                                         NDR_PULL_ALLOC(ndr, r->sid);
4841                                 } else {
4842                                         r->sid = NULL;
4843                                 }
4844                         break; }
4845
4846                         case NETR_DELTA_DELETE_TRUST: {
4847                                 uint32_t _ptr_sid;
4848                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
4849                                 if (_ptr_sid) {
4850                                         NDR_PULL_ALLOC(ndr, r->sid);
4851                                 } else {
4852                                         r->sid = NULL;
4853                                 }
4854                         break; }
4855
4856                         case NETR_DELTA_ACCOUNT: {
4857                                 uint32_t _ptr_sid;
4858                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
4859                                 if (_ptr_sid) {
4860                                         NDR_PULL_ALLOC(ndr, r->sid);
4861                                 } else {
4862                                         r->sid = NULL;
4863                                 }
4864                         break; }
4865
4866                         case NETR_DELTA_DELETE_ACCOUNT: {
4867                                 uint32_t _ptr_sid;
4868                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
4869                                 if (_ptr_sid) {
4870                                         NDR_PULL_ALLOC(ndr, r->sid);
4871                                 } else {
4872                                         r->sid = NULL;
4873                                 }
4874                         break; }
4875
4876                         case NETR_DELTA_SECRET: {
4877                                 uint32_t _ptr_name;
4878                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
4879                                 if (_ptr_name) {
4880                                         NDR_PULL_ALLOC(ndr, r->name);
4881                                 } else {
4882                                         r->name = NULL;
4883                                 }
4884                         break; }
4885
4886                         case NETR_DELTA_DELETE_SECRET: {
4887                                 uint32_t _ptr_name;
4888                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
4889                                 if (_ptr_name) {
4890                                         NDR_PULL_ALLOC(ndr, r->name);
4891                                 } else {
4892                                         r->name = NULL;
4893                                 }
4894                         break; }
4895
4896                         case NETR_DELTA_DELETE_GROUP2: {
4897                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
4898                         break; }
4899
4900                         case NETR_DELTA_DELETE_USER2: {
4901                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
4902                         break; }
4903
4904                         case NETR_DELTA_MODIFY_COUNT: {
4905                         break; }
4906
4907                         default:
4908                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
4909                 }
4910         }
4911         if (ndr_flags & NDR_BUFFERS) {
4912                 switch (level) {
4913                         case NETR_DELTA_DOMAIN:
4914                         break;
4915
4916                         case NETR_DELTA_GROUP:
4917                         break;
4918
4919                         case NETR_DELTA_DELETE_GROUP:
4920                         break;
4921
4922                         case NETR_DELTA_RENAME_GROUP:
4923                         break;
4924
4925                         case NETR_DELTA_USER:
4926                         break;
4927
4928                         case NETR_DELTA_DELETE_USER:
4929                         break;
4930
4931                         case NETR_DELTA_RENAME_USER:
4932                         break;
4933
4934                         case NETR_DELTA_GROUP_MEMBER:
4935                         break;
4936
4937                         case NETR_DELTA_ALIAS:
4938                         break;
4939
4940                         case NETR_DELTA_DELETE_ALIAS:
4941                         break;
4942
4943                         case NETR_DELTA_RENAME_ALIAS:
4944                         break;
4945
4946                         case NETR_DELTA_ALIAS_MEMBER:
4947                         break;
4948
4949                         case NETR_DELTA_POLICY:
4950                                 if (r->sid) {
4951                                         _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
4952                                         NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
4953                                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
4954                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
4955                                 }
4956                         break;
4957
4958                         case NETR_DELTA_TRUSTED_DOMAIN:
4959                                 if (r->sid) {
4960                                         _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
4961                                         NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
4962                                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
4963                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
4964                                 }
4965                         break;
4966
4967                         case NETR_DELTA_DELETE_TRUST:
4968                                 if (r->sid) {
4969                                         _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
4970                                         NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
4971                                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
4972                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
4973                                 }
4974                         break;
4975
4976                         case NETR_DELTA_ACCOUNT:
4977                                 if (r->sid) {
4978                                         _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
4979                                         NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
4980                                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
4981                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
4982                                 }
4983                         break;
4984
4985                         case NETR_DELTA_DELETE_ACCOUNT:
4986                                 if (r->sid) {
4987                                         _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
4988                                         NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
4989                                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
4990                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
4991                                 }
4992                         break;
4993
4994                         case NETR_DELTA_SECRET:
4995                                 if (r->name) {
4996                                         _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
4997                                         NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
4998                                         NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
4999                                         NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
5000                                         if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
5001                                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
5002                                         }
5003                                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t)));
5004                                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
5005                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
5006                                 }
5007                         break;
5008
5009                         case NETR_DELTA_DELETE_SECRET:
5010                                 if (r->name) {
5011                                         _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5012                                         NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
5013                                         NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
5014                                         NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
5015                                         if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
5016                                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->name), ndr_get_array_length(ndr, &r->name));
5017                                         }
5018                                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t)));
5019                                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
5020                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
5021                                 }
5022                         break;
5023
5024                         case NETR_DELTA_DELETE_GROUP2:
5025                         break;
5026
5027                         case NETR_DELTA_DELETE_USER2:
5028                         break;
5029
5030                         case NETR_DELTA_MODIFY_COUNT:
5031                         break;
5032
5033                         default:
5034                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
5035                 }
5036         }
5037         return NDR_ERR_SUCCESS;
5038 }
5039
5040 _PUBLIC_ void ndr_print_netr_DELTA_ID_UNION(struct ndr_print *ndr, const char *name, const union netr_DELTA_ID_UNION *r)
5041 {
5042         int level;
5043         level = ndr_print_get_switch_value(ndr, r);
5044         ndr_print_union(ndr, name, level, "netr_DELTA_ID_UNION");
5045         switch (level) {
5046                 case NETR_DELTA_DOMAIN:
5047                         ndr_print_uint32(ndr, "rid", r->rid);
5048                 break;
5049
5050                 case NETR_DELTA_GROUP:
5051                         ndr_print_uint32(ndr, "rid", r->rid);
5052                 break;
5053
5054                 case NETR_DELTA_DELETE_GROUP:
5055                         ndr_print_uint32(ndr, "rid", r->rid);
5056                 break;
5057
5058                 case NETR_DELTA_RENAME_GROUP:
5059                         ndr_print_uint32(ndr, "rid", r->rid);
5060                 break;
5061
5062                 case NETR_DELTA_USER:
5063                         ndr_print_uint32(ndr, "rid", r->rid);
5064                 break;
5065
5066                 case NETR_DELTA_DELETE_USER:
5067                         ndr_print_uint32(ndr, "rid", r->rid);
5068                 break;
5069
5070                 case NETR_DELTA_RENAME_USER:
5071                         ndr_print_uint32(ndr, "rid", r->rid);
5072                 break;
5073
5074                 case NETR_DELTA_GROUP_MEMBER:
5075                         ndr_print_uint32(ndr, "rid", r->rid);
5076                 break;
5077
5078                 case NETR_DELTA_ALIAS:
5079                         ndr_print_uint32(ndr, "rid", r->rid);
5080                 break;
5081
5082                 case NETR_DELTA_DELETE_ALIAS:
5083                         ndr_print_uint32(ndr, "rid", r->rid);
5084                 break;
5085
5086                 case NETR_DELTA_RENAME_ALIAS:
5087                         ndr_print_uint32(ndr, "rid", r->rid);
5088                 break;
5089
5090                 case NETR_DELTA_ALIAS_MEMBER:
5091                         ndr_print_uint32(ndr, "rid", r->rid);
5092                 break;
5093
5094                 case NETR_DELTA_POLICY:
5095                         ndr_print_ptr(ndr, "sid", r->sid);
5096                         ndr->depth++;
5097                         if (r->sid) {
5098                                 ndr_print_dom_sid2(ndr, "sid", r->sid);
5099                         }
5100                         ndr->depth--;
5101                 break;
5102
5103                 case NETR_DELTA_TRUSTED_DOMAIN:
5104                         ndr_print_ptr(ndr, "sid", r->sid);
5105                         ndr->depth++;
5106                         if (r->sid) {
5107                                 ndr_print_dom_sid2(ndr, "sid", r->sid);
5108                         }
5109                         ndr->depth--;
5110                 break;
5111
5112                 case NETR_DELTA_DELETE_TRUST:
5113                         ndr_print_ptr(ndr, "sid", r->sid);
5114                         ndr->depth++;
5115                         if (r->sid) {
5116                                 ndr_print_dom_sid2(ndr, "sid", r->sid);
5117                         }
5118                         ndr->depth--;
5119                 break;
5120
5121                 case NETR_DELTA_ACCOUNT:
5122                         ndr_print_ptr(ndr, "sid", r->sid);
5123                         ndr->depth++;
5124                         if (r->sid) {
5125                                 ndr_print_dom_sid2(ndr, "sid", r->sid);
5126                         }
5127                         ndr->depth--;
5128                 break;
5129
5130                 case NETR_DELTA_DELETE_ACCOUNT:
5131                         ndr_print_ptr(ndr, "sid", r->sid);
5132                         ndr->depth++;
5133                         if (r->sid) {
5134                                 ndr_print_dom_sid2(ndr, "sid", r->sid);
5135                         }
5136                         ndr->depth--;
5137                 break;
5138
5139                 case NETR_DELTA_SECRET:
5140                         ndr_print_ptr(ndr, "name", r->name);
5141                         ndr->depth++;
5142                         if (r->name) {
5143                                 ndr_print_string(ndr, "name", r->name);
5144                         }
5145                         ndr->depth--;
5146                 break;
5147
5148                 case NETR_DELTA_DELETE_SECRET:
5149                         ndr_print_ptr(ndr, "name", r->name);
5150                         ndr->depth++;
5151                         if (r->name) {
5152                                 ndr_print_string(ndr, "name", r->name);
5153                         }
5154                         ndr->depth--;
5155                 break;
5156
5157                 case NETR_DELTA_DELETE_GROUP2:
5158                         ndr_print_uint32(ndr, "rid", r->rid);
5159                 break;
5160
5161                 case NETR_DELTA_DELETE_USER2:
5162                         ndr_print_uint32(ndr, "rid", r->rid);
5163                 break;
5164
5165                 case NETR_DELTA_MODIFY_COUNT:
5166                 break;
5167
5168                 default:
5169                         ndr_print_bad_level(ndr, name, level);
5170         }
5171 }
5172
5173 static enum ndr_err_code ndr_push_netr_DELTA_ENUM(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_ENUM *r)
5174 {
5175         if (ndr_flags & NDR_SCALARS) {
5176                 NDR_CHECK(ndr_push_align(ndr, 4));
5177                 NDR_CHECK(ndr_push_netr_DeltaEnum(ndr, NDR_SCALARS, r->delta_type));
5178                 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->delta_id_union, r->delta_type));
5179                 NDR_CHECK(ndr_push_netr_DELTA_ID_UNION(ndr, NDR_SCALARS, &r->delta_id_union));
5180                 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->delta_union, r->delta_type));
5181                 NDR_CHECK(ndr_push_netr_DELTA_UNION(ndr, NDR_SCALARS, &r->delta_union));
5182         }
5183         if (ndr_flags & NDR_BUFFERS) {
5184                 NDR_CHECK(ndr_push_netr_DELTA_ID_UNION(ndr, NDR_BUFFERS, &r->delta_id_union));
5185                 NDR_CHECK(ndr_push_netr_DELTA_UNION(ndr, NDR_BUFFERS, &r->delta_union));
5186         }
5187         return NDR_ERR_SUCCESS;
5188 }
5189
5190 static enum ndr_err_code ndr_pull_netr_DELTA_ENUM(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_ENUM *r)
5191 {
5192         if (ndr_flags & NDR_SCALARS) {
5193                 NDR_CHECK(ndr_pull_align(ndr, 4));
5194                 NDR_CHECK(ndr_pull_netr_DeltaEnum(ndr, NDR_SCALARS, &r->delta_type));
5195                 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->delta_id_union, r->delta_type));
5196                 NDR_CHECK(ndr_pull_netr_DELTA_ID_UNION(ndr, NDR_SCALARS, &r->delta_id_union));
5197                 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->delta_union, r->delta_type));
5198                 NDR_CHECK(ndr_pull_netr_DELTA_UNION(ndr, NDR_SCALARS, &r->delta_union));
5199         }
5200         if (ndr_flags & NDR_BUFFERS) {
5201                 NDR_CHECK(ndr_pull_netr_DELTA_ID_UNION(ndr, NDR_BUFFERS, &r->delta_id_union));
5202                 NDR_CHECK(ndr_pull_netr_DELTA_UNION(ndr, NDR_BUFFERS, &r->delta_union));
5203         }
5204         return NDR_ERR_SUCCESS;
5205 }
5206
5207 _PUBLIC_ void ndr_print_netr_DELTA_ENUM(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ENUM *r)
5208 {
5209         ndr_print_struct(ndr, name, "netr_DELTA_ENUM");
5210         ndr->depth++;
5211         ndr_print_netr_DeltaEnum(ndr, "delta_type", r->delta_type);
5212         ndr_print_set_switch_value(ndr, &r->delta_id_union, r->delta_type);
5213         ndr_print_netr_DELTA_ID_UNION(ndr, "delta_id_union", &r->delta_id_union);
5214         ndr_print_set_switch_value(ndr, &r->delta_union, r->delta_type);
5215         ndr_print_netr_DELTA_UNION(ndr, "delta_union", &r->delta_union);
5216         ndr->depth--;
5217 }
5218
5219 static enum ndr_err_code ndr_push_netr_DELTA_ENUM_ARRAY(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_ENUM_ARRAY *r)
5220 {
5221         uint32_t cntr_delta_enum_1;
5222         if (ndr_flags & NDR_SCALARS) {
5223                 NDR_CHECK(ndr_push_align(ndr, 4));
5224                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_deltas));
5225                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->delta_enum));
5226         }
5227         if (ndr_flags & NDR_BUFFERS) {
5228                 if (r->delta_enum) {
5229                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_deltas));
5230                         for (cntr_delta_enum_1 = 0; cntr_delta_enum_1 < r->num_deltas; cntr_delta_enum_1++) {
5231                                 NDR_CHECK(ndr_push_netr_DELTA_ENUM(ndr, NDR_SCALARS, &r->delta_enum[cntr_delta_enum_1]));
5232                         }
5233                         for (cntr_delta_enum_1 = 0; cntr_delta_enum_1 < r->num_deltas; cntr_delta_enum_1++) {
5234                                 NDR_CHECK(ndr_push_netr_DELTA_ENUM(ndr, NDR_BUFFERS, &r->delta_enum[cntr_delta_enum_1]));
5235                         }
5236                 }
5237         }
5238         return NDR_ERR_SUCCESS;
5239 }
5240
5241 static enum ndr_err_code ndr_pull_netr_DELTA_ENUM_ARRAY(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_ENUM_ARRAY *r)
5242 {
5243         uint32_t _ptr_delta_enum;
5244         uint32_t cntr_delta_enum_1;
5245         TALLOC_CTX *_mem_save_delta_enum_0;
5246         TALLOC_CTX *_mem_save_delta_enum_1;
5247         if (ndr_flags & NDR_SCALARS) {
5248                 NDR_CHECK(ndr_pull_align(ndr, 4));
5249                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_deltas));
5250                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delta_enum));
5251                 if (_ptr_delta_enum) {
5252                         NDR_PULL_ALLOC(ndr, r->delta_enum);
5253                 } else {
5254                         r->delta_enum = NULL;
5255                 }
5256         }
5257         if (ndr_flags & NDR_BUFFERS) {
5258                 if (r->delta_enum) {
5259                         _mem_save_delta_enum_0 = NDR_PULL_GET_MEM_CTX(ndr);
5260                         NDR_PULL_SET_MEM_CTX(ndr, r->delta_enum, 0);
5261                         NDR_CHECK(ndr_pull_array_size(ndr, &r->delta_enum));
5262                         NDR_PULL_ALLOC_N(ndr, r->delta_enum, ndr_get_array_size(ndr, &r->delta_enum));
5263                         _mem_save_delta_enum_1 = NDR_PULL_GET_MEM_CTX(ndr);
5264                         NDR_PULL_SET_MEM_CTX(ndr, r->delta_enum, 0);
5265                         for (cntr_delta_enum_1 = 0; cntr_delta_enum_1 < r->num_deltas; cntr_delta_enum_1++) {
5266                                 NDR_CHECK(ndr_pull_netr_DELTA_ENUM(ndr, NDR_SCALARS, &r->delta_enum[cntr_delta_enum_1]));
5267                         }
5268                         for (cntr_delta_enum_1 = 0; cntr_delta_enum_1 < r->num_deltas; cntr_delta_enum_1++) {
5269                                 NDR_CHECK(ndr_pull_netr_DELTA_ENUM(ndr, NDR_BUFFERS, &r->delta_enum[cntr_delta_enum_1]));
5270                         }
5271                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_1, 0);
5272                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_0, 0);
5273                 }
5274                 if (r->delta_enum) {
5275                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->delta_enum, r->num_deltas));
5276                 }
5277         }
5278         return NDR_ERR_SUCCESS;
5279 }
5280
5281 _PUBLIC_ void ndr_print_netr_DELTA_ENUM_ARRAY(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ENUM_ARRAY *r)
5282 {
5283         uint32_t cntr_delta_enum_1;
5284         ndr_print_struct(ndr, name, "netr_DELTA_ENUM_ARRAY");
5285         ndr->depth++;
5286         ndr_print_uint32(ndr, "num_deltas", r->num_deltas);
5287         ndr_print_ptr(ndr, "delta_enum", r->delta_enum);
5288         ndr->depth++;
5289         if (r->delta_enum) {
5290                 ndr->print(ndr, "%s: ARRAY(%d)", "delta_enum", r->num_deltas);
5291                 ndr->depth++;
5292                 for (cntr_delta_enum_1=0;cntr_delta_enum_1<r->num_deltas;cntr_delta_enum_1++) {
5293                         char *idx_1=NULL;
5294                         asprintf(&idx_1, "[%d]", cntr_delta_enum_1);
5295                         if (idx_1) {
5296                                 ndr_print_netr_DELTA_ENUM(ndr, "delta_enum", &r->delta_enum[cntr_delta_enum_1]);
5297                                 free(idx_1);
5298                         }
5299                 }
5300                 ndr->depth--;
5301         }
5302         ndr->depth--;
5303         ndr->depth--;
5304 }
5305
5306 static enum ndr_err_code ndr_push_netr_UAS_INFO_0(struct ndr_push *ndr, int ndr_flags, const struct netr_UAS_INFO_0 *r)
5307 {
5308         {
5309                 uint32_t _flags_save_STRUCT = ndr->flags;
5310                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
5311                 if (ndr_flags & NDR_SCALARS) {
5312                         NDR_CHECK(ndr_push_align(ndr, 4));
5313                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->computer_name, 16));
5314                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->timecreated));
5315                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->serial_number));
5316                 }
5317                 if (ndr_flags & NDR_BUFFERS) {
5318                 }
5319                 ndr->flags = _flags_save_STRUCT;
5320         }
5321         return NDR_ERR_SUCCESS;
5322 }
5323
5324 static enum ndr_err_code ndr_pull_netr_UAS_INFO_0(struct ndr_pull *ndr, int ndr_flags, struct netr_UAS_INFO_0 *r)
5325 {
5326         {
5327                 uint32_t _flags_save_STRUCT = ndr->flags;
5328                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
5329                 if (ndr_flags & NDR_SCALARS) {
5330                         NDR_CHECK(ndr_pull_align(ndr, 4));
5331                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->computer_name, 16));
5332                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->timecreated));
5333                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->serial_number));
5334                 }
5335                 if (ndr_flags & NDR_BUFFERS) {
5336                 }
5337                 ndr->flags = _flags_save_STRUCT;
5338         }
5339         return NDR_ERR_SUCCESS;
5340 }
5341
5342 _PUBLIC_ void ndr_print_netr_UAS_INFO_0(struct ndr_print *ndr, const char *name, const struct netr_UAS_INFO_0 *r)
5343 {
5344         ndr_print_struct(ndr, name, "netr_UAS_INFO_0");
5345         {
5346                 uint32_t _flags_save_STRUCT = ndr->flags;
5347                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
5348                 ndr->depth++;
5349                 ndr_print_array_uint8(ndr, "computer_name", r->computer_name, 16);
5350                 ndr_print_uint32(ndr, "timecreated", r->timecreated);
5351                 ndr_print_uint32(ndr, "serial_number", r->serial_number);
5352                 ndr->depth--;
5353                 ndr->flags = _flags_save_STRUCT;
5354         }
5355 }
5356
5357 static enum ndr_err_code ndr_push_netr_AccountBuffer(struct ndr_push *ndr, int ndr_flags, const struct netr_AccountBuffer *r)
5358 {
5359         if (ndr_flags & NDR_SCALARS) {
5360                 NDR_CHECK(ndr_push_align(ndr, 4));
5361                 {
5362                         uint32_t _flags_save_DATA_BLOB = ndr->flags;
5363                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
5364                         NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->blob));
5365                         ndr->flags = _flags_save_DATA_BLOB;
5366                 }
5367         }
5368         if (ndr_flags & NDR_BUFFERS) {
5369         }
5370         return NDR_ERR_SUCCESS;
5371 }
5372
5373 static enum ndr_err_code ndr_pull_netr_AccountBuffer(struct ndr_pull *ndr, int ndr_flags, struct netr_AccountBuffer *r)
5374 {
5375         if (ndr_flags & NDR_SCALARS) {
5376                 NDR_CHECK(ndr_pull_align(ndr, 4));
5377                 {
5378                         uint32_t _flags_save_DATA_BLOB = ndr->flags;
5379                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
5380                         NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->blob));
5381                         ndr->flags = _flags_save_DATA_BLOB;
5382                 }
5383         }
5384         if (ndr_flags & NDR_BUFFERS) {
5385         }
5386         return NDR_ERR_SUCCESS;
5387 }
5388
5389 _PUBLIC_ void ndr_print_netr_AccountBuffer(struct ndr_print *ndr, const char *name, const struct netr_AccountBuffer *r)
5390 {
5391         ndr_print_struct(ndr, name, "netr_AccountBuffer");
5392         ndr->depth++;
5393         ndr_print_DATA_BLOB(ndr, "blob", r->blob);
5394         ndr->depth--;
5395 }
5396
5397 static enum ndr_err_code ndr_push_netr_NETLOGON_INFO_1(struct ndr_push *ndr, int ndr_flags, const struct netr_NETLOGON_INFO_1 *r)
5398 {
5399         if (ndr_flags & NDR_SCALARS) {
5400                 NDR_CHECK(ndr_push_align(ndr, 4));
5401                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags));
5402                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pdc_connection_status));
5403         }
5404         if (ndr_flags & NDR_BUFFERS) {
5405         }
5406         return NDR_ERR_SUCCESS;
5407 }
5408
5409 static enum ndr_err_code ndr_pull_netr_NETLOGON_INFO_1(struct ndr_pull *ndr, int ndr_flags, struct netr_NETLOGON_INFO_1 *r)
5410 {
5411         if (ndr_flags & NDR_SCALARS) {
5412                 NDR_CHECK(ndr_pull_align(ndr, 4));
5413                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags));
5414                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pdc_connection_status));
5415         }
5416         if (ndr_flags & NDR_BUFFERS) {
5417         }
5418         return NDR_ERR_SUCCESS;
5419 }
5420
5421 _PUBLIC_ void ndr_print_netr_NETLOGON_INFO_1(struct ndr_print *ndr, const char *name, const struct netr_NETLOGON_INFO_1 *r)
5422 {
5423         ndr_print_struct(ndr, name, "netr_NETLOGON_INFO_1");
5424         ndr->depth++;
5425         ndr_print_uint32(ndr, "flags", r->flags);
5426         ndr_print_uint32(ndr, "pdc_connection_status", r->pdc_connection_status);
5427         ndr->depth--;
5428 }
5429
5430 static enum ndr_err_code ndr_push_netr_NETLOGON_INFO_2(struct ndr_push *ndr, int ndr_flags, const struct netr_NETLOGON_INFO_2 *r)
5431 {
5432         if (ndr_flags & NDR_SCALARS) {
5433                 NDR_CHECK(ndr_push_align(ndr, 4));
5434                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags));
5435                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pdc_connection_status));
5436                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->trusted_dc_name, CH_UTF16)));
5437                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5438                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->trusted_dc_name, CH_UTF16)));
5439                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->trusted_dc_name, ndr_charset_length(r->trusted_dc_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5440                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->tc_connection_status));
5441         }
5442         if (ndr_flags & NDR_BUFFERS) {
5443         }
5444         return NDR_ERR_SUCCESS;
5445 }
5446
5447 static enum ndr_err_code ndr_pull_netr_NETLOGON_INFO_2(struct ndr_pull *ndr, int ndr_flags, struct netr_NETLOGON_INFO_2 *r)
5448 {
5449         if (ndr_flags & NDR_SCALARS) {
5450                 NDR_CHECK(ndr_pull_align(ndr, 4));
5451                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags));
5452                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pdc_connection_status));
5453                 NDR_CHECK(ndr_pull_array_size(ndr, &r->trusted_dc_name));
5454                 NDR_CHECK(ndr_pull_array_length(ndr, &r->trusted_dc_name));
5455                 if (ndr_get_array_length(ndr, &r->trusted_dc_name) > ndr_get_array_size(ndr, &r->trusted_dc_name)) {
5456                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->trusted_dc_name), ndr_get_array_length(ndr, &r->trusted_dc_name));
5457                 }
5458                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->trusted_dc_name), sizeof(uint16_t)));
5459                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->trusted_dc_name, ndr_get_array_length(ndr, &r->trusted_dc_name), sizeof(uint16_t), CH_UTF16));
5460                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->tc_connection_status));
5461         }
5462         if (ndr_flags & NDR_BUFFERS) {
5463         }
5464         return NDR_ERR_SUCCESS;
5465 }
5466
5467 _PUBLIC_ void ndr_print_netr_NETLOGON_INFO_2(struct ndr_print *ndr, const char *name, const struct netr_NETLOGON_INFO_2 *r)
5468 {
5469         ndr_print_struct(ndr, name, "netr_NETLOGON_INFO_2");
5470         ndr->depth++;
5471         ndr_print_uint32(ndr, "flags", r->flags);
5472         ndr_print_uint32(ndr, "pdc_connection_status", r->pdc_connection_status);
5473         ndr_print_string(ndr, "trusted_dc_name", r->trusted_dc_name);
5474         ndr_print_uint32(ndr, "tc_connection_status", r->tc_connection_status);
5475         ndr->depth--;
5476 }
5477
5478 static enum ndr_err_code ndr_push_netr_NETLOGON_INFO_3(struct ndr_push *ndr, int ndr_flags, const struct netr_NETLOGON_INFO_3 *r)
5479 {
5480         if (ndr_flags & NDR_SCALARS) {
5481                 NDR_CHECK(ndr_push_align(ndr, 4));
5482                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags));
5483                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->logon_attempts));
5484                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
5485                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
5486                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown3));
5487                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown4));
5488                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
5489         }
5490         if (ndr_flags & NDR_BUFFERS) {
5491         }
5492         return NDR_ERR_SUCCESS;
5493 }
5494
5495 static enum ndr_err_code ndr_pull_netr_NETLOGON_INFO_3(struct ndr_pull *ndr, int ndr_flags, struct netr_NETLOGON_INFO_3 *r)
5496 {
5497         if (ndr_flags & NDR_SCALARS) {
5498                 NDR_CHECK(ndr_pull_align(ndr, 4));
5499                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags));
5500                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->logon_attempts));
5501                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
5502                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
5503                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown3));
5504                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown4));
5505                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
5506         }
5507         if (ndr_flags & NDR_BUFFERS) {
5508         }
5509         return NDR_ERR_SUCCESS;
5510 }
5511
5512 _PUBLIC_ void ndr_print_netr_NETLOGON_INFO_3(struct ndr_print *ndr, const char *name, const struct netr_NETLOGON_INFO_3 *r)
5513 {
5514         ndr_print_struct(ndr, name, "netr_NETLOGON_INFO_3");
5515         ndr->depth++;
5516         ndr_print_uint32(ndr, "flags", r->flags);
5517         ndr_print_uint32(ndr, "logon_attempts", r->logon_attempts);
5518         ndr_print_uint32(ndr, "unknown1", r->unknown1);
5519         ndr_print_uint32(ndr, "unknown2", r->unknown2);
5520         ndr_print_uint32(ndr, "unknown3", r->unknown3);
5521         ndr_print_uint32(ndr, "unknown4", r->unknown4);
5522         ndr_print_uint32(ndr, "unknown5", r->unknown5);
5523         ndr->depth--;
5524 }
5525
5526 static enum ndr_err_code ndr_push_netr_CONTROL_QUERY_INFORMATION(struct ndr_push *ndr, int ndr_flags, const union netr_CONTROL_QUERY_INFORMATION *r)
5527 {
5528         if (ndr_flags & NDR_SCALARS) {
5529                 int level = ndr_push_get_switch_value(ndr, r);
5530                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
5531                 switch (level) {
5532                         case 1: {
5533                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1));
5534                         break; }
5535
5536                         case 2: {
5537                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->info2));
5538                         break; }
5539
5540                         case 3: {
5541                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->info3));
5542                         break; }
5543
5544                         default:
5545                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
5546                 }
5547         }
5548         if (ndr_flags & NDR_BUFFERS) {
5549                 int level = ndr_push_get_switch_value(ndr, r);
5550                 switch (level) {
5551                         case 1:
5552                                 if (r->info1) {
5553                                         NDR_CHECK(ndr_push_netr_NETLOGON_INFO_1(ndr, NDR_SCALARS, r->info1));
5554                                 }
5555                         break;
5556
5557                         case 2:
5558                                 if (r->info2) {
5559                                         NDR_CHECK(ndr_push_netr_NETLOGON_INFO_2(ndr, NDR_SCALARS, r->info2));
5560                                 }
5561                         break;
5562
5563                         case 3:
5564                                 if (r->info3) {
5565                                         NDR_CHECK(ndr_push_netr_NETLOGON_INFO_3(ndr, NDR_SCALARS, r->info3));
5566                                 }
5567                         break;
5568
5569                         default:
5570                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
5571                 }
5572         }
5573         return NDR_ERR_SUCCESS;
5574 }
5575
5576 static enum ndr_err_code ndr_pull_netr_CONTROL_QUERY_INFORMATION(struct ndr_pull *ndr, int ndr_flags, union netr_CONTROL_QUERY_INFORMATION *r)
5577 {
5578         int level;
5579         uint32_t _level;
5580         TALLOC_CTX *_mem_save_info1_0;
5581         TALLOC_CTX *_mem_save_info2_0;
5582         TALLOC_CTX *_mem_save_info3_0;
5583         level = ndr_pull_get_switch_value(ndr, r);
5584         if (ndr_flags & NDR_SCALARS) {
5585                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
5586                 if (_level != level) {
5587                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
5588                 }
5589                 switch (level) {
5590                         case 1: {
5591                                 uint32_t _ptr_info1;
5592                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1));
5593                                 if (_ptr_info1) {
5594                                         NDR_PULL_ALLOC(ndr, r->info1);
5595                                 } else {
5596                                         r->info1 = NULL;
5597                                 }
5598                         break; }
5599
5600                         case 2: {
5601                                 uint32_t _ptr_info2;
5602                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info2));
5603                                 if (_ptr_info2) {
5604                                         NDR_PULL_ALLOC(ndr, r->info2);
5605                                 } else {
5606                                         r->info2 = NULL;
5607                                 }
5608                         break; }
5609
5610                         case 3: {
5611                                 uint32_t _ptr_info3;
5612                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info3));
5613                                 if (_ptr_info3) {
5614                                         NDR_PULL_ALLOC(ndr, r->info3);
5615                                 } else {
5616                                         r->info3 = NULL;
5617                                 }
5618                         break; }
5619
5620                         default:
5621                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
5622                 }
5623         }
5624         if (ndr_flags & NDR_BUFFERS) {
5625                 switch (level) {
5626                         case 1:
5627                                 if (r->info1) {
5628                                         _mem_save_info1_0 = NDR_PULL_GET_MEM_CTX(ndr);
5629                                         NDR_PULL_SET_MEM_CTX(ndr, r->info1, 0);
5630                                         NDR_CHECK(ndr_pull_netr_NETLOGON_INFO_1(ndr, NDR_SCALARS, r->info1));
5631                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1_0, 0);
5632                                 }
5633                         break;
5634
5635                         case 2:
5636                                 if (r->info2) {
5637                                         _mem_save_info2_0 = NDR_PULL_GET_MEM_CTX(ndr);
5638                                         NDR_PULL_SET_MEM_CTX(ndr, r->info2, 0);
5639                                         NDR_CHECK(ndr_pull_netr_NETLOGON_INFO_2(ndr, NDR_SCALARS, r->info2));
5640                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info2_0, 0);
5641                                 }
5642                         break;
5643
5644                         case 3:
5645                                 if (r->info3) {
5646                                         _mem_save_info3_0 = NDR_PULL_GET_MEM_CTX(ndr);
5647                                         NDR_PULL_SET_MEM_CTX(ndr, r->info3, 0);
5648                                         NDR_CHECK(ndr_pull_netr_NETLOGON_INFO_3(ndr, NDR_SCALARS, r->info3));
5649                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info3_0, 0);
5650                                 }
5651                         break;
5652
5653                         default:
5654                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
5655                 }
5656         }
5657         return NDR_ERR_SUCCESS;
5658 }
5659
5660 _PUBLIC_ void ndr_print_netr_CONTROL_QUERY_INFORMATION(struct ndr_print *ndr, const char *name, const union netr_CONTROL_QUERY_INFORMATION *r)
5661 {
5662         int level;
5663         level = ndr_print_get_switch_value(ndr, r);
5664         ndr_print_union(ndr, name, level, "netr_CONTROL_QUERY_INFORMATION");
5665         switch (level) {
5666                 case 1:
5667                         ndr_print_ptr(ndr, "info1", r->info1);
5668                         ndr->depth++;
5669                         if (r->info1) {
5670                                 ndr_print_netr_NETLOGON_INFO_1(ndr, "info1", r->info1);
5671                         }
5672                         ndr->depth--;
5673                 break;
5674
5675                 case 2:
5676                         ndr_print_ptr(ndr, "info2", r->info2);
5677                         ndr->depth++;
5678                         if (r->info2) {
5679                                 ndr_print_netr_NETLOGON_INFO_2(ndr, "info2", r->info2);
5680                         }
5681                         ndr->depth--;
5682                 break;
5683
5684                 case 3:
5685                         ndr_print_ptr(ndr, "info3", r->info3);
5686                         ndr->depth++;
5687                         if (r->info3) {
5688                                 ndr_print_netr_NETLOGON_INFO_3(ndr, "info3", r->info3);
5689                         }
5690                         ndr->depth--;
5691                 break;
5692
5693                 default:
5694                         ndr_print_bad_level(ndr, name, level);
5695         }
5696 }
5697
5698 static enum ndr_err_code ndr_push_netr_LogonControlCode(struct ndr_push *ndr, int ndr_flags, enum netr_LogonControlCode r)
5699 {
5700         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
5701         return NDR_ERR_SUCCESS;
5702 }
5703
5704 static enum ndr_err_code ndr_pull_netr_LogonControlCode(struct ndr_pull *ndr, int ndr_flags, enum netr_LogonControlCode *r)
5705 {
5706         uint32_t v;
5707         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
5708         *r = v;
5709         return NDR_ERR_SUCCESS;
5710 }
5711
5712 _PUBLIC_ void ndr_print_netr_LogonControlCode(struct ndr_print *ndr, const char *name, enum netr_LogonControlCode r)
5713 {
5714         const char *val = NULL;
5715
5716         switch (r) {
5717                 case NETLOGON_CONTROL_SYNC: val = "NETLOGON_CONTROL_SYNC"; break;
5718                 case NETLOGON_CONTROL_REDISCOVER: val = "NETLOGON_CONTROL_REDISCOVER"; break;
5719                 case NETLOGON_CONTROL_TC_QUERY: val = "NETLOGON_CONTROL_TC_QUERY"; break;
5720                 case NETLOGON_CONTROL_TRANSPORT_NOTIFY: val = "NETLOGON_CONTROL_TRANSPORT_NOTIFY"; break;
5721                 case NETLOGON_CONTROL_SET_DBFLAG: val = "NETLOGON_CONTROL_SET_DBFLAG"; break;
5722         }
5723         ndr_print_enum(ndr, name, "ENUM", val, r);
5724 }
5725
5726 static enum ndr_err_code ndr_push_netr_CONTROL_DATA_INFORMATION(struct ndr_push *ndr, int ndr_flags, const union netr_CONTROL_DATA_INFORMATION *r)
5727 {
5728         if (ndr_flags & NDR_SCALARS) {
5729                 int level = ndr_push_get_switch_value(ndr, r);
5730                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
5731                 switch (level) {
5732                         case NETLOGON_CONTROL_REDISCOVER: {
5733                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
5734                         break; }
5735
5736                         case NETLOGON_CONTROL_TC_QUERY: {
5737                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
5738                         break; }
5739
5740                         case NETLOGON_CONTROL_TRANSPORT_NOTIFY: {
5741                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
5742                         break; }
5743
5744                         case NETLOGON_CONTROL_SET_DBFLAG: {
5745                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->debug_level));
5746                         break; }
5747
5748                         default:
5749                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
5750                 }
5751         }
5752         if (ndr_flags & NDR_BUFFERS) {
5753                 int level = ndr_push_get_switch_value(ndr, r);
5754                 switch (level) {
5755                         case NETLOGON_CONTROL_REDISCOVER:
5756                                 if (r->domain) {
5757                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
5758                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5759                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
5760                                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain, ndr_charset_length(r->domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5761                                 }
5762                         break;
5763
5764                         case NETLOGON_CONTROL_TC_QUERY:
5765                                 if (r->domain) {
5766                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
5767                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5768                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
5769                                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain, ndr_charset_length(r->domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5770                                 }
5771                         break;
5772
5773                         case NETLOGON_CONTROL_TRANSPORT_NOTIFY:
5774                                 if (r->domain) {
5775                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
5776                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5777                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
5778                                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain, ndr_charset_length(r->domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5779                                 }
5780                         break;
5781
5782                         case NETLOGON_CONTROL_SET_DBFLAG:
5783                         break;
5784
5785                         default:
5786                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
5787                 }
5788         }
5789         return NDR_ERR_SUCCESS;
5790 }
5791
5792 static enum ndr_err_code ndr_pull_netr_CONTROL_DATA_INFORMATION(struct ndr_pull *ndr, int ndr_flags, union netr_CONTROL_DATA_INFORMATION *r)
5793 {
5794         int level;
5795         uint32_t _level;
5796         TALLOC_CTX *_mem_save_domain_0;
5797         level = ndr_pull_get_switch_value(ndr, r);
5798         if (ndr_flags & NDR_SCALARS) {
5799                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
5800                 if (_level != level) {
5801                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
5802                 }
5803                 switch (level) {
5804                         case NETLOGON_CONTROL_REDISCOVER: {
5805                                 uint32_t _ptr_domain;
5806                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
5807                                 if (_ptr_domain) {
5808                                         NDR_PULL_ALLOC(ndr, r->domain);
5809                                 } else {
5810                                         r->domain = NULL;
5811                                 }
5812                         break; }
5813
5814                         case NETLOGON_CONTROL_TC_QUERY: {
5815                                 uint32_t _ptr_domain;
5816                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
5817                                 if (_ptr_domain) {
5818                                         NDR_PULL_ALLOC(ndr, r->domain);
5819                                 } else {
5820                                         r->domain = NULL;
5821                                 }
5822                         break; }
5823
5824                         case NETLOGON_CONTROL_TRANSPORT_NOTIFY: {
5825                                 uint32_t _ptr_domain;
5826                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
5827                                 if (_ptr_domain) {
5828                                         NDR_PULL_ALLOC(ndr, r->domain);
5829                                 } else {
5830                                         r->domain = NULL;
5831                                 }
5832                         break; }
5833
5834                         case NETLOGON_CONTROL_SET_DBFLAG: {
5835                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->debug_level));
5836                         break; }
5837
5838                         default:
5839                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
5840                 }
5841         }
5842         if (ndr_flags & NDR_BUFFERS) {
5843                 switch (level) {
5844                         case NETLOGON_CONTROL_REDISCOVER:
5845                                 if (r->domain) {
5846                                         _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
5847                                         NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
5848                                         NDR_CHECK(ndr_pull_array_size(ndr, &r->domain));
5849                                         NDR_CHECK(ndr_pull_array_length(ndr, &r->domain));
5850                                         if (ndr_get_array_length(ndr, &r->domain) > ndr_get_array_size(ndr, &r->domain)) {
5851                                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->domain), ndr_get_array_length(ndr, &r->domain));
5852                                         }
5853                                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t)));
5854                                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t), CH_UTF16));
5855                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
5856                                 }
5857                         break;
5858
5859                         case NETLOGON_CONTROL_TC_QUERY:
5860                                 if (r->domain) {
5861                                         _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
5862                                         NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
5863                                         NDR_CHECK(ndr_pull_array_size(ndr, &r->domain));
5864                                         NDR_CHECK(ndr_pull_array_length(ndr, &r->domain));
5865                                         if (ndr_get_array_length(ndr, &r->domain) > ndr_get_array_size(ndr, &r->domain)) {
5866                                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->domain), ndr_get_array_length(ndr, &r->domain));
5867                                         }
5868                                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t)));
5869                                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t), CH_UTF16));
5870                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
5871                                 }
5872                         break;
5873
5874                         case NETLOGON_CONTROL_TRANSPORT_NOTIFY:
5875                                 if (r->domain) {
5876                                         _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
5877                                         NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
5878                                         NDR_CHECK(ndr_pull_array_size(ndr, &r->domain));
5879                                         NDR_CHECK(ndr_pull_array_length(ndr, &r->domain));
5880                                         if (ndr_get_array_length(ndr, &r->domain) > ndr_get_array_size(ndr, &r->domain)) {
5881                                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->domain), ndr_get_array_length(ndr, &r->domain));
5882                                         }
5883                                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t)));
5884                                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t), CH_UTF16));
5885                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
5886                                 }
5887                         break;
5888
5889                         case NETLOGON_CONTROL_SET_DBFLAG:
5890                         break;
5891
5892                         default:
5893                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
5894                 }
5895         }
5896         return NDR_ERR_SUCCESS;
5897 }
5898
5899 _PUBLIC_ void ndr_print_netr_CONTROL_DATA_INFORMATION(struct ndr_print *ndr, const char *name, const union netr_CONTROL_DATA_INFORMATION *r)
5900 {
5901         int level;
5902         level = ndr_print_get_switch_value(ndr, r);
5903         ndr_print_union(ndr, name, level, "netr_CONTROL_DATA_INFORMATION");
5904         switch (level) {
5905                 case NETLOGON_CONTROL_REDISCOVER:
5906                         ndr_print_ptr(ndr, "domain", r->domain);
5907                         ndr->depth++;
5908                         if (r->domain) {
5909                                 ndr_print_string(ndr, "domain", r->domain);
5910                         }
5911                         ndr->depth--;
5912                 break;
5913
5914                 case NETLOGON_CONTROL_TC_QUERY:
5915                         ndr_print_ptr(ndr, "domain", r->domain);
5916                         ndr->depth++;
5917                         if (r->domain) {
5918                                 ndr_print_string(ndr, "domain", r->domain);
5919                         }
5920                         ndr->depth--;
5921                 break;
5922
5923                 case NETLOGON_CONTROL_TRANSPORT_NOTIFY:
5924                         ndr_print_ptr(ndr, "domain", r->domain);
5925                         ndr->depth++;
5926                         if (r->domain) {
5927                                 ndr_print_string(ndr, "domain", r->domain);
5928                         }
5929                         ndr->depth--;
5930                 break;
5931
5932                 case NETLOGON_CONTROL_SET_DBFLAG:
5933                         ndr_print_uint32(ndr, "debug_level", r->debug_level);
5934                 break;
5935
5936                 default:
5937                         ndr_print_bad_level(ndr, name, level);
5938         }
5939 }
5940
5941 static enum ndr_err_code ndr_push_netr_Blob(struct ndr_push *ndr, int ndr_flags, const struct netr_Blob *r)
5942 {
5943         if (ndr_flags & NDR_SCALARS) {
5944                 NDR_CHECK(ndr_push_align(ndr, 4));
5945                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
5946                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
5947         }
5948         if (ndr_flags & NDR_BUFFERS) {
5949                 if (r->data) {
5950                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
5951                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, r->length));
5952                 }
5953         }
5954         return NDR_ERR_SUCCESS;
5955 }
5956
5957 static enum ndr_err_code ndr_pull_netr_Blob(struct ndr_pull *ndr, int ndr_flags, struct netr_Blob *r)
5958 {
5959         uint32_t _ptr_data;
5960         TALLOC_CTX *_mem_save_data_0;
5961         if (ndr_flags & NDR_SCALARS) {
5962                 NDR_CHECK(ndr_pull_align(ndr, 4));
5963                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
5964                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
5965                 if (_ptr_data) {
5966                         NDR_PULL_ALLOC(ndr, r->data);
5967                 } else {
5968                         r->data = NULL;
5969                 }
5970         }
5971         if (ndr_flags & NDR_BUFFERS) {
5972                 if (r->data) {
5973                         _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
5974                         NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
5975                         NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
5976                         NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
5977                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, ndr_get_array_size(ndr, &r->data)));
5978                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
5979                 }
5980                 if (r->data) {
5981                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->length));
5982                 }
5983         }
5984         return NDR_ERR_SUCCESS;
5985 }
5986
5987 _PUBLIC_ void ndr_print_netr_Blob(struct ndr_print *ndr, const char *name, const struct netr_Blob *r)
5988 {
5989         ndr_print_struct(ndr, name, "netr_Blob");
5990         ndr->depth++;
5991         ndr_print_uint32(ndr, "length", r->length);
5992         ndr_print_ptr(ndr, "data", r->data);
5993         ndr->depth++;
5994         if (r->data) {
5995                 ndr_print_array_uint8(ndr, "data", r->data, r->length);
5996         }
5997         ndr->depth--;
5998         ndr->depth--;
5999 }
6000
6001 static enum ndr_err_code ndr_push_netr_DsRGetDCName_flags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
6002 {
6003         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
6004         return NDR_ERR_SUCCESS;
6005 }
6006
6007 static enum ndr_err_code ndr_pull_netr_DsRGetDCName_flags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
6008 {
6009         uint32_t v;
6010         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
6011         *r = v;
6012         return NDR_ERR_SUCCESS;
6013 }
6014
6015 _PUBLIC_ void ndr_print_netr_DsRGetDCName_flags(struct ndr_print *ndr, const char *name, uint32_t r)
6016 {
6017         ndr_print_uint32(ndr, name, r);
6018         ndr->depth++;
6019         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_FORCE_REDISCOVERY", DS_FORCE_REDISCOVERY, r);
6020         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_DIRECTORY_SERVICE_REQUIRED", DS_DIRECTORY_SERVICE_REQUIRED, r);
6021         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_DIRECTORY_SERVICE_PREFERRED", DS_DIRECTORY_SERVICE_PREFERRED, r);
6022         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_GC_SERVER_REQUIRED", DS_GC_SERVER_REQUIRED, r);
6023         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_PDC_REQUIRED", DS_PDC_REQUIRED, r);
6024         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_BACKGROUND_ONLY", DS_BACKGROUND_ONLY, r);
6025         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_IP_REQUIRED", DS_IP_REQUIRED, r);
6026         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_KDC_REQUIRED", DS_KDC_REQUIRED, r);
6027         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_TIMESERV_REQUIRED", DS_TIMESERV_REQUIRED, r);
6028         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_WRITABLE_REQUIRED", DS_WRITABLE_REQUIRED, r);
6029         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_GOOD_TIMESERV_PREFERRED", DS_GOOD_TIMESERV_PREFERRED, r);
6030         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_AVOID_SELF", DS_AVOID_SELF, r);
6031         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_ONLY_LDAP_NEEDED", DS_ONLY_LDAP_NEEDED, r);
6032         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_IS_FLAT_NAME", DS_IS_FLAT_NAME, r);
6033         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_IS_DNS_NAME", DS_IS_DNS_NAME, r);
6034         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_TRY_NEXTCLOSEST_SITE", DS_TRY_NEXTCLOSEST_SITE, r);
6035         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_DIRECTORY_SERVICE_6_REQUIRED", DS_DIRECTORY_SERVICE_6_REQUIRED, r);
6036         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_RETURN_DNS_NAME", DS_RETURN_DNS_NAME, r);
6037         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_RETURN_FLAT_NAME", DS_RETURN_FLAT_NAME, r);
6038         ndr->depth--;
6039 }
6040
6041 static enum ndr_err_code ndr_push_netr_DsRGetDCNameInfo_AddressType(struct ndr_push *ndr, int ndr_flags, enum netr_DsRGetDCNameInfo_AddressType r)
6042 {
6043         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
6044         return NDR_ERR_SUCCESS;
6045 }
6046
6047 static enum ndr_err_code ndr_pull_netr_DsRGetDCNameInfo_AddressType(struct ndr_pull *ndr, int ndr_flags, enum netr_DsRGetDCNameInfo_AddressType *r)
6048 {
6049         uint32_t v;
6050         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
6051         *r = v;
6052         return NDR_ERR_SUCCESS;
6053 }
6054
6055 _PUBLIC_ void ndr_print_netr_DsRGetDCNameInfo_AddressType(struct ndr_print *ndr, const char *name, enum netr_DsRGetDCNameInfo_AddressType r)
6056 {
6057         const char *val = NULL;
6058
6059         switch (r) {
6060                 case DS_ADDRESS_TYPE_INET: val = "DS_ADDRESS_TYPE_INET"; break;
6061                 case DS_ADDRESS_TYPE_NETBIOS: val = "DS_ADDRESS_TYPE_NETBIOS"; break;
6062         }
6063         ndr_print_enum(ndr, name, "ENUM", val, r);
6064 }
6065
6066 static enum ndr_err_code ndr_push_netr_DsR_DcFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
6067 {
6068         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
6069         return NDR_ERR_SUCCESS;
6070 }
6071
6072 static enum ndr_err_code ndr_pull_netr_DsR_DcFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
6073 {
6074         uint32_t v;
6075         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
6076         *r = v;
6077         return NDR_ERR_SUCCESS;
6078 }
6079
6080 _PUBLIC_ void ndr_print_netr_DsR_DcFlags(struct ndr_print *ndr, const char *name, uint32_t r)
6081 {
6082         ndr_print_uint32(ndr, name, r);
6083         ndr->depth++;
6084         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_PDC", DS_SERVER_PDC, r);
6085         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_GC", DS_SERVER_GC, r);
6086         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_LDAP", DS_SERVER_LDAP, r);
6087         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_DS", DS_SERVER_DS, r);
6088         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_KDC", DS_SERVER_KDC, r);
6089         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_TIMESERV", DS_SERVER_TIMESERV, r);
6090         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_CLOSEST", DS_SERVER_CLOSEST, r);
6091         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_WRITABLE", DS_SERVER_WRITABLE, r);
6092         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_GOOD_TIMESERV", DS_SERVER_GOOD_TIMESERV, r);
6093         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_NDNC", DS_SERVER_NDNC, r);
6094         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_SELECT_SECRET_DOMAIN_6", DS_SERVER_SELECT_SECRET_DOMAIN_6, r);
6095         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_FULL_SECRET_DOMAIN_6", DS_SERVER_FULL_SECRET_DOMAIN_6, r);
6096         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_DNS_CONTROLLER", DS_DNS_CONTROLLER, r);
6097         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_DNS_DOMAIN", DS_DNS_DOMAIN, r);
6098         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_DNS_FOREST", DS_DNS_FOREST, r);
6099         ndr->depth--;
6100 }
6101
6102 static enum ndr_err_code ndr_push_netr_DsRGetDCNameInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_DsRGetDCNameInfo *r)
6103 {
6104         if (ndr_flags & NDR_SCALARS) {
6105                 NDR_CHECK(ndr_push_align(ndr, 4));
6106                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dc_unc));
6107                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dc_address));
6108                 NDR_CHECK(ndr_push_netr_DsRGetDCNameInfo_AddressType(ndr, NDR_SCALARS, r->dc_address_type));
6109                 NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->domain_guid));
6110                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain_name));
6111                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->forest_name));
6112                 NDR_CHECK(ndr_push_netr_DsR_DcFlags(ndr, NDR_SCALARS, r->dc_flags));
6113                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dc_site_name));
6114                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->client_site_name));
6115         }
6116         if (ndr_flags & NDR_BUFFERS) {
6117                 if (r->dc_unc) {
6118                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_unc, CH_UTF16)));
6119                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6120                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_unc, CH_UTF16)));
6121                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dc_unc, ndr_charset_length(r->dc_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6122                 }
6123                 if (r->dc_address) {
6124                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_address, CH_UTF16)));
6125                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6126                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_address, CH_UTF16)));
6127                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dc_address, ndr_charset_length(r->dc_address, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6128                 }
6129                 NDR_CHECK(ndr_push_GUID(ndr, NDR_BUFFERS, &r->domain_guid));
6130                 if (r->domain_name) {
6131                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain_name, CH_UTF16)));
6132                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6133                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain_name, CH_UTF16)));
6134                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain_name, ndr_charset_length(r->domain_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6135                 }
6136                 if (r->forest_name) {
6137                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->forest_name, CH_UTF16)));
6138                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6139                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->forest_name, CH_UTF16)));
6140                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->forest_name, ndr_charset_length(r->forest_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6141                 }
6142                 if (r->dc_site_name) {
6143                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_site_name, CH_UTF16)));
6144                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6145                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_site_name, CH_UTF16)));
6146                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dc_site_name, ndr_charset_length(r->dc_site_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6147                 }
6148                 if (r->client_site_name) {
6149                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client_site_name, CH_UTF16)));
6150                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6151                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client_site_name, CH_UTF16)));
6152                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client_site_name, ndr_charset_length(r->client_site_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6153                 }
6154         }
6155         return NDR_ERR_SUCCESS;
6156 }
6157
6158 static enum ndr_err_code ndr_pull_netr_DsRGetDCNameInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_DsRGetDCNameInfo *r)
6159 {
6160         uint32_t _ptr_dc_unc;
6161         TALLOC_CTX *_mem_save_dc_unc_0;
6162         uint32_t _ptr_dc_address;
6163         TALLOC_CTX *_mem_save_dc_address_0;
6164         uint32_t _ptr_domain_name;
6165         TALLOC_CTX *_mem_save_domain_name_0;
6166         uint32_t _ptr_forest_name;
6167         TALLOC_CTX *_mem_save_forest_name_0;
6168         uint32_t _ptr_dc_site_name;
6169         TALLOC_CTX *_mem_save_dc_site_name_0;
6170         uint32_t _ptr_client_site_name;
6171         TALLOC_CTX *_mem_save_client_site_name_0;
6172         if (ndr_flags & NDR_SCALARS) {
6173                 NDR_CHECK(ndr_pull_align(ndr, 4));
6174                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dc_unc));
6175                 if (_ptr_dc_unc) {
6176                         NDR_PULL_ALLOC(ndr, r->dc_unc);
6177                 } else {
6178                         r->dc_unc = NULL;
6179                 }
6180                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dc_address));
6181                 if (_ptr_dc_address) {
6182                         NDR_PULL_ALLOC(ndr, r->dc_address);
6183                 } else {
6184                         r->dc_address = NULL;
6185                 }
6186                 NDR_CHECK(ndr_pull_netr_DsRGetDCNameInfo_AddressType(ndr, NDR_SCALARS, &r->dc_address_type));
6187                 NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->domain_guid));
6188                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
6189                 if (_ptr_domain_name) {
6190                         NDR_PULL_ALLOC(ndr, r->domain_name);
6191                 } else {
6192                         r->domain_name = NULL;
6193                 }
6194                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_forest_name));
6195                 if (_ptr_forest_name) {
6196                         NDR_PULL_ALLOC(ndr, r->forest_name);
6197                 } else {
6198                         r->forest_name = NULL;
6199                 }
6200                 NDR_CHECK(ndr_pull_netr_DsR_DcFlags(ndr, NDR_SCALARS, &r->dc_flags));
6201                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dc_site_name));
6202                 if (_ptr_dc_site_name) {
6203                         NDR_PULL_ALLOC(ndr, r->dc_site_name);
6204                 } else {
6205                         r->dc_site_name = NULL;
6206                 }
6207                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client_site_name));
6208                 if (_ptr_client_site_name) {
6209                         NDR_PULL_ALLOC(ndr, r->client_site_name);
6210                 } else {
6211                         r->client_site_name = NULL;
6212                 }
6213         }
6214         if (ndr_flags & NDR_BUFFERS) {
6215                 if (r->dc_unc) {
6216                         _mem_save_dc_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
6217                         NDR_PULL_SET_MEM_CTX(ndr, r->dc_unc, 0);
6218                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dc_unc));
6219                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dc_unc));
6220                         if (ndr_get_array_length(ndr, &r->dc_unc) > ndr_get_array_size(ndr, &r->dc_unc)) {
6221                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dc_unc), ndr_get_array_length(ndr, &r->dc_unc));
6222                         }
6223                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dc_unc), sizeof(uint16_t)));
6224                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dc_unc, ndr_get_array_length(ndr, &r->dc_unc), sizeof(uint16_t), CH_UTF16));
6225                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dc_unc_0, 0);
6226                 }
6227                 if (r->dc_address) {
6228                         _mem_save_dc_address_0 = NDR_PULL_GET_MEM_CTX(ndr);
6229                         NDR_PULL_SET_MEM_CTX(ndr, r->dc_address, 0);
6230                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dc_address));
6231                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dc_address));
6232                         if (ndr_get_array_length(ndr, &r->dc_address) > ndr_get_array_size(ndr, &r->dc_address)) {
6233                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dc_address), ndr_get_array_length(ndr, &r->dc_address));
6234                         }
6235                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dc_address), sizeof(uint16_t)));
6236                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dc_address, ndr_get_array_length(ndr, &r->dc_address), sizeof(uint16_t), CH_UTF16));
6237                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dc_address_0, 0);
6238                 }
6239                 NDR_CHECK(ndr_pull_GUID(ndr, NDR_BUFFERS, &r->domain_guid));
6240                 if (r->domain_name) {
6241                         _mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
6242                         NDR_PULL_SET_MEM_CTX(ndr, r->domain_name, 0);
6243                         NDR_CHECK(ndr_pull_array_size(ndr, &r->domain_name));
6244                         NDR_CHECK(ndr_pull_array_length(ndr, &r->domain_name));
6245                         if (ndr_get_array_length(ndr, &r->domain_name) > ndr_get_array_size(ndr, &r->domain_name)) {
6246                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->domain_name), ndr_get_array_length(ndr, &r->domain_name));
6247                         }
6248                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain_name), sizeof(uint16_t)));
6249                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain_name, ndr_get_array_length(ndr, &r->domain_name), sizeof(uint16_t), CH_UTF16));
6250                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
6251                 }
6252                 if (r->forest_name) {
6253                         _mem_save_forest_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
6254                         NDR_PULL_SET_MEM_CTX(ndr, r->forest_name, 0);
6255                         NDR_CHECK(ndr_pull_array_size(ndr, &r->forest_name));
6256                         NDR_CHECK(ndr_pull_array_length(ndr, &r->forest_name));
6257                         if (ndr_get_array_length(ndr, &r->forest_name) > ndr_get_array_size(ndr, &r->forest_name)) {
6258                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->forest_name), ndr_get_array_length(ndr, &r->forest_name));
6259                         }
6260                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->forest_name), sizeof(uint16_t)));
6261                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->forest_name, ndr_get_array_length(ndr, &r->forest_name), sizeof(uint16_t), CH_UTF16));
6262                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_forest_name_0, 0);
6263                 }
6264                 if (r->dc_site_name) {
6265                         _mem_save_dc_site_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
6266                         NDR_PULL_SET_MEM_CTX(ndr, r->dc_site_name, 0);
6267                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dc_site_name));
6268                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dc_site_name));
6269                         if (ndr_get_array_length(ndr, &r->dc_site_name) > ndr_get_array_size(ndr, &r->dc_site_name)) {
6270                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dc_site_name), ndr_get_array_length(ndr, &r->dc_site_name));
6271                         }
6272                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dc_site_name), sizeof(uint16_t)));
6273                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dc_site_name, ndr_get_array_length(ndr, &r->dc_site_name), sizeof(uint16_t), CH_UTF16));
6274                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dc_site_name_0, 0);
6275                 }
6276                 if (r->client_site_name) {
6277                         _mem_save_client_site_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
6278                         NDR_PULL_SET_MEM_CTX(ndr, r->client_site_name, 0);
6279                         NDR_CHECK(ndr_pull_array_size(ndr, &r->client_site_name));
6280                         NDR_CHECK(ndr_pull_array_length(ndr, &r->client_site_name));
6281                         if (ndr_get_array_length(ndr, &r->client_site_name) > ndr_get_array_size(ndr, &r->client_site_name)) {
6282                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->client_site_name), ndr_get_array_length(ndr, &r->client_site_name));
6283                         }
6284                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client_site_name), sizeof(uint16_t)));
6285                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client_site_name, ndr_get_array_length(ndr, &r->client_site_name), sizeof(uint16_t), CH_UTF16));
6286                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_site_name_0, 0);
6287                 }
6288         }
6289         return NDR_ERR_SUCCESS;
6290 }
6291
6292 _PUBLIC_ void ndr_print_netr_DsRGetDCNameInfo(struct ndr_print *ndr, const char *name, const struct netr_DsRGetDCNameInfo *r)
6293 {
6294         ndr_print_struct(ndr, name, "netr_DsRGetDCNameInfo");
6295         ndr->depth++;
6296         ndr_print_ptr(ndr, "dc_unc", r->dc_unc);
6297         ndr->depth++;
6298         if (r->dc_unc) {
6299                 ndr_print_string(ndr, "dc_unc", r->dc_unc);
6300         }
6301         ndr->depth--;
6302         ndr_print_ptr(ndr, "dc_address", r->dc_address);
6303         ndr->depth++;
6304         if (r->dc_address) {
6305                 ndr_print_string(ndr, "dc_address", r->dc_address);
6306         }
6307         ndr->depth--;
6308         ndr_print_netr_DsRGetDCNameInfo_AddressType(ndr, "dc_address_type", r->dc_address_type);
6309         ndr_print_GUID(ndr, "domain_guid", &r->domain_guid);
6310         ndr_print_ptr(ndr, "domain_name", r->domain_name);
6311         ndr->depth++;
6312         if (r->domain_name) {
6313                 ndr_print_string(ndr, "domain_name", r->domain_name);
6314         }
6315         ndr->depth--;
6316         ndr_print_ptr(ndr, "forest_name", r->forest_name);
6317         ndr->depth++;
6318         if (r->forest_name) {
6319                 ndr_print_string(ndr, "forest_name", r->forest_name);
6320         }
6321         ndr->depth--;
6322         ndr_print_netr_DsR_DcFlags(ndr, "dc_flags", r->dc_flags);
6323         ndr_print_ptr(ndr, "dc_site_name", r->dc_site_name);
6324         ndr->depth++;
6325         if (r->dc_site_name) {
6326                 ndr_print_string(ndr, "dc_site_name", r->dc_site_name);
6327         }
6328         ndr->depth--;
6329         ndr_print_ptr(ndr, "client_site_name", r->client_site_name);
6330         ndr->depth++;
6331         if (r->client_site_name) {
6332                 ndr_print_string(ndr, "client_site_name", r->client_site_name);
6333         }
6334         ndr->depth--;
6335         ndr->depth--;
6336 }
6337
6338 static enum ndr_err_code ndr_push_netr_BinaryString(struct ndr_push *ndr, int ndr_flags, const struct netr_BinaryString *r)
6339 {
6340         uint32_t cntr_data_1;
6341         {
6342                 uint32_t _flags_save_STRUCT = ndr->flags;
6343                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
6344                 if (ndr_flags & NDR_SCALARS) {
6345                         NDR_CHECK(ndr_push_align(ndr, 4));
6346                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
6347                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->size));
6348                         NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
6349                 }
6350                 if (ndr_flags & NDR_BUFFERS) {
6351                         if (r->data) {
6352                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size / 2));
6353                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6354                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length / 2));
6355                                 for (cntr_data_1 = 0; cntr_data_1 < r->length / 2; cntr_data_1++) {
6356                                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->data[cntr_data_1]));
6357                                 }
6358                         }
6359                 }
6360                 ndr->flags = _flags_save_STRUCT;
6361         }
6362         return NDR_ERR_SUCCESS;
6363 }
6364
6365 static enum ndr_err_code ndr_pull_netr_BinaryString(struct ndr_pull *ndr, int ndr_flags, struct netr_BinaryString *r)
6366 {
6367         uint32_t _ptr_data;
6368         uint32_t cntr_data_1;
6369         TALLOC_CTX *_mem_save_data_0;
6370         TALLOC_CTX *_mem_save_data_1;
6371         {
6372                 uint32_t _flags_save_STRUCT = ndr->flags;
6373                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
6374                 if (ndr_flags & NDR_SCALARS) {
6375                         NDR_CHECK(ndr_pull_align(ndr, 4));
6376                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
6377                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
6378                         NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
6379                         if (_ptr_data) {
6380                                 NDR_PULL_ALLOC(ndr, r->data);
6381                         } else {
6382                                 r->data = NULL;
6383                         }
6384                 }
6385                 if (ndr_flags & NDR_BUFFERS) {
6386                         if (r->data) {
6387                                 _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
6388                                 NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
6389                                 NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
6390                                 NDR_CHECK(ndr_pull_array_length(ndr, &r->data));
6391                                 if (ndr_get_array_length(ndr, &r->data) > ndr_get_array_size(ndr, &r->data)) {
6392                                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->data), ndr_get_array_length(ndr, &r->data));
6393                                 }
6394                                 NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
6395                                 _mem_save_data_1 = NDR_PULL_GET_MEM_CTX(ndr);
6396                                 NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
6397                                 for (cntr_data_1 = 0; cntr_data_1 < r->length / 2; cntr_data_1++) {
6398                                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->data[cntr_data_1]));
6399                                 }
6400                                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_1, 0);
6401                                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
6402                         }
6403                         if (r->data) {
6404                                 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->size / 2));
6405                         }
6406                         if (r->data) {
6407                                 NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->data, r->length / 2));
6408                         }
6409                 }
6410                 ndr->flags = _flags_save_STRUCT;
6411         }
6412         return NDR_ERR_SUCCESS;
6413 }
6414
6415 _PUBLIC_ void ndr_print_netr_BinaryString(struct ndr_print *ndr, const char *name, const struct netr_BinaryString *r)
6416 {
6417         uint32_t cntr_data_1;
6418         ndr_print_struct(ndr, name, "netr_BinaryString");
6419         {
6420                 uint32_t _flags_save_STRUCT = ndr->flags;
6421                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
6422                 ndr->depth++;
6423                 ndr_print_uint16(ndr, "length", r->length);
6424                 ndr_print_uint16(ndr, "size", r->size);
6425                 ndr_print_ptr(ndr, "data", r->data);
6426                 ndr->depth++;
6427                 if (r->data) {
6428                         ndr->print(ndr, "%s: ARRAY(%d)", "data", r->length / 2);
6429                         ndr->depth++;
6430                         for (cntr_data_1=0;cntr_data_1<r->length / 2;cntr_data_1++) {
6431                                 char *idx_1=NULL;
6432                                 asprintf(&idx_1, "[%d]", cntr_data_1);
6433                                 if (idx_1) {
6434                                         ndr_print_uint16(ndr, "data", r->data[cntr_data_1]);
6435                                         free(idx_1);
6436                                 }
6437                         }
6438                         ndr->depth--;
6439                 }
6440                 ndr->depth--;
6441                 ndr->depth--;
6442                 ndr->flags = _flags_save_STRUCT;
6443         }
6444 }
6445
6446 static enum ndr_err_code ndr_push_netr_DomainQuery1(struct ndr_push *ndr, int ndr_flags, const struct netr_DomainQuery1 *r)
6447 {
6448         uint32_t cntr_unknown7_0;
6449         if (ndr_flags & NDR_SCALARS) {
6450                 NDR_CHECK(ndr_push_align(ndr, 4));
6451                 NDR_CHECK(ndr_push_netr_Blob(ndr, NDR_SCALARS, &r->blob));
6452                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->workstation_domain));
6453                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->workstation_site));
6454                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->unknown1));
6455                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->unknown2));
6456                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->unknown3));
6457                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->unknown4));
6458                 NDR_CHECK(ndr_push_netr_BinaryString(ndr, NDR_SCALARS, &r->blob2));
6459                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->product));
6460                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown5));
6461                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown6));
6462                 for (cntr_unknown7_0 = 0; cntr_unknown7_0 < 4; cntr_unknown7_0++) {
6463                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7[cntr_unknown7_0]));
6464                 }
6465         }
6466         if (ndr_flags & NDR_BUFFERS) {
6467                 NDR_CHECK(ndr_push_netr_Blob(ndr, NDR_BUFFERS, &r->blob));
6468                 if (r->workstation_domain) {
6469                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->workstation_domain, CH_UTF16)));
6470                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6471                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->workstation_domain, CH_UTF16)));
6472                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->workstation_domain, ndr_charset_length(r->workstation_domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6473                 }
6474                 if (r->workstation_site) {
6475                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->workstation_site, CH_UTF16)));
6476                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6477                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->workstation_site, CH_UTF16)));
6478                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->workstation_site, ndr_charset_length(r->workstation_site, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6479                 }
6480                 if (r->unknown1) {
6481                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown1, CH_UTF16)));
6482                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6483                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown1, CH_UTF16)));
6484                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->unknown1, ndr_charset_length(r->unknown1, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6485                 }
6486                 if (r->unknown2) {
6487                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown2, CH_UTF16)));
6488                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6489                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown2, CH_UTF16)));
6490                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->unknown2, ndr_charset_length(r->unknown2, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6491                 }
6492                 if (r->unknown3) {
6493                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown3, CH_UTF16)));
6494                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6495                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown3, CH_UTF16)));
6496                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->unknown3, ndr_charset_length(r->unknown3, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6497                 }
6498                 if (r->unknown4) {
6499                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown4, CH_UTF16)));
6500                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6501                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->unknown4, CH_UTF16)));
6502                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->unknown4, ndr_charset_length(r->unknown4, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6503                 }
6504                 NDR_CHECK(ndr_push_netr_BinaryString(ndr, NDR_BUFFERS, &r->blob2));
6505                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->product));
6506                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown5));
6507                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown6));
6508         }
6509         return NDR_ERR_SUCCESS;
6510 }
6511
6512 static enum ndr_err_code ndr_pull_netr_DomainQuery1(struct ndr_pull *ndr, int ndr_flags, struct netr_DomainQuery1 *r)
6513 {
6514         uint32_t _ptr_workstation_domain;
6515         TALLOC_CTX *_mem_save_workstation_domain_0;
6516         uint32_t _ptr_workstation_site;
6517         TALLOC_CTX *_mem_save_workstation_site_0;
6518         uint32_t _ptr_unknown1;
6519         TALLOC_CTX *_mem_save_unknown1_0;
6520         uint32_t _ptr_unknown2;
6521         TALLOC_CTX *_mem_save_unknown2_0;
6522         uint32_t _ptr_unknown3;
6523         TALLOC_CTX *_mem_save_unknown3_0;
6524         uint32_t _ptr_unknown4;
6525         TALLOC_CTX *_mem_save_unknown4_0;
6526         uint32_t cntr_unknown7_0;
6527         if (ndr_flags & NDR_SCALARS) {
6528                 NDR_CHECK(ndr_pull_align(ndr, 4));
6529                 NDR_CHECK(ndr_pull_netr_Blob(ndr, NDR_SCALARS, &r->blob));
6530                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_workstation_domain));
6531                 if (_ptr_workstation_domain) {
6532                         NDR_PULL_ALLOC(ndr, r->workstation_domain);
6533                 } else {
6534                         r->workstation_domain = NULL;
6535                 }
6536                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_workstation_site));
6537                 if (_ptr_workstation_site) {
6538                         NDR_PULL_ALLOC(ndr, r->workstation_site);
6539                 } else {
6540                         r->workstation_site = NULL;
6541                 }
6542                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown1));
6543                 if (_ptr_unknown1) {
6544                         NDR_PULL_ALLOC(ndr, r->unknown1);
6545                 } else {
6546                         r->unknown1 = NULL;
6547                 }
6548                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown2));
6549                 if (_ptr_unknown2) {
6550                         NDR_PULL_ALLOC(ndr, r->unknown2);
6551                 } else {
6552                         r->unknown2 = NULL;
6553                 }
6554                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown3));
6555                 if (_ptr_unknown3) {
6556                         NDR_PULL_ALLOC(ndr, r->unknown3);
6557                 } else {
6558                         r->unknown3 = NULL;
6559                 }
6560                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_unknown4));
6561                 if (_ptr_unknown4) {
6562                         NDR_PULL_ALLOC(ndr, r->unknown4);
6563                 } else {
6564                         r->unknown4 = NULL;
6565                 }
6566                 NDR_CHECK(ndr_pull_netr_BinaryString(ndr, NDR_SCALARS, &r->blob2));
6567                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->product));
6568                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown5));
6569                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown6));
6570                 for (cntr_unknown7_0 = 0; cntr_unknown7_0 < 4; cntr_unknown7_0++) {
6571                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7[cntr_unknown7_0]));
6572                 }
6573         }
6574         if (ndr_flags & NDR_BUFFERS) {
6575                 NDR_CHECK(ndr_pull_netr_Blob(ndr, NDR_BUFFERS, &r->blob));
6576                 if (r->workstation_domain) {
6577                         _mem_save_workstation_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
6578                         NDR_PULL_SET_MEM_CTX(ndr, r->workstation_domain, 0);
6579                         NDR_CHECK(ndr_pull_array_size(ndr, &r->workstation_domain));
6580                         NDR_CHECK(ndr_pull_array_length(ndr, &r->workstation_domain));
6581                         if (ndr_get_array_length(ndr, &r->workstation_domain) > ndr_get_array_size(ndr, &r->workstation_domain)) {
6582                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->workstation_domain), ndr_get_array_length(ndr, &r->workstation_domain));
6583                         }
6584                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->workstation_domain), sizeof(uint16_t)));
6585                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->workstation_domain, ndr_get_array_length(ndr, &r->workstation_domain), sizeof(uint16_t), CH_UTF16));
6586                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_workstation_domain_0, 0);
6587                 }
6588                 if (r->workstation_site) {
6589                         _mem_save_workstation_site_0 = NDR_PULL_GET_MEM_CTX(ndr);
6590                         NDR_PULL_SET_MEM_CTX(ndr, r->workstation_site, 0);
6591                         NDR_CHECK(ndr_pull_array_size(ndr, &r->workstation_site));
6592                         NDR_CHECK(ndr_pull_array_length(ndr, &r->workstation_site));
6593                         if (ndr_get_array_length(ndr, &r->workstation_site) > ndr_get_array_size(ndr, &r->workstation_site)) {
6594                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->workstation_site), ndr_get_array_length(ndr, &r->workstation_site));
6595                         }
6596                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->workstation_site), sizeof(uint16_t)));
6597                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->workstation_site, ndr_get_array_length(ndr, &r->workstation_site), sizeof(uint16_t), CH_UTF16));
6598                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_workstation_site_0, 0);
6599                 }
6600                 if (r->unknown1) {
6601                         _mem_save_unknown1_0 = NDR_PULL_GET_MEM_CTX(ndr);
6602                         NDR_PULL_SET_MEM_CTX(ndr, r->unknown1, 0);
6603                         NDR_CHECK(ndr_pull_array_size(ndr, &r->unknown1));
6604                         NDR_CHECK(ndr_pull_array_length(ndr, &r->unknown1));
6605                         if (ndr_get_array_length(ndr, &r->unknown1) > ndr_get_array_size(ndr, &r->unknown1)) {
6606                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->unknown1), ndr_get_array_length(ndr, &r->unknown1));
6607                         }
6608                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->unknown1), sizeof(uint16_t)));
6609                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->unknown1, ndr_get_array_length(ndr, &r->unknown1), sizeof(uint16_t), CH_UTF16));
6610                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown1_0, 0);
6611                 }
6612                 if (r->unknown2) {
6613                         _mem_save_unknown2_0 = NDR_PULL_GET_MEM_CTX(ndr);
6614                         NDR_PULL_SET_MEM_CTX(ndr, r->unknown2, 0);
6615                         NDR_CHECK(ndr_pull_array_size(ndr, &r->unknown2));
6616                         NDR_CHECK(ndr_pull_array_length(ndr, &r->unknown2));
6617                         if (ndr_get_array_length(ndr, &r->unknown2) > ndr_get_array_size(ndr, &r->unknown2)) {
6618                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->unknown2), ndr_get_array_length(ndr, &r->unknown2));
6619                         }
6620                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->unknown2), sizeof(uint16_t)));
6621                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->unknown2, ndr_get_array_length(ndr, &r->unknown2), sizeof(uint16_t), CH_UTF16));
6622                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown2_0, 0);
6623                 }
6624                 if (r->unknown3) {
6625                         _mem_save_unknown3_0 = NDR_PULL_GET_MEM_CTX(ndr);
6626                         NDR_PULL_SET_MEM_CTX(ndr, r->unknown3, 0);
6627                         NDR_CHECK(ndr_pull_array_size(ndr, &r->unknown3));
6628                         NDR_CHECK(ndr_pull_array_length(ndr, &r->unknown3));
6629                         if (ndr_get_array_length(ndr, &r->unknown3) > ndr_get_array_size(ndr, &r->unknown3)) {
6630                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->unknown3), ndr_get_array_length(ndr, &r->unknown3));
6631                         }
6632                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->unknown3), sizeof(uint16_t)));
6633                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->unknown3, ndr_get_array_length(ndr, &r->unknown3), sizeof(uint16_t), CH_UTF16));
6634                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown3_0, 0);
6635                 }
6636                 if (r->unknown4) {
6637                         _mem_save_unknown4_0 = NDR_PULL_GET_MEM_CTX(ndr);
6638                         NDR_PULL_SET_MEM_CTX(ndr, r->unknown4, 0);
6639                         NDR_CHECK(ndr_pull_array_size(ndr, &r->unknown4));
6640                         NDR_CHECK(ndr_pull_array_length(ndr, &r->unknown4));
6641                         if (ndr_get_array_length(ndr, &r->unknown4) > ndr_get_array_size(ndr, &r->unknown4)) {
6642                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->unknown4), ndr_get_array_length(ndr, &r->unknown4));
6643                         }
6644                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->unknown4), sizeof(uint16_t)));
6645                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->unknown4, ndr_get_array_length(ndr, &r->unknown4), sizeof(uint16_t), CH_UTF16));
6646                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown4_0, 0);
6647                 }
6648                 NDR_CHECK(ndr_pull_netr_BinaryString(ndr, NDR_BUFFERS, &r->blob2));
6649                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->product));
6650                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown5));
6651                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown6));
6652         }
6653         return NDR_ERR_SUCCESS;
6654 }
6655
6656 _PUBLIC_ void ndr_print_netr_DomainQuery1(struct ndr_print *ndr, const char *name, const struct netr_DomainQuery1 *r)
6657 {
6658         uint32_t cntr_unknown7_0;
6659         ndr_print_struct(ndr, name, "netr_DomainQuery1");
6660         ndr->depth++;
6661         ndr_print_netr_Blob(ndr, "blob", &r->blob);
6662         ndr_print_ptr(ndr, "workstation_domain", r->workstation_domain);
6663         ndr->depth++;
6664         if (r->workstation_domain) {
6665                 ndr_print_string(ndr, "workstation_domain", r->workstation_domain);
6666         }
6667         ndr->depth--;
6668         ndr_print_ptr(ndr, "workstation_site", r->workstation_site);
6669         ndr->depth++;
6670         if (r->workstation_site) {
6671                 ndr_print_string(ndr, "workstation_site", r->workstation_site);
6672         }
6673         ndr->depth--;
6674         ndr_print_ptr(ndr, "unknown1", r->unknown1);
6675         ndr->depth++;
6676         if (r->unknown1) {
6677                 ndr_print_string(ndr, "unknown1", r->unknown1);
6678         }
6679         ndr->depth--;
6680         ndr_print_ptr(ndr, "unknown2", r->unknown2);
6681         ndr->depth++;
6682         if (r->unknown2) {
6683                 ndr_print_string(ndr, "unknown2", r->unknown2);
6684         }
6685         ndr->depth--;
6686         ndr_print_ptr(ndr, "unknown3", r->unknown3);
6687         ndr->depth++;
6688         if (r->unknown3) {
6689                 ndr_print_string(ndr, "unknown3", r->unknown3);
6690         }
6691         ndr->depth--;
6692         ndr_print_ptr(ndr, "unknown4", r->unknown4);
6693         ndr->depth++;
6694         if (r->unknown4) {
6695                 ndr_print_string(ndr, "unknown4", r->unknown4);
6696         }
6697         ndr->depth--;
6698         ndr_print_netr_BinaryString(ndr, "blob2", &r->blob2);
6699         ndr_print_lsa_String(ndr, "product", &r->product);
6700         ndr_print_lsa_String(ndr, "unknown5", &r->unknown5);
6701         ndr_print_lsa_String(ndr, "unknown6", &r->unknown6);
6702         ndr->print(ndr, "%s: ARRAY(%d)", "unknown7", 4);
6703         ndr->depth++;
6704         for (cntr_unknown7_0=0;cntr_unknown7_0<4;cntr_unknown7_0++) {
6705                 char *idx_0=NULL;
6706                 asprintf(&idx_0, "[%d]", cntr_unknown7_0);
6707                 if (idx_0) {
6708                         ndr_print_uint32(ndr, "unknown7", r->unknown7[cntr_unknown7_0]);
6709                         free(idx_0);
6710                 }
6711         }
6712         ndr->depth--;
6713         ndr->depth--;
6714 }
6715
6716 static enum ndr_err_code ndr_push_netr_DomainQuery(struct ndr_push *ndr, int ndr_flags, const union netr_DomainQuery *r)
6717 {
6718         if (ndr_flags & NDR_SCALARS) {
6719                 int level = ndr_push_get_switch_value(ndr, r);
6720                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
6721                 switch (level) {
6722                         case 1: {
6723                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->query1));
6724                         break; }
6725
6726                         case 2: {
6727                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->query1));
6728                         break; }
6729
6730                         default:
6731                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
6732                 }
6733         }
6734         if (ndr_flags & NDR_BUFFERS) {
6735                 int level = ndr_push_get_switch_value(ndr, r);
6736                 switch (level) {
6737                         case 1:
6738                                 if (r->query1) {
6739                                         NDR_CHECK(ndr_push_netr_DomainQuery1(ndr, NDR_SCALARS|NDR_BUFFERS, r->query1));
6740                                 }
6741                         break;
6742
6743                         case 2:
6744                                 if (r->query1) {
6745                                         NDR_CHECK(ndr_push_netr_DomainQuery1(ndr, NDR_SCALARS|NDR_BUFFERS, r->query1));
6746                                 }
6747                         break;
6748
6749                         default:
6750                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
6751                 }
6752         }
6753         return NDR_ERR_SUCCESS;
6754 }
6755
6756 static enum ndr_err_code ndr_pull_netr_DomainQuery(struct ndr_pull *ndr, int ndr_flags, union netr_DomainQuery *r)
6757 {
6758         int level;
6759         uint32_t _level;
6760         TALLOC_CTX *_mem_save_query1_0;
6761         level = ndr_pull_get_switch_value(ndr, r);
6762         if (ndr_flags & NDR_SCALARS) {
6763                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
6764                 if (_level != level) {
6765                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
6766                 }
6767                 switch (level) {
6768                         case 1: {
6769                                 uint32_t _ptr_query1;
6770                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_query1));
6771                                 if (_ptr_query1) {
6772                                         NDR_PULL_ALLOC(ndr, r->query1);
6773                                 } else {
6774                                         r->query1 = NULL;
6775                                 }
6776                         break; }
6777
6778                         case 2: {
6779                                 uint32_t _ptr_query1;
6780                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_query1));
6781                                 if (_ptr_query1) {
6782                                         NDR_PULL_ALLOC(ndr, r->query1);
6783                                 } else {
6784                                         r->query1 = NULL;
6785                                 }
6786                         break; }
6787
6788                         default:
6789                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
6790                 }
6791         }
6792         if (ndr_flags & NDR_BUFFERS) {
6793                 switch (level) {
6794                         case 1:
6795                                 if (r->query1) {
6796                                         _mem_save_query1_0 = NDR_PULL_GET_MEM_CTX(ndr);
6797                                         NDR_PULL_SET_MEM_CTX(ndr, r->query1, 0);
6798                                         NDR_CHECK(ndr_pull_netr_DomainQuery1(ndr, NDR_SCALARS|NDR_BUFFERS, r->query1));
6799                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query1_0, 0);
6800                                 }
6801                         break;
6802
6803                         case 2:
6804                                 if (r->query1) {
6805                                         _mem_save_query1_0 = NDR_PULL_GET_MEM_CTX(ndr);
6806                                         NDR_PULL_SET_MEM_CTX(ndr, r->query1, 0);
6807                                         NDR_CHECK(ndr_pull_netr_DomainQuery1(ndr, NDR_SCALARS|NDR_BUFFERS, r->query1));
6808                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query1_0, 0);
6809                                 }
6810                         break;
6811
6812                         default:
6813                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
6814                 }
6815         }
6816         return NDR_ERR_SUCCESS;
6817 }
6818
6819 _PUBLIC_ void ndr_print_netr_DomainQuery(struct ndr_print *ndr, const char *name, const union netr_DomainQuery *r)
6820 {
6821         int level;
6822         level = ndr_print_get_switch_value(ndr, r);
6823         ndr_print_union(ndr, name, level, "netr_DomainQuery");
6824         switch (level) {
6825                 case 1:
6826                         ndr_print_ptr(ndr, "query1", r->query1);
6827                         ndr->depth++;
6828                         if (r->query1) {
6829                                 ndr_print_netr_DomainQuery1(ndr, "query1", r->query1);
6830                         }
6831                         ndr->depth--;
6832                 break;
6833
6834                 case 2:
6835                         ndr_print_ptr(ndr, "query1", r->query1);
6836                         ndr->depth++;
6837                         if (r->query1) {
6838                                 ndr_print_netr_DomainQuery1(ndr, "query1", r->query1);
6839                         }
6840                         ndr->depth--;
6841                 break;
6842
6843                 default:
6844                         ndr_print_bad_level(ndr, name, level);
6845         }
6846 }
6847
6848 static enum ndr_err_code ndr_push_netr_DomainTrustInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_DomainTrustInfo *r)
6849 {
6850         uint32_t cntr_unknown1_0;
6851         uint32_t cntr_unknown_0;
6852         if (ndr_flags & NDR_SCALARS) {
6853                 NDR_CHECK(ndr_push_align(ndr, 4));
6854                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->domainname));
6855                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->fulldomainname));
6856                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->forest));
6857                 NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->guid));
6858                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
6859                 for (cntr_unknown1_0 = 0; cntr_unknown1_0 < 4; cntr_unknown1_0++) {
6860                         NDR_CHECK(ndr_push_netr_BinaryString(ndr, NDR_SCALARS, &r->unknown1[cntr_unknown1_0]));
6861                 }
6862                 for (cntr_unknown_0 = 0; cntr_unknown_0 < 4; cntr_unknown_0++) {
6863                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown[cntr_unknown_0]));
6864                 }
6865         }
6866         if (ndr_flags & NDR_BUFFERS) {
6867                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->domainname));
6868                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->fulldomainname));
6869                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->forest));
6870                 NDR_CHECK(ndr_push_GUID(ndr, NDR_BUFFERS, &r->guid));
6871                 if (r->sid) {
6872                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
6873                 }
6874                 for (cntr_unknown1_0 = 0; cntr_unknown1_0 < 4; cntr_unknown1_0++) {
6875                         NDR_CHECK(ndr_push_netr_BinaryString(ndr, NDR_BUFFERS, &r->unknown1[cntr_unknown1_0]));
6876                 }
6877         }
6878         return NDR_ERR_SUCCESS;
6879 }
6880
6881 static enum ndr_err_code ndr_pull_netr_DomainTrustInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_DomainTrustInfo *r)
6882 {
6883         uint32_t _ptr_sid;
6884         TALLOC_CTX *_mem_save_sid_0;
6885         uint32_t cntr_unknown1_0;
6886         uint32_t cntr_unknown_0;
6887         if (ndr_flags & NDR_SCALARS) {
6888                 NDR_CHECK(ndr_pull_align(ndr, 4));
6889                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->domainname));
6890                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->fulldomainname));
6891                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->forest));
6892                 NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->guid));
6893                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
6894                 if (_ptr_sid) {
6895                         NDR_PULL_ALLOC(ndr, r->sid);
6896                 } else {
6897                         r->sid = NULL;
6898                 }
6899                 for (cntr_unknown1_0 = 0; cntr_unknown1_0 < 4; cntr_unknown1_0++) {
6900                         NDR_CHECK(ndr_pull_netr_BinaryString(ndr, NDR_SCALARS, &r->unknown1[cntr_unknown1_0]));
6901                 }
6902                 for (cntr_unknown_0 = 0; cntr_unknown_0 < 4; cntr_unknown_0++) {
6903                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown[cntr_unknown_0]));
6904                 }
6905         }
6906         if (ndr_flags & NDR_BUFFERS) {
6907                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->domainname));
6908                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->fulldomainname));
6909                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->forest));
6910                 NDR_CHECK(ndr_pull_GUID(ndr, NDR_BUFFERS, &r->guid));
6911                 if (r->sid) {
6912                         _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
6913                         NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
6914                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
6915                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
6916                 }
6917                 for (cntr_unknown1_0 = 0; cntr_unknown1_0 < 4; cntr_unknown1_0++) {
6918                         NDR_CHECK(ndr_pull_netr_BinaryString(ndr, NDR_BUFFERS, &r->unknown1[cntr_unknown1_0]));
6919                 }
6920         }
6921         return NDR_ERR_SUCCESS;
6922 }
6923
6924 _PUBLIC_ void ndr_print_netr_DomainTrustInfo(struct ndr_print *ndr, const char *name, const struct netr_DomainTrustInfo *r)
6925 {
6926         uint32_t cntr_unknown1_0;
6927         uint32_t cntr_unknown_0;
6928         ndr_print_struct(ndr, name, "netr_DomainTrustInfo");
6929         ndr->depth++;
6930         ndr_print_lsa_String(ndr, "domainname", &r->domainname);
6931         ndr_print_lsa_String(ndr, "fulldomainname", &r->fulldomainname);
6932         ndr_print_lsa_String(ndr, "forest", &r->forest);
6933         ndr_print_GUID(ndr, "guid", &r->guid);
6934         ndr_print_ptr(ndr, "sid", r->sid);
6935         ndr->depth++;
6936         if (r->sid) {
6937                 ndr_print_dom_sid2(ndr, "sid", r->sid);
6938         }
6939         ndr->depth--;
6940         ndr->print(ndr, "%s: ARRAY(%d)", "unknown1", 4);
6941         ndr->depth++;
6942         for (cntr_unknown1_0=0;cntr_unknown1_0<4;cntr_unknown1_0++) {
6943                 char *idx_0=NULL;
6944                 asprintf(&idx_0, "[%d]", cntr_unknown1_0);
6945                 if (idx_0) {
6946                         ndr_print_netr_BinaryString(ndr, "unknown1", &r->unknown1[cntr_unknown1_0]);
6947                         free(idx_0);
6948                 }
6949         }
6950         ndr->depth--;
6951         ndr->print(ndr, "%s: ARRAY(%d)", "unknown", 4);
6952         ndr->depth++;
6953         for (cntr_unknown_0=0;cntr_unknown_0<4;cntr_unknown_0++) {
6954                 char *idx_0=NULL;
6955                 asprintf(&idx_0, "[%d]", cntr_unknown_0);
6956                 if (idx_0) {
6957                         ndr_print_uint32(ndr, "unknown", r->unknown[cntr_unknown_0]);
6958                         free(idx_0);
6959                 }
6960         }
6961         ndr->depth--;
6962         ndr->depth--;
6963 }
6964
6965 static enum ndr_err_code ndr_push_netr_DomainInfo1(struct ndr_push *ndr, int ndr_flags, const struct netr_DomainInfo1 *r)
6966 {
6967         uint32_t cntr_trusts_1;
6968         uint32_t cntr_unknown_0;
6969         if (ndr_flags & NDR_SCALARS) {
6970                 NDR_CHECK(ndr_push_align(ndr, 4));
6971                 NDR_CHECK(ndr_push_netr_DomainTrustInfo(ndr, NDR_SCALARS, &r->domaininfo));
6972                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_trusts));
6973                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->trusts));
6974                 for (cntr_unknown_0 = 0; cntr_unknown_0 < 14; cntr_unknown_0++) {
6975                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown[cntr_unknown_0]));
6976                 }
6977         }
6978         if (ndr_flags & NDR_BUFFERS) {
6979                 NDR_CHECK(ndr_push_netr_DomainTrustInfo(ndr, NDR_BUFFERS, &r->domaininfo));
6980                 if (r->trusts) {
6981                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_trusts));
6982                         for (cntr_trusts_1 = 0; cntr_trusts_1 < r->num_trusts; cntr_trusts_1++) {
6983                                 NDR_CHECK(ndr_push_netr_DomainTrustInfo(ndr, NDR_SCALARS, &r->trusts[cntr_trusts_1]));
6984                         }
6985                         for (cntr_trusts_1 = 0; cntr_trusts_1 < r->num_trusts; cntr_trusts_1++) {
6986                                 NDR_CHECK(ndr_push_netr_DomainTrustInfo(ndr, NDR_BUFFERS, &r->trusts[cntr_trusts_1]));
6987                         }
6988                 }
6989         }
6990         return NDR_ERR_SUCCESS;
6991 }
6992
6993 static enum ndr_err_code ndr_pull_netr_DomainInfo1(struct ndr_pull *ndr, int ndr_flags, struct netr_DomainInfo1 *r)
6994 {
6995         uint32_t _ptr_trusts;
6996         uint32_t cntr_trusts_1;
6997         TALLOC_CTX *_mem_save_trusts_0;
6998         TALLOC_CTX *_mem_save_trusts_1;
6999         uint32_t cntr_unknown_0;
7000         if (ndr_flags & NDR_SCALARS) {
7001                 NDR_CHECK(ndr_pull_align(ndr, 4));
7002                 NDR_CHECK(ndr_pull_netr_DomainTrustInfo(ndr, NDR_SCALARS, &r->domaininfo));
7003                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_trusts));
7004                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_trusts));
7005                 if (_ptr_trusts) {
7006                         NDR_PULL_ALLOC(ndr, r->trusts);
7007                 } else {
7008                         r->trusts = NULL;
7009                 }
7010                 for (cntr_unknown_0 = 0; cntr_unknown_0 < 14; cntr_unknown_0++) {
7011                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown[cntr_unknown_0]));
7012                 }
7013         }
7014         if (ndr_flags & NDR_BUFFERS) {
7015                 NDR_CHECK(ndr_pull_netr_DomainTrustInfo(ndr, NDR_BUFFERS, &r->domaininfo));
7016                 if (r->trusts) {
7017                         _mem_save_trusts_0 = NDR_PULL_GET_MEM_CTX(ndr);
7018                         NDR_PULL_SET_MEM_CTX(ndr, r->trusts, 0);
7019                         NDR_CHECK(ndr_pull_array_size(ndr, &r->trusts));
7020                         NDR_PULL_ALLOC_N(ndr, r->trusts, ndr_get_array_size(ndr, &r->trusts));
7021                         _mem_save_trusts_1 = NDR_PULL_GET_MEM_CTX(ndr);
7022                         NDR_PULL_SET_MEM_CTX(ndr, r->trusts, 0);
7023                         for (cntr_trusts_1 = 0; cntr_trusts_1 < r->num_trusts; cntr_trusts_1++) {
7024                                 NDR_CHECK(ndr_pull_netr_DomainTrustInfo(ndr, NDR_SCALARS, &r->trusts[cntr_trusts_1]));
7025                         }
7026                         for (cntr_trusts_1 = 0; cntr_trusts_1 < r->num_trusts; cntr_trusts_1++) {
7027                                 NDR_CHECK(ndr_pull_netr_DomainTrustInfo(ndr, NDR_BUFFERS, &r->trusts[cntr_trusts_1]));
7028                         }
7029                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusts_1, 0);
7030                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusts_0, 0);
7031                 }
7032                 if (r->trusts) {
7033                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->trusts, r->num_trusts));
7034                 }
7035         }
7036         return NDR_ERR_SUCCESS;
7037 }
7038
7039 _PUBLIC_ void ndr_print_netr_DomainInfo1(struct ndr_print *ndr, const char *name, const struct netr_DomainInfo1 *r)
7040 {
7041         uint32_t cntr_trusts_1;
7042         uint32_t cntr_unknown_0;
7043         ndr_print_struct(ndr, name, "netr_DomainInfo1");
7044         ndr->depth++;
7045         ndr_print_netr_DomainTrustInfo(ndr, "domaininfo", &r->domaininfo);
7046         ndr_print_uint32(ndr, "num_trusts", r->num_trusts);
7047         ndr_print_ptr(ndr, "trusts", r->trusts);
7048         ndr->depth++;
7049         if (r->trusts) {
7050                 ndr->print(ndr, "%s: ARRAY(%d)", "trusts", r->num_trusts);
7051                 ndr->depth++;
7052                 for (cntr_trusts_1=0;cntr_trusts_1<r->num_trusts;cntr_trusts_1++) {
7053                         char *idx_1=NULL;
7054                         asprintf(&idx_1, "[%d]", cntr_trusts_1);
7055                         if (idx_1) {
7056                                 ndr_print_netr_DomainTrustInfo(ndr, "trusts", &r->trusts[cntr_trusts_1]);
7057                                 free(idx_1);
7058                         }
7059                 }
7060                 ndr->depth--;
7061         }
7062         ndr->depth--;
7063         ndr->print(ndr, "%s: ARRAY(%d)", "unknown", 14);
7064         ndr->depth++;
7065         for (cntr_unknown_0=0;cntr_unknown_0<14;cntr_unknown_0++) {
7066                 char *idx_0=NULL;
7067                 asprintf(&idx_0, "[%d]", cntr_unknown_0);
7068                 if (idx_0) {
7069                         ndr_print_uint32(ndr, "unknown", r->unknown[cntr_unknown_0]);
7070                         free(idx_0);
7071                 }
7072         }
7073         ndr->depth--;
7074         ndr->depth--;
7075 }
7076
7077 static enum ndr_err_code ndr_push_netr_DomainInfo(struct ndr_push *ndr, int ndr_flags, const union netr_DomainInfo *r)
7078 {
7079         if (ndr_flags & NDR_SCALARS) {
7080                 int level = ndr_push_get_switch_value(ndr, r);
7081                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
7082                 switch (level) {
7083                         case 1: {
7084                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1));
7085                         break; }
7086
7087                         case 2: {
7088                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1));
7089                         break; }
7090
7091                         default:
7092                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
7093                 }
7094         }
7095         if (ndr_flags & NDR_BUFFERS) {
7096                 int level = ndr_push_get_switch_value(ndr, r);
7097                 switch (level) {
7098                         case 1:
7099                                 if (r->info1) {
7100                                         NDR_CHECK(ndr_push_netr_DomainInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
7101                                 }
7102                         break;
7103
7104                         case 2:
7105                                 if (r->info1) {
7106                                         NDR_CHECK(ndr_push_netr_DomainInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
7107                                 }
7108                         break;
7109
7110                         default:
7111                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
7112                 }
7113         }
7114         return NDR_ERR_SUCCESS;
7115 }
7116
7117 static enum ndr_err_code ndr_pull_netr_DomainInfo(struct ndr_pull *ndr, int ndr_flags, union netr_DomainInfo *r)
7118 {
7119         int level;
7120         uint32_t _level;
7121         TALLOC_CTX *_mem_save_info1_0;
7122         level = ndr_pull_get_switch_value(ndr, r);
7123         if (ndr_flags & NDR_SCALARS) {
7124                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
7125                 if (_level != level) {
7126                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r", _level);
7127                 }
7128                 switch (level) {
7129                         case 1: {
7130                                 uint32_t _ptr_info1;
7131                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1));
7132                                 if (_ptr_info1) {
7133                                         NDR_PULL_ALLOC(ndr, r->info1);
7134                                 } else {
7135                                         r->info1 = NULL;
7136                                 }
7137                         break; }
7138
7139                         case 2: {
7140                                 uint32_t _ptr_info1;
7141                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1));
7142                                 if (_ptr_info1) {
7143                                         NDR_PULL_ALLOC(ndr, r->info1);
7144                                 } else {
7145                                         r->info1 = NULL;
7146                                 }
7147                         break; }
7148
7149                         default:
7150                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
7151                 }
7152         }
7153         if (ndr_flags & NDR_BUFFERS) {
7154                 switch (level) {
7155                         case 1:
7156                                 if (r->info1) {
7157                                         _mem_save_info1_0 = NDR_PULL_GET_MEM_CTX(ndr);
7158                                         NDR_PULL_SET_MEM_CTX(ndr, r->info1, 0);
7159                                         NDR_CHECK(ndr_pull_netr_DomainInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
7160                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1_0, 0);
7161                                 }
7162                         break;
7163
7164                         case 2:
7165                                 if (r->info1) {
7166                                         _mem_save_info1_0 = NDR_PULL_GET_MEM_CTX(ndr);
7167                                         NDR_PULL_SET_MEM_CTX(ndr, r->info1, 0);
7168                                         NDR_CHECK(ndr_pull_netr_DomainInfo1(ndr, NDR_SCALARS|NDR_BUFFERS, r->info1));
7169                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1_0, 0);
7170                                 }
7171                         break;
7172
7173                         default:
7174                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
7175                 }
7176         }
7177         return NDR_ERR_SUCCESS;
7178 }
7179
7180 _PUBLIC_ void ndr_print_netr_DomainInfo(struct ndr_print *ndr, const char *name, const union netr_DomainInfo *r)
7181 {
7182         int level;
7183         level = ndr_print_get_switch_value(ndr, r);
7184         ndr_print_union(ndr, name, level, "netr_DomainInfo");
7185         switch (level) {
7186                 case 1:
7187                         ndr_print_ptr(ndr, "info1", r->info1);
7188                         ndr->depth++;
7189                         if (r->info1) {
7190                                 ndr_print_netr_DomainInfo1(ndr, "info1", r->info1);
7191                         }
7192                         ndr->depth--;
7193                 break;
7194
7195                 case 2:
7196                         ndr_print_ptr(ndr, "info1", r->info1);
7197                         ndr->depth++;
7198                         if (r->info1) {
7199                                 ndr_print_netr_DomainInfo1(ndr, "info1", r->info1);
7200                         }
7201                         ndr->depth--;
7202                 break;
7203
7204                 default:
7205                         ndr_print_bad_level(ndr, name, level);
7206         }
7207 }
7208
7209 static enum ndr_err_code ndr_push_netr_CryptPassword(struct ndr_push *ndr, int ndr_flags, const struct netr_CryptPassword *r)
7210 {
7211         {
7212                 uint32_t _flags_save_STRUCT = ndr->flags;
7213                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
7214                 if (ndr_flags & NDR_SCALARS) {
7215                         NDR_CHECK(ndr_push_align(ndr, 4));
7216                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, 512));
7217                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
7218                 }
7219                 if (ndr_flags & NDR_BUFFERS) {
7220                 }
7221                 ndr->flags = _flags_save_STRUCT;
7222         }
7223         return NDR_ERR_SUCCESS;
7224 }
7225
7226 static enum ndr_err_code ndr_pull_netr_CryptPassword(struct ndr_pull *ndr, int ndr_flags, struct netr_CryptPassword *r)
7227 {
7228         {
7229                 uint32_t _flags_save_STRUCT = ndr->flags;
7230                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
7231                 if (ndr_flags & NDR_SCALARS) {
7232                         NDR_CHECK(ndr_pull_align(ndr, 4));
7233                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, 512));
7234                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
7235                 }
7236                 if (ndr_flags & NDR_BUFFERS) {
7237                 }
7238                 ndr->flags = _flags_save_STRUCT;
7239         }
7240         return NDR_ERR_SUCCESS;
7241 }
7242
7243 _PUBLIC_ void ndr_print_netr_CryptPassword(struct ndr_print *ndr, const char *name, const struct netr_CryptPassword *r)
7244 {
7245         ndr_print_struct(ndr, name, "netr_CryptPassword");
7246         {
7247                 uint32_t _flags_save_STRUCT = ndr->flags;
7248                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
7249                 ndr->depth++;
7250                 ndr_print_array_uint8(ndr, "data", r->data, 512);
7251                 ndr_print_uint32(ndr, "length", r->length);
7252                 ndr->depth--;
7253                 ndr->flags = _flags_save_STRUCT;
7254         }
7255 }
7256
7257 static enum ndr_err_code ndr_push_netr_DsRAddressToSitenamesWCtr(struct ndr_push *ndr, int ndr_flags, const struct netr_DsRAddressToSitenamesWCtr *r)
7258 {
7259         uint32_t cntr_sitename_1;
7260         if (ndr_flags & NDR_SCALARS) {
7261                 NDR_CHECK(ndr_push_align(ndr, 4));
7262                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
7263                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sitename));
7264         }
7265         if (ndr_flags & NDR_BUFFERS) {
7266                 if (r->sitename) {
7267                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
7268                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
7269                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->sitename[cntr_sitename_1]));
7270                         }
7271                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
7272                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->sitename[cntr_sitename_1]));
7273                         }
7274                 }
7275         }
7276         return NDR_ERR_SUCCESS;
7277 }
7278
7279 static enum ndr_err_code ndr_pull_netr_DsRAddressToSitenamesWCtr(struct ndr_pull *ndr, int ndr_flags, struct netr_DsRAddressToSitenamesWCtr *r)
7280 {
7281         uint32_t _ptr_sitename;
7282         uint32_t cntr_sitename_1;
7283         TALLOC_CTX *_mem_save_sitename_0;
7284         TALLOC_CTX *_mem_save_sitename_1;
7285         if (ndr_flags & NDR_SCALARS) {
7286                 NDR_CHECK(ndr_pull_align(ndr, 4));
7287                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
7288                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sitename));
7289                 if (_ptr_sitename) {
7290                         NDR_PULL_ALLOC(ndr, r->sitename);
7291                 } else {
7292                         r->sitename = NULL;
7293                 }
7294         }
7295         if (ndr_flags & NDR_BUFFERS) {
7296                 if (r->sitename) {
7297                         _mem_save_sitename_0 = NDR_PULL_GET_MEM_CTX(ndr);
7298                         NDR_PULL_SET_MEM_CTX(ndr, r->sitename, 0);
7299                         NDR_CHECK(ndr_pull_array_size(ndr, &r->sitename));
7300                         NDR_PULL_ALLOC_N(ndr, r->sitename, ndr_get_array_size(ndr, &r->sitename));
7301                         _mem_save_sitename_1 = NDR_PULL_GET_MEM_CTX(ndr);
7302                         NDR_PULL_SET_MEM_CTX(ndr, r->sitename, 0);
7303                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
7304                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->sitename[cntr_sitename_1]));
7305                         }
7306                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
7307                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->sitename[cntr_sitename_1]));
7308                         }
7309                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sitename_1, 0);
7310                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sitename_0, 0);
7311                 }
7312                 if (r->sitename) {
7313                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sitename, r->count));
7314                 }
7315         }
7316         return NDR_ERR_SUCCESS;
7317 }
7318
7319 _PUBLIC_ void ndr_print_netr_DsRAddressToSitenamesWCtr(struct ndr_print *ndr, const char *name, const struct netr_DsRAddressToSitenamesWCtr *r)
7320 {
7321         uint32_t cntr_sitename_1;
7322         ndr_print_struct(ndr, name, "netr_DsRAddressToSitenamesWCtr");
7323         ndr->depth++;
7324         ndr_print_uint32(ndr, "count", r->count);
7325         ndr_print_ptr(ndr, "sitename", r->sitename);
7326         ndr->depth++;
7327         if (r->sitename) {
7328                 ndr->print(ndr, "%s: ARRAY(%d)", "sitename", r->count);
7329                 ndr->depth++;
7330                 for (cntr_sitename_1=0;cntr_sitename_1<r->count;cntr_sitename_1++) {
7331                         char *idx_1=NULL;
7332                         asprintf(&idx_1, "[%d]", cntr_sitename_1);
7333                         if (idx_1) {
7334                                 ndr_print_lsa_String(ndr, "sitename", &r->sitename[cntr_sitename_1]);
7335                                 free(idx_1);
7336                         }
7337                 }
7338                 ndr->depth--;
7339         }
7340         ndr->depth--;
7341         ndr->depth--;
7342 }
7343
7344 static enum ndr_err_code ndr_push_netr_DsRAddress(struct ndr_push *ndr, int ndr_flags, const struct netr_DsRAddress *r)
7345 {
7346         if (ndr_flags & NDR_SCALARS) {
7347                 NDR_CHECK(ndr_push_align(ndr, 4));
7348                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->buffer));
7349                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
7350         }
7351         if (ndr_flags & NDR_BUFFERS) {
7352                 if (r->buffer) {
7353                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
7354                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->buffer, r->size));
7355                 }
7356         }
7357         return NDR_ERR_SUCCESS;
7358 }
7359
7360 static enum ndr_err_code ndr_pull_netr_DsRAddress(struct ndr_pull *ndr, int ndr_flags, struct netr_DsRAddress *r)
7361 {
7362         uint32_t _ptr_buffer;
7363         TALLOC_CTX *_mem_save_buffer_0;
7364         if (ndr_flags & NDR_SCALARS) {
7365                 NDR_CHECK(ndr_pull_align(ndr, 4));
7366                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
7367                 if (_ptr_buffer) {
7368                         NDR_PULL_ALLOC(ndr, r->buffer);
7369                 } else {
7370                         r->buffer = NULL;
7371                 }
7372                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
7373         }
7374         if (ndr_flags & NDR_BUFFERS) {
7375                 if (r->buffer) {
7376                         _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
7377                         NDR_PULL_SET_MEM_CTX(ndr, r->buffer, 0);
7378                         NDR_CHECK(ndr_pull_array_size(ndr, &r->buffer));
7379                         NDR_PULL_ALLOC_N(ndr, r->buffer, ndr_get_array_size(ndr, &r->buffer));
7380                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->buffer, ndr_get_array_size(ndr, &r->buffer)));
7381                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
7382                 }
7383                 if (r->buffer) {
7384                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->buffer, r->size));
7385                 }
7386         }
7387         return NDR_ERR_SUCCESS;
7388 }
7389
7390 _PUBLIC_ void ndr_print_netr_DsRAddress(struct ndr_print *ndr, const char *name, const struct netr_DsRAddress *r)
7391 {
7392         ndr_print_struct(ndr, name, "netr_DsRAddress");
7393         ndr->depth++;
7394         ndr_print_ptr(ndr, "buffer", r->buffer);
7395         ndr->depth++;
7396         if (r->buffer) {
7397                 ndr_print_array_uint8(ndr, "buffer", r->buffer, r->size);
7398         }
7399         ndr->depth--;
7400         ndr_print_uint32(ndr, "size", r->size);
7401         ndr->depth--;
7402 }
7403
7404 static enum ndr_err_code ndr_push_netr_TrustFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
7405 {
7406         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
7407         return NDR_ERR_SUCCESS;
7408 }
7409
7410 static enum ndr_err_code ndr_pull_netr_TrustFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
7411 {
7412         uint32_t v;
7413         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
7414         *r = v;
7415         return NDR_ERR_SUCCESS;
7416 }
7417
7418 _PUBLIC_ void ndr_print_netr_TrustFlags(struct ndr_print *ndr, const char *name, uint32_t r)
7419 {
7420         ndr_print_uint32(ndr, name, r);
7421         ndr->depth++;
7422         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_IN_FOREST", NETR_TRUST_FLAG_IN_FOREST, r);
7423         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_OUTBOUND", NETR_TRUST_FLAG_OUTBOUND, r);
7424         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_TREEROOT", NETR_TRUST_FLAG_TREEROOT, r);
7425         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_PRIMARY", NETR_TRUST_FLAG_PRIMARY, r);
7426         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_NATIVE", NETR_TRUST_FLAG_NATIVE, r);
7427         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_INBOUND", NETR_TRUST_FLAG_INBOUND, r);
7428         ndr->depth--;
7429 }
7430
7431 static enum ndr_err_code ndr_push_netr_TrustType(struct ndr_push *ndr, int ndr_flags, enum netr_TrustType r)
7432 {
7433         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
7434         return NDR_ERR_SUCCESS;
7435 }
7436
7437 static enum ndr_err_code ndr_pull_netr_TrustType(struct ndr_pull *ndr, int ndr_flags, enum netr_TrustType *r)
7438 {
7439         uint32_t v;
7440         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
7441         *r = v;
7442         return NDR_ERR_SUCCESS;
7443 }
7444
7445 _PUBLIC_ void ndr_print_netr_TrustType(struct ndr_print *ndr, const char *name, enum netr_TrustType r)
7446 {
7447         const char *val = NULL;
7448
7449         switch (r) {
7450                 case NETR_TRUST_TYPE_DOWNLEVEL: val = "NETR_TRUST_TYPE_DOWNLEVEL"; break;
7451                 case NETR_TRUST_TYPE_UPLEVEL: val = "NETR_TRUST_TYPE_UPLEVEL"; break;
7452                 case NETR_TRUST_TYPE_MIT: val = "NETR_TRUST_TYPE_MIT"; break;
7453                 case NETR_TRUST_TYPE_DCE: val = "NETR_TRUST_TYPE_DCE"; break;
7454         }
7455         ndr_print_enum(ndr, name, "ENUM", val, r);
7456 }
7457
7458 static enum ndr_err_code ndr_push_netr_TrustAttributes(struct ndr_push *ndr, int ndr_flags, uint32_t r)
7459 {
7460         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
7461         return NDR_ERR_SUCCESS;
7462 }
7463
7464 static enum ndr_err_code ndr_pull_netr_TrustAttributes(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
7465 {
7466         uint32_t v;
7467         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
7468         *r = v;
7469         return NDR_ERR_SUCCESS;
7470 }
7471
7472 _PUBLIC_ void ndr_print_netr_TrustAttributes(struct ndr_print *ndr, const char *name, uint32_t r)
7473 {
7474         ndr_print_uint32(ndr, name, r);
7475         ndr->depth++;
7476         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_NON_TRANSITIVE", NETR_TRUST_ATTRIBUTE_NON_TRANSITIVE, r);
7477         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_UPLEVEL_ONLY", NETR_TRUST_ATTRIBUTE_UPLEVEL_ONLY, r);
7478         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_QUARANTINED_DOMAIN", NETR_TRUST_ATTRIBUTE_QUARANTINED_DOMAIN, r);
7479         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_FOREST_TRANSITIVE", NETR_TRUST_ATTRIBUTE_FOREST_TRANSITIVE, r);
7480         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_CROSS_ORGANIZATION", NETR_TRUST_ATTRIBUTE_CROSS_ORGANIZATION, r);
7481         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_WITHIN_FOREST", NETR_TRUST_ATTRIBUTE_WITHIN_FOREST, r);
7482         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL", NETR_TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL, r);
7483         ndr->depth--;
7484 }
7485
7486 static enum ndr_err_code ndr_push_netr_DomainTrust(struct ndr_push *ndr, int ndr_flags, const struct netr_DomainTrust *r)
7487 {
7488         if (ndr_flags & NDR_SCALARS) {
7489                 NDR_CHECK(ndr_push_align(ndr, 4));
7490                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->netbios_name));
7491                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dns_name));
7492                 NDR_CHECK(ndr_push_netr_TrustFlags(ndr, NDR_SCALARS, r->trust_flags));
7493                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->parent_index));
7494                 NDR_CHECK(ndr_push_netr_TrustType(ndr, NDR_SCALARS, r->trust_type));
7495                 NDR_CHECK(ndr_push_netr_TrustAttributes(ndr, NDR_SCALARS, r->trust_attributes));
7496                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
7497                 NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->guid));
7498         }
7499         if (ndr_flags & NDR_BUFFERS) {
7500                 if (r->netbios_name) {
7501                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->netbios_name, CH_UTF16)));
7502                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7503                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->netbios_name, CH_UTF16)));
7504                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->netbios_name, ndr_charset_length(r->netbios_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
7505                 }
7506                 if (r->dns_name) {
7507                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_name, CH_UTF16)));
7508                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7509                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_name, CH_UTF16)));
7510                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dns_name, ndr_charset_length(r->dns_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
7511                 }
7512                 if (r->sid) {
7513                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
7514                 }
7515                 NDR_CHECK(ndr_push_GUID(ndr, NDR_BUFFERS, &r->guid));
7516         }
7517         return NDR_ERR_SUCCESS;
7518 }
7519
7520 static enum ndr_err_code ndr_pull_netr_DomainTrust(struct ndr_pull *ndr, int ndr_flags, struct netr_DomainTrust *r)
7521 {
7522         uint32_t _ptr_netbios_name;
7523         TALLOC_CTX *_mem_save_netbios_name_0;
7524         uint32_t _ptr_dns_name;
7525         TALLOC_CTX *_mem_save_dns_name_0;
7526         uint32_t _ptr_sid;
7527         TALLOC_CTX *_mem_save_sid_0;
7528         if (ndr_flags & NDR_SCALARS) {
7529                 NDR_CHECK(ndr_pull_align(ndr, 4));
7530                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_netbios_name));
7531                 if (_ptr_netbios_name) {
7532                         NDR_PULL_ALLOC(ndr, r->netbios_name);
7533                 } else {
7534                         r->netbios_name = NULL;
7535                 }
7536                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dns_name));
7537                 if (_ptr_dns_name) {
7538                         NDR_PULL_ALLOC(ndr, r->dns_name);
7539                 } else {
7540                         r->dns_name = NULL;
7541                 }
7542                 NDR_CHECK(ndr_pull_netr_TrustFlags(ndr, NDR_SCALARS, &r->trust_flags));
7543                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->parent_index));
7544                 NDR_CHECK(ndr_pull_netr_TrustType(ndr, NDR_SCALARS, &r->trust_type));
7545                 NDR_CHECK(ndr_pull_netr_TrustAttributes(ndr, NDR_SCALARS, &r->trust_attributes));
7546                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
7547                 if (_ptr_sid) {
7548                         NDR_PULL_ALLOC(ndr, r->sid);
7549                 } else {
7550                         r->sid = NULL;
7551                 }
7552                 NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->guid));
7553         }
7554         if (ndr_flags & NDR_BUFFERS) {
7555                 if (r->netbios_name) {
7556                         _mem_save_netbios_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
7557                         NDR_PULL_SET_MEM_CTX(ndr, r->netbios_name, 0);
7558                         NDR_CHECK(ndr_pull_array_size(ndr, &r->netbios_name));
7559                         NDR_CHECK(ndr_pull_array_length(ndr, &r->netbios_name));
7560                         if (ndr_get_array_length(ndr, &r->netbios_name) > ndr_get_array_size(ndr, &r->netbios_name)) {
7561                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->netbios_name), ndr_get_array_length(ndr, &r->netbios_name));
7562                         }
7563                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->netbios_name), sizeof(uint16_t)));
7564                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->netbios_name, ndr_get_array_length(ndr, &r->netbios_name), sizeof(uint16_t), CH_UTF16));
7565                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_netbios_name_0, 0);
7566                 }
7567                 if (r->dns_name) {
7568                         _mem_save_dns_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
7569                         NDR_PULL_SET_MEM_CTX(ndr, r->dns_name, 0);
7570                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dns_name));
7571                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dns_name));
7572                         if (ndr_get_array_length(ndr, &r->dns_name) > ndr_get_array_size(ndr, &r->dns_name)) {
7573                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dns_name), ndr_get_array_length(ndr, &r->dns_name));
7574                         }
7575                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dns_name), sizeof(uint16_t)));
7576                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dns_name, ndr_get_array_length(ndr, &r->dns_name), sizeof(uint16_t), CH_UTF16));
7577                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dns_name_0, 0);
7578                 }
7579                 if (r->sid) {
7580                         _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
7581                         NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
7582                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
7583                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
7584                 }
7585                 NDR_CHECK(ndr_pull_GUID(ndr, NDR_BUFFERS, &r->guid));
7586         }
7587         return NDR_ERR_SUCCESS;
7588 }
7589
7590 _PUBLIC_ void ndr_print_netr_DomainTrust(struct ndr_print *ndr, const char *name, const struct netr_DomainTrust *r)
7591 {
7592         ndr_print_struct(ndr, name, "netr_DomainTrust");
7593         ndr->depth++;
7594         ndr_print_ptr(ndr, "netbios_name", r->netbios_name);
7595         ndr->depth++;
7596         if (r->netbios_name) {
7597                 ndr_print_string(ndr, "netbios_name", r->netbios_name);
7598         }
7599         ndr->depth--;
7600         ndr_print_ptr(ndr, "dns_name", r->dns_name);
7601         ndr->depth++;
7602         if (r->dns_name) {
7603                 ndr_print_string(ndr, "dns_name", r->dns_name);
7604         }
7605         ndr->depth--;
7606         ndr_print_netr_TrustFlags(ndr, "trust_flags", r->trust_flags);
7607         ndr_print_uint32(ndr, "parent_index", r->parent_index);
7608         ndr_print_netr_TrustType(ndr, "trust_type", r->trust_type);
7609         ndr_print_netr_TrustAttributes(ndr, "trust_attributes", r->trust_attributes);
7610         ndr_print_ptr(ndr, "sid", r->sid);
7611         ndr->depth++;
7612         if (r->sid) {
7613                 ndr_print_dom_sid2(ndr, "sid", r->sid);
7614         }
7615         ndr->depth--;
7616         ndr_print_GUID(ndr, "guid", &r->guid);
7617         ndr->depth--;
7618 }
7619
7620 static enum ndr_err_code ndr_push_netr_DomainTrustList(struct ndr_push *ndr, int ndr_flags, const struct netr_DomainTrustList *r)
7621 {
7622         uint32_t cntr_array_1;
7623         if (ndr_flags & NDR_SCALARS) {
7624                 NDR_CHECK(ndr_push_align(ndr, 4));
7625                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
7626                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
7627         }
7628         if (ndr_flags & NDR_BUFFERS) {
7629                 if (r->array) {
7630                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
7631                         for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
7632                                 NDR_CHECK(ndr_push_netr_DomainTrust(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
7633                         }
7634                         for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
7635                                 NDR_CHECK(ndr_push_netr_DomainTrust(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
7636                         }
7637                 }
7638         }
7639         return NDR_ERR_SUCCESS;
7640 }
7641
7642 static enum ndr_err_code ndr_pull_netr_DomainTrustList(struct ndr_pull *ndr, int ndr_flags, struct netr_DomainTrustList *r)
7643 {
7644         uint32_t _ptr_array;
7645         uint32_t cntr_array_1;
7646         TALLOC_CTX *_mem_save_array_0;
7647         TALLOC_CTX *_mem_save_array_1;
7648         if (ndr_flags & NDR_SCALARS) {
7649                 NDR_CHECK(ndr_pull_align(ndr, 4));
7650                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
7651                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
7652                 if (_ptr_array) {
7653                         NDR_PULL_ALLOC(ndr, r->array);
7654                 } else {
7655                         r->array = NULL;
7656                 }
7657         }
7658         if (ndr_flags & NDR_BUFFERS) {
7659                 if (r->array) {
7660                         _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
7661                         NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
7662                         NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
7663                         NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
7664                         _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
7665                         NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
7666                         for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
7667                                 NDR_CHECK(ndr_pull_netr_DomainTrust(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
7668                         }
7669                         for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
7670                                 NDR_CHECK(ndr_pull_netr_DomainTrust(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
7671                         }
7672                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
7673                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
7674                 }
7675                 if (r->array) {
7676                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
7677                 }
7678         }
7679         return NDR_ERR_SUCCESS;
7680 }
7681
7682 _PUBLIC_ void ndr_print_netr_DomainTrustList(struct ndr_print *ndr, const char *name, const struct netr_DomainTrustList *r)
7683 {
7684         uint32_t cntr_array_1;
7685         ndr_print_struct(ndr, name, "netr_DomainTrustList");
7686         ndr->depth++;
7687         ndr_print_uint32(ndr, "count", r->count);
7688         ndr_print_ptr(ndr, "array", r->array);
7689         ndr->depth++;
7690         if (r->array) {
7691                 ndr->print(ndr, "%s: ARRAY(%d)", "array", r->count);
7692                 ndr->depth++;
7693                 for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
7694                         char *idx_1=NULL;
7695                         asprintf(&idx_1, "[%d]", cntr_array_1);
7696                         if (idx_1) {
7697                                 ndr_print_netr_DomainTrust(ndr, "array", &r->array[cntr_array_1]);
7698                                 free(idx_1);
7699                         }
7700                 }
7701                 ndr->depth--;
7702         }
7703         ndr->depth--;
7704         ndr->depth--;
7705 }
7706
7707 static enum ndr_err_code ndr_push_netr_DsRAddressToSitenamesExWCtr(struct ndr_push *ndr, int ndr_flags, const struct netr_DsRAddressToSitenamesExWCtr *r)
7708 {
7709         uint32_t cntr_sitename_1;
7710         uint32_t cntr_subnetname_1;
7711         if (ndr_flags & NDR_SCALARS) {
7712                 NDR_CHECK(ndr_push_align(ndr, 4));
7713                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
7714                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sitename));
7715                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->subnetname));
7716         }
7717         if (ndr_flags & NDR_BUFFERS) {
7718                 if (r->sitename) {
7719                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
7720                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
7721                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->sitename[cntr_sitename_1]));
7722                         }
7723                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
7724                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->sitename[cntr_sitename_1]));
7725                         }
7726                 }
7727                 if (r->subnetname) {
7728                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
7729                         for (cntr_subnetname_1 = 0; cntr_subnetname_1 < r->count; cntr_subnetname_1++) {
7730                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->subnetname[cntr_subnetname_1]));
7731                         }
7732                         for (cntr_subnetname_1 = 0; cntr_subnetname_1 < r->count; cntr_subnetname_1++) {
7733                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->subnetname[cntr_subnetname_1]));
7734                         }
7735                 }
7736         }
7737         return NDR_ERR_SUCCESS;
7738 }
7739
7740 static enum ndr_err_code ndr_pull_netr_DsRAddressToSitenamesExWCtr(struct ndr_pull *ndr, int ndr_flags, struct netr_DsRAddressToSitenamesExWCtr *r)
7741 {
7742         uint32_t _ptr_sitename;
7743         uint32_t cntr_sitename_1;
7744         TALLOC_CTX *_mem_save_sitename_0;
7745         TALLOC_CTX *_mem_save_sitename_1;
7746         uint32_t _ptr_subnetname;
7747         uint32_t cntr_subnetname_1;
7748         TALLOC_CTX *_mem_save_subnetname_0;
7749         TALLOC_CTX *_mem_save_subnetname_1;
7750         if (ndr_flags & NDR_SCALARS) {
7751                 NDR_CHECK(ndr_pull_align(ndr, 4));
7752                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
7753                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sitename));
7754                 if (_ptr_sitename) {
7755                         NDR_PULL_ALLOC(ndr, r->sitename);
7756                 } else {
7757                         r->sitename = NULL;
7758                 }
7759                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_subnetname));
7760                 if (_ptr_subnetname) {
7761                         NDR_PULL_ALLOC(ndr, r->subnetname);
7762                 } else {
7763                         r->subnetname = NULL;
7764                 }
7765         }
7766         if (ndr_flags & NDR_BUFFERS) {
7767                 if (r->sitename) {
7768                         _mem_save_sitename_0 = NDR_PULL_GET_MEM_CTX(ndr);
7769                         NDR_PULL_SET_MEM_CTX(ndr, r->sitename, 0);
7770                         NDR_CHECK(ndr_pull_array_size(ndr, &r->sitename));
7771                         NDR_PULL_ALLOC_N(ndr, r->sitename, ndr_get_array_size(ndr, &r->sitename));
7772                         _mem_save_sitename_1 = NDR_PULL_GET_MEM_CTX(ndr);
7773                         NDR_PULL_SET_MEM_CTX(ndr, r->sitename, 0);
7774                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
7775                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->sitename[cntr_sitename_1]));
7776                         }
7777                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
7778                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->sitename[cntr_sitename_1]));
7779                         }
7780                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sitename_1, 0);
7781                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sitename_0, 0);
7782                 }
7783                 if (r->subnetname) {
7784                         _mem_save_subnetname_0 = NDR_PULL_GET_MEM_CTX(ndr);
7785                         NDR_PULL_SET_MEM_CTX(ndr, r->subnetname, 0);
7786                         NDR_CHECK(ndr_pull_array_size(ndr, &r->subnetname));
7787                         NDR_PULL_ALLOC_N(ndr, r->subnetname, ndr_get_array_size(ndr, &r->subnetname));
7788                         _mem_save_subnetname_1 = NDR_PULL_GET_MEM_CTX(ndr);
7789                         NDR_PULL_SET_MEM_CTX(ndr, r->subnetname, 0);
7790                         for (cntr_subnetname_1 = 0; cntr_subnetname_1 < r->count; cntr_subnetname_1++) {
7791                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->subnetname[cntr_subnetname_1]));
7792                         }
7793                         for (cntr_subnetname_1 = 0; cntr_subnetname_1 < r->count; cntr_subnetname_1++) {
7794                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->subnetname[cntr_subnetname_1]));
7795                         }
7796                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_subnetname_1, 0);
7797                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_subnetname_0, 0);
7798                 }
7799                 if (r->sitename) {
7800                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sitename, r->count));
7801                 }
7802                 if (r->subnetname) {
7803                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->subnetname, r->count));
7804                 }
7805         }
7806         return NDR_ERR_SUCCESS;
7807 }
7808
7809 _PUBLIC_ void ndr_print_netr_DsRAddressToSitenamesExWCtr(struct ndr_print *ndr, const char *name, const struct netr_DsRAddressToSitenamesExWCtr *r)
7810 {
7811         uint32_t cntr_sitename_1;
7812         uint32_t cntr_subnetname_1;
7813         ndr_print_struct(ndr, name, "netr_DsRAddressToSitenamesExWCtr");
7814         ndr->depth++;
7815         ndr_print_uint32(ndr, "count", r->count);
7816         ndr_print_ptr(ndr, "sitename", r->sitename);
7817         ndr->depth++;
7818         if (r->sitename) {
7819                 ndr->print(ndr, "%s: ARRAY(%d)", "sitename", r->count);
7820                 ndr->depth++;
7821                 for (cntr_sitename_1=0;cntr_sitename_1<r->count;cntr_sitename_1++) {
7822                         char *idx_1=NULL;
7823                         asprintf(&idx_1, "[%d]", cntr_sitename_1);
7824                         if (idx_1) {
7825                                 ndr_print_lsa_String(ndr, "sitename", &r->sitename[cntr_sitename_1]);
7826                                 free(idx_1);
7827                         }
7828                 }
7829                 ndr->depth--;
7830         }
7831         ndr->depth--;
7832         ndr_print_ptr(ndr, "subnetname", r->subnetname);
7833         ndr->depth++;
7834         if (r->subnetname) {
7835                 ndr->print(ndr, "%s: ARRAY(%d)", "subnetname", r->count);
7836                 ndr->depth++;
7837                 for (cntr_subnetname_1=0;cntr_subnetname_1<r->count;cntr_subnetname_1++) {
7838                         char *idx_1=NULL;
7839                         asprintf(&idx_1, "[%d]", cntr_subnetname_1);
7840                         if (idx_1) {
7841                                 ndr_print_lsa_String(ndr, "subnetname", &r->subnetname[cntr_subnetname_1]);
7842                                 free(idx_1);
7843                         }
7844                 }
7845                 ndr->depth--;
7846         }
7847         ndr->depth--;
7848         ndr->depth--;
7849 }
7850
7851 static enum ndr_err_code ndr_push_DcSitesCtr(struct ndr_push *ndr, int ndr_flags, const struct DcSitesCtr *r)
7852 {
7853         uint32_t cntr_sites_1;
7854         if (ndr_flags & NDR_SCALARS) {
7855                 NDR_CHECK(ndr_push_align(ndr, 4));
7856                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_sites));
7857                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sites));
7858         }
7859         if (ndr_flags & NDR_BUFFERS) {
7860                 if (r->sites) {
7861                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_sites));
7862                         for (cntr_sites_1 = 0; cntr_sites_1 < r->num_sites; cntr_sites_1++) {
7863                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->sites[cntr_sites_1]));
7864                         }
7865                         for (cntr_sites_1 = 0; cntr_sites_1 < r->num_sites; cntr_sites_1++) {
7866                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->sites[cntr_sites_1]));
7867                         }
7868                 }
7869         }
7870         return NDR_ERR_SUCCESS;
7871 }
7872
7873 static enum ndr_err_code ndr_pull_DcSitesCtr(struct ndr_pull *ndr, int ndr_flags, struct DcSitesCtr *r)
7874 {
7875         uint32_t _ptr_sites;
7876         uint32_t cntr_sites_1;
7877         TALLOC_CTX *_mem_save_sites_0;
7878         TALLOC_CTX *_mem_save_sites_1;
7879         if (ndr_flags & NDR_SCALARS) {
7880                 NDR_CHECK(ndr_pull_align(ndr, 4));
7881                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_sites));
7882                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sites));
7883                 if (_ptr_sites) {
7884                         NDR_PULL_ALLOC(ndr, r->sites);
7885                 } else {
7886                         r->sites = NULL;
7887                 }
7888         }
7889         if (ndr_flags & NDR_BUFFERS) {
7890                 if (r->sites) {
7891                         _mem_save_sites_0 = NDR_PULL_GET_MEM_CTX(ndr);
7892                         NDR_PULL_SET_MEM_CTX(ndr, r->sites, 0);
7893                         NDR_CHECK(ndr_pull_array_size(ndr, &r->sites));
7894                         NDR_PULL_ALLOC_N(ndr, r->sites, ndr_get_array_size(ndr, &r->sites));
7895                         _mem_save_sites_1 = NDR_PULL_GET_MEM_CTX(ndr);
7896                         NDR_PULL_SET_MEM_CTX(ndr, r->sites, 0);
7897                         for (cntr_sites_1 = 0; cntr_sites_1 < r->num_sites; cntr_sites_1++) {
7898                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->sites[cntr_sites_1]));
7899                         }
7900                         for (cntr_sites_1 = 0; cntr_sites_1 < r->num_sites; cntr_sites_1++) {
7901                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->sites[cntr_sites_1]));
7902                         }
7903                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sites_1, 0);
7904                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sites_0, 0);
7905                 }
7906                 if (r->sites) {
7907                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sites, r->num_sites));
7908                 }
7909         }
7910         return NDR_ERR_SUCCESS;
7911 }
7912
7913 _PUBLIC_ void ndr_print_DcSitesCtr(struct ndr_print *ndr, const char *name, const struct DcSitesCtr *r)
7914 {
7915         uint32_t cntr_sites_1;
7916         ndr_print_struct(ndr, name, "DcSitesCtr");
7917         ndr->depth++;
7918         ndr_print_uint32(ndr, "num_sites", r->num_sites);
7919         ndr_print_ptr(ndr, "sites", r->sites);
7920         ndr->depth++;
7921         if (r->sites) {
7922                 ndr->print(ndr, "%s: ARRAY(%d)", "sites", r->num_sites);
7923                 ndr->depth++;
7924                 for (cntr_sites_1=0;cntr_sites_1<r->num_sites;cntr_sites_1++) {
7925                         char *idx_1=NULL;
7926                         asprintf(&idx_1, "[%d]", cntr_sites_1);
7927                         if (idx_1) {
7928                                 ndr_print_lsa_String(ndr, "sites", &r->sites[cntr_sites_1]);
7929                                 free(idx_1);
7930                         }
7931                 }
7932                 ndr->depth--;
7933         }
7934         ndr->depth--;
7935         ndr->depth--;
7936 }
7937
7938 static enum ndr_err_code ndr_push_netr_LogonUasLogon(struct ndr_push *ndr, int flags, const struct netr_LogonUasLogon *r)
7939 {
7940         if (flags & NDR_IN) {
7941                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
7942                 if (r->in.server_name) {
7943                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
7944                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7945                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
7946                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
7947                 }
7948                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
7949                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7950                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
7951                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
7952                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.workstation, CH_UTF16)));
7953                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7954                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.workstation, CH_UTF16)));
7955                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.workstation, ndr_charset_length(r->in.workstation, CH_UTF16), sizeof(uint16_t), CH_UTF16));
7956         }
7957         if (flags & NDR_OUT) {
7958                 if (r->out.info == NULL) {
7959                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
7960                 }
7961                 NDR_CHECK(ndr_push_netr_UasInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
7962                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
7963         }
7964         return NDR_ERR_SUCCESS;
7965 }
7966
7967 static enum ndr_err_code ndr_pull_netr_LogonUasLogon(struct ndr_pull *ndr, int flags, struct netr_LogonUasLogon *r)
7968 {
7969         uint32_t _ptr_server_name;
7970         TALLOC_CTX *_mem_save_server_name_0;
7971         TALLOC_CTX *_mem_save_info_0;
7972         if (flags & NDR_IN) {
7973                 ZERO_STRUCT(r->out);
7974
7975                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
7976                 if (_ptr_server_name) {
7977                         NDR_PULL_ALLOC(ndr, r->in.server_name);
7978                 } else {
7979                         r->in.server_name = NULL;
7980                 }
7981                 if (r->in.server_name) {
7982                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
7983                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
7984                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
7985                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
7986                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
7987                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
7988                         }
7989                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
7990                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
7991                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
7992                 }
7993                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
7994                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
7995                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
7996                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.account_name), ndr_get_array_length(ndr, &r->in.account_name));
7997                 }
7998                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
7999                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.account_name, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t), CH_UTF16));
8000                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.workstation));
8001                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.workstation));
8002                 if (ndr_get_array_length(ndr, &r->in.workstation) > ndr_get_array_size(ndr, &r->in.workstation)) {
8003                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.workstation), ndr_get_array_length(ndr, &r->in.workstation));
8004                 }
8005                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.workstation), sizeof(uint16_t)));
8006                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.workstation, ndr_get_array_length(ndr, &r->in.workstation), sizeof(uint16_t), CH_UTF16));
8007                 NDR_PULL_ALLOC(ndr, r->out.info);
8008                 ZERO_STRUCTP(r->out.info);
8009         }
8010         if (flags & NDR_OUT) {
8011                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
8012                         NDR_PULL_ALLOC(ndr, r->out.info);
8013                 }
8014                 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
8015                 NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
8016                 NDR_CHECK(ndr_pull_netr_UasInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
8017                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
8018                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
8019         }
8020         return NDR_ERR_SUCCESS;
8021 }
8022
8023 _PUBLIC_ void ndr_print_netr_LogonUasLogon(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonUasLogon *r)
8024 {
8025         ndr_print_struct(ndr, name, "netr_LogonUasLogon");
8026         ndr->depth++;
8027         if (flags & NDR_SET_VALUES) {
8028                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
8029         }
8030         if (flags & NDR_IN) {
8031                 ndr_print_struct(ndr, "in", "netr_LogonUasLogon");
8032                 ndr->depth++;
8033                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
8034                 ndr->depth++;
8035                 if (r->in.server_name) {
8036                         ndr_print_string(ndr, "server_name", r->in.server_name);
8037                 }
8038                 ndr->depth--;
8039                 ndr_print_string(ndr, "account_name", r->in.account_name);
8040                 ndr_print_string(ndr, "workstation", r->in.workstation);
8041                 ndr->depth--;
8042         }
8043         if (flags & NDR_OUT) {
8044                 ndr_print_struct(ndr, "out", "netr_LogonUasLogon");
8045                 ndr->depth++;
8046                 ndr_print_ptr(ndr, "info", r->out.info);
8047                 ndr->depth++;
8048                 ndr_print_netr_UasInfo(ndr, "info", r->out.info);
8049                 ndr->depth--;
8050                 ndr_print_WERROR(ndr, "result", r->out.result);
8051                 ndr->depth--;
8052         }
8053         ndr->depth--;
8054 }
8055
8056 static enum ndr_err_code ndr_push_netr_LogonUasLogoff(struct ndr_push *ndr, int flags, const struct netr_LogonUasLogoff *r)
8057 {
8058         if (flags & NDR_IN) {
8059                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
8060                 if (r->in.server_name) {
8061                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
8062                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
8063                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
8064                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
8065                 }
8066                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
8067                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
8068                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
8069                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
8070                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.workstation, CH_UTF16)));
8071                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
8072                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.workstation, CH_UTF16)));
8073                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.workstation, ndr_charset_length(r->in.workstation, CH_UTF16), sizeof(uint16_t), CH_UTF16));
8074         }
8075         if (flags & NDR_OUT) {
8076                 if (r->out.info == NULL) {
8077                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
8078                 }
8079                 NDR_CHECK(ndr_push_netr_UasLogoffInfo(ndr, NDR_SCALARS, r->out.info));
8080                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
8081         }
8082         return NDR_ERR_SUCCESS;
8083 }
8084
8085 static enum ndr_err_code ndr_pull_netr_LogonUasLogoff(struct ndr_pull *ndr, int flags, struct netr_LogonUasLogoff *r)
8086 {
8087         uint32_t _ptr_server_name;
8088         TALLOC_CTX *_mem_save_server_name_0;
8089         TALLOC_CTX *_mem_save_info_0;
8090         if (flags & NDR_IN) {
8091                 ZERO_STRUCT(r->out);
8092
8093                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
8094                 if (_ptr_server_name) {
8095                         NDR_PULL_ALLOC(ndr, r->in.server_name);
8096                 } else {
8097                         r->in.server_name = NULL;
8098                 }
8099                 if (r->in.server_name) {
8100                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
8101                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
8102                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
8103                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
8104                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
8105                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
8106                         }
8107                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
8108                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
8109                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
8110                 }
8111                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
8112                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
8113                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
8114                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.account_name), ndr_get_array_length(ndr, &r->in.account_name));
8115                 }
8116                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
8117                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.account_name, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t), CH_UTF16));
8118                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.workstation));
8119                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.workstation));
8120                 if (ndr_get_array_length(ndr, &r->in.workstation) > ndr_get_array_size(ndr, &r->in.workstation)) {
8121                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.workstation), ndr_get_array_length(ndr, &r->in.workstation));
8122                 }
8123                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.workstation), sizeof(uint16_t)));
8124                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.workstation, ndr_get_array_length(ndr, &r->in.workstation), sizeof(uint16_t), CH_UTF16));
8125                 NDR_PULL_ALLOC(ndr, r->out.info);
8126                 ZERO_STRUCTP(r->out.info);
8127         }
8128         if (flags & NDR_OUT) {
8129                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
8130                         NDR_PULL_ALLOC(ndr, r->out.info);
8131                 }
8132                 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
8133                 NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
8134                 NDR_CHECK(ndr_pull_netr_UasLogoffInfo(ndr, NDR_SCALARS, r->out.info));
8135                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
8136                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
8137         }
8138         return NDR_ERR_SUCCESS;
8139 }
8140
8141 _PUBLIC_ void ndr_print_netr_LogonUasLogoff(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonUasLogoff *r)
8142 {
8143         ndr_print_struct(ndr, name, "netr_LogonUasLogoff");
8144         ndr->depth++;
8145         if (flags & NDR_SET_VALUES) {
8146                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
8147         }
8148         if (flags & NDR_IN) {
8149                 ndr_print_struct(ndr, "in", "netr_LogonUasLogoff");
8150                 ndr->depth++;
8151                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
8152                 ndr->depth++;
8153                 if (r->in.server_name) {
8154                         ndr_print_string(ndr, "server_name", r->in.server_name);
8155                 }
8156                 ndr->depth--;
8157                 ndr_print_string(ndr, "account_name", r->in.account_name);
8158                 ndr_print_string(ndr, "workstation", r->in.workstation);
8159                 ndr->depth--;
8160         }
8161         if (flags & NDR_OUT) {
8162                 ndr_print_struct(ndr, "out", "netr_LogonUasLogoff");
8163                 ndr->depth++;
8164                 ndr_print_ptr(ndr, "info", r->out.info);
8165                 ndr->depth++;
8166                 ndr_print_netr_UasLogoffInfo(ndr, "info", r->out.info);
8167                 ndr->depth--;
8168                 ndr_print_WERROR(ndr, "result", r->out.result);
8169                 ndr->depth--;
8170         }
8171         ndr->depth--;
8172 }
8173
8174 static enum ndr_err_code ndr_push_netr_LogonSamLogon(struct ndr_push *ndr, int flags, const struct netr_LogonSamLogon *r)
8175 {
8176         if (flags & NDR_IN) {
8177                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
8178                 if (r->in.server_name) {
8179                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
8180                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
8181                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
8182                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
8183                 }
8184                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
8185                 if (r->in.computer_name) {
8186                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
8187                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
8188                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
8189                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
8190                 }
8191                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.credential));
8192                 if (r->in.credential) {
8193                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
8194                 }
8195                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.return_authenticator));
8196                 if (r->in.return_authenticator) {
8197                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
8198                 }
8199                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.logon_level));
8200                 if (r->in.logon == NULL) {
8201                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
8202                 }
8203                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.logon, r->in.logon_level));
8204                 NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
8205                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.validation_level));
8206         }
8207         if (flags & NDR_OUT) {
8208                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.return_authenticator));
8209                 if (r->out.return_authenticator) {
8210                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
8211                 }
8212                 if (r->out.validation == NULL) {
8213                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
8214                 }
8215                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.validation, r->in.validation_level));
8216                 NDR_CHECK(ndr_push_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
8217                 if (r->out.authoritative == NULL) {
8218                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
8219                 }
8220                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->out.authoritative));
8221                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
8222         }
8223         return NDR_ERR_SUCCESS;
8224 }
8225
8226 static enum ndr_err_code ndr_pull_netr_LogonSamLogon(struct ndr_pull *ndr, int flags, struct netr_LogonSamLogon *r)
8227 {
8228         uint32_t _ptr_server_name;
8229         uint32_t _ptr_computer_name;
8230         uint32_t _ptr_credential;
8231         uint32_t _ptr_return_authenticator;
8232         TALLOC_CTX *_mem_save_server_name_0;
8233         TALLOC_CTX *_mem_save_computer_name_0;
8234         TALLOC_CTX *_mem_save_credential_0;
8235         TALLOC_CTX *_mem_save_return_authenticator_0;
8236         TALLOC_CTX *_mem_save_logon_0;
8237         TALLOC_CTX *_mem_save_validation_0;
8238         TALLOC_CTX *_mem_save_authoritative_0;
8239         if (flags & NDR_IN) {
8240                 ZERO_STRUCT(r->out);
8241
8242                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
8243                 if (_ptr_server_name) {
8244                         NDR_PULL_ALLOC(ndr, r->in.server_name);
8245                 } else {
8246                         r->in.server_name = NULL;
8247                 }
8248                 if (r->in.server_name) {
8249                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
8250                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
8251                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
8252                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
8253                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
8254                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
8255                         }
8256                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
8257                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
8258                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
8259                 }
8260                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
8261                 if (_ptr_computer_name) {
8262                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
8263                 } else {
8264                         r->in.computer_name = NULL;
8265                 }
8266                 if (r->in.computer_name) {
8267                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
8268                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
8269                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
8270                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
8271                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
8272                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
8273                         }
8274                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
8275                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
8276                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
8277                 }
8278                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_credential));
8279                 if (_ptr_credential) {
8280                         NDR_PULL_ALLOC(ndr, r->in.credential);
8281                 } else {
8282                         r->in.credential = NULL;
8283                 }
8284                 if (r->in.credential) {
8285                         _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
8286                         NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, 0);
8287                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
8288                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, 0);
8289                 }
8290                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
8291                 if (_ptr_return_authenticator) {
8292                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
8293                 } else {
8294                         r->in.return_authenticator = NULL;
8295                 }
8296                 if (r->in.return_authenticator) {
8297                         _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
8298                         NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, 0);
8299                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
8300                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
8301                 }
8302                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.logon_level));
8303                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
8304                         NDR_PULL_ALLOC(ndr, r->in.logon);
8305                 }
8306                 _mem_save_logon_0 = NDR_PULL_GET_MEM_CTX(ndr);
8307                 NDR_PULL_SET_MEM_CTX(ndr, r->in.logon, LIBNDR_FLAG_REF_ALLOC);
8308                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.logon, r->in.logon_level));
8309                 NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
8310                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_0, LIBNDR_FLAG_REF_ALLOC);
8311                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.validation_level));
8312                 NDR_PULL_ALLOC(ndr, r->out.validation);
8313                 ZERO_STRUCTP(r->out.validation);
8314                 NDR_PULL_ALLOC(ndr, r->out.authoritative);
8315                 ZERO_STRUCTP(r->out.authoritative);
8316         }
8317         if (flags & NDR_OUT) {
8318                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
8319                 if (_ptr_return_authenticator) {
8320                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
8321                 } else {
8322                         r->out.return_authenticator = NULL;
8323                 }
8324                 if (r->out.return_authenticator) {
8325                         _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
8326                         NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, 0);
8327                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
8328                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
8329                 }
8330                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
8331                         NDR_PULL_ALLOC(ndr, r->out.validation);
8332                 }
8333                 _mem_save_validation_0 = NDR_PULL_GET_MEM_CTX(ndr);
8334                 NDR_PULL_SET_MEM_CTX(ndr, r->out.validation, LIBNDR_FLAG_REF_ALLOC);
8335                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.validation, r->in.validation_level));
8336                 NDR_CHECK(ndr_pull_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
8337                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_validation_0, LIBNDR_FLAG_REF_ALLOC);
8338                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
8339                         NDR_PULL_ALLOC(ndr, r->out.authoritative);
8340                 }
8341                 _mem_save_authoritative_0 = NDR_PULL_GET_MEM_CTX(ndr);
8342                 NDR_PULL_SET_MEM_CTX(ndr, r->out.authoritative, LIBNDR_FLAG_REF_ALLOC);
8343                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->out.authoritative));
8344                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_authoritative_0, LIBNDR_FLAG_REF_ALLOC);
8345                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
8346         }
8347         return NDR_ERR_SUCCESS;
8348 }
8349
8350 _PUBLIC_ void ndr_print_netr_LogonSamLogon(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogon *r)
8351 {
8352         ndr_print_struct(ndr, name, "netr_LogonSamLogon");
8353         ndr->depth++;
8354         if (flags & NDR_SET_VALUES) {
8355                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
8356         }
8357         if (flags & NDR_IN) {
8358                 ndr_print_struct(ndr, "in", "netr_LogonSamLogon");
8359                 ndr->depth++;
8360                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
8361                 ndr->depth++;
8362                 if (r->in.server_name) {
8363                         ndr_print_string(ndr, "server_name", r->in.server_name);
8364                 }
8365                 ndr->depth--;
8366                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
8367                 ndr->depth++;
8368                 if (r->in.computer_name) {
8369                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
8370                 }
8371                 ndr->depth--;
8372                 ndr_print_ptr(ndr, "credential", r->in.credential);
8373                 ndr->depth++;
8374                 if (r->in.credential) {
8375                         ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
8376                 }
8377                 ndr->depth--;
8378                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
8379                 ndr->depth++;
8380                 if (r->in.return_authenticator) {
8381                         ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
8382                 }
8383                 ndr->depth--;
8384                 ndr_print_uint16(ndr, "logon_level", r->in.logon_level);
8385                 ndr_print_ptr(ndr, "logon", r->in.logon);
8386                 ndr->depth++;
8387                 ndr_print_set_switch_value(ndr, r->in.logon, r->in.logon_level);
8388                 ndr_print_netr_LogonLevel(ndr, "logon", r->in.logon);
8389                 ndr->depth--;
8390                 ndr_print_uint16(ndr, "validation_level", r->in.validation_level);
8391                 ndr->depth--;
8392         }
8393         if (flags & NDR_OUT) {
8394                 ndr_print_struct(ndr, "out", "netr_LogonSamLogon");
8395                 ndr->depth++;
8396                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
8397                 ndr->depth++;
8398                 if (r->out.return_authenticator) {
8399                         ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
8400                 }
8401                 ndr->depth--;
8402                 ndr_print_ptr(ndr, "validation", r->out.validation);
8403                 ndr->depth++;
8404                 ndr_print_set_switch_value(ndr, r->out.validation, r->in.validation_level);
8405                 ndr_print_netr_Validation(ndr, "validation", r->out.validation);
8406                 ndr->depth--;
8407                 ndr_print_ptr(ndr, "authoritative", r->out.authoritative);
8408                 ndr->depth++;
8409                 ndr_print_uint8(ndr, "authoritative", *r->out.authoritative);
8410                 ndr->depth--;
8411                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
8412                 ndr->depth--;
8413         }
8414         ndr->depth--;
8415 }
8416
8417 static enum ndr_err_code ndr_push_netr_LogonSamLogoff(struct ndr_push *ndr, int flags, const struct netr_LogonSamLogoff *r)
8418 {
8419         if (flags & NDR_IN) {
8420                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
8421                 if (r->in.server_name) {
8422                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
8423                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
8424                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
8425                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
8426                 }
8427                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
8428                 if (r->in.computer_name) {
8429                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
8430                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
8431                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
8432                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
8433                 }
8434                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.credential));
8435                 if (r->in.credential) {
8436                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
8437                 }
8438                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.return_authenticator));
8439                 if (r->in.return_authenticator) {
8440                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
8441                 }
8442                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.logon_level));
8443                 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
8444                 NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
8445         }
8446         if (flags & NDR_OUT) {
8447                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.return_authenticator));
8448                 if (r->out.return_authenticator) {
8449                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
8450                 }
8451                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
8452         }
8453         return NDR_ERR_SUCCESS;
8454 }
8455
8456 static enum ndr_err_code ndr_pull_netr_LogonSamLogoff(struct ndr_pull *ndr, int flags, struct netr_LogonSamLogoff *r)
8457 {
8458         uint32_t _ptr_server_name;
8459         uint32_t _ptr_computer_name;
8460         uint32_t _ptr_credential;
8461         uint32_t _ptr_return_authenticator;
8462         TALLOC_CTX *_mem_save_server_name_0;
8463         TALLOC_CTX *_mem_save_computer_name_0;
8464         TALLOC_CTX *_mem_save_credential_0;
8465         TALLOC_CTX *_mem_save_return_authenticator_0;
8466         if (flags & NDR_IN) {
8467                 ZERO_STRUCT(r->out);
8468
8469                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
8470                 if (_ptr_server_name) {
8471                         NDR_PULL_ALLOC(ndr, r->in.server_name);
8472                 } else {
8473                         r->in.server_name = NULL;
8474                 }
8475                 if (r->in.server_name) {
8476                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
8477                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
8478                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
8479                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
8480                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
8481                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
8482                         }
8483                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
8484                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
8485                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
8486                 }
8487                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
8488                 if (_ptr_computer_name) {
8489                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
8490                 } else {
8491                         r->in.computer_name = NULL;
8492                 }
8493                 if (r->in.computer_name) {
8494                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
8495                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
8496                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
8497                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
8498                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
8499                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
8500                         }
8501                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
8502                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
8503                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
8504                 }
8505                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_credential));
8506                 if (_ptr_credential) {
8507                         NDR_PULL_ALLOC(ndr, r->in.credential);
8508                 } else {
8509                         r->in.credential = NULL;
8510                 }
8511                 if (r->in.credential) {
8512                         _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
8513                         NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, 0);
8514                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
8515                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, 0);
8516                 }
8517                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
8518                 if (_ptr_return_authenticator) {
8519                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
8520                 } else {
8521                         r->in.return_authenticator = NULL;
8522                 }
8523                 if (r->in.return_authenticator) {
8524                         _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
8525                         NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, 0);
8526                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
8527                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
8528                 }
8529                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.logon_level));
8530                 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
8531                 NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
8532         }
8533         if (flags & NDR_OUT) {
8534                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
8535                 if (_ptr_return_authenticator) {
8536                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
8537                 } else {
8538                         r->out.return_authenticator = NULL;
8539                 }
8540                 if (r->out.return_authenticator) {
8541                         _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
8542                         NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, 0);
8543                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
8544                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
8545                 }
8546                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
8547         }
8548         return NDR_ERR_SUCCESS;
8549 }
8550
8551 _PUBLIC_ void ndr_print_netr_LogonSamLogoff(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogoff *r)
8552 {
8553         ndr_print_struct(ndr, name, "netr_LogonSamLogoff");
8554         ndr->depth++;
8555         if (flags & NDR_SET_VALUES) {
8556                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
8557         }
8558         if (flags & NDR_IN) {
8559                 ndr_print_struct(ndr, "in", "netr_LogonSamLogoff");
8560                 ndr->depth++;
8561                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
8562                 ndr->depth++;
8563                 if (r->in.server_name) {
8564                         ndr_print_string(ndr, "server_name", r->in.server_name);
8565                 }
8566                 ndr->depth--;
8567                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
8568                 ndr->depth++;
8569                 if (r->in.computer_name) {
8570                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
8571                 }
8572                 ndr->depth--;
8573                 ndr_print_ptr(ndr, "credential", r->in.credential);
8574                 ndr->depth++;
8575                 if (r->in.credential) {
8576                         ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
8577                 }
8578                 ndr->depth--;
8579                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
8580                 ndr->depth++;
8581                 if (r->in.return_authenticator) {
8582                         ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
8583                 }
8584                 ndr->depth--;
8585                 ndr_print_uint16(ndr, "logon_level", r->in.logon_level);
8586                 ndr_print_set_switch_value(ndr, &r->in.logon, r->in.logon_level);
8587                 ndr_print_netr_LogonLevel(ndr, "logon", &r->in.logon);
8588                 ndr->depth--;
8589         }
8590         if (flags & NDR_OUT) {
8591                 ndr_print_struct(ndr, "out", "netr_LogonSamLogoff");
8592                 ndr->depth++;
8593                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
8594                 ndr->depth++;
8595                 if (r->out.return_authenticator) {
8596                         ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
8597                 }
8598                 ndr->depth--;
8599                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
8600                 ndr->depth--;
8601         }
8602         ndr->depth--;
8603 }
8604
8605 static enum ndr_err_code ndr_push_netr_ServerReqChallenge(struct ndr_push *ndr, int flags, const struct netr_ServerReqChallenge *r)
8606 {
8607         if (flags & NDR_IN) {
8608                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
8609                 if (r->in.server_name) {
8610                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
8611                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
8612                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
8613                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
8614                 }
8615                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
8616                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
8617                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
8618                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
8619                 if (r->in.credentials == NULL) {
8620                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
8621                 }
8622                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
8623         }
8624         if (flags & NDR_OUT) {
8625                 if (r->out.return_credentials == NULL) {
8626                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
8627                 }
8628                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
8629                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
8630         }
8631         return NDR_ERR_SUCCESS;
8632 }
8633
8634 static enum ndr_err_code ndr_pull_netr_ServerReqChallenge(struct ndr_pull *ndr, int flags, struct netr_ServerReqChallenge *r)
8635 {
8636         uint32_t _ptr_server_name;
8637         TALLOC_CTX *_mem_save_server_name_0;
8638         TALLOC_CTX *_mem_save_credentials_0;
8639         TALLOC_CTX *_mem_save_return_credentials_0;
8640         if (flags & NDR_IN) {
8641                 ZERO_STRUCT(r->out);
8642
8643                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
8644                 if (_ptr_server_name) {
8645                         NDR_PULL_ALLOC(ndr, r->in.server_name);
8646                 } else {
8647                         r->in.server_name = NULL;
8648                 }
8649                 if (r->in.server_name) {
8650                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
8651                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
8652                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
8653                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
8654                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
8655                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
8656                         }
8657                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
8658                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
8659                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
8660                 }
8661                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
8662                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
8663                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
8664                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
8665                 }
8666                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
8667                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
8668                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
8669                         NDR_PULL_ALLOC(ndr, r->in.credentials);
8670                 }
8671                 _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
8672                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credentials, LIBNDR_FLAG_REF_ALLOC);
8673                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
8674                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
8675                 NDR_PULL_ALLOC(ndr, r->out.return_credentials);
8676                 ZERO_STRUCTP(r->out.return_credentials);
8677         }
8678         if (flags & NDR_OUT) {
8679                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
8680                         NDR_PULL_ALLOC(ndr, r->out.return_credentials);
8681                 }
8682                 _mem_save_return_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
8683                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_credentials, LIBNDR_FLAG_REF_ALLOC);
8684                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
8685                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_credentials_0, LIBNDR_FLAG_REF_ALLOC);
8686                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
8687         }
8688         return NDR_ERR_SUCCESS;
8689 }
8690
8691 _PUBLIC_ void ndr_print_netr_ServerReqChallenge(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerReqChallenge *r)
8692 {
8693         ndr_print_struct(ndr, name, "netr_ServerReqChallenge");
8694         ndr->depth++;
8695         if (flags & NDR_SET_VALUES) {
8696                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
8697         }
8698         if (flags & NDR_IN) {
8699                 ndr_print_struct(ndr, "in", "netr_ServerReqChallenge");
8700                 ndr->depth++;
8701                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
8702                 ndr->depth++;
8703                 if (r->in.server_name) {
8704                         ndr_print_string(ndr, "server_name", r->in.server_name);
8705                 }
8706                 ndr->depth--;
8707                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
8708                 ndr_print_ptr(ndr, "credentials", r->in.credentials);
8709                 ndr->depth++;
8710                 ndr_print_netr_Credential(ndr, "credentials", r->in.credentials);
8711                 ndr->depth--;
8712                 ndr->depth--;
8713         }
8714         if (flags & NDR_OUT) {
8715                 ndr_print_struct(ndr, "out", "netr_ServerReqChallenge");
8716                 ndr->depth++;
8717                 ndr_print_ptr(ndr, "return_credentials", r->out.return_credentials);
8718                 ndr->depth++;
8719                 ndr_print_netr_Credential(ndr, "return_credentials", r->out.return_credentials);
8720                 ndr->depth--;
8721                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
8722                 ndr->depth--;
8723         }
8724         ndr->depth--;
8725 }
8726
8727 static enum ndr_err_code ndr_push_netr_ServerAuthenticate(struct ndr_push *ndr, int flags, const struct netr_ServerAuthenticate *r)
8728 {
8729         if (flags & NDR_IN) {
8730                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
8731                 if (r->in.server_name) {
8732                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
8733                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
8734                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
8735                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
8736                 }
8737                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
8738                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
8739                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
8740                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
8741                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
8742                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
8743                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
8744                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
8745                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
8746                 if (r->in.credentials == NULL) {
8747                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
8748                 }
8749                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
8750         }
8751         if (flags & NDR_OUT) {
8752                 if (r->out.return_credentials == NULL) {
8753                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
8754                 }
8755                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
8756                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
8757         }
8758         return NDR_ERR_SUCCESS;
8759 }
8760
8761 static enum ndr_err_code ndr_pull_netr_ServerAuthenticate(struct ndr_pull *ndr, int flags, struct netr_ServerAuthenticate *r)
8762 {
8763         uint32_t _ptr_server_name;
8764         TALLOC_CTX *_mem_save_server_name_0;
8765         TALLOC_CTX *_mem_save_credentials_0;
8766         TALLOC_CTX *_mem_save_return_credentials_0;
8767         if (flags & NDR_IN) {
8768                 ZERO_STRUCT(r->out);
8769
8770                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
8771                 if (_ptr_server_name) {
8772                         NDR_PULL_ALLOC(ndr, r->in.server_name);
8773                 } else {
8774                         r->in.server_name = NULL;
8775                 }
8776                 if (r->in.server_name) {
8777                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
8778                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
8779                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
8780                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
8781                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
8782                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
8783                         }
8784                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
8785                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
8786                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
8787                 }
8788                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
8789                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
8790                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
8791                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.account_name), ndr_get_array_length(ndr, &r->in.account_name));
8792                 }
8793                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
8794                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.account_name, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t), CH_UTF16));
8795                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
8796                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
8797                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
8798                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
8799                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
8800                 }
8801                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
8802                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
8803                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
8804                         NDR_PULL_ALLOC(ndr, r->in.credentials);
8805                 }
8806                 _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
8807                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credentials, LIBNDR_FLAG_REF_ALLOC);
8808                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
8809                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
8810                 NDR_PULL_ALLOC(ndr, r->out.return_credentials);
8811                 ZERO_STRUCTP(r->out.return_credentials);
8812         }
8813         if (flags & NDR_OUT) {
8814                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
8815                         NDR_PULL_ALLOC(ndr, r->out.return_credentials);
8816                 }
8817                 _mem_save_return_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
8818                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_credentials, LIBNDR_FLAG_REF_ALLOC);
8819                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
8820                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_credentials_0, LIBNDR_FLAG_REF_ALLOC);
8821                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
8822         }
8823         return NDR_ERR_SUCCESS;
8824 }
8825
8826 _PUBLIC_ void ndr_print_netr_ServerAuthenticate(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerAuthenticate *r)
8827 {
8828         ndr_print_struct(ndr, name, "netr_ServerAuthenticate");
8829         ndr->depth++;
8830         if (flags & NDR_SET_VALUES) {
8831                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
8832         }
8833         if (flags & NDR_IN) {
8834                 ndr_print_struct(ndr, "in", "netr_ServerAuthenticate");
8835                 ndr->depth++;
8836                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
8837                 ndr->depth++;
8838                 if (r->in.server_name) {
8839                         ndr_print_string(ndr, "server_name", r->in.server_name);
8840                 }
8841                 ndr->depth--;
8842                 ndr_print_string(ndr, "account_name", r->in.account_name);
8843                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
8844                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
8845                 ndr_print_ptr(ndr, "credentials", r->in.credentials);
8846                 ndr->depth++;
8847                 ndr_print_netr_Credential(ndr, "credentials", r->in.credentials);
8848                 ndr->depth--;
8849                 ndr->depth--;
8850         }
8851         if (flags & NDR_OUT) {
8852                 ndr_print_struct(ndr, "out", "netr_ServerAuthenticate");
8853                 ndr->depth++;
8854                 ndr_print_ptr(ndr, "return_credentials", r->out.return_credentials);
8855                 ndr->depth++;
8856                 ndr_print_netr_Credential(ndr, "return_credentials", r->out.return_credentials);
8857                 ndr->depth--;
8858                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
8859                 ndr->depth--;
8860         }
8861         ndr->depth--;
8862 }
8863
8864 static enum ndr_err_code ndr_push_netr_ServerPasswordSet(struct ndr_push *ndr, int flags, const struct netr_ServerPasswordSet *r)
8865 {
8866         if (flags & NDR_IN) {
8867                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
8868                 if (r->in.server_name) {
8869                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
8870                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
8871                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
8872                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
8873                 }
8874                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
8875                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
8876                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
8877                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
8878                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
8879                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
8880                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
8881                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
8882                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
8883                 if (r->in.credential == NULL) {
8884                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
8885                 }
8886                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
8887                 if (r->in.new_password == NULL) {
8888                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
8889                 }
8890                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.new_password));
8891         }
8892         if (flags & NDR_OUT) {
8893                 if (r->out.return_authenticator == NULL) {
8894                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
8895                 }
8896                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
8897                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
8898         }
8899         return NDR_ERR_SUCCESS;
8900 }
8901
8902 static enum ndr_err_code ndr_pull_netr_ServerPasswordSet(struct ndr_pull *ndr, int flags, struct netr_ServerPasswordSet *r)
8903 {
8904         uint32_t _ptr_server_name;
8905         TALLOC_CTX *_mem_save_server_name_0;
8906         TALLOC_CTX *_mem_save_credential_0;
8907         TALLOC_CTX *_mem_save_return_authenticator_0;
8908         TALLOC_CTX *_mem_save_new_password_0;
8909         if (flags & NDR_IN) {
8910                 ZERO_STRUCT(r->out);
8911
8912                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
8913                 if (_ptr_server_name) {
8914                         NDR_PULL_ALLOC(ndr, r->in.server_name);
8915                 } else {
8916                         r->in.server_name = NULL;
8917                 }
8918                 if (r->in.server_name) {
8919                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
8920                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
8921                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
8922                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
8923                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
8924                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
8925                         }
8926                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
8927                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
8928                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
8929                 }
8930                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
8931                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
8932                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
8933                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.account_name), ndr_get_array_length(ndr, &r->in.account_name));
8934                 }
8935                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
8936                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.account_name, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t), CH_UTF16));
8937                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
8938                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
8939                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
8940                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
8941                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
8942                 }
8943                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
8944                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
8945                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
8946                         NDR_PULL_ALLOC(ndr, r->in.credential);
8947                 }
8948                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
8949                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
8950                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
8951                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
8952                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
8953                         NDR_PULL_ALLOC(ndr, r->in.new_password);
8954                 }
8955                 _mem_save_new_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
8956                 NDR_PULL_SET_MEM_CTX(ndr, r->in.new_password, LIBNDR_FLAG_REF_ALLOC);
8957                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.new_password));
8958                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_new_password_0, LIBNDR_FLAG_REF_ALLOC);
8959                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
8960                 ZERO_STRUCTP(r->out.return_authenticator);
8961         }
8962         if (flags & NDR_OUT) {
8963                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
8964                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
8965                 }
8966                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
8967                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
8968                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
8969                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
8970                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
8971         }
8972         return NDR_ERR_SUCCESS;
8973 }
8974
8975 _PUBLIC_ void ndr_print_netr_ServerPasswordSet(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerPasswordSet *r)
8976 {
8977         ndr_print_struct(ndr, name, "netr_ServerPasswordSet");
8978         ndr->depth++;
8979         if (flags & NDR_SET_VALUES) {
8980                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
8981         }
8982         if (flags & NDR_IN) {
8983                 ndr_print_struct(ndr, "in", "netr_ServerPasswordSet");
8984                 ndr->depth++;
8985                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
8986                 ndr->depth++;
8987                 if (r->in.server_name) {
8988                         ndr_print_string(ndr, "server_name", r->in.server_name);
8989                 }
8990                 ndr->depth--;
8991                 ndr_print_string(ndr, "account_name", r->in.account_name);
8992                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
8993                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
8994                 ndr_print_ptr(ndr, "credential", r->in.credential);
8995                 ndr->depth++;
8996                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
8997                 ndr->depth--;
8998                 ndr_print_ptr(ndr, "new_password", r->in.new_password);
8999                 ndr->depth++;
9000                 ndr_print_samr_Password(ndr, "new_password", r->in.new_password);
9001                 ndr->depth--;
9002                 ndr->depth--;
9003         }
9004         if (flags & NDR_OUT) {
9005                 ndr_print_struct(ndr, "out", "netr_ServerPasswordSet");
9006                 ndr->depth++;
9007                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
9008                 ndr->depth++;
9009                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
9010                 ndr->depth--;
9011                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
9012                 ndr->depth--;
9013         }
9014         ndr->depth--;
9015 }
9016
9017 static enum ndr_err_code ndr_push_netr_DatabaseDeltas(struct ndr_push *ndr, int flags, const struct netr_DatabaseDeltas *r)
9018 {
9019         if (flags & NDR_IN) {
9020                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
9021                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9022                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
9023                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
9024                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
9025                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9026                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
9027                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
9028                 if (r->in.credential == NULL) {
9029                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9030                 }
9031                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
9032                 if (r->in.return_authenticator == NULL) {
9033                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9034                 }
9035                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
9036                 NDR_CHECK(ndr_push_netr_SamDatabaseID(ndr, NDR_SCALARS, r->in.database_id));
9037                 if (r->in.sequence_num == NULL) {
9038                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9039                 }
9040                 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, *r->in.sequence_num));
9041                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.preferredmaximumlength));
9042         }
9043         if (flags & NDR_OUT) {
9044                 if (r->out.return_authenticator == NULL) {
9045                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9046                 }
9047                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
9048                 if (r->out.sequence_num == NULL) {
9049                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9050                 }
9051                 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, *r->out.sequence_num));
9052                 if (r->out.delta_enum_array == NULL) {
9053                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9054                 }
9055                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.delta_enum_array));
9056                 if (*r->out.delta_enum_array) {
9057                         NDR_CHECK(ndr_push_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
9058                 }
9059                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
9060         }
9061         return NDR_ERR_SUCCESS;
9062 }
9063
9064 static enum ndr_err_code ndr_pull_netr_DatabaseDeltas(struct ndr_pull *ndr, int flags, struct netr_DatabaseDeltas *r)
9065 {
9066         uint32_t _ptr_delta_enum_array;
9067         TALLOC_CTX *_mem_save_credential_0;
9068         TALLOC_CTX *_mem_save_return_authenticator_0;
9069         TALLOC_CTX *_mem_save_sequence_num_0;
9070         TALLOC_CTX *_mem_save_delta_enum_array_0;
9071         TALLOC_CTX *_mem_save_delta_enum_array_1;
9072         if (flags & NDR_IN) {
9073                 ZERO_STRUCT(r->out);
9074
9075                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
9076                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
9077                 if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
9078                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
9079                 }
9080                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
9081                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
9082                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
9083                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
9084                 if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
9085                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computername), ndr_get_array_length(ndr, &r->in.computername));
9086                 }
9087                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
9088                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
9089                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9090                         NDR_PULL_ALLOC(ndr, r->in.credential);
9091                 }
9092                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
9093                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
9094                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
9095                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
9096                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9097                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
9098                 }
9099                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
9100                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
9101                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
9102                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
9103                 NDR_CHECK(ndr_pull_netr_SamDatabaseID(ndr, NDR_SCALARS, &r->in.database_id));
9104                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9105                         NDR_PULL_ALLOC(ndr, r->in.sequence_num);
9106                 }
9107                 _mem_save_sequence_num_0 = NDR_PULL_GET_MEM_CTX(ndr);
9108                 NDR_PULL_SET_MEM_CTX(ndr, r->in.sequence_num, LIBNDR_FLAG_REF_ALLOC);
9109                 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, r->in.sequence_num));
9110                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sequence_num_0, LIBNDR_FLAG_REF_ALLOC);
9111                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.preferredmaximumlength));
9112                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
9113                 *r->out.return_authenticator = *r->in.return_authenticator;
9114                 NDR_PULL_ALLOC(ndr, r->out.sequence_num);
9115                 *r->out.sequence_num = *r->in.sequence_num;
9116                 NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
9117                 ZERO_STRUCTP(r->out.delta_enum_array);
9118         }
9119         if (flags & NDR_OUT) {
9120                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9121                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
9122                 }
9123                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
9124                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
9125                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
9126                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
9127                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9128                         NDR_PULL_ALLOC(ndr, r->out.sequence_num);
9129                 }
9130                 _mem_save_sequence_num_0 = NDR_PULL_GET_MEM_CTX(ndr);
9131                 NDR_PULL_SET_MEM_CTX(ndr, r->out.sequence_num, LIBNDR_FLAG_REF_ALLOC);
9132                 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, r->out.sequence_num));
9133                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sequence_num_0, LIBNDR_FLAG_REF_ALLOC);
9134                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9135                         NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
9136                 }
9137                 _mem_save_delta_enum_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
9138                 NDR_PULL_SET_MEM_CTX(ndr, r->out.delta_enum_array, LIBNDR_FLAG_REF_ALLOC);
9139                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delta_enum_array));
9140                 if (_ptr_delta_enum_array) {
9141                         NDR_PULL_ALLOC(ndr, *r->out.delta_enum_array);
9142                 } else {
9143                         *r->out.delta_enum_array = NULL;
9144                 }
9145                 if (*r->out.delta_enum_array) {
9146                         _mem_save_delta_enum_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
9147                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.delta_enum_array, 0);
9148                         NDR_CHECK(ndr_pull_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
9149                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_1, 0);
9150                 }
9151                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_0, LIBNDR_FLAG_REF_ALLOC);
9152                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
9153         }
9154         return NDR_ERR_SUCCESS;
9155 }
9156
9157 _PUBLIC_ void ndr_print_netr_DatabaseDeltas(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseDeltas *r)
9158 {
9159         ndr_print_struct(ndr, name, "netr_DatabaseDeltas");
9160         ndr->depth++;
9161         if (flags & NDR_SET_VALUES) {
9162                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
9163         }
9164         if (flags & NDR_IN) {
9165                 ndr_print_struct(ndr, "in", "netr_DatabaseDeltas");
9166                 ndr->depth++;
9167                 ndr_print_string(ndr, "logon_server", r->in.logon_server);
9168                 ndr_print_string(ndr, "computername", r->in.computername);
9169                 ndr_print_ptr(ndr, "credential", r->in.credential);
9170                 ndr->depth++;
9171                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
9172                 ndr->depth--;
9173                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
9174                 ndr->depth++;
9175                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
9176                 ndr->depth--;
9177                 ndr_print_netr_SamDatabaseID(ndr, "database_id", r->in.database_id);
9178                 ndr_print_ptr(ndr, "sequence_num", r->in.sequence_num);
9179                 ndr->depth++;
9180                 ndr_print_udlong(ndr, "sequence_num", *r->in.sequence_num);
9181                 ndr->depth--;
9182                 ndr_print_uint32(ndr, "preferredmaximumlength", r->in.preferredmaximumlength);
9183                 ndr->depth--;
9184         }
9185         if (flags & NDR_OUT) {
9186                 ndr_print_struct(ndr, "out", "netr_DatabaseDeltas");
9187                 ndr->depth++;
9188                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
9189                 ndr->depth++;
9190                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
9191                 ndr->depth--;
9192                 ndr_print_ptr(ndr, "sequence_num", r->out.sequence_num);
9193                 ndr->depth++;
9194                 ndr_print_udlong(ndr, "sequence_num", *r->out.sequence_num);
9195                 ndr->depth--;
9196                 ndr_print_ptr(ndr, "delta_enum_array", r->out.delta_enum_array);
9197                 ndr->depth++;
9198                 ndr_print_ptr(ndr, "delta_enum_array", *r->out.delta_enum_array);
9199                 ndr->depth++;
9200                 if (*r->out.delta_enum_array) {
9201                         ndr_print_netr_DELTA_ENUM_ARRAY(ndr, "delta_enum_array", *r->out.delta_enum_array);
9202                 }
9203                 ndr->depth--;
9204                 ndr->depth--;
9205                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
9206                 ndr->depth--;
9207         }
9208         ndr->depth--;
9209 }
9210
9211 static enum ndr_err_code ndr_push_netr_DatabaseSync(struct ndr_push *ndr, int flags, const struct netr_DatabaseSync *r)
9212 {
9213         if (flags & NDR_IN) {
9214                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
9215                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9216                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
9217                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
9218                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
9219                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9220                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
9221                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
9222                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
9223                 if (r->in.return_authenticator == NULL) {
9224                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9225                 }
9226                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
9227                 NDR_CHECK(ndr_push_netr_SamDatabaseID(ndr, NDR_SCALARS, r->in.database_id));
9228                 if (r->in.sync_context == NULL) {
9229                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9230                 }
9231                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.sync_context));
9232                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.preferredmaximumlength));
9233         }
9234         if (flags & NDR_OUT) {
9235                 if (r->out.return_authenticator == NULL) {
9236                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9237                 }
9238                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
9239                 if (r->out.sync_context == NULL) {
9240                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9241                 }
9242                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.sync_context));
9243                 if (r->out.delta_enum_array == NULL) {
9244                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9245                 }
9246                 NDR_CHECK(ndr_push_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.delta_enum_array));
9247                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
9248         }
9249         return NDR_ERR_SUCCESS;
9250 }
9251
9252 static enum ndr_err_code ndr_pull_netr_DatabaseSync(struct ndr_pull *ndr, int flags, struct netr_DatabaseSync *r)
9253 {
9254         TALLOC_CTX *_mem_save_return_authenticator_0;
9255         TALLOC_CTX *_mem_save_sync_context_0;
9256         TALLOC_CTX *_mem_save_delta_enum_array_0;
9257         if (flags & NDR_IN) {
9258                 ZERO_STRUCT(r->out);
9259
9260                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
9261                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
9262                 if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
9263                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
9264                 }
9265                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
9266                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
9267                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
9268                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
9269                 if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
9270                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computername), ndr_get_array_length(ndr, &r->in.computername));
9271                 }
9272                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
9273                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
9274                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
9275                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9276                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
9277                 }
9278                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
9279                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
9280                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
9281                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
9282                 NDR_CHECK(ndr_pull_netr_SamDatabaseID(ndr, NDR_SCALARS, &r->in.database_id));
9283                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9284                         NDR_PULL_ALLOC(ndr, r->in.sync_context);
9285                 }
9286                 _mem_save_sync_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
9287                 NDR_PULL_SET_MEM_CTX(ndr, r->in.sync_context, LIBNDR_FLAG_REF_ALLOC);
9288                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.sync_context));
9289                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sync_context_0, LIBNDR_FLAG_REF_ALLOC);
9290                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.preferredmaximumlength));
9291                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
9292                 *r->out.return_authenticator = *r->in.return_authenticator;
9293                 NDR_PULL_ALLOC(ndr, r->out.sync_context);
9294                 *r->out.sync_context = *r->in.sync_context;
9295                 NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
9296                 ZERO_STRUCTP(r->out.delta_enum_array);
9297         }
9298         if (flags & NDR_OUT) {
9299                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9300                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
9301                 }
9302                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
9303                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
9304                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
9305                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
9306                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9307                         NDR_PULL_ALLOC(ndr, r->out.sync_context);
9308                 }
9309                 _mem_save_sync_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
9310                 NDR_PULL_SET_MEM_CTX(ndr, r->out.sync_context, LIBNDR_FLAG_REF_ALLOC);
9311                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.sync_context));
9312                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sync_context_0, LIBNDR_FLAG_REF_ALLOC);
9313                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9314                         NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
9315                 }
9316                 _mem_save_delta_enum_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
9317                 NDR_PULL_SET_MEM_CTX(ndr, r->out.delta_enum_array, LIBNDR_FLAG_REF_ALLOC);
9318                 NDR_CHECK(ndr_pull_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.delta_enum_array));
9319                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_0, LIBNDR_FLAG_REF_ALLOC);
9320                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
9321         }
9322         return NDR_ERR_SUCCESS;
9323 }
9324
9325 _PUBLIC_ void ndr_print_netr_DatabaseSync(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseSync *r)
9326 {
9327         ndr_print_struct(ndr, name, "netr_DatabaseSync");
9328         ndr->depth++;
9329         if (flags & NDR_SET_VALUES) {
9330                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
9331         }
9332         if (flags & NDR_IN) {
9333                 ndr_print_struct(ndr, "in", "netr_DatabaseSync");
9334                 ndr->depth++;
9335                 ndr_print_string(ndr, "logon_server", r->in.logon_server);
9336                 ndr_print_string(ndr, "computername", r->in.computername);
9337                 ndr_print_netr_Authenticator(ndr, "credential", &r->in.credential);
9338                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
9339                 ndr->depth++;
9340                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
9341                 ndr->depth--;
9342                 ndr_print_netr_SamDatabaseID(ndr, "database_id", r->in.database_id);
9343                 ndr_print_ptr(ndr, "sync_context", r->in.sync_context);
9344                 ndr->depth++;
9345                 ndr_print_uint32(ndr, "sync_context", *r->in.sync_context);
9346                 ndr->depth--;
9347                 ndr_print_uint32(ndr, "preferredmaximumlength", r->in.preferredmaximumlength);
9348                 ndr->depth--;
9349         }
9350         if (flags & NDR_OUT) {
9351                 ndr_print_struct(ndr, "out", "netr_DatabaseSync");
9352                 ndr->depth++;
9353                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
9354                 ndr->depth++;
9355                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
9356                 ndr->depth--;
9357                 ndr_print_ptr(ndr, "sync_context", r->out.sync_context);
9358                 ndr->depth++;
9359                 ndr_print_uint32(ndr, "sync_context", *r->out.sync_context);
9360                 ndr->depth--;
9361                 ndr_print_ptr(ndr, "delta_enum_array", r->out.delta_enum_array);
9362                 ndr->depth++;
9363                 ndr_print_netr_DELTA_ENUM_ARRAY(ndr, "delta_enum_array", r->out.delta_enum_array);
9364                 ndr->depth--;
9365                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
9366                 ndr->depth--;
9367         }
9368         ndr->depth--;
9369 }
9370
9371 static enum ndr_err_code ndr_push_netr_AccountDeltas(struct ndr_push *ndr, int flags, const struct netr_AccountDeltas *r)
9372 {
9373         if (flags & NDR_IN) {
9374                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
9375                 if (r->in.logon_server) {
9376                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
9377                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9378                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
9379                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
9380                 }
9381                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
9382                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9383                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
9384                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
9385                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
9386                 if (r->in.return_authenticator == NULL) {
9387                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9388                 }
9389                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
9390                 NDR_CHECK(ndr_push_netr_UAS_INFO_0(ndr, NDR_SCALARS, &r->in.uas));
9391                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
9392                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
9393                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffersize));
9394         }
9395         if (flags & NDR_OUT) {
9396                 if (r->out.return_authenticator == NULL) {
9397                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9398                 }
9399                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
9400                 if (r->out.buffer == NULL) {
9401                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9402                 }
9403                 {
9404                         struct ndr_push *_ndr_buffer;
9405                         NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_buffer, 4, -1));
9406                         NDR_CHECK(ndr_push_netr_AccountBuffer(_ndr_buffer, NDR_SCALARS, r->out.buffer));
9407                         NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_buffer, 4, -1));
9408                 }
9409                 if (r->out.count_returned == NULL) {
9410                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9411                 }
9412                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count_returned));
9413                 if (r->out.total_entries == NULL) {
9414                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9415                 }
9416                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.total_entries));
9417                 if (r->out.recordid == NULL) {
9418                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9419                 }
9420                 NDR_CHECK(ndr_push_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->out.recordid));
9421                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
9422         }
9423         return NDR_ERR_SUCCESS;
9424 }
9425
9426 static enum ndr_err_code ndr_pull_netr_AccountDeltas(struct ndr_pull *ndr, int flags, struct netr_AccountDeltas *r)
9427 {
9428         uint32_t _ptr_logon_server;
9429         TALLOC_CTX *_mem_save_logon_server_0;
9430         TALLOC_CTX *_mem_save_return_authenticator_0;
9431         TALLOC_CTX *_mem_save_buffer_0;
9432         TALLOC_CTX *_mem_save_count_returned_0;
9433         TALLOC_CTX *_mem_save_total_entries_0;
9434         TALLOC_CTX *_mem_save_recordid_0;
9435         if (flags & NDR_IN) {
9436                 ZERO_STRUCT(r->out);
9437
9438                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
9439                 if (_ptr_logon_server) {
9440                         NDR_PULL_ALLOC(ndr, r->in.logon_server);
9441                 } else {
9442                         r->in.logon_server = NULL;
9443                 }
9444                 if (r->in.logon_server) {
9445                         _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
9446                         NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
9447                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
9448                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
9449                         if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
9450                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
9451                         }
9452                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
9453                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
9454                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
9455                 }
9456                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
9457                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
9458                 if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
9459                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computername), ndr_get_array_length(ndr, &r->in.computername));
9460                 }
9461                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
9462                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
9463                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
9464                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9465                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
9466                 }
9467                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
9468                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
9469                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
9470                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
9471                 NDR_CHECK(ndr_pull_netr_UAS_INFO_0(ndr, NDR_SCALARS, &r->in.uas));
9472                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.count));
9473                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
9474                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffersize));
9475                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
9476                 *r->out.return_authenticator = *r->in.return_authenticator;
9477                 NDR_PULL_ALLOC(ndr, r->out.buffer);
9478                 ZERO_STRUCTP(r->out.buffer);
9479                 NDR_PULL_ALLOC(ndr, r->out.count_returned);
9480                 ZERO_STRUCTP(r->out.count_returned);
9481                 NDR_PULL_ALLOC(ndr, r->out.total_entries);
9482                 ZERO_STRUCTP(r->out.total_entries);
9483                 NDR_PULL_ALLOC(ndr, r->out.recordid);
9484                 ZERO_STRUCTP(r->out.recordid);
9485         }
9486         if (flags & NDR_OUT) {
9487                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9488                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
9489                 }
9490                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
9491                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
9492                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
9493                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
9494                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9495                         NDR_PULL_ALLOC(ndr, r->out.buffer);
9496                 }
9497                 _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
9498                 NDR_PULL_SET_MEM_CTX(ndr, r->out.buffer, LIBNDR_FLAG_REF_ALLOC);
9499                 {
9500                         struct ndr_pull *_ndr_buffer;
9501                         NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_buffer, 4, -1));
9502                         NDR_CHECK(ndr_pull_netr_AccountBuffer(_ndr_buffer, NDR_SCALARS, r->out.buffer));
9503                         NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_buffer, 4, -1));
9504                 }
9505                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, LIBNDR_FLAG_REF_ALLOC);
9506                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9507                         NDR_PULL_ALLOC(ndr, r->out.count_returned);
9508                 }
9509                 _mem_save_count_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
9510                 NDR_PULL_SET_MEM_CTX(ndr, r->out.count_returned, LIBNDR_FLAG_REF_ALLOC);
9511                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count_returned));
9512                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_returned_0, LIBNDR_FLAG_REF_ALLOC);
9513                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9514                         NDR_PULL_ALLOC(ndr, r->out.total_entries);
9515                 }
9516                 _mem_save_total_entries_0 = NDR_PULL_GET_MEM_CTX(ndr);
9517                 NDR_PULL_SET_MEM_CTX(ndr, r->out.total_entries, LIBNDR_FLAG_REF_ALLOC);
9518                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.total_entries));
9519                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_total_entries_0, LIBNDR_FLAG_REF_ALLOC);
9520                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9521                         NDR_PULL_ALLOC(ndr, r->out.recordid);
9522                 }
9523                 _mem_save_recordid_0 = NDR_PULL_GET_MEM_CTX(ndr);
9524                 NDR_PULL_SET_MEM_CTX(ndr, r->out.recordid, LIBNDR_FLAG_REF_ALLOC);
9525                 NDR_CHECK(ndr_pull_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->out.recordid));
9526                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_recordid_0, LIBNDR_FLAG_REF_ALLOC);
9527                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
9528         }
9529         return NDR_ERR_SUCCESS;
9530 }
9531
9532 _PUBLIC_ void ndr_print_netr_AccountDeltas(struct ndr_print *ndr, const char *name, int flags, const struct netr_AccountDeltas *r)
9533 {
9534         ndr_print_struct(ndr, name, "netr_AccountDeltas");
9535         ndr->depth++;
9536         if (flags & NDR_SET_VALUES) {
9537                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
9538         }
9539         if (flags & NDR_IN) {
9540                 ndr_print_struct(ndr, "in", "netr_AccountDeltas");
9541                 ndr->depth++;
9542                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
9543                 ndr->depth++;
9544                 if (r->in.logon_server) {
9545                         ndr_print_string(ndr, "logon_server", r->in.logon_server);
9546                 }
9547                 ndr->depth--;
9548                 ndr_print_string(ndr, "computername", r->in.computername);
9549                 ndr_print_netr_Authenticator(ndr, "credential", &r->in.credential);
9550                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
9551                 ndr->depth++;
9552                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
9553                 ndr->depth--;
9554                 ndr_print_netr_UAS_INFO_0(ndr, "uas", &r->in.uas);
9555                 ndr_print_uint32(ndr, "count", r->in.count);
9556                 ndr_print_uint32(ndr, "level", r->in.level);
9557                 ndr_print_uint32(ndr, "buffersize", r->in.buffersize);
9558                 ndr->depth--;
9559         }
9560         if (flags & NDR_OUT) {
9561                 ndr_print_struct(ndr, "out", "netr_AccountDeltas");
9562                 ndr->depth++;
9563                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
9564                 ndr->depth++;
9565                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
9566                 ndr->depth--;
9567                 ndr_print_ptr(ndr, "buffer", r->out.buffer);
9568                 ndr->depth++;
9569                 ndr_print_netr_AccountBuffer(ndr, "buffer", r->out.buffer);
9570                 ndr->depth--;
9571                 ndr_print_ptr(ndr, "count_returned", r->out.count_returned);
9572                 ndr->depth++;
9573                 ndr_print_uint32(ndr, "count_returned", *r->out.count_returned);
9574                 ndr->depth--;
9575                 ndr_print_ptr(ndr, "total_entries", r->out.total_entries);
9576                 ndr->depth++;
9577                 ndr_print_uint32(ndr, "total_entries", *r->out.total_entries);
9578                 ndr->depth--;
9579                 ndr_print_ptr(ndr, "recordid", r->out.recordid);
9580                 ndr->depth++;
9581                 ndr_print_netr_UAS_INFO_0(ndr, "recordid", r->out.recordid);
9582                 ndr->depth--;
9583                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
9584                 ndr->depth--;
9585         }
9586         ndr->depth--;
9587 }
9588
9589 static enum ndr_err_code ndr_push_netr_AccountSync(struct ndr_push *ndr, int flags, const struct netr_AccountSync *r)
9590 {
9591         if (flags & NDR_IN) {
9592                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
9593                 if (r->in.logon_server) {
9594                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
9595                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9596                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
9597                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
9598                 }
9599                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
9600                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9601                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
9602                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
9603                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
9604                 if (r->in.return_authenticator == NULL) {
9605                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9606                 }
9607                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
9608                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.reference));
9609                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
9610                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffersize));
9611                 if (r->in.recordid == NULL) {
9612                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9613                 }
9614                 NDR_CHECK(ndr_push_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->in.recordid));
9615         }
9616         if (flags & NDR_OUT) {
9617                 if (r->out.return_authenticator == NULL) {
9618                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9619                 }
9620                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
9621                 if (r->out.buffer == NULL) {
9622                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9623                 }
9624                 {
9625                         struct ndr_push *_ndr_buffer;
9626                         NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_buffer, 4, -1));
9627                         NDR_CHECK(ndr_push_netr_AccountBuffer(_ndr_buffer, NDR_SCALARS, r->out.buffer));
9628                         NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_buffer, 4, -1));
9629                 }
9630                 if (r->out.count_returned == NULL) {
9631                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9632                 }
9633                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count_returned));
9634                 if (r->out.total_entries == NULL) {
9635                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9636                 }
9637                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.total_entries));
9638                 if (r->out.next_reference == NULL) {
9639                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9640                 }
9641                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.next_reference));
9642                 if (r->out.recordid == NULL) {
9643                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9644                 }
9645                 NDR_CHECK(ndr_push_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->out.recordid));
9646                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
9647         }
9648         return NDR_ERR_SUCCESS;
9649 }
9650
9651 static enum ndr_err_code ndr_pull_netr_AccountSync(struct ndr_pull *ndr, int flags, struct netr_AccountSync *r)
9652 {
9653         uint32_t _ptr_logon_server;
9654         TALLOC_CTX *_mem_save_logon_server_0;
9655         TALLOC_CTX *_mem_save_return_authenticator_0;
9656         TALLOC_CTX *_mem_save_buffer_0;
9657         TALLOC_CTX *_mem_save_count_returned_0;
9658         TALLOC_CTX *_mem_save_total_entries_0;
9659         TALLOC_CTX *_mem_save_next_reference_0;
9660         TALLOC_CTX *_mem_save_recordid_0;
9661         if (flags & NDR_IN) {
9662                 ZERO_STRUCT(r->out);
9663
9664                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
9665                 if (_ptr_logon_server) {
9666                         NDR_PULL_ALLOC(ndr, r->in.logon_server);
9667                 } else {
9668                         r->in.logon_server = NULL;
9669                 }
9670                 if (r->in.logon_server) {
9671                         _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
9672                         NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
9673                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
9674                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
9675                         if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
9676                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
9677                         }
9678                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
9679                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
9680                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
9681                 }
9682                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
9683                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
9684                 if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
9685                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computername), ndr_get_array_length(ndr, &r->in.computername));
9686                 }
9687                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
9688                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
9689                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
9690                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9691                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
9692                 }
9693                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
9694                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
9695                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
9696                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
9697                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.reference));
9698                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
9699                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffersize));
9700                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9701                         NDR_PULL_ALLOC(ndr, r->in.recordid);
9702                 }
9703                 _mem_save_recordid_0 = NDR_PULL_GET_MEM_CTX(ndr);
9704                 NDR_PULL_SET_MEM_CTX(ndr, r->in.recordid, LIBNDR_FLAG_REF_ALLOC);
9705                 NDR_CHECK(ndr_pull_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->in.recordid));
9706                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_recordid_0, LIBNDR_FLAG_REF_ALLOC);
9707                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
9708                 *r->out.return_authenticator = *r->in.return_authenticator;
9709                 NDR_PULL_ALLOC(ndr, r->out.buffer);
9710                 ZERO_STRUCTP(r->out.buffer);
9711                 NDR_PULL_ALLOC(ndr, r->out.count_returned);
9712                 ZERO_STRUCTP(r->out.count_returned);
9713                 NDR_PULL_ALLOC(ndr, r->out.total_entries);
9714                 ZERO_STRUCTP(r->out.total_entries);
9715                 NDR_PULL_ALLOC(ndr, r->out.next_reference);
9716                 ZERO_STRUCTP(r->out.next_reference);
9717                 NDR_PULL_ALLOC(ndr, r->out.recordid);
9718                 *r->out.recordid = *r->in.recordid;
9719         }
9720         if (flags & NDR_OUT) {
9721                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9722                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
9723                 }
9724                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
9725                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
9726                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
9727                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
9728                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9729                         NDR_PULL_ALLOC(ndr, r->out.buffer);
9730                 }
9731                 _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
9732                 NDR_PULL_SET_MEM_CTX(ndr, r->out.buffer, LIBNDR_FLAG_REF_ALLOC);
9733                 {
9734                         struct ndr_pull *_ndr_buffer;
9735                         NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_buffer, 4, -1));
9736                         NDR_CHECK(ndr_pull_netr_AccountBuffer(_ndr_buffer, NDR_SCALARS, r->out.buffer));
9737                         NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_buffer, 4, -1));
9738                 }
9739                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, LIBNDR_FLAG_REF_ALLOC);
9740                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9741                         NDR_PULL_ALLOC(ndr, r->out.count_returned);
9742                 }
9743                 _mem_save_count_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
9744                 NDR_PULL_SET_MEM_CTX(ndr, r->out.count_returned, LIBNDR_FLAG_REF_ALLOC);
9745                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count_returned));
9746                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_returned_0, LIBNDR_FLAG_REF_ALLOC);
9747                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9748                         NDR_PULL_ALLOC(ndr, r->out.total_entries);
9749                 }
9750                 _mem_save_total_entries_0 = NDR_PULL_GET_MEM_CTX(ndr);
9751                 NDR_PULL_SET_MEM_CTX(ndr, r->out.total_entries, LIBNDR_FLAG_REF_ALLOC);
9752                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.total_entries));
9753                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_total_entries_0, LIBNDR_FLAG_REF_ALLOC);
9754                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9755                         NDR_PULL_ALLOC(ndr, r->out.next_reference);
9756                 }
9757                 _mem_save_next_reference_0 = NDR_PULL_GET_MEM_CTX(ndr);
9758                 NDR_PULL_SET_MEM_CTX(ndr, r->out.next_reference, LIBNDR_FLAG_REF_ALLOC);
9759                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.next_reference));
9760                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_next_reference_0, LIBNDR_FLAG_REF_ALLOC);
9761                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9762                         NDR_PULL_ALLOC(ndr, r->out.recordid);
9763                 }
9764                 _mem_save_recordid_0 = NDR_PULL_GET_MEM_CTX(ndr);
9765                 NDR_PULL_SET_MEM_CTX(ndr, r->out.recordid, LIBNDR_FLAG_REF_ALLOC);
9766                 NDR_CHECK(ndr_pull_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->out.recordid));
9767                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_recordid_0, LIBNDR_FLAG_REF_ALLOC);
9768                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
9769         }
9770         return NDR_ERR_SUCCESS;
9771 }
9772
9773 _PUBLIC_ void ndr_print_netr_AccountSync(struct ndr_print *ndr, const char *name, int flags, const struct netr_AccountSync *r)
9774 {
9775         ndr_print_struct(ndr, name, "netr_AccountSync");
9776         ndr->depth++;
9777         if (flags & NDR_SET_VALUES) {
9778                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
9779         }
9780         if (flags & NDR_IN) {
9781                 ndr_print_struct(ndr, "in", "netr_AccountSync");
9782                 ndr->depth++;
9783                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
9784                 ndr->depth++;
9785                 if (r->in.logon_server) {
9786                         ndr_print_string(ndr, "logon_server", r->in.logon_server);
9787                 }
9788                 ndr->depth--;
9789                 ndr_print_string(ndr, "computername", r->in.computername);
9790                 ndr_print_netr_Authenticator(ndr, "credential", &r->in.credential);
9791                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
9792                 ndr->depth++;
9793                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
9794                 ndr->depth--;
9795                 ndr_print_uint32(ndr, "reference", r->in.reference);
9796                 ndr_print_uint32(ndr, "level", r->in.level);
9797                 ndr_print_uint32(ndr, "buffersize", r->in.buffersize);
9798                 ndr_print_ptr(ndr, "recordid", r->in.recordid);
9799                 ndr->depth++;
9800                 ndr_print_netr_UAS_INFO_0(ndr, "recordid", r->in.recordid);
9801                 ndr->depth--;
9802                 ndr->depth--;
9803         }
9804         if (flags & NDR_OUT) {
9805                 ndr_print_struct(ndr, "out", "netr_AccountSync");
9806                 ndr->depth++;
9807                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
9808                 ndr->depth++;
9809                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
9810                 ndr->depth--;
9811                 ndr_print_ptr(ndr, "buffer", r->out.buffer);
9812                 ndr->depth++;
9813                 ndr_print_netr_AccountBuffer(ndr, "buffer", r->out.buffer);
9814                 ndr->depth--;
9815                 ndr_print_ptr(ndr, "count_returned", r->out.count_returned);
9816                 ndr->depth++;
9817                 ndr_print_uint32(ndr, "count_returned", *r->out.count_returned);
9818                 ndr->depth--;
9819                 ndr_print_ptr(ndr, "total_entries", r->out.total_entries);
9820                 ndr->depth++;
9821                 ndr_print_uint32(ndr, "total_entries", *r->out.total_entries);
9822                 ndr->depth--;
9823                 ndr_print_ptr(ndr, "next_reference", r->out.next_reference);
9824                 ndr->depth++;
9825                 ndr_print_uint32(ndr, "next_reference", *r->out.next_reference);
9826                 ndr->depth--;
9827                 ndr_print_ptr(ndr, "recordid", r->out.recordid);
9828                 ndr->depth++;
9829                 ndr_print_netr_UAS_INFO_0(ndr, "recordid", r->out.recordid);
9830                 ndr->depth--;
9831                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
9832                 ndr->depth--;
9833         }
9834         ndr->depth--;
9835 }
9836
9837 static enum ndr_err_code ndr_push_netr_GetDcName(struct ndr_push *ndr, int flags, const struct netr_GetDcName *r)
9838 {
9839         if (flags & NDR_IN) {
9840                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
9841                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9842                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
9843                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
9844                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domainname));
9845                 if (r->in.domainname) {
9846                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domainname, CH_UTF16)));
9847                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9848                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domainname, CH_UTF16)));
9849                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.domainname, ndr_charset_length(r->in.domainname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
9850                 }
9851         }
9852         if (flags & NDR_OUT) {
9853                 if (r->out.dcname == NULL) {
9854                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9855                 }
9856                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.dcname));
9857                 if (*r->out.dcname) {
9858                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.dcname, CH_UTF16)));
9859                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9860                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.dcname, CH_UTF16)));
9861                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.dcname, ndr_charset_length(*r->out.dcname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
9862                 }
9863                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
9864         }
9865         return NDR_ERR_SUCCESS;
9866 }
9867
9868 static enum ndr_err_code ndr_pull_netr_GetDcName(struct ndr_pull *ndr, int flags, struct netr_GetDcName *r)
9869 {
9870         uint32_t _ptr_domainname;
9871         uint32_t _ptr_dcname;
9872         TALLOC_CTX *_mem_save_domainname_0;
9873         TALLOC_CTX *_mem_save_dcname_0;
9874         TALLOC_CTX *_mem_save_dcname_1;
9875         if (flags & NDR_IN) {
9876                 ZERO_STRUCT(r->out);
9877
9878                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
9879                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
9880                 if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
9881                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
9882                 }
9883                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
9884                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
9885                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domainname));
9886                 if (_ptr_domainname) {
9887                         NDR_PULL_ALLOC(ndr, r->in.domainname);
9888                 } else {
9889                         r->in.domainname = NULL;
9890                 }
9891                 if (r->in.domainname) {
9892                         _mem_save_domainname_0 = NDR_PULL_GET_MEM_CTX(ndr);
9893                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domainname, 0);
9894                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domainname));
9895                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domainname));
9896                         if (ndr_get_array_length(ndr, &r->in.domainname) > ndr_get_array_size(ndr, &r->in.domainname)) {
9897                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.domainname), ndr_get_array_length(ndr, &r->in.domainname));
9898                         }
9899                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domainname), sizeof(uint16_t)));
9900                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.domainname, ndr_get_array_length(ndr, &r->in.domainname), sizeof(uint16_t), CH_UTF16));
9901                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domainname_0, 0);
9902                 }
9903                 NDR_PULL_ALLOC(ndr, r->out.dcname);
9904                 ZERO_STRUCTP(r->out.dcname);
9905         }
9906         if (flags & NDR_OUT) {
9907                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9908                         NDR_PULL_ALLOC(ndr, r->out.dcname);
9909                 }
9910                 _mem_save_dcname_0 = NDR_PULL_GET_MEM_CTX(ndr);
9911                 NDR_PULL_SET_MEM_CTX(ndr, r->out.dcname, LIBNDR_FLAG_REF_ALLOC);
9912                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dcname));
9913                 if (_ptr_dcname) {
9914                         NDR_PULL_ALLOC(ndr, *r->out.dcname);
9915                 } else {
9916                         *r->out.dcname = NULL;
9917                 }
9918                 if (*r->out.dcname) {
9919                         _mem_save_dcname_1 = NDR_PULL_GET_MEM_CTX(ndr);
9920                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.dcname, 0);
9921                         NDR_CHECK(ndr_pull_array_size(ndr, r->out.dcname));
9922                         NDR_CHECK(ndr_pull_array_length(ndr, r->out.dcname));
9923                         if (ndr_get_array_length(ndr, r->out.dcname) > ndr_get_array_size(ndr, r->out.dcname)) {
9924                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.dcname), ndr_get_array_length(ndr, r->out.dcname));
9925                         }
9926                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.dcname), sizeof(uint16_t)));
9927                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.dcname, ndr_get_array_length(ndr, r->out.dcname), sizeof(uint16_t), CH_UTF16));
9928                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dcname_1, 0);
9929                 }
9930                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dcname_0, LIBNDR_FLAG_REF_ALLOC);
9931                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
9932         }
9933         return NDR_ERR_SUCCESS;
9934 }
9935
9936 _PUBLIC_ void ndr_print_netr_GetDcName(struct ndr_print *ndr, const char *name, int flags, const struct netr_GetDcName *r)
9937 {
9938         ndr_print_struct(ndr, name, "netr_GetDcName");
9939         ndr->depth++;
9940         if (flags & NDR_SET_VALUES) {
9941                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
9942         }
9943         if (flags & NDR_IN) {
9944                 ndr_print_struct(ndr, "in", "netr_GetDcName");
9945                 ndr->depth++;
9946                 ndr_print_string(ndr, "logon_server", r->in.logon_server);
9947                 ndr_print_ptr(ndr, "domainname", r->in.domainname);
9948                 ndr->depth++;
9949                 if (r->in.domainname) {
9950                         ndr_print_string(ndr, "domainname", r->in.domainname);
9951                 }
9952                 ndr->depth--;
9953                 ndr->depth--;
9954         }
9955         if (flags & NDR_OUT) {
9956                 ndr_print_struct(ndr, "out", "netr_GetDcName");
9957                 ndr->depth++;
9958                 ndr_print_ptr(ndr, "dcname", r->out.dcname);
9959                 ndr->depth++;
9960                 ndr_print_ptr(ndr, "dcname", *r->out.dcname);
9961                 ndr->depth++;
9962                 if (*r->out.dcname) {
9963                         ndr_print_string(ndr, "dcname", *r->out.dcname);
9964                 }
9965                 ndr->depth--;
9966                 ndr->depth--;
9967                 ndr_print_WERROR(ndr, "result", r->out.result);
9968                 ndr->depth--;
9969         }
9970         ndr->depth--;
9971 }
9972
9973 static enum ndr_err_code ndr_push_netr_LogonControl(struct ndr_push *ndr, int flags, const struct netr_LogonControl *r)
9974 {
9975         if (flags & NDR_IN) {
9976                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
9977                 if (r->in.logon_server) {
9978                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
9979                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9980                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
9981                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
9982                 }
9983                 NDR_CHECK(ndr_push_netr_LogonControlCode(ndr, NDR_SCALARS, r->in.function_code));
9984                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
9985         }
9986         if (flags & NDR_OUT) {
9987                 if (r->out.info == NULL) {
9988                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9989                 }
9990                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
9991                 NDR_CHECK(ndr_push_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
9992                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
9993         }
9994         return NDR_ERR_SUCCESS;
9995 }
9996
9997 static enum ndr_err_code ndr_pull_netr_LogonControl(struct ndr_pull *ndr, int flags, struct netr_LogonControl *r)
9998 {
9999         uint32_t _ptr_logon_server;
10000         TALLOC_CTX *_mem_save_logon_server_0;
10001         TALLOC_CTX *_mem_save_info_0;
10002         if (flags & NDR_IN) {
10003                 ZERO_STRUCT(r->out);
10004
10005                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
10006                 if (_ptr_logon_server) {
10007                         NDR_PULL_ALLOC(ndr, r->in.logon_server);
10008                 } else {
10009                         r->in.logon_server = NULL;
10010                 }
10011                 if (r->in.logon_server) {
10012                         _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
10013                         NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
10014                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
10015                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
10016                         if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
10017                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
10018                         }
10019                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
10020                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
10021                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
10022                 }
10023                 NDR_CHECK(ndr_pull_netr_LogonControlCode(ndr, NDR_SCALARS, &r->in.function_code));
10024                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
10025                 NDR_PULL_ALLOC(ndr, r->out.info);
10026                 ZERO_STRUCTP(r->out.info);
10027         }
10028         if (flags & NDR_OUT) {
10029                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10030                         NDR_PULL_ALLOC(ndr, r->out.info);
10031                 }
10032                 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
10033                 NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
10034                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
10035                 NDR_CHECK(ndr_pull_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
10036                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
10037                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
10038         }
10039         return NDR_ERR_SUCCESS;
10040 }
10041
10042 _PUBLIC_ void ndr_print_netr_LogonControl(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonControl *r)
10043 {
10044         ndr_print_struct(ndr, name, "netr_LogonControl");
10045         ndr->depth++;
10046         if (flags & NDR_SET_VALUES) {
10047                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
10048         }
10049         if (flags & NDR_IN) {
10050                 ndr_print_struct(ndr, "in", "netr_LogonControl");
10051                 ndr->depth++;
10052                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
10053                 ndr->depth++;
10054                 if (r->in.logon_server) {
10055                         ndr_print_string(ndr, "logon_server", r->in.logon_server);
10056                 }
10057                 ndr->depth--;
10058                 ndr_print_netr_LogonControlCode(ndr, "function_code", r->in.function_code);
10059                 ndr_print_uint32(ndr, "level", r->in.level);
10060                 ndr->depth--;
10061         }
10062         if (flags & NDR_OUT) {
10063                 ndr_print_struct(ndr, "out", "netr_LogonControl");
10064                 ndr->depth++;
10065                 ndr_print_ptr(ndr, "info", r->out.info);
10066                 ndr->depth++;
10067                 ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
10068                 ndr_print_netr_CONTROL_QUERY_INFORMATION(ndr, "info", r->out.info);
10069                 ndr->depth--;
10070                 ndr_print_WERROR(ndr, "result", r->out.result);
10071                 ndr->depth--;
10072         }
10073         ndr->depth--;
10074 }
10075
10076 static enum ndr_err_code ndr_push_netr_GetAnyDCName(struct ndr_push *ndr, int flags, const struct netr_GetAnyDCName *r)
10077 {
10078         if (flags & NDR_IN) {
10079                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
10080                 if (r->in.logon_server) {
10081                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10082                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10083                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10084                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
10085                 }
10086                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domainname));
10087                 if (r->in.domainname) {
10088                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domainname, CH_UTF16)));
10089                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10090                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domainname, CH_UTF16)));
10091                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.domainname, ndr_charset_length(r->in.domainname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
10092                 }
10093         }
10094         if (flags & NDR_OUT) {
10095                 if (r->out.dcname == NULL) {
10096                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10097                 }
10098                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.dcname));
10099                 if (*r->out.dcname) {
10100                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.dcname, CH_UTF16)));
10101                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10102                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.dcname, CH_UTF16)));
10103                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.dcname, ndr_charset_length(*r->out.dcname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
10104                 }
10105                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
10106         }
10107         return NDR_ERR_SUCCESS;
10108 }
10109
10110 static enum ndr_err_code ndr_pull_netr_GetAnyDCName(struct ndr_pull *ndr, int flags, struct netr_GetAnyDCName *r)
10111 {
10112         uint32_t _ptr_logon_server;
10113         uint32_t _ptr_domainname;
10114         uint32_t _ptr_dcname;
10115         TALLOC_CTX *_mem_save_logon_server_0;
10116         TALLOC_CTX *_mem_save_domainname_0;
10117         TALLOC_CTX *_mem_save_dcname_0;
10118         TALLOC_CTX *_mem_save_dcname_1;
10119         if (flags & NDR_IN) {
10120                 ZERO_STRUCT(r->out);
10121
10122                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
10123                 if (_ptr_logon_server) {
10124                         NDR_PULL_ALLOC(ndr, r->in.logon_server);
10125                 } else {
10126                         r->in.logon_server = NULL;
10127                 }
10128                 if (r->in.logon_server) {
10129                         _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
10130                         NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
10131                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
10132                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
10133                         if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
10134                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
10135                         }
10136                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
10137                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
10138                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
10139                 }
10140                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domainname));
10141                 if (_ptr_domainname) {
10142                         NDR_PULL_ALLOC(ndr, r->in.domainname);
10143                 } else {
10144                         r->in.domainname = NULL;
10145                 }
10146                 if (r->in.domainname) {
10147                         _mem_save_domainname_0 = NDR_PULL_GET_MEM_CTX(ndr);
10148                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domainname, 0);
10149                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domainname));
10150                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domainname));
10151                         if (ndr_get_array_length(ndr, &r->in.domainname) > ndr_get_array_size(ndr, &r->in.domainname)) {
10152                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.domainname), ndr_get_array_length(ndr, &r->in.domainname));
10153                         }
10154                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domainname), sizeof(uint16_t)));
10155                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.domainname, ndr_get_array_length(ndr, &r->in.domainname), sizeof(uint16_t), CH_UTF16));
10156                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domainname_0, 0);
10157                 }
10158                 NDR_PULL_ALLOC(ndr, r->out.dcname);
10159                 ZERO_STRUCTP(r->out.dcname);
10160         }
10161         if (flags & NDR_OUT) {
10162                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10163                         NDR_PULL_ALLOC(ndr, r->out.dcname);
10164                 }
10165                 _mem_save_dcname_0 = NDR_PULL_GET_MEM_CTX(ndr);
10166                 NDR_PULL_SET_MEM_CTX(ndr, r->out.dcname, LIBNDR_FLAG_REF_ALLOC);
10167                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dcname));
10168                 if (_ptr_dcname) {
10169                         NDR_PULL_ALLOC(ndr, *r->out.dcname);
10170                 } else {
10171                         *r->out.dcname = NULL;
10172                 }
10173                 if (*r->out.dcname) {
10174                         _mem_save_dcname_1 = NDR_PULL_GET_MEM_CTX(ndr);
10175                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.dcname, 0);
10176                         NDR_CHECK(ndr_pull_array_size(ndr, r->out.dcname));
10177                         NDR_CHECK(ndr_pull_array_length(ndr, r->out.dcname));
10178                         if (ndr_get_array_length(ndr, r->out.dcname) > ndr_get_array_size(ndr, r->out.dcname)) {
10179                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.dcname), ndr_get_array_length(ndr, r->out.dcname));
10180                         }
10181                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.dcname), sizeof(uint16_t)));
10182                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.dcname, ndr_get_array_length(ndr, r->out.dcname), sizeof(uint16_t), CH_UTF16));
10183                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dcname_1, 0);
10184                 }
10185                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dcname_0, LIBNDR_FLAG_REF_ALLOC);
10186                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
10187         }
10188         return NDR_ERR_SUCCESS;
10189 }
10190
10191 _PUBLIC_ void ndr_print_netr_GetAnyDCName(struct ndr_print *ndr, const char *name, int flags, const struct netr_GetAnyDCName *r)
10192 {
10193         ndr_print_struct(ndr, name, "netr_GetAnyDCName");
10194         ndr->depth++;
10195         if (flags & NDR_SET_VALUES) {
10196                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
10197         }
10198         if (flags & NDR_IN) {
10199                 ndr_print_struct(ndr, "in", "netr_GetAnyDCName");
10200                 ndr->depth++;
10201                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
10202                 ndr->depth++;
10203                 if (r->in.logon_server) {
10204                         ndr_print_string(ndr, "logon_server", r->in.logon_server);
10205                 }
10206                 ndr->depth--;
10207                 ndr_print_ptr(ndr, "domainname", r->in.domainname);
10208                 ndr->depth++;
10209                 if (r->in.domainname) {
10210                         ndr_print_string(ndr, "domainname", r->in.domainname);
10211                 }
10212                 ndr->depth--;
10213                 ndr->depth--;
10214         }
10215         if (flags & NDR_OUT) {
10216                 ndr_print_struct(ndr, "out", "netr_GetAnyDCName");
10217                 ndr->depth++;
10218                 ndr_print_ptr(ndr, "dcname", r->out.dcname);
10219                 ndr->depth++;
10220                 ndr_print_ptr(ndr, "dcname", *r->out.dcname);
10221                 ndr->depth++;
10222                 if (*r->out.dcname) {
10223                         ndr_print_string(ndr, "dcname", *r->out.dcname);
10224                 }
10225                 ndr->depth--;
10226                 ndr->depth--;
10227                 ndr_print_WERROR(ndr, "result", r->out.result);
10228                 ndr->depth--;
10229         }
10230         ndr->depth--;
10231 }
10232
10233 static enum ndr_err_code ndr_push_netr_LogonControl2(struct ndr_push *ndr, int flags, const struct netr_LogonControl2 *r)
10234 {
10235         if (flags & NDR_IN) {
10236                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
10237                 if (r->in.logon_server) {
10238                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10239                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10240                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10241                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
10242                 }
10243                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.function_code));
10244                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
10245                 if (r->in.data == NULL) {
10246                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10247                 }
10248                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.data, r->in.function_code));
10249                 NDR_CHECK(ndr_push_netr_CONTROL_DATA_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.data));
10250         }
10251         if (flags & NDR_OUT) {
10252                 if (r->out.query == NULL) {
10253                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10254                 }
10255                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.query, r->in.level));
10256                 NDR_CHECK(ndr_push_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
10257                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
10258         }
10259         return NDR_ERR_SUCCESS;
10260 }
10261
10262 static enum ndr_err_code ndr_pull_netr_LogonControl2(struct ndr_pull *ndr, int flags, struct netr_LogonControl2 *r)
10263 {
10264         uint32_t _ptr_logon_server;
10265         TALLOC_CTX *_mem_save_logon_server_0;
10266         TALLOC_CTX *_mem_save_data_0;
10267         TALLOC_CTX *_mem_save_query_0;
10268         if (flags & NDR_IN) {
10269                 ZERO_STRUCT(r->out);
10270
10271                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
10272                 if (_ptr_logon_server) {
10273                         NDR_PULL_ALLOC(ndr, r->in.logon_server);
10274                 } else {
10275                         r->in.logon_server = NULL;
10276                 }
10277                 if (r->in.logon_server) {
10278                         _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
10279                         NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
10280                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
10281                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
10282                         if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
10283                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
10284                         }
10285                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
10286                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
10287                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
10288                 }
10289                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.function_code));
10290                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
10291                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10292                         NDR_PULL_ALLOC(ndr, r->in.data);
10293                 }
10294                 _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
10295                 NDR_PULL_SET_MEM_CTX(ndr, r->in.data, LIBNDR_FLAG_REF_ALLOC);
10296                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.data, r->in.function_code));
10297                 NDR_CHECK(ndr_pull_netr_CONTROL_DATA_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.data));
10298                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, LIBNDR_FLAG_REF_ALLOC);
10299                 NDR_PULL_ALLOC(ndr, r->out.query);
10300                 ZERO_STRUCTP(r->out.query);
10301         }
10302         if (flags & NDR_OUT) {
10303                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10304                         NDR_PULL_ALLOC(ndr, r->out.query);
10305                 }
10306                 _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
10307                 NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC);
10308                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.query, r->in.level));
10309                 NDR_CHECK(ndr_pull_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
10310                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
10311                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
10312         }
10313         return NDR_ERR_SUCCESS;
10314 }
10315
10316 _PUBLIC_ void ndr_print_netr_LogonControl2(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonControl2 *r)
10317 {
10318         ndr_print_struct(ndr, name, "netr_LogonControl2");
10319         ndr->depth++;
10320         if (flags & NDR_SET_VALUES) {
10321                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
10322         }
10323         if (flags & NDR_IN) {
10324                 ndr_print_struct(ndr, "in", "netr_LogonControl2");
10325                 ndr->depth++;
10326                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
10327                 ndr->depth++;
10328                 if (r->in.logon_server) {
10329                         ndr_print_string(ndr, "logon_server", r->in.logon_server);
10330                 }
10331                 ndr->depth--;
10332                 ndr_print_uint32(ndr, "function_code", r->in.function_code);
10333                 ndr_print_uint32(ndr, "level", r->in.level);
10334                 ndr_print_ptr(ndr, "data", r->in.data);
10335                 ndr->depth++;
10336                 ndr_print_set_switch_value(ndr, r->in.data, r->in.function_code);
10337                 ndr_print_netr_CONTROL_DATA_INFORMATION(ndr, "data", r->in.data);
10338                 ndr->depth--;
10339                 ndr->depth--;
10340         }
10341         if (flags & NDR_OUT) {
10342                 ndr_print_struct(ndr, "out", "netr_LogonControl2");
10343                 ndr->depth++;
10344                 ndr_print_ptr(ndr, "query", r->out.query);
10345                 ndr->depth++;
10346                 ndr_print_set_switch_value(ndr, r->out.query, r->in.level);
10347                 ndr_print_netr_CONTROL_QUERY_INFORMATION(ndr, "query", r->out.query);
10348                 ndr->depth--;
10349                 ndr_print_WERROR(ndr, "result", r->out.result);
10350                 ndr->depth--;
10351         }
10352         ndr->depth--;
10353 }
10354
10355 static enum ndr_err_code ndr_push_netr_ServerAuthenticate2(struct ndr_push *ndr, int flags, const struct netr_ServerAuthenticate2 *r)
10356 {
10357         if (flags & NDR_IN) {
10358                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
10359                 if (r->in.server_name) {
10360                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
10361                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10362                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
10363                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
10364                 }
10365                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
10366                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10367                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
10368                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
10369                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
10370                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
10371                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10372                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
10373                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
10374                 if (r->in.credentials == NULL) {
10375                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10376                 }
10377                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
10378                 if (r->in.negotiate_flags == NULL) {
10379                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10380                 }
10381                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.negotiate_flags));
10382         }
10383         if (flags & NDR_OUT) {
10384                 if (r->out.return_credentials == NULL) {
10385                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10386                 }
10387                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
10388                 if (r->out.negotiate_flags == NULL) {
10389                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10390                 }
10391                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.negotiate_flags));
10392                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
10393         }
10394         return NDR_ERR_SUCCESS;
10395 }
10396
10397 static enum ndr_err_code ndr_pull_netr_ServerAuthenticate2(struct ndr_pull *ndr, int flags, struct netr_ServerAuthenticate2 *r)
10398 {
10399         uint32_t _ptr_server_name;
10400         TALLOC_CTX *_mem_save_server_name_0;
10401         TALLOC_CTX *_mem_save_credentials_0;
10402         TALLOC_CTX *_mem_save_return_credentials_0;
10403         TALLOC_CTX *_mem_save_negotiate_flags_0;
10404         if (flags & NDR_IN) {
10405                 ZERO_STRUCT(r->out);
10406
10407                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
10408                 if (_ptr_server_name) {
10409                         NDR_PULL_ALLOC(ndr, r->in.server_name);
10410                 } else {
10411                         r->in.server_name = NULL;
10412                 }
10413                 if (r->in.server_name) {
10414                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
10415                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
10416                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
10417                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
10418                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
10419                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
10420                         }
10421                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
10422                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
10423                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
10424                 }
10425                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
10426                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
10427                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
10428                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.account_name), ndr_get_array_length(ndr, &r->in.account_name));
10429                 }
10430                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
10431                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.account_name, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t), CH_UTF16));
10432                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
10433                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
10434                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
10435                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
10436                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
10437                 }
10438                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
10439                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
10440                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10441                         NDR_PULL_ALLOC(ndr, r->in.credentials);
10442                 }
10443                 _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
10444                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credentials, LIBNDR_FLAG_REF_ALLOC);
10445                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
10446                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
10447                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10448                         NDR_PULL_ALLOC(ndr, r->in.negotiate_flags);
10449                 }
10450                 _mem_save_negotiate_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
10451                 NDR_PULL_SET_MEM_CTX(ndr, r->in.negotiate_flags, LIBNDR_FLAG_REF_ALLOC);
10452                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.negotiate_flags));
10453                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_negotiate_flags_0, LIBNDR_FLAG_REF_ALLOC);
10454                 NDR_PULL_ALLOC(ndr, r->out.return_credentials);
10455                 ZERO_STRUCTP(r->out.return_credentials);
10456                 NDR_PULL_ALLOC(ndr, r->out.negotiate_flags);
10457                 *r->out.negotiate_flags = *r->in.negotiate_flags;
10458         }
10459         if (flags & NDR_OUT) {
10460                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10461                         NDR_PULL_ALLOC(ndr, r->out.return_credentials);
10462                 }
10463                 _mem_save_return_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
10464                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_credentials, LIBNDR_FLAG_REF_ALLOC);
10465                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
10466                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_credentials_0, LIBNDR_FLAG_REF_ALLOC);
10467                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10468                         NDR_PULL_ALLOC(ndr, r->out.negotiate_flags);
10469                 }
10470                 _mem_save_negotiate_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
10471                 NDR_PULL_SET_MEM_CTX(ndr, r->out.negotiate_flags, LIBNDR_FLAG_REF_ALLOC);
10472                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.negotiate_flags));
10473                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_negotiate_flags_0, LIBNDR_FLAG_REF_ALLOC);
10474                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
10475         }
10476         return NDR_ERR_SUCCESS;
10477 }
10478
10479 _PUBLIC_ void ndr_print_netr_ServerAuthenticate2(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerAuthenticate2 *r)
10480 {
10481         ndr_print_struct(ndr, name, "netr_ServerAuthenticate2");
10482         ndr->depth++;
10483         if (flags & NDR_SET_VALUES) {
10484                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
10485         }
10486         if (flags & NDR_IN) {
10487                 ndr_print_struct(ndr, "in", "netr_ServerAuthenticate2");
10488                 ndr->depth++;
10489                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
10490                 ndr->depth++;
10491                 if (r->in.server_name) {
10492                         ndr_print_string(ndr, "server_name", r->in.server_name);
10493                 }
10494                 ndr->depth--;
10495                 ndr_print_string(ndr, "account_name", r->in.account_name);
10496                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
10497                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
10498                 ndr_print_ptr(ndr, "credentials", r->in.credentials);
10499                 ndr->depth++;
10500                 ndr_print_netr_Credential(ndr, "credentials", r->in.credentials);
10501                 ndr->depth--;
10502                 ndr_print_ptr(ndr, "negotiate_flags", r->in.negotiate_flags);
10503                 ndr->depth++;
10504                 ndr_print_uint32(ndr, "negotiate_flags", *r->in.negotiate_flags);
10505                 ndr->depth--;
10506                 ndr->depth--;
10507         }
10508         if (flags & NDR_OUT) {
10509                 ndr_print_struct(ndr, "out", "netr_ServerAuthenticate2");
10510                 ndr->depth++;
10511                 ndr_print_ptr(ndr, "return_credentials", r->out.return_credentials);
10512                 ndr->depth++;
10513                 ndr_print_netr_Credential(ndr, "return_credentials", r->out.return_credentials);
10514                 ndr->depth--;
10515                 ndr_print_ptr(ndr, "negotiate_flags", r->out.negotiate_flags);
10516                 ndr->depth++;
10517                 ndr_print_uint32(ndr, "negotiate_flags", *r->out.negotiate_flags);
10518                 ndr->depth--;
10519                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
10520                 ndr->depth--;
10521         }
10522         ndr->depth--;
10523 }
10524
10525 static enum ndr_err_code ndr_push_netr_DatabaseSync2(struct ndr_push *ndr, int flags, const struct netr_DatabaseSync2 *r)
10526 {
10527         if (flags & NDR_IN) {
10528                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10529                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10530                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10531                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
10532                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
10533                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10534                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
10535                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
10536                 if (r->in.credential == NULL) {
10537                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10538                 }
10539                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
10540                 if (r->in.return_authenticator == NULL) {
10541                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10542                 }
10543                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
10544                 NDR_CHECK(ndr_push_netr_SamDatabaseID(ndr, NDR_SCALARS, r->in.database_id));
10545                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.restart_state));
10546                 if (r->in.sync_context == NULL) {
10547                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10548                 }
10549                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.sync_context));
10550                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.preferredmaximumlength));
10551         }
10552         if (flags & NDR_OUT) {
10553                 if (r->out.return_authenticator == NULL) {
10554                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10555                 }
10556                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10557                 if (r->out.sync_context == NULL) {
10558                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10559                 }
10560                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.sync_context));
10561                 if (r->out.delta_enum_array == NULL) {
10562                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10563                 }
10564                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.delta_enum_array));
10565                 if (*r->out.delta_enum_array) {
10566                         NDR_CHECK(ndr_push_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
10567                 }
10568                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
10569         }
10570         return NDR_ERR_SUCCESS;
10571 }
10572
10573 static enum ndr_err_code ndr_pull_netr_DatabaseSync2(struct ndr_pull *ndr, int flags, struct netr_DatabaseSync2 *r)
10574 {
10575         uint32_t _ptr_delta_enum_array;
10576         TALLOC_CTX *_mem_save_credential_0;
10577         TALLOC_CTX *_mem_save_return_authenticator_0;
10578         TALLOC_CTX *_mem_save_sync_context_0;
10579         TALLOC_CTX *_mem_save_delta_enum_array_0;
10580         TALLOC_CTX *_mem_save_delta_enum_array_1;
10581         if (flags & NDR_IN) {
10582                 ZERO_STRUCT(r->out);
10583
10584                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
10585                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
10586                 if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
10587                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
10588                 }
10589                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
10590                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
10591                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
10592                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
10593                 if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
10594                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computername), ndr_get_array_length(ndr, &r->in.computername));
10595                 }
10596                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
10597                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
10598                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10599                         NDR_PULL_ALLOC(ndr, r->in.credential);
10600                 }
10601                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
10602                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
10603                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
10604                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
10605                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10606                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
10607                 }
10608                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
10609                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
10610                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
10611                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
10612                 NDR_CHECK(ndr_pull_netr_SamDatabaseID(ndr, NDR_SCALARS, &r->in.database_id));
10613                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.restart_state));
10614                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10615                         NDR_PULL_ALLOC(ndr, r->in.sync_context);
10616                 }
10617                 _mem_save_sync_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
10618                 NDR_PULL_SET_MEM_CTX(ndr, r->in.sync_context, LIBNDR_FLAG_REF_ALLOC);
10619                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.sync_context));
10620                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sync_context_0, LIBNDR_FLAG_REF_ALLOC);
10621                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.preferredmaximumlength));
10622                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10623                 *r->out.return_authenticator = *r->in.return_authenticator;
10624                 NDR_PULL_ALLOC(ndr, r->out.sync_context);
10625                 *r->out.sync_context = *r->in.sync_context;
10626                 NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
10627                 ZERO_STRUCTP(r->out.delta_enum_array);
10628         }
10629         if (flags & NDR_OUT) {
10630                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10631                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10632                 }
10633                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
10634                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
10635                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10636                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
10637                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10638                         NDR_PULL_ALLOC(ndr, r->out.sync_context);
10639                 }
10640                 _mem_save_sync_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
10641                 NDR_PULL_SET_MEM_CTX(ndr, r->out.sync_context, LIBNDR_FLAG_REF_ALLOC);
10642                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.sync_context));
10643                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sync_context_0, LIBNDR_FLAG_REF_ALLOC);
10644                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10645                         NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
10646                 }
10647                 _mem_save_delta_enum_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
10648                 NDR_PULL_SET_MEM_CTX(ndr, r->out.delta_enum_array, LIBNDR_FLAG_REF_ALLOC);
10649                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delta_enum_array));
10650                 if (_ptr_delta_enum_array) {
10651                         NDR_PULL_ALLOC(ndr, *r->out.delta_enum_array);
10652                 } else {
10653                         *r->out.delta_enum_array = NULL;
10654                 }
10655                 if (*r->out.delta_enum_array) {
10656                         _mem_save_delta_enum_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
10657                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.delta_enum_array, 0);
10658                         NDR_CHECK(ndr_pull_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
10659                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_1, 0);
10660                 }
10661                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_0, LIBNDR_FLAG_REF_ALLOC);
10662                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
10663         }
10664         return NDR_ERR_SUCCESS;
10665 }
10666
10667 _PUBLIC_ void ndr_print_netr_DatabaseSync2(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseSync2 *r)
10668 {
10669         ndr_print_struct(ndr, name, "netr_DatabaseSync2");
10670         ndr->depth++;
10671         if (flags & NDR_SET_VALUES) {
10672                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
10673         }
10674         if (flags & NDR_IN) {
10675                 ndr_print_struct(ndr, "in", "netr_DatabaseSync2");
10676                 ndr->depth++;
10677                 ndr_print_string(ndr, "logon_server", r->in.logon_server);
10678                 ndr_print_string(ndr, "computername", r->in.computername);
10679                 ndr_print_ptr(ndr, "credential", r->in.credential);
10680                 ndr->depth++;
10681                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
10682                 ndr->depth--;
10683                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
10684                 ndr->depth++;
10685                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
10686                 ndr->depth--;
10687                 ndr_print_netr_SamDatabaseID(ndr, "database_id", r->in.database_id);
10688                 ndr_print_uint16(ndr, "restart_state", r->in.restart_state);
10689                 ndr_print_ptr(ndr, "sync_context", r->in.sync_context);
10690                 ndr->depth++;
10691                 ndr_print_uint32(ndr, "sync_context", *r->in.sync_context);
10692                 ndr->depth--;
10693                 ndr_print_uint32(ndr, "preferredmaximumlength", r->in.preferredmaximumlength);
10694                 ndr->depth--;
10695         }
10696         if (flags & NDR_OUT) {
10697                 ndr_print_struct(ndr, "out", "netr_DatabaseSync2");
10698                 ndr->depth++;
10699                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
10700                 ndr->depth++;
10701                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
10702                 ndr->depth--;
10703                 ndr_print_ptr(ndr, "sync_context", r->out.sync_context);
10704                 ndr->depth++;
10705                 ndr_print_uint32(ndr, "sync_context", *r->out.sync_context);
10706                 ndr->depth--;
10707                 ndr_print_ptr(ndr, "delta_enum_array", r->out.delta_enum_array);
10708                 ndr->depth++;
10709                 ndr_print_ptr(ndr, "delta_enum_array", *r->out.delta_enum_array);
10710                 ndr->depth++;
10711                 if (*r->out.delta_enum_array) {
10712                         ndr_print_netr_DELTA_ENUM_ARRAY(ndr, "delta_enum_array", *r->out.delta_enum_array);
10713                 }
10714                 ndr->depth--;
10715                 ndr->depth--;
10716                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
10717                 ndr->depth--;
10718         }
10719         ndr->depth--;
10720 }
10721
10722 static enum ndr_err_code ndr_push_netr_DatabaseRedo(struct ndr_push *ndr, int flags, const struct netr_DatabaseRedo *r)
10723 {
10724         if (flags & NDR_IN) {
10725                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10726                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10727                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10728                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
10729                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
10730                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10731                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
10732                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
10733                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
10734                 if (r->in.return_authenticator == NULL) {
10735                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10736                 }
10737                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
10738                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.change_log_entry));
10739                 if (r->in.change_log_entry) {
10740                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.change_log_entry_size));
10741                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.change_log_entry, r->in.change_log_entry_size));
10742                 }
10743                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.change_log_entry_size));
10744         }
10745         if (flags & NDR_OUT) {
10746                 if (r->out.return_authenticator == NULL) {
10747                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10748                 }
10749                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10750                 if (r->out.delta_enum_array == NULL) {
10751                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10752                 }
10753                 NDR_CHECK(ndr_push_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.delta_enum_array));
10754                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
10755         }
10756         return NDR_ERR_SUCCESS;
10757 }
10758
10759 static enum ndr_err_code ndr_pull_netr_DatabaseRedo(struct ndr_pull *ndr, int flags, struct netr_DatabaseRedo *r)
10760 {
10761         uint32_t _ptr_change_log_entry;
10762         TALLOC_CTX *_mem_save_return_authenticator_0;
10763         TALLOC_CTX *_mem_save_change_log_entry_0;
10764         TALLOC_CTX *_mem_save_delta_enum_array_0;
10765         if (flags & NDR_IN) {
10766                 ZERO_STRUCT(r->out);
10767
10768                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
10769                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
10770                 if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
10771                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
10772                 }
10773                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
10774                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
10775                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
10776                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
10777                 if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
10778                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computername), ndr_get_array_length(ndr, &r->in.computername));
10779                 }
10780                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
10781                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
10782                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
10783                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10784                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
10785                 }
10786                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
10787                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
10788                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
10789                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
10790                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_change_log_entry));
10791                 if (_ptr_change_log_entry) {
10792                         NDR_PULL_ALLOC(ndr, r->in.change_log_entry);
10793                 } else {
10794                         r->in.change_log_entry = NULL;
10795                 }
10796                 if (r->in.change_log_entry) {
10797                         _mem_save_change_log_entry_0 = NDR_PULL_GET_MEM_CTX(ndr);
10798                         NDR_PULL_SET_MEM_CTX(ndr, r->in.change_log_entry, 0);
10799                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.change_log_entry));
10800                         NDR_PULL_ALLOC_N(ndr, r->in.change_log_entry, ndr_get_array_size(ndr, &r->in.change_log_entry));
10801                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.change_log_entry, ndr_get_array_size(ndr, &r->in.change_log_entry)));
10802                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_change_log_entry_0, 0);
10803                 }
10804                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.change_log_entry_size));
10805                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10806                 *r->out.return_authenticator = *r->in.return_authenticator;
10807                 NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
10808                 ZERO_STRUCTP(r->out.delta_enum_array);
10809                 if (r->in.change_log_entry) {
10810                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.change_log_entry, r->in.change_log_entry_size));
10811                 }
10812         }
10813         if (flags & NDR_OUT) {
10814                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10815                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10816                 }
10817                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
10818                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
10819                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10820                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
10821                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10822                         NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
10823                 }
10824                 _mem_save_delta_enum_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
10825                 NDR_PULL_SET_MEM_CTX(ndr, r->out.delta_enum_array, LIBNDR_FLAG_REF_ALLOC);
10826                 NDR_CHECK(ndr_pull_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.delta_enum_array));
10827                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_0, LIBNDR_FLAG_REF_ALLOC);
10828                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
10829         }
10830         return NDR_ERR_SUCCESS;
10831 }
10832
10833 _PUBLIC_ void ndr_print_netr_DatabaseRedo(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseRedo *r)
10834 {
10835         ndr_print_struct(ndr, name, "netr_DatabaseRedo");
10836         ndr->depth++;
10837         if (flags & NDR_SET_VALUES) {
10838                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
10839         }
10840         if (flags & NDR_IN) {
10841                 ndr_print_struct(ndr, "in", "netr_DatabaseRedo");
10842                 ndr->depth++;
10843                 ndr_print_string(ndr, "logon_server", r->in.logon_server);
10844                 ndr_print_string(ndr, "computername", r->in.computername);
10845                 ndr_print_netr_Authenticator(ndr, "credential", &r->in.credential);
10846                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
10847                 ndr->depth++;
10848                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
10849                 ndr->depth--;
10850                 ndr_print_ptr(ndr, "change_log_entry", r->in.change_log_entry);
10851                 ndr->depth++;
10852                 if (r->in.change_log_entry) {
10853                         ndr_print_array_uint8(ndr, "change_log_entry", r->in.change_log_entry, r->in.change_log_entry_size);
10854                 }
10855                 ndr->depth--;
10856                 ndr_print_uint32(ndr, "change_log_entry_size", r->in.change_log_entry_size);
10857                 ndr->depth--;
10858         }
10859         if (flags & NDR_OUT) {
10860                 ndr_print_struct(ndr, "out", "netr_DatabaseRedo");
10861                 ndr->depth++;
10862                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
10863                 ndr->depth++;
10864                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
10865                 ndr->depth--;
10866                 ndr_print_ptr(ndr, "delta_enum_array", r->out.delta_enum_array);
10867                 ndr->depth++;
10868                 ndr_print_netr_DELTA_ENUM_ARRAY(ndr, "delta_enum_array", r->out.delta_enum_array);
10869                 ndr->depth--;
10870                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
10871                 ndr->depth--;
10872         }
10873         ndr->depth--;
10874 }
10875
10876 static enum ndr_err_code ndr_push_netr_LogonControl2Ex(struct ndr_push *ndr, int flags, const struct netr_LogonControl2Ex *r)
10877 {
10878         if (flags & NDR_IN) {
10879                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
10880                 if (r->in.logon_server) {
10881                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10882                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10883                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10884                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.logon_server, ndr_charset_length(r->in.logon_server, CH_UTF16), sizeof(uint16_t), CH_UTF16));
10885                 }
10886                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.function_code));
10887                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
10888                 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.data, r->in.function_code));
10889                 NDR_CHECK(ndr_push_netr_CONTROL_DATA_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.data));
10890         }
10891         if (flags & NDR_OUT) {
10892                 if (r->out.query == NULL) {
10893                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10894                 }
10895                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.query, r->in.level));
10896                 NDR_CHECK(ndr_push_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
10897                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
10898         }
10899         return NDR_ERR_SUCCESS;
10900 }
10901
10902 static enum ndr_err_code ndr_pull_netr_LogonControl2Ex(struct ndr_pull *ndr, int flags, struct netr_LogonControl2Ex *r)
10903 {
10904         uint32_t _ptr_logon_server;
10905         TALLOC_CTX *_mem_save_logon_server_0;
10906         TALLOC_CTX *_mem_save_query_0;
10907         if (flags & NDR_IN) {
10908                 ZERO_STRUCT(r->out);
10909
10910                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
10911                 if (_ptr_logon_server) {
10912                         NDR_PULL_ALLOC(ndr, r->in.logon_server);
10913                 } else {
10914                         r->in.logon_server = NULL;
10915                 }
10916                 if (r->in.logon_server) {
10917                         _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
10918                         NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
10919                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
10920                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
10921                         if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
10922                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
10923                         }
10924                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
10925                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.logon_server, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t), CH_UTF16));
10926                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
10927                 }
10928                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.function_code));
10929                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
10930                 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.data, r->in.function_code));
10931                 NDR_CHECK(ndr_pull_netr_CONTROL_DATA_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.data));
10932                 NDR_PULL_ALLOC(ndr, r->out.query);
10933                 ZERO_STRUCTP(r->out.query);
10934         }
10935         if (flags & NDR_OUT) {
10936                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10937                         NDR_PULL_ALLOC(ndr, r->out.query);
10938                 }
10939                 _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
10940                 NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC);
10941                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.query, r->in.level));
10942                 NDR_CHECK(ndr_pull_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
10943                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
10944                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
10945         }
10946         return NDR_ERR_SUCCESS;
10947 }
10948
10949 _PUBLIC_ void ndr_print_netr_LogonControl2Ex(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonControl2Ex *r)
10950 {
10951         ndr_print_struct(ndr, name, "netr_LogonControl2Ex");
10952         ndr->depth++;
10953         if (flags & NDR_SET_VALUES) {
10954                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
10955         }
10956         if (flags & NDR_IN) {
10957                 ndr_print_struct(ndr, "in", "netr_LogonControl2Ex");
10958                 ndr->depth++;
10959                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
10960                 ndr->depth++;
10961                 if (r->in.logon_server) {
10962                         ndr_print_string(ndr, "logon_server", r->in.logon_server);
10963                 }
10964                 ndr->depth--;
10965                 ndr_print_uint32(ndr, "function_code", r->in.function_code);
10966                 ndr_print_uint32(ndr, "level", r->in.level);
10967                 ndr_print_set_switch_value(ndr, &r->in.data, r->in.function_code);
10968                 ndr_print_netr_CONTROL_DATA_INFORMATION(ndr, "data", &r->in.data);
10969                 ndr->depth--;
10970         }
10971         if (flags & NDR_OUT) {
10972                 ndr_print_struct(ndr, "out", "netr_LogonControl2Ex");
10973                 ndr->depth++;
10974                 ndr_print_ptr(ndr, "query", r->out.query);
10975                 ndr->depth++;
10976                 ndr_print_set_switch_value(ndr, r->out.query, r->in.level);
10977                 ndr_print_netr_CONTROL_QUERY_INFORMATION(ndr, "query", r->out.query);
10978                 ndr->depth--;
10979                 ndr_print_WERROR(ndr, "result", r->out.result);
10980                 ndr->depth--;
10981         }
10982         ndr->depth--;
10983 }
10984
10985 static enum ndr_err_code ndr_push_netr_NetrEnumerateTrustedDomains(struct ndr_push *ndr, int flags, const struct netr_NetrEnumerateTrustedDomains *r)
10986 {
10987         if (flags & NDR_IN) {
10988                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
10989                 if (r->in.server_name) {
10990                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
10991                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10992                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
10993                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
10994                 }
10995         }
10996         if (flags & NDR_OUT) {
10997                 if (r->out.trusted_domains_blob == NULL) {
10998                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10999                 }
11000                 NDR_CHECK(ndr_push_netr_Blob(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trusted_domains_blob));
11001                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
11002         }
11003         return NDR_ERR_SUCCESS;
11004 }
11005
11006 static enum ndr_err_code ndr_pull_netr_NetrEnumerateTrustedDomains(struct ndr_pull *ndr, int flags, struct netr_NetrEnumerateTrustedDomains *r)
11007 {
11008         uint32_t _ptr_server_name;
11009         TALLOC_CTX *_mem_save_server_name_0;
11010         TALLOC_CTX *_mem_save_trusted_domains_blob_0;
11011         if (flags & NDR_IN) {
11012                 ZERO_STRUCT(r->out);
11013
11014                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
11015                 if (_ptr_server_name) {
11016                         NDR_PULL_ALLOC(ndr, r->in.server_name);
11017                 } else {
11018                         r->in.server_name = NULL;
11019                 }
11020                 if (r->in.server_name) {
11021                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
11022                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
11023                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
11024                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
11025                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
11026                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
11027                         }
11028                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
11029                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
11030                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
11031                 }
11032                 NDR_PULL_ALLOC(ndr, r->out.trusted_domains_blob);
11033                 ZERO_STRUCTP(r->out.trusted_domains_blob);
11034         }
11035         if (flags & NDR_OUT) {
11036                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11037                         NDR_PULL_ALLOC(ndr, r->out.trusted_domains_blob);
11038                 }
11039                 _mem_save_trusted_domains_blob_0 = NDR_PULL_GET_MEM_CTX(ndr);
11040                 NDR_PULL_SET_MEM_CTX(ndr, r->out.trusted_domains_blob, LIBNDR_FLAG_REF_ALLOC);
11041                 NDR_CHECK(ndr_pull_netr_Blob(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trusted_domains_blob));
11042                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusted_domains_blob_0, LIBNDR_FLAG_REF_ALLOC);
11043                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
11044         }
11045         return NDR_ERR_SUCCESS;
11046 }
11047
11048 _PUBLIC_ void ndr_print_netr_NetrEnumerateTrustedDomains(struct ndr_print *ndr, const char *name, int flags, const struct netr_NetrEnumerateTrustedDomains *r)
11049 {
11050         ndr_print_struct(ndr, name, "netr_NetrEnumerateTrustedDomains");
11051         ndr->depth++;
11052         if (flags & NDR_SET_VALUES) {
11053                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11054         }
11055         if (flags & NDR_IN) {
11056                 ndr_print_struct(ndr, "in", "netr_NetrEnumerateTrustedDomains");
11057                 ndr->depth++;
11058                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
11059                 ndr->depth++;
11060                 if (r->in.server_name) {
11061                         ndr_print_string(ndr, "server_name", r->in.server_name);
11062                 }
11063                 ndr->depth--;
11064                 ndr->depth--;
11065         }
11066         if (flags & NDR_OUT) {
11067                 ndr_print_struct(ndr, "out", "netr_NetrEnumerateTrustedDomains");
11068                 ndr->depth++;
11069                 ndr_print_ptr(ndr, "trusted_domains_blob", r->out.trusted_domains_blob);
11070                 ndr->depth++;
11071                 ndr_print_netr_Blob(ndr, "trusted_domains_blob", r->out.trusted_domains_blob);
11072                 ndr->depth--;
11073                 ndr_print_WERROR(ndr, "result", r->out.result);
11074                 ndr->depth--;
11075         }
11076         ndr->depth--;
11077 }
11078
11079 static enum ndr_err_code ndr_push_netr_DsRGetDCName(struct ndr_push *ndr, int flags, const struct netr_DsRGetDCName *r)
11080 {
11081         if (flags & NDR_IN) {
11082                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
11083                 if (r->in.server_unc) {
11084                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
11085                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11086                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
11087                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11088                 }
11089                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_name));
11090                 if (r->in.domain_name) {
11091                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
11092                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11093                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
11094                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.domain_name, ndr_charset_length(r->in.domain_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11095                 }
11096                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_guid));
11097                 if (r->in.domain_guid) {
11098                         NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.domain_guid));
11099                 }
11100                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.site_guid));
11101                 if (r->in.site_guid) {
11102                         NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.site_guid));
11103                 }
11104                 NDR_CHECK(ndr_push_netr_DsRGetDCName_flags(ndr, NDR_SCALARS, r->in.flags));
11105         }
11106         if (flags & NDR_OUT) {
11107                 if (r->out.info == NULL) {
11108                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11109                 }
11110                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.info));
11111                 if (*r->out.info) {
11112                         NDR_CHECK(ndr_push_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
11113                 }
11114                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
11115         }
11116         return NDR_ERR_SUCCESS;
11117 }
11118
11119 static enum ndr_err_code ndr_pull_netr_DsRGetDCName(struct ndr_pull *ndr, int flags, struct netr_DsRGetDCName *r)
11120 {
11121         uint32_t _ptr_server_unc;
11122         uint32_t _ptr_domain_name;
11123         uint32_t _ptr_domain_guid;
11124         uint32_t _ptr_site_guid;
11125         uint32_t _ptr_info;
11126         TALLOC_CTX *_mem_save_server_unc_0;
11127         TALLOC_CTX *_mem_save_domain_name_0;
11128         TALLOC_CTX *_mem_save_domain_guid_0;
11129         TALLOC_CTX *_mem_save_site_guid_0;
11130         TALLOC_CTX *_mem_save_info_0;
11131         TALLOC_CTX *_mem_save_info_1;
11132         if (flags & NDR_IN) {
11133                 ZERO_STRUCT(r->out);
11134
11135                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
11136                 if (_ptr_server_unc) {
11137                         NDR_PULL_ALLOC(ndr, r->in.server_unc);
11138                 } else {
11139                         r->in.server_unc = NULL;
11140                 }
11141                 if (r->in.server_unc) {
11142                         _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
11143                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
11144                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
11145                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
11146                         if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
11147                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
11148                         }
11149                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
11150                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
11151                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
11152                 }
11153                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
11154                 if (_ptr_domain_name) {
11155                         NDR_PULL_ALLOC(ndr, r->in.domain_name);
11156                 } else {
11157                         r->in.domain_name = NULL;
11158                 }
11159                 if (r->in.domain_name) {
11160                         _mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
11161                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_name, 0);
11162                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domain_name));
11163                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domain_name));
11164                         if (ndr_get_array_length(ndr, &r->in.domain_name) > ndr_get_array_size(ndr, &r->in.domain_name)) {
11165                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.domain_name), ndr_get_array_length(ndr, &r->in.domain_name));
11166                         }
11167                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t)));
11168                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.domain_name, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t), CH_UTF16));
11169                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
11170                 }
11171                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_guid));
11172                 if (_ptr_domain_guid) {
11173                         NDR_PULL_ALLOC(ndr, r->in.domain_guid);
11174                 } else {
11175                         r->in.domain_guid = NULL;
11176                 }
11177                 if (r->in.domain_guid) {
11178                         _mem_save_domain_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
11179                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_guid, 0);
11180                         NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.domain_guid));
11181                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_guid_0, 0);
11182                 }
11183                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_guid));
11184                 if (_ptr_site_guid) {
11185                         NDR_PULL_ALLOC(ndr, r->in.site_guid);
11186                 } else {
11187                         r->in.site_guid = NULL;
11188                 }
11189                 if (r->in.site_guid) {
11190                         _mem_save_site_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
11191                         NDR_PULL_SET_MEM_CTX(ndr, r->in.site_guid, 0);
11192                         NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.site_guid));
11193                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_guid_0, 0);
11194                 }
11195                 NDR_CHECK(ndr_pull_netr_DsRGetDCName_flags(ndr, NDR_SCALARS, &r->in.flags));
11196                 NDR_PULL_ALLOC(ndr, r->out.info);
11197                 ZERO_STRUCTP(r->out.info);
11198         }
11199         if (flags & NDR_OUT) {
11200                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11201                         NDR_PULL_ALLOC(ndr, r->out.info);
11202                 }
11203                 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
11204                 NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
11205                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
11206                 if (_ptr_info) {
11207                         NDR_PULL_ALLOC(ndr, *r->out.info);
11208                 } else {
11209                         *r->out.info = NULL;
11210                 }
11211                 if (*r->out.info) {
11212                         _mem_save_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
11213                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.info, 0);
11214                         NDR_CHECK(ndr_pull_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
11215                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_1, 0);
11216                 }
11217                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
11218                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
11219         }
11220         return NDR_ERR_SUCCESS;
11221 }
11222
11223 _PUBLIC_ void ndr_print_netr_DsRGetDCName(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetDCName *r)
11224 {
11225         ndr_print_struct(ndr, name, "netr_DsRGetDCName");
11226         ndr->depth++;
11227         if (flags & NDR_SET_VALUES) {
11228                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11229         }
11230         if (flags & NDR_IN) {
11231                 ndr_print_struct(ndr, "in", "netr_DsRGetDCName");
11232                 ndr->depth++;
11233                 ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
11234                 ndr->depth++;
11235                 if (r->in.server_unc) {
11236                         ndr_print_string(ndr, "server_unc", r->in.server_unc);
11237                 }
11238                 ndr->depth--;
11239                 ndr_print_ptr(ndr, "domain_name", r->in.domain_name);
11240                 ndr->depth++;
11241                 if (r->in.domain_name) {
11242                         ndr_print_string(ndr, "domain_name", r->in.domain_name);
11243                 }
11244                 ndr->depth--;
11245                 ndr_print_ptr(ndr, "domain_guid", r->in.domain_guid);
11246                 ndr->depth++;
11247                 if (r->in.domain_guid) {
11248                         ndr_print_GUID(ndr, "domain_guid", r->in.domain_guid);
11249                 }
11250                 ndr->depth--;
11251                 ndr_print_ptr(ndr, "site_guid", r->in.site_guid);
11252                 ndr->depth++;
11253                 if (r->in.site_guid) {
11254                         ndr_print_GUID(ndr, "site_guid", r->in.site_guid);
11255                 }
11256                 ndr->depth--;
11257                 ndr_print_netr_DsRGetDCName_flags(ndr, "flags", r->in.flags);
11258                 ndr->depth--;
11259         }
11260         if (flags & NDR_OUT) {
11261                 ndr_print_struct(ndr, "out", "netr_DsRGetDCName");
11262                 ndr->depth++;
11263                 ndr_print_ptr(ndr, "info", r->out.info);
11264                 ndr->depth++;
11265                 ndr_print_ptr(ndr, "info", *r->out.info);
11266                 ndr->depth++;
11267                 if (*r->out.info) {
11268                         ndr_print_netr_DsRGetDCNameInfo(ndr, "info", *r->out.info);
11269                 }
11270                 ndr->depth--;
11271                 ndr->depth--;
11272                 ndr_print_WERROR(ndr, "result", r->out.result);
11273                 ndr->depth--;
11274         }
11275         ndr->depth--;
11276 }
11277
11278 static enum ndr_err_code ndr_push_netr_NETRLOGONDUMMYROUTINE1(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONDUMMYROUTINE1 *r)
11279 {
11280         if (flags & NDR_IN) {
11281         }
11282         if (flags & NDR_OUT) {
11283                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
11284         }
11285         return NDR_ERR_SUCCESS;
11286 }
11287
11288 static enum ndr_err_code ndr_pull_netr_NETRLOGONDUMMYROUTINE1(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONDUMMYROUTINE1 *r)
11289 {
11290         if (flags & NDR_IN) {
11291         }
11292         if (flags & NDR_OUT) {
11293                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
11294         }
11295         return NDR_ERR_SUCCESS;
11296 }
11297
11298 _PUBLIC_ void ndr_print_netr_NETRLOGONDUMMYROUTINE1(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONDUMMYROUTINE1 *r)
11299 {
11300         ndr_print_struct(ndr, name, "netr_NETRLOGONDUMMYROUTINE1");
11301         ndr->depth++;
11302         if (flags & NDR_SET_VALUES) {
11303                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11304         }
11305         if (flags & NDR_IN) {
11306                 ndr_print_struct(ndr, "in", "netr_NETRLOGONDUMMYROUTINE1");
11307                 ndr->depth++;
11308                 ndr->depth--;
11309         }
11310         if (flags & NDR_OUT) {
11311                 ndr_print_struct(ndr, "out", "netr_NETRLOGONDUMMYROUTINE1");
11312                 ndr->depth++;
11313                 ndr_print_WERROR(ndr, "result", r->out.result);
11314                 ndr->depth--;
11315         }
11316         ndr->depth--;
11317 }
11318
11319 static enum ndr_err_code ndr_push_netr_NETRLOGONSETSERVICEBITS(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONSETSERVICEBITS *r)
11320 {
11321         if (flags & NDR_IN) {
11322         }
11323         if (flags & NDR_OUT) {
11324                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
11325         }
11326         return NDR_ERR_SUCCESS;
11327 }
11328
11329 static enum ndr_err_code ndr_pull_netr_NETRLOGONSETSERVICEBITS(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONSETSERVICEBITS *r)
11330 {
11331         if (flags & NDR_IN) {
11332         }
11333         if (flags & NDR_OUT) {
11334                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
11335         }
11336         return NDR_ERR_SUCCESS;
11337 }
11338
11339 _PUBLIC_ void ndr_print_netr_NETRLOGONSETSERVICEBITS(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONSETSERVICEBITS *r)
11340 {
11341         ndr_print_struct(ndr, name, "netr_NETRLOGONSETSERVICEBITS");
11342         ndr->depth++;
11343         if (flags & NDR_SET_VALUES) {
11344                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11345         }
11346         if (flags & NDR_IN) {
11347                 ndr_print_struct(ndr, "in", "netr_NETRLOGONSETSERVICEBITS");
11348                 ndr->depth++;
11349                 ndr->depth--;
11350         }
11351         if (flags & NDR_OUT) {
11352                 ndr_print_struct(ndr, "out", "netr_NETRLOGONSETSERVICEBITS");
11353                 ndr->depth++;
11354                 ndr_print_WERROR(ndr, "result", r->out.result);
11355                 ndr->depth--;
11356         }
11357         ndr->depth--;
11358 }
11359
11360 static enum ndr_err_code ndr_push_netr_LogonGetTrustRid(struct ndr_push *ndr, int flags, const struct netr_LogonGetTrustRid *r)
11361 {
11362         if (flags & NDR_IN) {
11363                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
11364                 if (r->in.server_name) {
11365                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
11366                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11367                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
11368                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11369                 }
11370                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_name));
11371                 if (r->in.domain_name) {
11372                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
11373                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11374                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
11375                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.domain_name, ndr_charset_length(r->in.domain_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11376                 }
11377         }
11378         if (flags & NDR_OUT) {
11379                 if (r->out.rid == NULL) {
11380                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11381                 }
11382                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.rid));
11383                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
11384         }
11385         return NDR_ERR_SUCCESS;
11386 }
11387
11388 static enum ndr_err_code ndr_pull_netr_LogonGetTrustRid(struct ndr_pull *ndr, int flags, struct netr_LogonGetTrustRid *r)
11389 {
11390         uint32_t _ptr_server_name;
11391         uint32_t _ptr_domain_name;
11392         TALLOC_CTX *_mem_save_server_name_0;
11393         TALLOC_CTX *_mem_save_domain_name_0;
11394         TALLOC_CTX *_mem_save_rid_0;
11395         if (flags & NDR_IN) {
11396                 ZERO_STRUCT(r->out);
11397
11398                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
11399                 if (_ptr_server_name) {
11400                         NDR_PULL_ALLOC(ndr, r->in.server_name);
11401                 } else {
11402                         r->in.server_name = NULL;
11403                 }
11404                 if (r->in.server_name) {
11405                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
11406                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
11407                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
11408                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
11409                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
11410                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
11411                         }
11412                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
11413                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
11414                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
11415                 }
11416                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
11417                 if (_ptr_domain_name) {
11418                         NDR_PULL_ALLOC(ndr, r->in.domain_name);
11419                 } else {
11420                         r->in.domain_name = NULL;
11421                 }
11422                 if (r->in.domain_name) {
11423                         _mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
11424                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_name, 0);
11425                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domain_name));
11426                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domain_name));
11427                         if (ndr_get_array_length(ndr, &r->in.domain_name) > ndr_get_array_size(ndr, &r->in.domain_name)) {
11428                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.domain_name), ndr_get_array_length(ndr, &r->in.domain_name));
11429                         }
11430                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t)));
11431                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.domain_name, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t), CH_UTF16));
11432                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
11433                 }
11434                 NDR_PULL_ALLOC(ndr, r->out.rid);
11435                 ZERO_STRUCTP(r->out.rid);
11436         }
11437         if (flags & NDR_OUT) {
11438                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11439                         NDR_PULL_ALLOC(ndr, r->out.rid);
11440                 }
11441                 _mem_save_rid_0 = NDR_PULL_GET_MEM_CTX(ndr);
11442                 NDR_PULL_SET_MEM_CTX(ndr, r->out.rid, LIBNDR_FLAG_REF_ALLOC);
11443                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.rid));
11444                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rid_0, LIBNDR_FLAG_REF_ALLOC);
11445                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
11446         }
11447         return NDR_ERR_SUCCESS;
11448 }
11449
11450 _PUBLIC_ void ndr_print_netr_LogonGetTrustRid(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonGetTrustRid *r)
11451 {
11452         ndr_print_struct(ndr, name, "netr_LogonGetTrustRid");
11453         ndr->depth++;
11454         if (flags & NDR_SET_VALUES) {
11455                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11456         }
11457         if (flags & NDR_IN) {
11458                 ndr_print_struct(ndr, "in", "netr_LogonGetTrustRid");
11459                 ndr->depth++;
11460                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
11461                 ndr->depth++;
11462                 if (r->in.server_name) {
11463                         ndr_print_string(ndr, "server_name", r->in.server_name);
11464                 }
11465                 ndr->depth--;
11466                 ndr_print_ptr(ndr, "domain_name", r->in.domain_name);
11467                 ndr->depth++;
11468                 if (r->in.domain_name) {
11469                         ndr_print_string(ndr, "domain_name", r->in.domain_name);
11470                 }
11471                 ndr->depth--;
11472                 ndr->depth--;
11473         }
11474         if (flags & NDR_OUT) {
11475                 ndr_print_struct(ndr, "out", "netr_LogonGetTrustRid");
11476                 ndr->depth++;
11477                 ndr_print_ptr(ndr, "rid", r->out.rid);
11478                 ndr->depth++;
11479                 ndr_print_uint32(ndr, "rid", *r->out.rid);
11480                 ndr->depth--;
11481                 ndr_print_WERROR(ndr, "result", r->out.result);
11482                 ndr->depth--;
11483         }
11484         ndr->depth--;
11485 }
11486
11487 static enum ndr_err_code ndr_push_netr_NETRLOGONCOMPUTESERVERDIGEST(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONCOMPUTESERVERDIGEST *r)
11488 {
11489         if (flags & NDR_IN) {
11490         }
11491         if (flags & NDR_OUT) {
11492                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
11493         }
11494         return NDR_ERR_SUCCESS;
11495 }
11496
11497 static enum ndr_err_code ndr_pull_netr_NETRLOGONCOMPUTESERVERDIGEST(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONCOMPUTESERVERDIGEST *r)
11498 {
11499         if (flags & NDR_IN) {
11500         }
11501         if (flags & NDR_OUT) {
11502                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
11503         }
11504         return NDR_ERR_SUCCESS;
11505 }
11506
11507 _PUBLIC_ void ndr_print_netr_NETRLOGONCOMPUTESERVERDIGEST(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONCOMPUTESERVERDIGEST *r)
11508 {
11509         ndr_print_struct(ndr, name, "netr_NETRLOGONCOMPUTESERVERDIGEST");
11510         ndr->depth++;
11511         if (flags & NDR_SET_VALUES) {
11512                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11513         }
11514         if (flags & NDR_IN) {
11515                 ndr_print_struct(ndr, "in", "netr_NETRLOGONCOMPUTESERVERDIGEST");
11516                 ndr->depth++;
11517                 ndr->depth--;
11518         }
11519         if (flags & NDR_OUT) {
11520                 ndr_print_struct(ndr, "out", "netr_NETRLOGONCOMPUTESERVERDIGEST");
11521                 ndr->depth++;
11522                 ndr_print_WERROR(ndr, "result", r->out.result);
11523                 ndr->depth--;
11524         }
11525         ndr->depth--;
11526 }
11527
11528 static enum ndr_err_code ndr_push_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONCOMPUTECLIENTDIGEST *r)
11529 {
11530         if (flags & NDR_IN) {
11531         }
11532         if (flags & NDR_OUT) {
11533                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
11534         }
11535         return NDR_ERR_SUCCESS;
11536 }
11537
11538 static enum ndr_err_code ndr_pull_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONCOMPUTECLIENTDIGEST *r)
11539 {
11540         if (flags & NDR_IN) {
11541         }
11542         if (flags & NDR_OUT) {
11543                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
11544         }
11545         return NDR_ERR_SUCCESS;
11546 }
11547
11548 _PUBLIC_ void ndr_print_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONCOMPUTECLIENTDIGEST *r)
11549 {
11550         ndr_print_struct(ndr, name, "netr_NETRLOGONCOMPUTECLIENTDIGEST");
11551         ndr->depth++;
11552         if (flags & NDR_SET_VALUES) {
11553                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11554         }
11555         if (flags & NDR_IN) {
11556                 ndr_print_struct(ndr, "in", "netr_NETRLOGONCOMPUTECLIENTDIGEST");
11557                 ndr->depth++;
11558                 ndr->depth--;
11559         }
11560         if (flags & NDR_OUT) {
11561                 ndr_print_struct(ndr, "out", "netr_NETRLOGONCOMPUTECLIENTDIGEST");
11562                 ndr->depth++;
11563                 ndr_print_WERROR(ndr, "result", r->out.result);
11564                 ndr->depth--;
11565         }
11566         ndr->depth--;
11567 }
11568
11569 static enum ndr_err_code ndr_push_netr_ServerAuthenticate3(struct ndr_push *ndr, int flags, const struct netr_ServerAuthenticate3 *r)
11570 {
11571         if (flags & NDR_IN) {
11572                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
11573                 if (r->in.server_name) {
11574                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
11575                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11576                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
11577                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11578                 }
11579                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
11580                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11581                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
11582                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11583                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
11584                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
11585                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11586                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
11587                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11588                 if (r->in.credentials == NULL) {
11589                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11590                 }
11591                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
11592                 if (r->in.negotiate_flags == NULL) {
11593                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11594                 }
11595                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.negotiate_flags));
11596         }
11597         if (flags & NDR_OUT) {
11598                 if (r->out.credentials == NULL) {
11599                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11600                 }
11601                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->out.credentials));
11602                 if (r->out.negotiate_flags == NULL) {
11603                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11604                 }
11605                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.negotiate_flags));
11606                 if (r->out.rid == NULL) {
11607                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11608                 }
11609                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.rid));
11610                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
11611         }
11612         return NDR_ERR_SUCCESS;
11613 }
11614
11615 static enum ndr_err_code ndr_pull_netr_ServerAuthenticate3(struct ndr_pull *ndr, int flags, struct netr_ServerAuthenticate3 *r)
11616 {
11617         uint32_t _ptr_server_name;
11618         TALLOC_CTX *_mem_save_server_name_0;
11619         TALLOC_CTX *_mem_save_credentials_0;
11620         TALLOC_CTX *_mem_save_negotiate_flags_0;
11621         TALLOC_CTX *_mem_save_rid_0;
11622         if (flags & NDR_IN) {
11623                 ZERO_STRUCT(r->out);
11624
11625                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
11626                 if (_ptr_server_name) {
11627                         NDR_PULL_ALLOC(ndr, r->in.server_name);
11628                 } else {
11629                         r->in.server_name = NULL;
11630                 }
11631                 if (r->in.server_name) {
11632                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
11633                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
11634                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
11635                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
11636                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
11637                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
11638                         }
11639                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
11640                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
11641                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
11642                 }
11643                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
11644                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
11645                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
11646                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.account_name), ndr_get_array_length(ndr, &r->in.account_name));
11647                 }
11648                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
11649                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.account_name, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t), CH_UTF16));
11650                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
11651                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
11652                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
11653                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
11654                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
11655                 }
11656                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
11657                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
11658                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11659                         NDR_PULL_ALLOC(ndr, r->in.credentials);
11660                 }
11661                 _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
11662                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credentials, LIBNDR_FLAG_REF_ALLOC);
11663                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
11664                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
11665                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11666                         NDR_PULL_ALLOC(ndr, r->in.negotiate_flags);
11667                 }
11668                 _mem_save_negotiate_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
11669                 NDR_PULL_SET_MEM_CTX(ndr, r->in.negotiate_flags, LIBNDR_FLAG_REF_ALLOC);
11670                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.negotiate_flags));
11671                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_negotiate_flags_0, LIBNDR_FLAG_REF_ALLOC);
11672                 NDR_PULL_ALLOC(ndr, r->out.credentials);
11673                 *r->out.credentials = *r->in.credentials;
11674                 NDR_PULL_ALLOC(ndr, r->out.negotiate_flags);
11675                 *r->out.negotiate_flags = *r->in.negotiate_flags;
11676                 NDR_PULL_ALLOC(ndr, r->out.rid);
11677                 ZERO_STRUCTP(r->out.rid);
11678         }
11679         if (flags & NDR_OUT) {
11680                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11681                         NDR_PULL_ALLOC(ndr, r->out.credentials);
11682                 }
11683                 _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
11684                 NDR_PULL_SET_MEM_CTX(ndr, r->out.credentials, LIBNDR_FLAG_REF_ALLOC);
11685                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->out.credentials));
11686                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
11687                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11688                         NDR_PULL_ALLOC(ndr, r->out.negotiate_flags);
11689                 }
11690                 _mem_save_negotiate_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
11691                 NDR_PULL_SET_MEM_CTX(ndr, r->out.negotiate_flags, LIBNDR_FLAG_REF_ALLOC);
11692                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.negotiate_flags));
11693                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_negotiate_flags_0, LIBNDR_FLAG_REF_ALLOC);
11694                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11695                         NDR_PULL_ALLOC(ndr, r->out.rid);
11696                 }
11697                 _mem_save_rid_0 = NDR_PULL_GET_MEM_CTX(ndr);
11698                 NDR_PULL_SET_MEM_CTX(ndr, r->out.rid, LIBNDR_FLAG_REF_ALLOC);
11699                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.rid));
11700                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rid_0, LIBNDR_FLAG_REF_ALLOC);
11701                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
11702         }
11703         return NDR_ERR_SUCCESS;
11704 }
11705
11706 _PUBLIC_ void ndr_print_netr_ServerAuthenticate3(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerAuthenticate3 *r)
11707 {
11708         ndr_print_struct(ndr, name, "netr_ServerAuthenticate3");
11709         ndr->depth++;
11710         if (flags & NDR_SET_VALUES) {
11711                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11712         }
11713         if (flags & NDR_IN) {
11714                 ndr_print_struct(ndr, "in", "netr_ServerAuthenticate3");
11715                 ndr->depth++;
11716                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
11717                 ndr->depth++;
11718                 if (r->in.server_name) {
11719                         ndr_print_string(ndr, "server_name", r->in.server_name);
11720                 }
11721                 ndr->depth--;
11722                 ndr_print_string(ndr, "account_name", r->in.account_name);
11723                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
11724                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
11725                 ndr_print_ptr(ndr, "credentials", r->in.credentials);
11726                 ndr->depth++;
11727                 ndr_print_netr_Credential(ndr, "credentials", r->in.credentials);
11728                 ndr->depth--;
11729                 ndr_print_ptr(ndr, "negotiate_flags", r->in.negotiate_flags);
11730                 ndr->depth++;
11731                 ndr_print_uint32(ndr, "negotiate_flags", *r->in.negotiate_flags);
11732                 ndr->depth--;
11733                 ndr->depth--;
11734         }
11735         if (flags & NDR_OUT) {
11736                 ndr_print_struct(ndr, "out", "netr_ServerAuthenticate3");
11737                 ndr->depth++;
11738                 ndr_print_ptr(ndr, "credentials", r->out.credentials);
11739                 ndr->depth++;
11740                 ndr_print_netr_Credential(ndr, "credentials", r->out.credentials);
11741                 ndr->depth--;
11742                 ndr_print_ptr(ndr, "negotiate_flags", r->out.negotiate_flags);
11743                 ndr->depth++;
11744                 ndr_print_uint32(ndr, "negotiate_flags", *r->out.negotiate_flags);
11745                 ndr->depth--;
11746                 ndr_print_ptr(ndr, "rid", r->out.rid);
11747                 ndr->depth++;
11748                 ndr_print_uint32(ndr, "rid", *r->out.rid);
11749                 ndr->depth--;
11750                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
11751                 ndr->depth--;
11752         }
11753         ndr->depth--;
11754 }
11755
11756 static enum ndr_err_code ndr_push_netr_DsRGetDCNameEx(struct ndr_push *ndr, int flags, const struct netr_DsRGetDCNameEx *r)
11757 {
11758         if (flags & NDR_IN) {
11759                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
11760                 if (r->in.server_unc) {
11761                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
11762                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11763                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
11764                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11765                 }
11766                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_name));
11767                 if (r->in.domain_name) {
11768                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
11769                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11770                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
11771                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.domain_name, ndr_charset_length(r->in.domain_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11772                 }
11773                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_guid));
11774                 if (r->in.domain_guid) {
11775                         NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.domain_guid));
11776                 }
11777                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.site_name));
11778                 if (r->in.site_name) {
11779                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.site_name, CH_UTF16)));
11780                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11781                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.site_name, CH_UTF16)));
11782                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.site_name, ndr_charset_length(r->in.site_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11783                 }
11784                 NDR_CHECK(ndr_push_netr_DsRGetDCName_flags(ndr, NDR_SCALARS, r->in.flags));
11785         }
11786         if (flags & NDR_OUT) {
11787                 if (r->out.info == NULL) {
11788                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11789                 }
11790                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.info));
11791                 if (*r->out.info) {
11792                         NDR_CHECK(ndr_push_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
11793                 }
11794                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
11795         }
11796         return NDR_ERR_SUCCESS;
11797 }
11798
11799 static enum ndr_err_code ndr_pull_netr_DsRGetDCNameEx(struct ndr_pull *ndr, int flags, struct netr_DsRGetDCNameEx *r)
11800 {
11801         uint32_t _ptr_server_unc;
11802         uint32_t _ptr_domain_name;
11803         uint32_t _ptr_domain_guid;
11804         uint32_t _ptr_site_name;
11805         uint32_t _ptr_info;
11806         TALLOC_CTX *_mem_save_server_unc_0;
11807         TALLOC_CTX *_mem_save_domain_name_0;
11808         TALLOC_CTX *_mem_save_domain_guid_0;
11809         TALLOC_CTX *_mem_save_site_name_0;
11810         TALLOC_CTX *_mem_save_info_0;
11811         TALLOC_CTX *_mem_save_info_1;
11812         if (flags & NDR_IN) {
11813                 ZERO_STRUCT(r->out);
11814
11815                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
11816                 if (_ptr_server_unc) {
11817                         NDR_PULL_ALLOC(ndr, r->in.server_unc);
11818                 } else {
11819                         r->in.server_unc = NULL;
11820                 }
11821                 if (r->in.server_unc) {
11822                         _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
11823                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
11824                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
11825                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
11826                         if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
11827                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
11828                         }
11829                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
11830                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
11831                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
11832                 }
11833                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
11834                 if (_ptr_domain_name) {
11835                         NDR_PULL_ALLOC(ndr, r->in.domain_name);
11836                 } else {
11837                         r->in.domain_name = NULL;
11838                 }
11839                 if (r->in.domain_name) {
11840                         _mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
11841                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_name, 0);
11842                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domain_name));
11843                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domain_name));
11844                         if (ndr_get_array_length(ndr, &r->in.domain_name) > ndr_get_array_size(ndr, &r->in.domain_name)) {
11845                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.domain_name), ndr_get_array_length(ndr, &r->in.domain_name));
11846                         }
11847                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t)));
11848                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.domain_name, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t), CH_UTF16));
11849                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
11850                 }
11851                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_guid));
11852                 if (_ptr_domain_guid) {
11853                         NDR_PULL_ALLOC(ndr, r->in.domain_guid);
11854                 } else {
11855                         r->in.domain_guid = NULL;
11856                 }
11857                 if (r->in.domain_guid) {
11858                         _mem_save_domain_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
11859                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_guid, 0);
11860                         NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.domain_guid));
11861                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_guid_0, 0);
11862                 }
11863                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_name));
11864                 if (_ptr_site_name) {
11865                         NDR_PULL_ALLOC(ndr, r->in.site_name);
11866                 } else {
11867                         r->in.site_name = NULL;
11868                 }
11869                 if (r->in.site_name) {
11870                         _mem_save_site_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
11871                         NDR_PULL_SET_MEM_CTX(ndr, r->in.site_name, 0);
11872                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.site_name));
11873                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.site_name));
11874                         if (ndr_get_array_length(ndr, &r->in.site_name) > ndr_get_array_size(ndr, &r->in.site_name)) {
11875                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.site_name), ndr_get_array_length(ndr, &r->in.site_name));
11876                         }
11877                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.site_name), sizeof(uint16_t)));
11878                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.site_name, ndr_get_array_length(ndr, &r->in.site_name), sizeof(uint16_t), CH_UTF16));
11879                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_name_0, 0);
11880                 }
11881                 NDR_CHECK(ndr_pull_netr_DsRGetDCName_flags(ndr, NDR_SCALARS, &r->in.flags));
11882                 NDR_PULL_ALLOC(ndr, r->out.info);
11883                 ZERO_STRUCTP(r->out.info);
11884         }
11885         if (flags & NDR_OUT) {
11886                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11887                         NDR_PULL_ALLOC(ndr, r->out.info);
11888                 }
11889                 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
11890                 NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
11891                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
11892                 if (_ptr_info) {
11893                         NDR_PULL_ALLOC(ndr, *r->out.info);
11894                 } else {
11895                         *r->out.info = NULL;
11896                 }
11897                 if (*r->out.info) {
11898                         _mem_save_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
11899                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.info, 0);
11900                         NDR_CHECK(ndr_pull_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
11901                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_1, 0);
11902                 }
11903                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
11904                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
11905         }
11906         return NDR_ERR_SUCCESS;
11907 }
11908
11909 _PUBLIC_ void ndr_print_netr_DsRGetDCNameEx(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetDCNameEx *r)
11910 {
11911         ndr_print_struct(ndr, name, "netr_DsRGetDCNameEx");
11912         ndr->depth++;
11913         if (flags & NDR_SET_VALUES) {
11914                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11915         }
11916         if (flags & NDR_IN) {
11917                 ndr_print_struct(ndr, "in", "netr_DsRGetDCNameEx");
11918                 ndr->depth++;
11919                 ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
11920                 ndr->depth++;
11921                 if (r->in.server_unc) {
11922                         ndr_print_string(ndr, "server_unc", r->in.server_unc);
11923                 }
11924                 ndr->depth--;
11925                 ndr_print_ptr(ndr, "domain_name", r->in.domain_name);
11926                 ndr->depth++;
11927                 if (r->in.domain_name) {
11928                         ndr_print_string(ndr, "domain_name", r->in.domain_name);
11929                 }
11930                 ndr->depth--;
11931                 ndr_print_ptr(ndr, "domain_guid", r->in.domain_guid);
11932                 ndr->depth++;
11933                 if (r->in.domain_guid) {
11934                         ndr_print_GUID(ndr, "domain_guid", r->in.domain_guid);
11935                 }
11936                 ndr->depth--;
11937                 ndr_print_ptr(ndr, "site_name", r->in.site_name);
11938                 ndr->depth++;
11939                 if (r->in.site_name) {
11940                         ndr_print_string(ndr, "site_name", r->in.site_name);
11941                 }
11942                 ndr->depth--;
11943                 ndr_print_netr_DsRGetDCName_flags(ndr, "flags", r->in.flags);
11944                 ndr->depth--;
11945         }
11946         if (flags & NDR_OUT) {
11947                 ndr_print_struct(ndr, "out", "netr_DsRGetDCNameEx");
11948                 ndr->depth++;
11949                 ndr_print_ptr(ndr, "info", r->out.info);
11950                 ndr->depth++;
11951                 ndr_print_ptr(ndr, "info", *r->out.info);
11952                 ndr->depth++;
11953                 if (*r->out.info) {
11954                         ndr_print_netr_DsRGetDCNameInfo(ndr, "info", *r->out.info);
11955                 }
11956                 ndr->depth--;
11957                 ndr->depth--;
11958                 ndr_print_WERROR(ndr, "result", r->out.result);
11959                 ndr->depth--;
11960         }
11961         ndr->depth--;
11962 }
11963
11964 static enum ndr_err_code ndr_push_netr_DsRGetSiteName(struct ndr_push *ndr, int flags, const struct netr_DsRGetSiteName *r)
11965 {
11966         if (flags & NDR_IN) {
11967                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
11968                 if (r->in.computer_name) {
11969                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
11970                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11971                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
11972                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11973                 }
11974         }
11975         if (flags & NDR_OUT) {
11976                 if (r->out.site == NULL) {
11977                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11978                 }
11979                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.site));
11980                 if (*r->out.site) {
11981                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.site, CH_UTF16)));
11982                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11983                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.site, CH_UTF16)));
11984                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.site, ndr_charset_length(*r->out.site, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11985                 }
11986                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
11987         }
11988         return NDR_ERR_SUCCESS;
11989 }
11990
11991 static enum ndr_err_code ndr_pull_netr_DsRGetSiteName(struct ndr_pull *ndr, int flags, struct netr_DsRGetSiteName *r)
11992 {
11993         uint32_t _ptr_computer_name;
11994         uint32_t _ptr_site;
11995         TALLOC_CTX *_mem_save_computer_name_0;
11996         TALLOC_CTX *_mem_save_site_0;
11997         TALLOC_CTX *_mem_save_site_1;
11998         if (flags & NDR_IN) {
11999                 ZERO_STRUCT(r->out);
12000
12001                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
12002                 if (_ptr_computer_name) {
12003                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
12004                 } else {
12005                         r->in.computer_name = NULL;
12006                 }
12007                 if (r->in.computer_name) {
12008                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
12009                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
12010                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
12011                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
12012                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
12013                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
12014                         }
12015                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
12016                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
12017                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
12018                 }
12019                 NDR_PULL_ALLOC(ndr, r->out.site);
12020                 ZERO_STRUCTP(r->out.site);
12021         }
12022         if (flags & NDR_OUT) {
12023                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12024                         NDR_PULL_ALLOC(ndr, r->out.site);
12025                 }
12026                 _mem_save_site_0 = NDR_PULL_GET_MEM_CTX(ndr);
12027                 NDR_PULL_SET_MEM_CTX(ndr, r->out.site, LIBNDR_FLAG_REF_ALLOC);
12028                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site));
12029                 if (_ptr_site) {
12030                         NDR_PULL_ALLOC(ndr, *r->out.site);
12031                 } else {
12032                         *r->out.site = NULL;
12033                 }
12034                 if (*r->out.site) {
12035                         _mem_save_site_1 = NDR_PULL_GET_MEM_CTX(ndr);
12036                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.site, 0);
12037                         NDR_CHECK(ndr_pull_array_size(ndr, r->out.site));
12038                         NDR_CHECK(ndr_pull_array_length(ndr, r->out.site));
12039                         if (ndr_get_array_length(ndr, r->out.site) > ndr_get_array_size(ndr, r->out.site)) {
12040                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.site), ndr_get_array_length(ndr, r->out.site));
12041                         }
12042                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.site), sizeof(uint16_t)));
12043                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.site, ndr_get_array_length(ndr, r->out.site), sizeof(uint16_t), CH_UTF16));
12044                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_1, 0);
12045                 }
12046                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_0, LIBNDR_FLAG_REF_ALLOC);
12047                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
12048         }
12049         return NDR_ERR_SUCCESS;
12050 }
12051
12052 _PUBLIC_ void ndr_print_netr_DsRGetSiteName(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetSiteName *r)
12053 {
12054         ndr_print_struct(ndr, name, "netr_DsRGetSiteName");
12055         ndr->depth++;
12056         if (flags & NDR_SET_VALUES) {
12057                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12058         }
12059         if (flags & NDR_IN) {
12060                 ndr_print_struct(ndr, "in", "netr_DsRGetSiteName");
12061                 ndr->depth++;
12062                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
12063                 ndr->depth++;
12064                 if (r->in.computer_name) {
12065                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
12066                 }
12067                 ndr->depth--;
12068                 ndr->depth--;
12069         }
12070         if (flags & NDR_OUT) {
12071                 ndr_print_struct(ndr, "out", "netr_DsRGetSiteName");
12072                 ndr->depth++;
12073                 ndr_print_ptr(ndr, "site", r->out.site);
12074                 ndr->depth++;
12075                 ndr_print_ptr(ndr, "site", *r->out.site);
12076                 ndr->depth++;
12077                 if (*r->out.site) {
12078                         ndr_print_string(ndr, "site", *r->out.site);
12079                 }
12080                 ndr->depth--;
12081                 ndr->depth--;
12082                 ndr_print_WERROR(ndr, "result", r->out.result);
12083                 ndr->depth--;
12084         }
12085         ndr->depth--;
12086 }
12087
12088 static enum ndr_err_code ndr_push_netr_LogonGetDomainInfo(struct ndr_push *ndr, int flags, const struct netr_LogonGetDomainInfo *r)
12089 {
12090         if (flags & NDR_IN) {
12091                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12092                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12093                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12094                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
12095                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
12096                 if (r->in.computer_name) {
12097                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
12098                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12099                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
12100                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
12101                 }
12102                 if (r->in.credential == NULL) {
12103                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12104                 }
12105                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
12106                 if (r->in.return_authenticator == NULL) {
12107                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12108                 }
12109                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
12110                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
12111                 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.query, r->in.level));
12112                 NDR_CHECK(ndr_push_netr_DomainQuery(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.query));
12113         }
12114         if (flags & NDR_OUT) {
12115                 if (r->out.return_authenticator == NULL) {
12116                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12117                 }
12118                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
12119                 if (r->out.info == NULL) {
12120                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12121                 }
12122                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
12123                 NDR_CHECK(ndr_push_netr_DomainInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
12124                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
12125         }
12126         return NDR_ERR_SUCCESS;
12127 }
12128
12129 static enum ndr_err_code ndr_pull_netr_LogonGetDomainInfo(struct ndr_pull *ndr, int flags, struct netr_LogonGetDomainInfo *r)
12130 {
12131         uint32_t _ptr_computer_name;
12132         TALLOC_CTX *_mem_save_computer_name_0;
12133         TALLOC_CTX *_mem_save_credential_0;
12134         TALLOC_CTX *_mem_save_return_authenticator_0;
12135         TALLOC_CTX *_mem_save_info_0;
12136         if (flags & NDR_IN) {
12137                 ZERO_STRUCT(r->out);
12138
12139                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
12140                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
12141                 if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
12142                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
12143                 }
12144                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
12145                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
12146                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
12147                 if (_ptr_computer_name) {
12148                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
12149                 } else {
12150                         r->in.computer_name = NULL;
12151                 }
12152                 if (r->in.computer_name) {
12153                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
12154                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
12155                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
12156                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
12157                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
12158                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
12159                         }
12160                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
12161                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
12162                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
12163                 }
12164                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12165                         NDR_PULL_ALLOC(ndr, r->in.credential);
12166                 }
12167                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
12168                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
12169                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
12170                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
12171                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12172                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
12173                 }
12174                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
12175                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
12176                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
12177                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
12178                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
12179                 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.query, r->in.level));
12180                 NDR_CHECK(ndr_pull_netr_DomainQuery(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.query));
12181                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
12182                 *r->out.return_authenticator = *r->in.return_authenticator;
12183                 NDR_PULL_ALLOC(ndr, r->out.info);
12184                 ZERO_STRUCTP(r->out.info);
12185         }
12186         if (flags & NDR_OUT) {
12187                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12188                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
12189                 }
12190                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
12191                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
12192                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
12193                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
12194                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12195                         NDR_PULL_ALLOC(ndr, r->out.info);
12196                 }
12197                 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
12198                 NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
12199                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
12200                 NDR_CHECK(ndr_pull_netr_DomainInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
12201                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
12202                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
12203         }
12204         return NDR_ERR_SUCCESS;
12205 }
12206
12207 _PUBLIC_ void ndr_print_netr_LogonGetDomainInfo(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonGetDomainInfo *r)
12208 {
12209         ndr_print_struct(ndr, name, "netr_LogonGetDomainInfo");
12210         ndr->depth++;
12211         if (flags & NDR_SET_VALUES) {
12212                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12213         }
12214         if (flags & NDR_IN) {
12215                 ndr_print_struct(ndr, "in", "netr_LogonGetDomainInfo");
12216                 ndr->depth++;
12217                 ndr_print_string(ndr, "server_name", r->in.server_name);
12218                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
12219                 ndr->depth++;
12220                 if (r->in.computer_name) {
12221                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
12222                 }
12223                 ndr->depth--;
12224                 ndr_print_ptr(ndr, "credential", r->in.credential);
12225                 ndr->depth++;
12226                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
12227                 ndr->depth--;
12228                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
12229                 ndr->depth++;
12230                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
12231                 ndr->depth--;
12232                 ndr_print_uint32(ndr, "level", r->in.level);
12233                 ndr_print_set_switch_value(ndr, &r->in.query, r->in.level);
12234                 ndr_print_netr_DomainQuery(ndr, "query", &r->in.query);
12235                 ndr->depth--;
12236         }
12237         if (flags & NDR_OUT) {
12238                 ndr_print_struct(ndr, "out", "netr_LogonGetDomainInfo");
12239                 ndr->depth++;
12240                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
12241                 ndr->depth++;
12242                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
12243                 ndr->depth--;
12244                 ndr_print_ptr(ndr, "info", r->out.info);
12245                 ndr->depth++;
12246                 ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
12247                 ndr_print_netr_DomainInfo(ndr, "info", r->out.info);
12248                 ndr->depth--;
12249                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
12250                 ndr->depth--;
12251         }
12252         ndr->depth--;
12253 }
12254
12255 static enum ndr_err_code ndr_push_netr_ServerPasswordSet2(struct ndr_push *ndr, int flags, const struct netr_ServerPasswordSet2 *r)
12256 {
12257         if (flags & NDR_IN) {
12258                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
12259                 if (r->in.server_name) {
12260                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12261                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12262                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12263                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
12264                 }
12265                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
12266                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12267                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
12268                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
12269                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
12270                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
12271                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12272                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
12273                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
12274                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
12275                 NDR_CHECK(ndr_push_netr_CryptPassword(ndr, NDR_SCALARS, &r->in.new_password));
12276         }
12277         if (flags & NDR_OUT) {
12278                 if (r->out.return_authenticator == NULL) {
12279                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12280                 }
12281                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
12282                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
12283         }
12284         return NDR_ERR_SUCCESS;
12285 }
12286
12287 static enum ndr_err_code ndr_pull_netr_ServerPasswordSet2(struct ndr_pull *ndr, int flags, struct netr_ServerPasswordSet2 *r)
12288 {
12289         uint32_t _ptr_server_name;
12290         TALLOC_CTX *_mem_save_server_name_0;
12291         TALLOC_CTX *_mem_save_return_authenticator_0;
12292         if (flags & NDR_IN) {
12293                 ZERO_STRUCT(r->out);
12294
12295                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
12296                 if (_ptr_server_name) {
12297                         NDR_PULL_ALLOC(ndr, r->in.server_name);
12298                 } else {
12299                         r->in.server_name = NULL;
12300                 }
12301                 if (r->in.server_name) {
12302                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
12303                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
12304                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
12305                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
12306                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
12307                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
12308                         }
12309                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
12310                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
12311                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
12312                 }
12313                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
12314                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
12315                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
12316                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.account_name), ndr_get_array_length(ndr, &r->in.account_name));
12317                 }
12318                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
12319                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.account_name, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t), CH_UTF16));
12320                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
12321                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
12322                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
12323                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
12324                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
12325                 }
12326                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
12327                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
12328                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
12329                 NDR_CHECK(ndr_pull_netr_CryptPassword(ndr, NDR_SCALARS, &r->in.new_password));
12330                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
12331                 ZERO_STRUCTP(r->out.return_authenticator);
12332         }
12333         if (flags & NDR_OUT) {
12334                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12335                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
12336                 }
12337                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
12338                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
12339                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
12340                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
12341                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
12342         }
12343         return NDR_ERR_SUCCESS;
12344 }
12345
12346 _PUBLIC_ void ndr_print_netr_ServerPasswordSet2(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerPasswordSet2 *r)
12347 {
12348         ndr_print_struct(ndr, name, "netr_ServerPasswordSet2");
12349         ndr->depth++;
12350         if (flags & NDR_SET_VALUES) {
12351                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12352         }
12353         if (flags & NDR_IN) {
12354                 ndr_print_struct(ndr, "in", "netr_ServerPasswordSet2");
12355                 ndr->depth++;
12356                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
12357                 ndr->depth++;
12358                 if (r->in.server_name) {
12359                         ndr_print_string(ndr, "server_name", r->in.server_name);
12360                 }
12361                 ndr->depth--;
12362                 ndr_print_string(ndr, "account_name", r->in.account_name);
12363                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
12364                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
12365                 ndr_print_netr_Authenticator(ndr, "credential", &r->in.credential);
12366                 ndr_print_netr_CryptPassword(ndr, "new_password", &r->in.new_password);
12367                 ndr->depth--;
12368         }
12369         if (flags & NDR_OUT) {
12370                 ndr_print_struct(ndr, "out", "netr_ServerPasswordSet2");
12371                 ndr->depth++;
12372                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
12373                 ndr->depth++;
12374                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
12375                 ndr->depth--;
12376                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
12377                 ndr->depth--;
12378         }
12379         ndr->depth--;
12380 }
12381
12382 static enum ndr_err_code ndr_push_netr_ServerPasswordGet(struct ndr_push *ndr, int flags, const struct netr_ServerPasswordGet *r)
12383 {
12384         if (flags & NDR_IN) {
12385                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
12386                 if (r->in.server_name) {
12387                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12388                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12389                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12390                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
12391                 }
12392                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
12393                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12394                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
12395                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
12396                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
12397                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
12398                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12399                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
12400                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
12401                 if (r->in.credential == NULL) {
12402                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12403                 }
12404                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
12405         }
12406         if (flags & NDR_OUT) {
12407                 if (r->out.return_authenticator == NULL) {
12408                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12409                 }
12410                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
12411                 if (r->out.password == NULL) {
12412                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12413                 }
12414                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.password));
12415                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
12416         }
12417         return NDR_ERR_SUCCESS;
12418 }
12419
12420 static enum ndr_err_code ndr_pull_netr_ServerPasswordGet(struct ndr_pull *ndr, int flags, struct netr_ServerPasswordGet *r)
12421 {
12422         uint32_t _ptr_server_name;
12423         TALLOC_CTX *_mem_save_server_name_0;
12424         TALLOC_CTX *_mem_save_credential_0;
12425         TALLOC_CTX *_mem_save_return_authenticator_0;
12426         TALLOC_CTX *_mem_save_password_0;
12427         if (flags & NDR_IN) {
12428                 ZERO_STRUCT(r->out);
12429
12430                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
12431                 if (_ptr_server_name) {
12432                         NDR_PULL_ALLOC(ndr, r->in.server_name);
12433                 } else {
12434                         r->in.server_name = NULL;
12435                 }
12436                 if (r->in.server_name) {
12437                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
12438                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
12439                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
12440                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
12441                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
12442                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
12443                         }
12444                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
12445                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
12446                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
12447                 }
12448                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
12449                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
12450                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
12451                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.account_name), ndr_get_array_length(ndr, &r->in.account_name));
12452                 }
12453                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
12454                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.account_name, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t), CH_UTF16));
12455                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
12456                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
12457                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
12458                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
12459                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
12460                 }
12461                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
12462                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
12463                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12464                         NDR_PULL_ALLOC(ndr, r->in.credential);
12465                 }
12466                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
12467                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
12468                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
12469                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
12470                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
12471                 ZERO_STRUCTP(r->out.return_authenticator);
12472                 NDR_PULL_ALLOC(ndr, r->out.password);
12473                 ZERO_STRUCTP(r->out.password);
12474         }
12475         if (flags & NDR_OUT) {
12476                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12477                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
12478                 }
12479                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
12480                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
12481                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
12482                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
12483                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12484                         NDR_PULL_ALLOC(ndr, r->out.password);
12485                 }
12486                 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
12487                 NDR_PULL_SET_MEM_CTX(ndr, r->out.password, LIBNDR_FLAG_REF_ALLOC);
12488                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.password));
12489                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, LIBNDR_FLAG_REF_ALLOC);
12490                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
12491         }
12492         return NDR_ERR_SUCCESS;
12493 }
12494
12495 _PUBLIC_ void ndr_print_netr_ServerPasswordGet(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerPasswordGet *r)
12496 {
12497         ndr_print_struct(ndr, name, "netr_ServerPasswordGet");
12498         ndr->depth++;
12499         if (flags & NDR_SET_VALUES) {
12500                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12501         }
12502         if (flags & NDR_IN) {
12503                 ndr_print_struct(ndr, "in", "netr_ServerPasswordGet");
12504                 ndr->depth++;
12505                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
12506                 ndr->depth++;
12507                 if (r->in.server_name) {
12508                         ndr_print_string(ndr, "server_name", r->in.server_name);
12509                 }
12510                 ndr->depth--;
12511                 ndr_print_string(ndr, "account_name", r->in.account_name);
12512                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
12513                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
12514                 ndr_print_ptr(ndr, "credential", r->in.credential);
12515                 ndr->depth++;
12516                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
12517                 ndr->depth--;
12518                 ndr->depth--;
12519         }
12520         if (flags & NDR_OUT) {
12521                 ndr_print_struct(ndr, "out", "netr_ServerPasswordGet");
12522                 ndr->depth++;
12523                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
12524                 ndr->depth++;
12525                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
12526                 ndr->depth--;
12527                 ndr_print_ptr(ndr, "password", r->out.password);
12528                 ndr->depth++;
12529                 ndr_print_samr_Password(ndr, "password", r->out.password);
12530                 ndr->depth--;
12531                 ndr_print_WERROR(ndr, "result", r->out.result);
12532                 ndr->depth--;
12533         }
12534         ndr->depth--;
12535 }
12536
12537 static enum ndr_err_code ndr_push_netr_NETRLOGONSENDTOSAM(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONSENDTOSAM *r)
12538 {
12539         if (flags & NDR_IN) {
12540         }
12541         if (flags & NDR_OUT) {
12542                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
12543         }
12544         return NDR_ERR_SUCCESS;
12545 }
12546
12547 static enum ndr_err_code ndr_pull_netr_NETRLOGONSENDTOSAM(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONSENDTOSAM *r)
12548 {
12549         if (flags & NDR_IN) {
12550         }
12551         if (flags & NDR_OUT) {
12552                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
12553         }
12554         return NDR_ERR_SUCCESS;
12555 }
12556
12557 _PUBLIC_ void ndr_print_netr_NETRLOGONSENDTOSAM(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONSENDTOSAM *r)
12558 {
12559         ndr_print_struct(ndr, name, "netr_NETRLOGONSENDTOSAM");
12560         ndr->depth++;
12561         if (flags & NDR_SET_VALUES) {
12562                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12563         }
12564         if (flags & NDR_IN) {
12565                 ndr_print_struct(ndr, "in", "netr_NETRLOGONSENDTOSAM");
12566                 ndr->depth++;
12567                 ndr->depth--;
12568         }
12569         if (flags & NDR_OUT) {
12570                 ndr_print_struct(ndr, "out", "netr_NETRLOGONSENDTOSAM");
12571                 ndr->depth++;
12572                 ndr_print_WERROR(ndr, "result", r->out.result);
12573                 ndr->depth--;
12574         }
12575         ndr->depth--;
12576 }
12577
12578 static enum ndr_err_code ndr_push_netr_DsRAddressToSitenamesW(struct ndr_push *ndr, int flags, const struct netr_DsRAddressToSitenamesW *r)
12579 {
12580         uint32_t cntr_addresses_1;
12581         if (flags & NDR_IN) {
12582                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
12583                 if (r->in.server_name) {
12584                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12585                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12586                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12587                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
12588                 }
12589                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
12590                 if (r->in.addresses == NULL) {
12591                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12592                 }
12593                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
12594                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
12595                         NDR_CHECK(ndr_push_netr_DsRAddress(ndr, NDR_SCALARS, &r->in.addresses[cntr_addresses_1]));
12596                 }
12597                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
12598                         NDR_CHECK(ndr_push_netr_DsRAddress(ndr, NDR_BUFFERS, &r->in.addresses[cntr_addresses_1]));
12599                 }
12600         }
12601         if (flags & NDR_OUT) {
12602                 if (r->out.ctr == NULL) {
12603                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12604                 }
12605                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.ctr));
12606                 if (*r->out.ctr) {
12607                         NDR_CHECK(ndr_push_netr_DsRAddressToSitenamesWCtr(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.ctr));
12608                 }
12609                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
12610         }
12611         return NDR_ERR_SUCCESS;
12612 }
12613
12614 static enum ndr_err_code ndr_pull_netr_DsRAddressToSitenamesW(struct ndr_pull *ndr, int flags, struct netr_DsRAddressToSitenamesW *r)
12615 {
12616         uint32_t _ptr_server_name;
12617         uint32_t cntr_addresses_1;
12618         uint32_t _ptr_ctr;
12619         TALLOC_CTX *_mem_save_server_name_0;
12620         TALLOC_CTX *_mem_save_addresses_1;
12621         TALLOC_CTX *_mem_save_ctr_0;
12622         TALLOC_CTX *_mem_save_ctr_1;
12623         if (flags & NDR_IN) {
12624                 ZERO_STRUCT(r->out);
12625
12626                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
12627                 if (_ptr_server_name) {
12628                         NDR_PULL_ALLOC(ndr, r->in.server_name);
12629                 } else {
12630                         r->in.server_name = NULL;
12631                 }
12632                 if (r->in.server_name) {
12633                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
12634                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
12635                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
12636                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
12637                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
12638                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
12639                         }
12640                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
12641                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
12642                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
12643                 }
12644                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.count));
12645                 if (r->in.count < 0 || r->in.count > 32000) {
12646                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
12647                 }
12648                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.addresses));
12649                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12650                         NDR_PULL_ALLOC_N(ndr, r->in.addresses, ndr_get_array_size(ndr, &r->in.addresses));
12651                 }
12652                 _mem_save_addresses_1 = NDR_PULL_GET_MEM_CTX(ndr);
12653                 NDR_PULL_SET_MEM_CTX(ndr, r->in.addresses, 0);
12654                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
12655                         NDR_CHECK(ndr_pull_netr_DsRAddress(ndr, NDR_SCALARS, &r->in.addresses[cntr_addresses_1]));
12656                 }
12657                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
12658                         NDR_CHECK(ndr_pull_netr_DsRAddress(ndr, NDR_BUFFERS, &r->in.addresses[cntr_addresses_1]));
12659                 }
12660                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_addresses_1, 0);
12661                 NDR_PULL_ALLOC(ndr, r->out.ctr);
12662                 ZERO_STRUCTP(r->out.ctr);
12663                 if (r->in.addresses) {
12664                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.addresses, r->in.count));
12665                 }
12666         }
12667         if (flags & NDR_OUT) {
12668                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12669                         NDR_PULL_ALLOC(ndr, r->out.ctr);
12670                 }
12671                 _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
12672                 NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
12673                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr));
12674                 if (_ptr_ctr) {
12675                         NDR_PULL_ALLOC(ndr, *r->out.ctr);
12676                 } else {
12677                         *r->out.ctr = NULL;
12678                 }
12679                 if (*r->out.ctr) {
12680                         _mem_save_ctr_1 = NDR_PULL_GET_MEM_CTX(ndr);
12681                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.ctr, 0);
12682                         NDR_CHECK(ndr_pull_netr_DsRAddressToSitenamesWCtr(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.ctr));
12683                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_1, 0);
12684                 }
12685                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
12686                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
12687         }
12688         return NDR_ERR_SUCCESS;
12689 }
12690
12691 _PUBLIC_ void ndr_print_netr_DsRAddressToSitenamesW(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRAddressToSitenamesW *r)
12692 {
12693         uint32_t cntr_addresses_1;
12694         ndr_print_struct(ndr, name, "netr_DsRAddressToSitenamesW");
12695         ndr->depth++;
12696         if (flags & NDR_SET_VALUES) {
12697                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12698         }
12699         if (flags & NDR_IN) {
12700                 ndr_print_struct(ndr, "in", "netr_DsRAddressToSitenamesW");
12701                 ndr->depth++;
12702                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
12703                 ndr->depth++;
12704                 if (r->in.server_name) {
12705                         ndr_print_string(ndr, "server_name", r->in.server_name);
12706                 }
12707                 ndr->depth--;
12708                 ndr_print_uint32(ndr, "count", r->in.count);
12709                 ndr_print_ptr(ndr, "addresses", r->in.addresses);
12710                 ndr->depth++;
12711                 ndr->print(ndr, "%s: ARRAY(%d)", "addresses", r->in.count);
12712                 ndr->depth++;
12713                 for (cntr_addresses_1=0;cntr_addresses_1<r->in.count;cntr_addresses_1++) {
12714                         char *idx_1=NULL;
12715                         asprintf(&idx_1, "[%d]", cntr_addresses_1);
12716                         if (idx_1) {
12717                                 ndr_print_netr_DsRAddress(ndr, "addresses", &r->in.addresses[cntr_addresses_1]);
12718                                 free(idx_1);
12719                         }
12720                 }
12721                 ndr->depth--;
12722                 ndr->depth--;
12723                 ndr->depth--;
12724         }
12725         if (flags & NDR_OUT) {
12726                 ndr_print_struct(ndr, "out", "netr_DsRAddressToSitenamesW");
12727                 ndr->depth++;
12728                 ndr_print_ptr(ndr, "ctr", r->out.ctr);
12729                 ndr->depth++;
12730                 ndr_print_ptr(ndr, "ctr", *r->out.ctr);
12731                 ndr->depth++;
12732                 if (*r->out.ctr) {
12733                         ndr_print_netr_DsRAddressToSitenamesWCtr(ndr, "ctr", *r->out.ctr);
12734                 }
12735                 ndr->depth--;
12736                 ndr->depth--;
12737                 ndr_print_WERROR(ndr, "result", r->out.result);
12738                 ndr->depth--;
12739         }
12740         ndr->depth--;
12741 }
12742
12743 static enum ndr_err_code ndr_push_netr_DsRGetDCNameEx2(struct ndr_push *ndr, int flags, const struct netr_DsRGetDCNameEx2 *r)
12744 {
12745         if (flags & NDR_IN) {
12746                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
12747                 if (r->in.server_unc) {
12748                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
12749                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12750                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
12751                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
12752                 }
12753                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.client_account));
12754                 if (r->in.client_account) {
12755                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.client_account, CH_UTF16)));
12756                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12757                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.client_account, CH_UTF16)));
12758                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.client_account, ndr_charset_length(r->in.client_account, CH_UTF16), sizeof(uint16_t), CH_UTF16));
12759                 }
12760                 NDR_CHECK(ndr_push_samr_AcctFlags(ndr, NDR_SCALARS, r->in.mask));
12761                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_name));
12762                 if (r->in.domain_name) {
12763                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
12764                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12765                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
12766                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.domain_name, ndr_charset_length(r->in.domain_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
12767                 }
12768                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_guid));
12769                 if (r->in.domain_guid) {
12770                         NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.domain_guid));
12771                 }
12772                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.site_name));
12773                 if (r->in.site_name) {
12774                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.site_name, CH_UTF16)));
12775                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12776                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.site_name, CH_UTF16)));
12777                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.site_name, ndr_charset_length(r->in.site_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
12778                 }
12779                 NDR_CHECK(ndr_push_netr_DsRGetDCName_flags(ndr, NDR_SCALARS, r->in.flags));
12780         }
12781         if (flags & NDR_OUT) {
12782                 if (r->out.info == NULL) {
12783                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12784                 }
12785                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.info));
12786                 if (*r->out.info) {
12787                         NDR_CHECK(ndr_push_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
12788                 }
12789                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
12790         }
12791         return NDR_ERR_SUCCESS;
12792 }
12793
12794 static enum ndr_err_code ndr_pull_netr_DsRGetDCNameEx2(struct ndr_pull *ndr, int flags, struct netr_DsRGetDCNameEx2 *r)
12795 {
12796         uint32_t _ptr_server_unc;
12797         uint32_t _ptr_client_account;
12798         uint32_t _ptr_domain_name;
12799         uint32_t _ptr_domain_guid;
12800         uint32_t _ptr_site_name;
12801         uint32_t _ptr_info;
12802         TALLOC_CTX *_mem_save_server_unc_0;
12803         TALLOC_CTX *_mem_save_client_account_0;
12804         TALLOC_CTX *_mem_save_domain_name_0;
12805         TALLOC_CTX *_mem_save_domain_guid_0;
12806         TALLOC_CTX *_mem_save_site_name_0;
12807         TALLOC_CTX *_mem_save_info_0;
12808         TALLOC_CTX *_mem_save_info_1;
12809         if (flags & NDR_IN) {
12810                 ZERO_STRUCT(r->out);
12811
12812                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
12813                 if (_ptr_server_unc) {
12814                         NDR_PULL_ALLOC(ndr, r->in.server_unc);
12815                 } else {
12816                         r->in.server_unc = NULL;
12817                 }
12818                 if (r->in.server_unc) {
12819                         _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
12820                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
12821                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
12822                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
12823                         if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
12824                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_unc), ndr_get_array_length(ndr, &r->in.server_unc));
12825                         }
12826                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
12827                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16));
12828                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
12829                 }
12830                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client_account));
12831                 if (_ptr_client_account) {
12832                         NDR_PULL_ALLOC(ndr, r->in.client_account);
12833                 } else {
12834                         r->in.client_account = NULL;
12835                 }
12836                 if (r->in.client_account) {
12837                         _mem_save_client_account_0 = NDR_PULL_GET_MEM_CTX(ndr);
12838                         NDR_PULL_SET_MEM_CTX(ndr, r->in.client_account, 0);
12839                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.client_account));
12840                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.client_account));
12841                         if (ndr_get_array_length(ndr, &r->in.client_account) > ndr_get_array_size(ndr, &r->in.client_account)) {
12842                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.client_account), ndr_get_array_length(ndr, &r->in.client_account));
12843                         }
12844                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.client_account), sizeof(uint16_t)));
12845                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.client_account, ndr_get_array_length(ndr, &r->in.client_account), sizeof(uint16_t), CH_UTF16));
12846                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_account_0, 0);
12847                 }
12848                 NDR_CHECK(ndr_pull_samr_AcctFlags(ndr, NDR_SCALARS, &r->in.mask));
12849                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
12850                 if (_ptr_domain_name) {
12851                         NDR_PULL_ALLOC(ndr, r->in.domain_name);
12852                 } else {
12853                         r->in.domain_name = NULL;
12854                 }
12855                 if (r->in.domain_name) {
12856                         _mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
12857                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_name, 0);
12858                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domain_name));
12859                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domain_name));
12860                         if (ndr_get_array_length(ndr, &r->in.domain_name) > ndr_get_array_size(ndr, &r->in.domain_name)) {
12861                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.domain_name), ndr_get_array_length(ndr, &r->in.domain_name));
12862                         }
12863                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t)));
12864                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.domain_name, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t), CH_UTF16));
12865                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
12866                 }
12867                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_guid));
12868                 if (_ptr_domain_guid) {
12869                         NDR_PULL_ALLOC(ndr, r->in.domain_guid);
12870                 } else {
12871                         r->in.domain_guid = NULL;
12872                 }
12873                 if (r->in.domain_guid) {
12874                         _mem_save_domain_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
12875                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_guid, 0);
12876                         NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.domain_guid));
12877                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_guid_0, 0);
12878                 }
12879                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_name));
12880                 if (_ptr_site_name) {
12881                         NDR_PULL_ALLOC(ndr, r->in.site_name);
12882                 } else {
12883                         r->in.site_name = NULL;
12884                 }
12885                 if (r->in.site_name) {
12886                         _mem_save_site_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
12887                         NDR_PULL_SET_MEM_CTX(ndr, r->in.site_name, 0);
12888                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.site_name));
12889                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.site_name));
12890                         if (ndr_get_array_length(ndr, &r->in.site_name) > ndr_get_array_size(ndr, &r->in.site_name)) {
12891                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.site_name), ndr_get_array_length(ndr, &r->in.site_name));
12892                         }
12893                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.site_name), sizeof(uint16_t)));
12894                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.site_name, ndr_get_array_length(ndr, &r->in.site_name), sizeof(uint16_t), CH_UTF16));
12895                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_name_0, 0);
12896                 }
12897                 NDR_CHECK(ndr_pull_netr_DsRGetDCName_flags(ndr, NDR_SCALARS, &r->in.flags));
12898                 NDR_PULL_ALLOC(ndr, r->out.info);
12899                 ZERO_STRUCTP(r->out.info);
12900         }
12901         if (flags & NDR_OUT) {
12902                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12903                         NDR_PULL_ALLOC(ndr, r->out.info);
12904                 }
12905                 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
12906                 NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
12907                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
12908                 if (_ptr_info) {
12909                         NDR_PULL_ALLOC(ndr, *r->out.info);
12910                 } else {
12911                         *r->out.info = NULL;
12912                 }
12913                 if (*r->out.info) {
12914                         _mem_save_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
12915                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.info, 0);
12916                         NDR_CHECK(ndr_pull_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
12917                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_1, 0);
12918                 }
12919                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
12920                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
12921         }
12922         return NDR_ERR_SUCCESS;
12923 }
12924
12925 _PUBLIC_ void ndr_print_netr_DsRGetDCNameEx2(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetDCNameEx2 *r)
12926 {
12927         ndr_print_struct(ndr, name, "netr_DsRGetDCNameEx2");
12928         ndr->depth++;
12929         if (flags & NDR_SET_VALUES) {
12930                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12931         }
12932         if (flags & NDR_IN) {
12933                 ndr_print_struct(ndr, "in", "netr_DsRGetDCNameEx2");
12934                 ndr->depth++;
12935                 ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
12936                 ndr->depth++;
12937                 if (r->in.server_unc) {
12938                         ndr_print_string(ndr, "server_unc", r->in.server_unc);
12939                 }
12940                 ndr->depth--;
12941                 ndr_print_ptr(ndr, "client_account", r->in.client_account);
12942                 ndr->depth++;
12943                 if (r->in.client_account) {
12944                         ndr_print_string(ndr, "client_account", r->in.client_account);
12945                 }
12946                 ndr->depth--;
12947                 ndr_print_samr_AcctFlags(ndr, "mask", r->in.mask);
12948                 ndr_print_ptr(ndr, "domain_name", r->in.domain_name);
12949                 ndr->depth++;
12950                 if (r->in.domain_name) {
12951                         ndr_print_string(ndr, "domain_name", r->in.domain_name);
12952                 }
12953                 ndr->depth--;
12954                 ndr_print_ptr(ndr, "domain_guid", r->in.domain_guid);
12955                 ndr->depth++;
12956                 if (r->in.domain_guid) {
12957                         ndr_print_GUID(ndr, "domain_guid", r->in.domain_guid);
12958                 }
12959                 ndr->depth--;
12960                 ndr_print_ptr(ndr, "site_name", r->in.site_name);
12961                 ndr->depth++;
12962                 if (r->in.site_name) {
12963                         ndr_print_string(ndr, "site_name", r->in.site_name);
12964                 }
12965                 ndr->depth--;
12966                 ndr_print_netr_DsRGetDCName_flags(ndr, "flags", r->in.flags);
12967                 ndr->depth--;
12968         }
12969         if (flags & NDR_OUT) {
12970                 ndr_print_struct(ndr, "out", "netr_DsRGetDCNameEx2");
12971                 ndr->depth++;
12972                 ndr_print_ptr(ndr, "info", r->out.info);
12973                 ndr->depth++;
12974                 ndr_print_ptr(ndr, "info", *r->out.info);
12975                 ndr->depth++;
12976                 if (*r->out.info) {
12977                         ndr_print_netr_DsRGetDCNameInfo(ndr, "info", *r->out.info);
12978                 }
12979                 ndr->depth--;
12980                 ndr->depth--;
12981                 ndr_print_WERROR(ndr, "result", r->out.result);
12982                 ndr->depth--;
12983         }
12984         ndr->depth--;
12985 }
12986
12987 static enum ndr_err_code ndr_push_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN *r)
12988 {
12989         if (flags & NDR_IN) {
12990         }
12991         if (flags & NDR_OUT) {
12992                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
12993         }
12994         return NDR_ERR_SUCCESS;
12995 }
12996
12997 static enum ndr_err_code ndr_pull_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN *r)
12998 {
12999         if (flags & NDR_IN) {
13000         }
13001         if (flags & NDR_OUT) {
13002                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
13003         }
13004         return NDR_ERR_SUCCESS;
13005 }
13006
13007 _PUBLIC_ void ndr_print_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN *r)
13008 {
13009         ndr_print_struct(ndr, name, "netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN");
13010         ndr->depth++;
13011         if (flags & NDR_SET_VALUES) {
13012                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13013         }
13014         if (flags & NDR_IN) {
13015                 ndr_print_struct(ndr, "in", "netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN");
13016                 ndr->depth++;
13017                 ndr->depth--;
13018         }
13019         if (flags & NDR_OUT) {
13020                 ndr_print_struct(ndr, "out", "netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN");
13021                 ndr->depth++;
13022                 ndr_print_WERROR(ndr, "result", r->out.result);
13023                 ndr->depth--;
13024         }
13025         ndr->depth--;
13026 }
13027
13028 static enum ndr_err_code ndr_push_netr_NetrEnumerateTrustedDomainsEx(struct ndr_push *ndr, int flags, const struct netr_NetrEnumerateTrustedDomainsEx *r)
13029 {
13030         if (flags & NDR_IN) {
13031                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
13032                 if (r->in.server_name) {
13033                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13034                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13035                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13036                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
13037                 }
13038         }
13039         if (flags & NDR_OUT) {
13040                 if (r->out.dom_trust_list == NULL) {
13041                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13042                 }
13043                 NDR_CHECK(ndr_push_netr_DomainTrustList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.dom_trust_list));
13044                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
13045         }
13046         return NDR_ERR_SUCCESS;
13047 }
13048
13049 static enum ndr_err_code ndr_pull_netr_NetrEnumerateTrustedDomainsEx(struct ndr_pull *ndr, int flags, struct netr_NetrEnumerateTrustedDomainsEx *r)
13050 {
13051         uint32_t _ptr_server_name;
13052         TALLOC_CTX *_mem_save_server_name_0;
13053         TALLOC_CTX *_mem_save_dom_trust_list_0;
13054         if (flags & NDR_IN) {
13055                 ZERO_STRUCT(r->out);
13056
13057                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
13058                 if (_ptr_server_name) {
13059                         NDR_PULL_ALLOC(ndr, r->in.server_name);
13060                 } else {
13061                         r->in.server_name = NULL;
13062                 }
13063                 if (r->in.server_name) {
13064                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13065                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
13066                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
13067                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
13068                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
13069                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
13070                         }
13071                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
13072                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
13073                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
13074                 }
13075                 NDR_PULL_ALLOC(ndr, r->out.dom_trust_list);
13076                 ZERO_STRUCTP(r->out.dom_trust_list);
13077         }
13078         if (flags & NDR_OUT) {
13079                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13080                         NDR_PULL_ALLOC(ndr, r->out.dom_trust_list);
13081                 }
13082                 _mem_save_dom_trust_list_0 = NDR_PULL_GET_MEM_CTX(ndr);
13083                 NDR_PULL_SET_MEM_CTX(ndr, r->out.dom_trust_list, LIBNDR_FLAG_REF_ALLOC);
13084                 NDR_CHECK(ndr_pull_netr_DomainTrustList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.dom_trust_list));
13085                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dom_trust_list_0, LIBNDR_FLAG_REF_ALLOC);
13086                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
13087         }
13088         return NDR_ERR_SUCCESS;
13089 }
13090
13091 _PUBLIC_ void ndr_print_netr_NetrEnumerateTrustedDomainsEx(struct ndr_print *ndr, const char *name, int flags, const struct netr_NetrEnumerateTrustedDomainsEx *r)
13092 {
13093         ndr_print_struct(ndr, name, "netr_NetrEnumerateTrustedDomainsEx");
13094         ndr->depth++;
13095         if (flags & NDR_SET_VALUES) {
13096                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13097         }
13098         if (flags & NDR_IN) {
13099                 ndr_print_struct(ndr, "in", "netr_NetrEnumerateTrustedDomainsEx");
13100                 ndr->depth++;
13101                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
13102                 ndr->depth++;
13103                 if (r->in.server_name) {
13104                         ndr_print_string(ndr, "server_name", r->in.server_name);
13105                 }
13106                 ndr->depth--;
13107                 ndr->depth--;
13108         }
13109         if (flags & NDR_OUT) {
13110                 ndr_print_struct(ndr, "out", "netr_NetrEnumerateTrustedDomainsEx");
13111                 ndr->depth++;
13112                 ndr_print_ptr(ndr, "dom_trust_list", r->out.dom_trust_list);
13113                 ndr->depth++;
13114                 ndr_print_netr_DomainTrustList(ndr, "dom_trust_list", r->out.dom_trust_list);
13115                 ndr->depth--;
13116                 ndr_print_WERROR(ndr, "result", r->out.result);
13117                 ndr->depth--;
13118         }
13119         ndr->depth--;
13120 }
13121
13122 static enum ndr_err_code ndr_push_netr_DsRAddressToSitenamesExW(struct ndr_push *ndr, int flags, const struct netr_DsRAddressToSitenamesExW *r)
13123 {
13124         uint32_t cntr_addresses_1;
13125         if (flags & NDR_IN) {
13126                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
13127                 if (r->in.server_name) {
13128                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13129                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13130                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13131                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
13132                 }
13133                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
13134                 if (r->in.addresses == NULL) {
13135                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13136                 }
13137                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
13138                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
13139                         NDR_CHECK(ndr_push_netr_DsRAddress(ndr, NDR_SCALARS, &r->in.addresses[cntr_addresses_1]));
13140                 }
13141                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
13142                         NDR_CHECK(ndr_push_netr_DsRAddress(ndr, NDR_BUFFERS, &r->in.addresses[cntr_addresses_1]));
13143                 }
13144         }
13145         if (flags & NDR_OUT) {
13146                 if (r->out.ctr == NULL) {
13147                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13148                 }
13149                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.ctr));
13150                 if (*r->out.ctr) {
13151                         NDR_CHECK(ndr_push_netr_DsRAddressToSitenamesExWCtr(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.ctr));
13152                 }
13153                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
13154         }
13155         return NDR_ERR_SUCCESS;
13156 }
13157
13158 static enum ndr_err_code ndr_pull_netr_DsRAddressToSitenamesExW(struct ndr_pull *ndr, int flags, struct netr_DsRAddressToSitenamesExW *r)
13159 {
13160         uint32_t _ptr_server_name;
13161         uint32_t cntr_addresses_1;
13162         uint32_t _ptr_ctr;
13163         TALLOC_CTX *_mem_save_server_name_0;
13164         TALLOC_CTX *_mem_save_addresses_1;
13165         TALLOC_CTX *_mem_save_ctr_0;
13166         TALLOC_CTX *_mem_save_ctr_1;
13167         if (flags & NDR_IN) {
13168                 ZERO_STRUCT(r->out);
13169
13170                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
13171                 if (_ptr_server_name) {
13172                         NDR_PULL_ALLOC(ndr, r->in.server_name);
13173                 } else {
13174                         r->in.server_name = NULL;
13175                 }
13176                 if (r->in.server_name) {
13177                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13178                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
13179                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
13180                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
13181                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
13182                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
13183                         }
13184                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
13185                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
13186                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
13187                 }
13188                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.count));
13189                 if (r->in.count < 0 || r->in.count > 32000) {
13190                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
13191                 }
13192                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.addresses));
13193                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13194                         NDR_PULL_ALLOC_N(ndr, r->in.addresses, ndr_get_array_size(ndr, &r->in.addresses));
13195                 }
13196                 _mem_save_addresses_1 = NDR_PULL_GET_MEM_CTX(ndr);
13197                 NDR_PULL_SET_MEM_CTX(ndr, r->in.addresses, 0);
13198                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
13199                         NDR_CHECK(ndr_pull_netr_DsRAddress(ndr, NDR_SCALARS, &r->in.addresses[cntr_addresses_1]));
13200                 }
13201                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
13202                         NDR_CHECK(ndr_pull_netr_DsRAddress(ndr, NDR_BUFFERS, &r->in.addresses[cntr_addresses_1]));
13203                 }
13204                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_addresses_1, 0);
13205                 NDR_PULL_ALLOC(ndr, r->out.ctr);
13206                 ZERO_STRUCTP(r->out.ctr);
13207                 if (r->in.addresses) {
13208                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.addresses, r->in.count));
13209                 }
13210         }
13211         if (flags & NDR_OUT) {
13212                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13213                         NDR_PULL_ALLOC(ndr, r->out.ctr);
13214                 }
13215                 _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
13216                 NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
13217                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr));
13218                 if (_ptr_ctr) {
13219                         NDR_PULL_ALLOC(ndr, *r->out.ctr);
13220                 } else {
13221                         *r->out.ctr = NULL;
13222                 }
13223                 if (*r->out.ctr) {
13224                         _mem_save_ctr_1 = NDR_PULL_GET_MEM_CTX(ndr);
13225                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.ctr, 0);
13226                         NDR_CHECK(ndr_pull_netr_DsRAddressToSitenamesExWCtr(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.ctr));
13227                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_1, 0);
13228                 }
13229                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
13230                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
13231         }
13232         return NDR_ERR_SUCCESS;
13233 }
13234
13235 _PUBLIC_ void ndr_print_netr_DsRAddressToSitenamesExW(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRAddressToSitenamesExW *r)
13236 {
13237         uint32_t cntr_addresses_1;
13238         ndr_print_struct(ndr, name, "netr_DsRAddressToSitenamesExW");
13239         ndr->depth++;
13240         if (flags & NDR_SET_VALUES) {
13241                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13242         }
13243         if (flags & NDR_IN) {
13244                 ndr_print_struct(ndr, "in", "netr_DsRAddressToSitenamesExW");
13245                 ndr->depth++;
13246                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
13247                 ndr->depth++;
13248                 if (r->in.server_name) {
13249                         ndr_print_string(ndr, "server_name", r->in.server_name);
13250                 }
13251                 ndr->depth--;
13252                 ndr_print_uint32(ndr, "count", r->in.count);
13253                 ndr_print_ptr(ndr, "addresses", r->in.addresses);
13254                 ndr->depth++;
13255                 ndr->print(ndr, "%s: ARRAY(%d)", "addresses", r->in.count);
13256                 ndr->depth++;
13257                 for (cntr_addresses_1=0;cntr_addresses_1<r->in.count;cntr_addresses_1++) {
13258                         char *idx_1=NULL;
13259                         asprintf(&idx_1, "[%d]", cntr_addresses_1);
13260                         if (idx_1) {
13261                                 ndr_print_netr_DsRAddress(ndr, "addresses", &r->in.addresses[cntr_addresses_1]);
13262                                 free(idx_1);
13263                         }
13264                 }
13265                 ndr->depth--;
13266                 ndr->depth--;
13267                 ndr->depth--;
13268         }
13269         if (flags & NDR_OUT) {
13270                 ndr_print_struct(ndr, "out", "netr_DsRAddressToSitenamesExW");
13271                 ndr->depth++;
13272                 ndr_print_ptr(ndr, "ctr", r->out.ctr);
13273                 ndr->depth++;
13274                 ndr_print_ptr(ndr, "ctr", *r->out.ctr);
13275                 ndr->depth++;
13276                 if (*r->out.ctr) {
13277                         ndr_print_netr_DsRAddressToSitenamesExWCtr(ndr, "ctr", *r->out.ctr);
13278                 }
13279                 ndr->depth--;
13280                 ndr->depth--;
13281                 ndr_print_WERROR(ndr, "result", r->out.result);
13282                 ndr->depth--;
13283         }
13284         ndr->depth--;
13285 }
13286
13287 static enum ndr_err_code ndr_push_netr_DsrGetDcSiteCoverageW(struct ndr_push *ndr, int flags, const struct netr_DsrGetDcSiteCoverageW *r)
13288 {
13289         if (flags & NDR_IN) {
13290                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
13291                 if (r->in.server_name) {
13292                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13293                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13294                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13295                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
13296                 }
13297         }
13298         if (flags & NDR_OUT) {
13299                 if (r->out.ctr == NULL) {
13300                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13301                 }
13302                 NDR_CHECK(ndr_push_DcSitesCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
13303                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
13304         }
13305         return NDR_ERR_SUCCESS;
13306 }
13307
13308 static enum ndr_err_code ndr_pull_netr_DsrGetDcSiteCoverageW(struct ndr_pull *ndr, int flags, struct netr_DsrGetDcSiteCoverageW *r)
13309 {
13310         uint32_t _ptr_server_name;
13311         TALLOC_CTX *_mem_save_server_name_0;
13312         TALLOC_CTX *_mem_save_ctr_0;
13313         if (flags & NDR_IN) {
13314                 ZERO_STRUCT(r->out);
13315
13316                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
13317                 if (_ptr_server_name) {
13318                         NDR_PULL_ALLOC(ndr, r->in.server_name);
13319                 } else {
13320                         r->in.server_name = NULL;
13321                 }
13322                 if (r->in.server_name) {
13323                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13324                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
13325                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
13326                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
13327                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
13328                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
13329                         }
13330                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
13331                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
13332                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
13333                 }
13334                 NDR_PULL_ALLOC(ndr, r->out.ctr);
13335                 ZERO_STRUCTP(r->out.ctr);
13336         }
13337         if (flags & NDR_OUT) {
13338                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13339                         NDR_PULL_ALLOC(ndr, r->out.ctr);
13340                 }
13341                 _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
13342                 NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
13343                 NDR_CHECK(ndr_pull_DcSitesCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
13344                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
13345                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
13346         }
13347         return NDR_ERR_SUCCESS;
13348 }
13349
13350 _PUBLIC_ void ndr_print_netr_DsrGetDcSiteCoverageW(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsrGetDcSiteCoverageW *r)
13351 {
13352         ndr_print_struct(ndr, name, "netr_DsrGetDcSiteCoverageW");
13353         ndr->depth++;
13354         if (flags & NDR_SET_VALUES) {
13355                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13356         }
13357         if (flags & NDR_IN) {
13358                 ndr_print_struct(ndr, "in", "netr_DsrGetDcSiteCoverageW");
13359                 ndr->depth++;
13360                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
13361                 ndr->depth++;
13362                 if (r->in.server_name) {
13363                         ndr_print_string(ndr, "server_name", r->in.server_name);
13364                 }
13365                 ndr->depth--;
13366                 ndr->depth--;
13367         }
13368         if (flags & NDR_OUT) {
13369                 ndr_print_struct(ndr, "out", "netr_DsrGetDcSiteCoverageW");
13370                 ndr->depth++;
13371                 ndr_print_ptr(ndr, "ctr", r->out.ctr);
13372                 ndr->depth++;
13373                 ndr_print_DcSitesCtr(ndr, "ctr", r->out.ctr);
13374                 ndr->depth--;
13375                 ndr_print_WERROR(ndr, "result", r->out.result);
13376                 ndr->depth--;
13377         }
13378         ndr->depth--;
13379 }
13380
13381 static enum ndr_err_code ndr_push_netr_LogonSamLogonEx(struct ndr_push *ndr, int flags, const struct netr_LogonSamLogonEx *r)
13382 {
13383         if (flags & NDR_IN) {
13384                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
13385                 if (r->in.server_name) {
13386                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13387                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13388                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13389                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
13390                 }
13391                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
13392                 if (r->in.computer_name) {
13393                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13394                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13395                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13396                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
13397                 }
13398                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.logon_level));
13399                 if (r->in.logon == NULL) {
13400                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13401                 }
13402                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.logon, r->in.logon_level));
13403                 NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
13404                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.validation_level));
13405                 if (r->in.flags == NULL) {
13406                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13407                 }
13408                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.flags));
13409         }
13410         if (flags & NDR_OUT) {
13411                 if (r->out.validation == NULL) {
13412                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13413                 }
13414                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.validation, r->in.validation_level));
13415                 NDR_CHECK(ndr_push_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
13416                 if (r->out.authoritative == NULL) {
13417                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13418                 }
13419                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->out.authoritative));
13420                 if (r->out.flags == NULL) {
13421                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13422                 }
13423                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.flags));
13424                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
13425         }
13426         return NDR_ERR_SUCCESS;
13427 }
13428
13429 static enum ndr_err_code ndr_pull_netr_LogonSamLogonEx(struct ndr_pull *ndr, int flags, struct netr_LogonSamLogonEx *r)
13430 {
13431         uint32_t _ptr_server_name;
13432         uint32_t _ptr_computer_name;
13433         TALLOC_CTX *_mem_save_server_name_0;
13434         TALLOC_CTX *_mem_save_computer_name_0;
13435         TALLOC_CTX *_mem_save_logon_0;
13436         TALLOC_CTX *_mem_save_validation_0;
13437         TALLOC_CTX *_mem_save_authoritative_0;
13438         TALLOC_CTX *_mem_save_flags_0;
13439         if (flags & NDR_IN) {
13440                 ZERO_STRUCT(r->out);
13441
13442                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
13443                 if (_ptr_server_name) {
13444                         NDR_PULL_ALLOC(ndr, r->in.server_name);
13445                 } else {
13446                         r->in.server_name = NULL;
13447                 }
13448                 if (r->in.server_name) {
13449                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13450                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
13451                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
13452                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
13453                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
13454                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
13455                         }
13456                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
13457                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
13458                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
13459                 }
13460                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
13461                 if (_ptr_computer_name) {
13462                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
13463                 } else {
13464                         r->in.computer_name = NULL;
13465                 }
13466                 if (r->in.computer_name) {
13467                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13468                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
13469                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
13470                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
13471                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
13472                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
13473                         }
13474                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
13475                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
13476                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
13477                 }
13478                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.logon_level));
13479                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13480                         NDR_PULL_ALLOC(ndr, r->in.logon);
13481                 }
13482                 _mem_save_logon_0 = NDR_PULL_GET_MEM_CTX(ndr);
13483                 NDR_PULL_SET_MEM_CTX(ndr, r->in.logon, LIBNDR_FLAG_REF_ALLOC);
13484                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.logon, r->in.logon_level));
13485                 NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
13486                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_0, LIBNDR_FLAG_REF_ALLOC);
13487                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.validation_level));
13488                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13489                         NDR_PULL_ALLOC(ndr, r->in.flags);
13490                 }
13491                 _mem_save_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
13492                 NDR_PULL_SET_MEM_CTX(ndr, r->in.flags, LIBNDR_FLAG_REF_ALLOC);
13493                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.flags));
13494                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_flags_0, LIBNDR_FLAG_REF_ALLOC);
13495                 NDR_PULL_ALLOC(ndr, r->out.validation);
13496                 ZERO_STRUCTP(r->out.validation);
13497                 NDR_PULL_ALLOC(ndr, r->out.authoritative);
13498                 ZERO_STRUCTP(r->out.authoritative);
13499                 NDR_PULL_ALLOC(ndr, r->out.flags);
13500                 *r->out.flags = *r->in.flags;
13501         }
13502         if (flags & NDR_OUT) {
13503                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13504                         NDR_PULL_ALLOC(ndr, r->out.validation);
13505                 }
13506                 _mem_save_validation_0 = NDR_PULL_GET_MEM_CTX(ndr);
13507                 NDR_PULL_SET_MEM_CTX(ndr, r->out.validation, LIBNDR_FLAG_REF_ALLOC);
13508                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.validation, r->in.validation_level));
13509                 NDR_CHECK(ndr_pull_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
13510                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_validation_0, LIBNDR_FLAG_REF_ALLOC);
13511                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13512                         NDR_PULL_ALLOC(ndr, r->out.authoritative);
13513                 }
13514                 _mem_save_authoritative_0 = NDR_PULL_GET_MEM_CTX(ndr);
13515                 NDR_PULL_SET_MEM_CTX(ndr, r->out.authoritative, LIBNDR_FLAG_REF_ALLOC);
13516                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->out.authoritative));
13517                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_authoritative_0, LIBNDR_FLAG_REF_ALLOC);
13518                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13519                         NDR_PULL_ALLOC(ndr, r->out.flags);
13520                 }
13521                 _mem_save_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
13522                 NDR_PULL_SET_MEM_CTX(ndr, r->out.flags, LIBNDR_FLAG_REF_ALLOC);
13523                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.flags));
13524                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_flags_0, LIBNDR_FLAG_REF_ALLOC);
13525                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
13526         }
13527         return NDR_ERR_SUCCESS;
13528 }
13529
13530 _PUBLIC_ void ndr_print_netr_LogonSamLogonEx(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogonEx *r)
13531 {
13532         ndr_print_struct(ndr, name, "netr_LogonSamLogonEx");
13533         ndr->depth++;
13534         if (flags & NDR_SET_VALUES) {
13535                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13536         }
13537         if (flags & NDR_IN) {
13538                 ndr_print_struct(ndr, "in", "netr_LogonSamLogonEx");
13539                 ndr->depth++;
13540                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
13541                 ndr->depth++;
13542                 if (r->in.server_name) {
13543                         ndr_print_string(ndr, "server_name", r->in.server_name);
13544                 }
13545                 ndr->depth--;
13546                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
13547                 ndr->depth++;
13548                 if (r->in.computer_name) {
13549                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
13550                 }
13551                 ndr->depth--;
13552                 ndr_print_uint16(ndr, "logon_level", r->in.logon_level);
13553                 ndr_print_ptr(ndr, "logon", r->in.logon);
13554                 ndr->depth++;
13555                 ndr_print_set_switch_value(ndr, r->in.logon, r->in.logon_level);
13556                 ndr_print_netr_LogonLevel(ndr, "logon", r->in.logon);
13557                 ndr->depth--;
13558                 ndr_print_uint16(ndr, "validation_level", r->in.validation_level);
13559                 ndr_print_ptr(ndr, "flags", r->in.flags);
13560                 ndr->depth++;
13561                 ndr_print_uint32(ndr, "flags", *r->in.flags);
13562                 ndr->depth--;
13563                 ndr->depth--;
13564         }
13565         if (flags & NDR_OUT) {
13566                 ndr_print_struct(ndr, "out", "netr_LogonSamLogonEx");
13567                 ndr->depth++;
13568                 ndr_print_ptr(ndr, "validation", r->out.validation);
13569                 ndr->depth++;
13570                 ndr_print_set_switch_value(ndr, r->out.validation, r->in.validation_level);
13571                 ndr_print_netr_Validation(ndr, "validation", r->out.validation);
13572                 ndr->depth--;
13573                 ndr_print_ptr(ndr, "authoritative", r->out.authoritative);
13574                 ndr->depth++;
13575                 ndr_print_uint8(ndr, "authoritative", *r->out.authoritative);
13576                 ndr->depth--;
13577                 ndr_print_ptr(ndr, "flags", r->out.flags);
13578                 ndr->depth++;
13579                 ndr_print_uint32(ndr, "flags", *r->out.flags);
13580                 ndr->depth--;
13581                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
13582                 ndr->depth--;
13583         }
13584         ndr->depth--;
13585 }
13586
13587 static enum ndr_err_code ndr_push_netr_DsrEnumerateDomainTrusts(struct ndr_push *ndr, int flags, const struct netr_DsrEnumerateDomainTrusts *r)
13588 {
13589         if (flags & NDR_IN) {
13590                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
13591                 if (r->in.server_name) {
13592                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13593                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13594                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13595                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
13596                 }
13597                 NDR_CHECK(ndr_push_netr_TrustFlags(ndr, NDR_SCALARS, r->in.trust_flags));
13598         }
13599         if (flags & NDR_OUT) {
13600                 if (r->out.trusts == NULL) {
13601                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13602                 }
13603                 NDR_CHECK(ndr_push_netr_DomainTrustList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trusts));
13604                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
13605         }
13606         return NDR_ERR_SUCCESS;
13607 }
13608
13609 static enum ndr_err_code ndr_pull_netr_DsrEnumerateDomainTrusts(struct ndr_pull *ndr, int flags, struct netr_DsrEnumerateDomainTrusts *r)
13610 {
13611         uint32_t _ptr_server_name;
13612         TALLOC_CTX *_mem_save_server_name_0;
13613         TALLOC_CTX *_mem_save_trusts_0;
13614         if (flags & NDR_IN) {
13615                 ZERO_STRUCT(r->out);
13616
13617                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
13618                 if (_ptr_server_name) {
13619                         NDR_PULL_ALLOC(ndr, r->in.server_name);
13620                 } else {
13621                         r->in.server_name = NULL;
13622                 }
13623                 if (r->in.server_name) {
13624                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13625                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
13626                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
13627                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
13628                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
13629                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
13630                         }
13631                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
13632                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
13633                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
13634                 }
13635                 NDR_CHECK(ndr_pull_netr_TrustFlags(ndr, NDR_SCALARS, &r->in.trust_flags));
13636                 NDR_PULL_ALLOC(ndr, r->out.trusts);
13637                 ZERO_STRUCTP(r->out.trusts);
13638         }
13639         if (flags & NDR_OUT) {
13640                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13641                         NDR_PULL_ALLOC(ndr, r->out.trusts);
13642                 }
13643                 _mem_save_trusts_0 = NDR_PULL_GET_MEM_CTX(ndr);
13644                 NDR_PULL_SET_MEM_CTX(ndr, r->out.trusts, LIBNDR_FLAG_REF_ALLOC);
13645                 NDR_CHECK(ndr_pull_netr_DomainTrustList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trusts));
13646                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusts_0, LIBNDR_FLAG_REF_ALLOC);
13647                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
13648         }
13649         return NDR_ERR_SUCCESS;
13650 }
13651
13652 _PUBLIC_ void ndr_print_netr_DsrEnumerateDomainTrusts(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsrEnumerateDomainTrusts *r)
13653 {
13654         ndr_print_struct(ndr, name, "netr_DsrEnumerateDomainTrusts");
13655         ndr->depth++;
13656         if (flags & NDR_SET_VALUES) {
13657                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13658         }
13659         if (flags & NDR_IN) {
13660                 ndr_print_struct(ndr, "in", "netr_DsrEnumerateDomainTrusts");
13661                 ndr->depth++;
13662                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
13663                 ndr->depth++;
13664                 if (r->in.server_name) {
13665                         ndr_print_string(ndr, "server_name", r->in.server_name);
13666                 }
13667                 ndr->depth--;
13668                 ndr_print_netr_TrustFlags(ndr, "trust_flags", r->in.trust_flags);
13669                 ndr->depth--;
13670         }
13671         if (flags & NDR_OUT) {
13672                 ndr_print_struct(ndr, "out", "netr_DsrEnumerateDomainTrusts");
13673                 ndr->depth++;
13674                 ndr_print_ptr(ndr, "trusts", r->out.trusts);
13675                 ndr->depth++;
13676                 ndr_print_netr_DomainTrustList(ndr, "trusts", r->out.trusts);
13677                 ndr->depth--;
13678                 ndr_print_WERROR(ndr, "result", r->out.result);
13679                 ndr->depth--;
13680         }
13681         ndr->depth--;
13682 }
13683
13684 static enum ndr_err_code ndr_push_netr_DsrDeregisterDNSHostRecords(struct ndr_push *ndr, int flags, const struct netr_DsrDeregisterDNSHostRecords *r)
13685 {
13686         if (flags & NDR_IN) {
13687                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
13688                 if (r->in.server_name) {
13689                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13690                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13691                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13692                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
13693                 }
13694                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain));
13695                 if (r->in.domain) {
13696                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain, CH_UTF16)));
13697                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13698                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain, CH_UTF16)));
13699                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.domain, ndr_charset_length(r->in.domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
13700                 }
13701                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_guid));
13702                 if (r->in.domain_guid) {
13703                         NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.domain_guid));
13704                 }
13705                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dsa_guid));
13706                 if (r->in.dsa_guid) {
13707                         NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.dsa_guid));
13708                 }
13709                 if (r->in.dns_host == NULL) {
13710                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13711                 }
13712                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dns_host, CH_UTF16)));
13713                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13714                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dns_host, CH_UTF16)));
13715                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.dns_host, ndr_charset_length(r->in.dns_host, CH_UTF16), sizeof(uint16_t), CH_UTF16));
13716         }
13717         if (flags & NDR_OUT) {
13718                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
13719         }
13720         return NDR_ERR_SUCCESS;
13721 }
13722
13723 static enum ndr_err_code ndr_pull_netr_DsrDeregisterDNSHostRecords(struct ndr_pull *ndr, int flags, struct netr_DsrDeregisterDNSHostRecords *r)
13724 {
13725         uint32_t _ptr_server_name;
13726         uint32_t _ptr_domain;
13727         uint32_t _ptr_domain_guid;
13728         uint32_t _ptr_dsa_guid;
13729         TALLOC_CTX *_mem_save_server_name_0;
13730         TALLOC_CTX *_mem_save_domain_0;
13731         TALLOC_CTX *_mem_save_domain_guid_0;
13732         TALLOC_CTX *_mem_save_dsa_guid_0;
13733         if (flags & NDR_IN) {
13734                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
13735                 if (_ptr_server_name) {
13736                         NDR_PULL_ALLOC(ndr, r->in.server_name);
13737                 } else {
13738                         r->in.server_name = NULL;
13739                 }
13740                 if (r->in.server_name) {
13741                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13742                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
13743                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
13744                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
13745                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
13746                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
13747                         }
13748                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
13749                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
13750                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
13751                 }
13752                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
13753                 if (_ptr_domain) {
13754                         NDR_PULL_ALLOC(ndr, r->in.domain);
13755                 } else {
13756                         r->in.domain = NULL;
13757                 }
13758                 if (r->in.domain) {
13759                         _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
13760                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain, 0);
13761                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domain));
13762                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domain));
13763                         if (ndr_get_array_length(ndr, &r->in.domain) > ndr_get_array_size(ndr, &r->in.domain)) {
13764                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.domain), ndr_get_array_length(ndr, &r->in.domain));
13765                         }
13766                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domain), sizeof(uint16_t)));
13767                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.domain, ndr_get_array_length(ndr, &r->in.domain), sizeof(uint16_t), CH_UTF16));
13768                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
13769                 }
13770                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_guid));
13771                 if (_ptr_domain_guid) {
13772                         NDR_PULL_ALLOC(ndr, r->in.domain_guid);
13773                 } else {
13774                         r->in.domain_guid = NULL;
13775                 }
13776                 if (r->in.domain_guid) {
13777                         _mem_save_domain_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
13778                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_guid, 0);
13779                         NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.domain_guid));
13780                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_guid_0, 0);
13781                 }
13782                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dsa_guid));
13783                 if (_ptr_dsa_guid) {
13784                         NDR_PULL_ALLOC(ndr, r->in.dsa_guid);
13785                 } else {
13786                         r->in.dsa_guid = NULL;
13787                 }
13788                 if (r->in.dsa_guid) {
13789                         _mem_save_dsa_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
13790                         NDR_PULL_SET_MEM_CTX(ndr, r->in.dsa_guid, 0);
13791                         NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.dsa_guid));
13792                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dsa_guid_0, 0);
13793                 }
13794                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dns_host));
13795                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dns_host));
13796                 if (ndr_get_array_length(ndr, &r->in.dns_host) > ndr_get_array_size(ndr, &r->in.dns_host)) {
13797                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.dns_host), ndr_get_array_length(ndr, &r->in.dns_host));
13798                 }
13799                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dns_host), sizeof(uint16_t)));
13800                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.dns_host, ndr_get_array_length(ndr, &r->in.dns_host), sizeof(uint16_t), CH_UTF16));
13801         }
13802         if (flags & NDR_OUT) {
13803                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
13804         }
13805         return NDR_ERR_SUCCESS;
13806 }
13807
13808 _PUBLIC_ void ndr_print_netr_DsrDeregisterDNSHostRecords(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsrDeregisterDNSHostRecords *r)
13809 {
13810         ndr_print_struct(ndr, name, "netr_DsrDeregisterDNSHostRecords");
13811         ndr->depth++;
13812         if (flags & NDR_SET_VALUES) {
13813                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13814         }
13815         if (flags & NDR_IN) {
13816                 ndr_print_struct(ndr, "in", "netr_DsrDeregisterDNSHostRecords");
13817                 ndr->depth++;
13818                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
13819                 ndr->depth++;
13820                 if (r->in.server_name) {
13821                         ndr_print_string(ndr, "server_name", r->in.server_name);
13822                 }
13823                 ndr->depth--;
13824                 ndr_print_ptr(ndr, "domain", r->in.domain);
13825                 ndr->depth++;
13826                 if (r->in.domain) {
13827                         ndr_print_string(ndr, "domain", r->in.domain);
13828                 }
13829                 ndr->depth--;
13830                 ndr_print_ptr(ndr, "domain_guid", r->in.domain_guid);
13831                 ndr->depth++;
13832                 if (r->in.domain_guid) {
13833                         ndr_print_GUID(ndr, "domain_guid", r->in.domain_guid);
13834                 }
13835                 ndr->depth--;
13836                 ndr_print_ptr(ndr, "dsa_guid", r->in.dsa_guid);
13837                 ndr->depth++;
13838                 if (r->in.dsa_guid) {
13839                         ndr_print_GUID(ndr, "dsa_guid", r->in.dsa_guid);
13840                 }
13841                 ndr->depth--;
13842                 ndr_print_ptr(ndr, "dns_host", r->in.dns_host);
13843                 ndr->depth++;
13844                 ndr_print_string(ndr, "dns_host", r->in.dns_host);
13845                 ndr->depth--;
13846                 ndr->depth--;
13847         }
13848         if (flags & NDR_OUT) {
13849                 ndr_print_struct(ndr, "out", "netr_DsrDeregisterDNSHostRecords");
13850                 ndr->depth++;
13851                 ndr_print_WERROR(ndr, "result", r->out.result);
13852                 ndr->depth--;
13853         }
13854         ndr->depth--;
13855 }
13856
13857 static enum ndr_err_code ndr_push_netr_ServerTrustPasswordsGet(struct ndr_push *ndr, int flags, const struct netr_ServerTrustPasswordsGet *r)
13858 {
13859         if (flags & NDR_IN) {
13860                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
13861                 if (r->in.server_name) {
13862                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13863                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13864                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13865                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
13866                 }
13867                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
13868                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13869                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
13870                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.account_name, ndr_charset_length(r->in.account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
13871                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
13872                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13873                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13874                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13875                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
13876                 if (r->in.credential == NULL) {
13877                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13878                 }
13879                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
13880         }
13881         if (flags & NDR_OUT) {
13882                 if (r->out.return_authenticator == NULL) {
13883                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13884                 }
13885                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
13886                 if (r->out.password == NULL) {
13887                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13888                 }
13889                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.password));
13890                 if (r->out.password2 == NULL) {
13891                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13892                 }
13893                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.password2));
13894                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
13895         }
13896         return NDR_ERR_SUCCESS;
13897 }
13898
13899 static enum ndr_err_code ndr_pull_netr_ServerTrustPasswordsGet(struct ndr_pull *ndr, int flags, struct netr_ServerTrustPasswordsGet *r)
13900 {
13901         uint32_t _ptr_server_name;
13902         TALLOC_CTX *_mem_save_server_name_0;
13903         TALLOC_CTX *_mem_save_credential_0;
13904         TALLOC_CTX *_mem_save_return_authenticator_0;
13905         TALLOC_CTX *_mem_save_password_0;
13906         TALLOC_CTX *_mem_save_password2_0;
13907         if (flags & NDR_IN) {
13908                 ZERO_STRUCT(r->out);
13909
13910                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
13911                 if (_ptr_server_name) {
13912                         NDR_PULL_ALLOC(ndr, r->in.server_name);
13913                 } else {
13914                         r->in.server_name = NULL;
13915                 }
13916                 if (r->in.server_name) {
13917                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13918                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
13919                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
13920                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
13921                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
13922                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
13923                         }
13924                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
13925                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
13926                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
13927                 }
13928                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
13929                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
13930                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
13931                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.account_name), ndr_get_array_length(ndr, &r->in.account_name));
13932                 }
13933                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
13934                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.account_name, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t), CH_UTF16));
13935                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
13936                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
13937                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
13938                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
13939                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
13940                 }
13941                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
13942                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
13943                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13944                         NDR_PULL_ALLOC(ndr, r->in.credential);
13945                 }
13946                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
13947                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
13948                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
13949                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
13950                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
13951                 ZERO_STRUCTP(r->out.return_authenticator);
13952                 NDR_PULL_ALLOC(ndr, r->out.password);
13953                 ZERO_STRUCTP(r->out.password);
13954                 NDR_PULL_ALLOC(ndr, r->out.password2);
13955                 ZERO_STRUCTP(r->out.password2);
13956         }
13957         if (flags & NDR_OUT) {
13958                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13959                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
13960                 }
13961                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
13962                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
13963                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
13964                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
13965                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13966                         NDR_PULL_ALLOC(ndr, r->out.password);
13967                 }
13968                 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
13969                 NDR_PULL_SET_MEM_CTX(ndr, r->out.password, LIBNDR_FLAG_REF_ALLOC);
13970                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.password));
13971                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, LIBNDR_FLAG_REF_ALLOC);
13972                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13973                         NDR_PULL_ALLOC(ndr, r->out.password2);
13974                 }
13975                 _mem_save_password2_0 = NDR_PULL_GET_MEM_CTX(ndr);
13976                 NDR_PULL_SET_MEM_CTX(ndr, r->out.password2, LIBNDR_FLAG_REF_ALLOC);
13977                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.password2));
13978                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password2_0, LIBNDR_FLAG_REF_ALLOC);
13979                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
13980         }
13981         return NDR_ERR_SUCCESS;
13982 }
13983
13984 _PUBLIC_ void ndr_print_netr_ServerTrustPasswordsGet(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerTrustPasswordsGet *r)
13985 {
13986         ndr_print_struct(ndr, name, "netr_ServerTrustPasswordsGet");
13987         ndr->depth++;
13988         if (flags & NDR_SET_VALUES) {
13989                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13990         }
13991         if (flags & NDR_IN) {
13992                 ndr_print_struct(ndr, "in", "netr_ServerTrustPasswordsGet");
13993                 ndr->depth++;
13994                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
13995                 ndr->depth++;
13996                 if (r->in.server_name) {
13997                         ndr_print_string(ndr, "server_name", r->in.server_name);
13998                 }
13999                 ndr->depth--;
14000                 ndr_print_string(ndr, "account_name", r->in.account_name);
14001                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
14002                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
14003                 ndr_print_ptr(ndr, "credential", r->in.credential);
14004                 ndr->depth++;
14005                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
14006                 ndr->depth--;
14007                 ndr->depth--;
14008         }
14009         if (flags & NDR_OUT) {
14010                 ndr_print_struct(ndr, "out", "netr_ServerTrustPasswordsGet");
14011                 ndr->depth++;
14012                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
14013                 ndr->depth++;
14014                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
14015                 ndr->depth--;
14016                 ndr_print_ptr(ndr, "password", r->out.password);
14017                 ndr->depth++;
14018                 ndr_print_samr_Password(ndr, "password", r->out.password);
14019                 ndr->depth--;
14020                 ndr_print_ptr(ndr, "password2", r->out.password2);
14021                 ndr->depth++;
14022                 ndr_print_samr_Password(ndr, "password2", r->out.password2);
14023                 ndr->depth--;
14024                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
14025                 ndr->depth--;
14026         }
14027         ndr->depth--;
14028 }
14029
14030 static enum ndr_err_code ndr_push_netr_DsRGetForestTrustInformation(struct ndr_push *ndr, int flags, const struct netr_DsRGetForestTrustInformation *r)
14031 {
14032         if (flags & NDR_IN) {
14033                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
14034                 if (r->in.server_name) {
14035                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14036                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14037                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14038                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
14039                 }
14040                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.trusted_domain_name));
14041                 if (r->in.trusted_domain_name) {
14042                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.trusted_domain_name, CH_UTF16)));
14043                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14044                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.trusted_domain_name, CH_UTF16)));
14045                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.trusted_domain_name, ndr_charset_length(r->in.trusted_domain_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
14046                 }
14047                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
14048         }
14049         if (flags & NDR_OUT) {
14050                 if (r->out.forest_trust_info == NULL) {
14051                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14052                 }
14053                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.forest_trust_info));
14054                 if (*r->out.forest_trust_info) {
14055                         NDR_CHECK(ndr_push_lsa_ForestTrustInformation(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.forest_trust_info));
14056                 }
14057                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
14058         }
14059         return NDR_ERR_SUCCESS;
14060 }
14061
14062 static enum ndr_err_code ndr_pull_netr_DsRGetForestTrustInformation(struct ndr_pull *ndr, int flags, struct netr_DsRGetForestTrustInformation *r)
14063 {
14064         uint32_t _ptr_server_name;
14065         uint32_t _ptr_trusted_domain_name;
14066         uint32_t _ptr_forest_trust_info;
14067         TALLOC_CTX *_mem_save_server_name_0;
14068         TALLOC_CTX *_mem_save_trusted_domain_name_0;
14069         TALLOC_CTX *_mem_save_forest_trust_info_0;
14070         TALLOC_CTX *_mem_save_forest_trust_info_1;
14071         if (flags & NDR_IN) {
14072                 ZERO_STRUCT(r->out);
14073
14074                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
14075                 if (_ptr_server_name) {
14076                         NDR_PULL_ALLOC(ndr, r->in.server_name);
14077                 } else {
14078                         r->in.server_name = NULL;
14079                 }
14080                 if (r->in.server_name) {
14081                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
14082                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
14083                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
14084                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
14085                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
14086                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
14087                         }
14088                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
14089                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
14090                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
14091                 }
14092                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_trusted_domain_name));
14093                 if (_ptr_trusted_domain_name) {
14094                         NDR_PULL_ALLOC(ndr, r->in.trusted_domain_name);
14095                 } else {
14096                         r->in.trusted_domain_name = NULL;
14097                 }
14098                 if (r->in.trusted_domain_name) {
14099                         _mem_save_trusted_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
14100                         NDR_PULL_SET_MEM_CTX(ndr, r->in.trusted_domain_name, 0);
14101                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.trusted_domain_name));
14102                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.trusted_domain_name));
14103                         if (ndr_get_array_length(ndr, &r->in.trusted_domain_name) > ndr_get_array_size(ndr, &r->in.trusted_domain_name)) {
14104                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.trusted_domain_name), ndr_get_array_length(ndr, &r->in.trusted_domain_name));
14105                         }
14106                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.trusted_domain_name), sizeof(uint16_t)));
14107                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.trusted_domain_name, ndr_get_array_length(ndr, &r->in.trusted_domain_name), sizeof(uint16_t), CH_UTF16));
14108                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusted_domain_name_0, 0);
14109                 }
14110                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
14111                 NDR_PULL_ALLOC(ndr, r->out.forest_trust_info);
14112                 ZERO_STRUCTP(r->out.forest_trust_info);
14113         }
14114         if (flags & NDR_OUT) {
14115                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14116                         NDR_PULL_ALLOC(ndr, r->out.forest_trust_info);
14117                 }
14118                 _mem_save_forest_trust_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
14119                 NDR_PULL_SET_MEM_CTX(ndr, r->out.forest_trust_info, LIBNDR_FLAG_REF_ALLOC);
14120                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_forest_trust_info));
14121                 if (_ptr_forest_trust_info) {
14122                         NDR_PULL_ALLOC(ndr, *r->out.forest_trust_info);
14123                 } else {
14124                         *r->out.forest_trust_info = NULL;
14125                 }
14126                 if (*r->out.forest_trust_info) {
14127                         _mem_save_forest_trust_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
14128                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.forest_trust_info, 0);
14129                         NDR_CHECK(ndr_pull_lsa_ForestTrustInformation(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.forest_trust_info));
14130                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_forest_trust_info_1, 0);
14131                 }
14132                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_forest_trust_info_0, LIBNDR_FLAG_REF_ALLOC);
14133                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
14134         }
14135         return NDR_ERR_SUCCESS;
14136 }
14137
14138 _PUBLIC_ void ndr_print_netr_DsRGetForestTrustInformation(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetForestTrustInformation *r)
14139 {
14140         ndr_print_struct(ndr, name, "netr_DsRGetForestTrustInformation");
14141         ndr->depth++;
14142         if (flags & NDR_SET_VALUES) {
14143                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
14144         }
14145         if (flags & NDR_IN) {
14146                 ndr_print_struct(ndr, "in", "netr_DsRGetForestTrustInformation");
14147                 ndr->depth++;
14148                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
14149                 ndr->depth++;
14150                 if (r->in.server_name) {
14151                         ndr_print_string(ndr, "server_name", r->in.server_name);
14152                 }
14153                 ndr->depth--;
14154                 ndr_print_ptr(ndr, "trusted_domain_name", r->in.trusted_domain_name);
14155                 ndr->depth++;
14156                 if (r->in.trusted_domain_name) {
14157                         ndr_print_string(ndr, "trusted_domain_name", r->in.trusted_domain_name);
14158                 }
14159                 ndr->depth--;
14160                 ndr_print_uint32(ndr, "flags", r->in.flags);
14161                 ndr->depth--;
14162         }
14163         if (flags & NDR_OUT) {
14164                 ndr_print_struct(ndr, "out", "netr_DsRGetForestTrustInformation");
14165                 ndr->depth++;
14166                 ndr_print_ptr(ndr, "forest_trust_info", r->out.forest_trust_info);
14167                 ndr->depth++;
14168                 ndr_print_ptr(ndr, "forest_trust_info", *r->out.forest_trust_info);
14169                 ndr->depth++;
14170                 if (*r->out.forest_trust_info) {
14171                         ndr_print_lsa_ForestTrustInformation(ndr, "forest_trust_info", *r->out.forest_trust_info);
14172                 }
14173                 ndr->depth--;
14174                 ndr->depth--;
14175                 ndr_print_WERROR(ndr, "result", r->out.result);
14176                 ndr->depth--;
14177         }
14178         ndr->depth--;
14179 }
14180
14181 static enum ndr_err_code ndr_push_netr_GetForestTrustInformation(struct ndr_push *ndr, int flags, const struct netr_GetForestTrustInformation *r)
14182 {
14183         if (flags & NDR_IN) {
14184                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
14185                 if (r->in.server_name) {
14186                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14187                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14188                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14189                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
14190                 }
14191                 if (r->in.trusted_domain_name == NULL) {
14192                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14193                 }
14194                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.trusted_domain_name, CH_UTF16)));
14195                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14196                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.trusted_domain_name, CH_UTF16)));
14197                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.trusted_domain_name, ndr_charset_length(r->in.trusted_domain_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
14198                 if (r->in.credential == NULL) {
14199                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14200                 }
14201                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
14202                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
14203         }
14204         if (flags & NDR_OUT) {
14205                 if (r->out.return_authenticator == NULL) {
14206                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14207                 }
14208                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
14209                 if (r->out.forest_trust_info == NULL) {
14210                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14211                 }
14212                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.forest_trust_info));
14213                 if (*r->out.forest_trust_info) {
14214                         NDR_CHECK(ndr_push_lsa_ForestTrustInformation(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.forest_trust_info));
14215                 }
14216                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
14217         }
14218         return NDR_ERR_SUCCESS;
14219 }
14220
14221 static enum ndr_err_code ndr_pull_netr_GetForestTrustInformation(struct ndr_pull *ndr, int flags, struct netr_GetForestTrustInformation *r)
14222 {
14223         uint32_t _ptr_server_name;
14224         uint32_t _ptr_forest_trust_info;
14225         TALLOC_CTX *_mem_save_server_name_0;
14226         TALLOC_CTX *_mem_save_credential_0;
14227         TALLOC_CTX *_mem_save_return_authenticator_0;
14228         TALLOC_CTX *_mem_save_forest_trust_info_0;
14229         TALLOC_CTX *_mem_save_forest_trust_info_1;
14230         if (flags & NDR_IN) {
14231                 ZERO_STRUCT(r->out);
14232
14233                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
14234                 if (_ptr_server_name) {
14235                         NDR_PULL_ALLOC(ndr, r->in.server_name);
14236                 } else {
14237                         r->in.server_name = NULL;
14238                 }
14239                 if (r->in.server_name) {
14240                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
14241                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
14242                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
14243                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
14244                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
14245                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
14246                         }
14247                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
14248                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
14249                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
14250                 }
14251                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.trusted_domain_name));
14252                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.trusted_domain_name));
14253                 if (ndr_get_array_length(ndr, &r->in.trusted_domain_name) > ndr_get_array_size(ndr, &r->in.trusted_domain_name)) {
14254                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.trusted_domain_name), ndr_get_array_length(ndr, &r->in.trusted_domain_name));
14255                 }
14256                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.trusted_domain_name), sizeof(uint16_t)));
14257                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.trusted_domain_name, ndr_get_array_length(ndr, &r->in.trusted_domain_name), sizeof(uint16_t), CH_UTF16));
14258                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14259                         NDR_PULL_ALLOC(ndr, r->in.credential);
14260                 }
14261                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
14262                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
14263                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
14264                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
14265                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
14266                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
14267                 ZERO_STRUCTP(r->out.return_authenticator);
14268                 NDR_PULL_ALLOC(ndr, r->out.forest_trust_info);
14269                 ZERO_STRUCTP(r->out.forest_trust_info);
14270         }
14271         if (flags & NDR_OUT) {
14272                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14273                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
14274                 }
14275                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
14276                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
14277                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
14278                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
14279                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14280                         NDR_PULL_ALLOC(ndr, r->out.forest_trust_info);
14281                 }
14282                 _mem_save_forest_trust_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
14283                 NDR_PULL_SET_MEM_CTX(ndr, r->out.forest_trust_info, LIBNDR_FLAG_REF_ALLOC);
14284                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_forest_trust_info));
14285                 if (_ptr_forest_trust_info) {
14286                         NDR_PULL_ALLOC(ndr, *r->out.forest_trust_info);
14287                 } else {
14288                         *r->out.forest_trust_info = NULL;
14289                 }
14290                 if (*r->out.forest_trust_info) {
14291                         _mem_save_forest_trust_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
14292                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.forest_trust_info, 0);
14293                         NDR_CHECK(ndr_pull_lsa_ForestTrustInformation(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.forest_trust_info));
14294                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_forest_trust_info_1, 0);
14295                 }
14296                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_forest_trust_info_0, LIBNDR_FLAG_REF_ALLOC);
14297                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
14298         }
14299         return NDR_ERR_SUCCESS;
14300 }
14301
14302 _PUBLIC_ void ndr_print_netr_GetForestTrustInformation(struct ndr_print *ndr, const char *name, int flags, const struct netr_GetForestTrustInformation *r)
14303 {
14304         ndr_print_struct(ndr, name, "netr_GetForestTrustInformation");
14305         ndr->depth++;
14306         if (flags & NDR_SET_VALUES) {
14307                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
14308         }
14309         if (flags & NDR_IN) {
14310                 ndr_print_struct(ndr, "in", "netr_GetForestTrustInformation");
14311                 ndr->depth++;
14312                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
14313                 ndr->depth++;
14314                 if (r->in.server_name) {
14315                         ndr_print_string(ndr, "server_name", r->in.server_name);
14316                 }
14317                 ndr->depth--;
14318                 ndr_print_ptr(ndr, "trusted_domain_name", r->in.trusted_domain_name);
14319                 ndr->depth++;
14320                 ndr_print_string(ndr, "trusted_domain_name", r->in.trusted_domain_name);
14321                 ndr->depth--;
14322                 ndr_print_ptr(ndr, "credential", r->in.credential);
14323                 ndr->depth++;
14324                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
14325                 ndr->depth--;
14326                 ndr_print_uint32(ndr, "flags", r->in.flags);
14327                 ndr->depth--;
14328         }
14329         if (flags & NDR_OUT) {
14330                 ndr_print_struct(ndr, "out", "netr_GetForestTrustInformation");
14331                 ndr->depth++;
14332                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
14333                 ndr->depth++;
14334                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
14335                 ndr->depth--;
14336                 ndr_print_ptr(ndr, "forest_trust_info", r->out.forest_trust_info);
14337                 ndr->depth++;
14338                 ndr_print_ptr(ndr, "forest_trust_info", *r->out.forest_trust_info);
14339                 ndr->depth++;
14340                 if (*r->out.forest_trust_info) {
14341                         ndr_print_lsa_ForestTrustInformation(ndr, "forest_trust_info", *r->out.forest_trust_info);
14342                 }
14343                 ndr->depth--;
14344                 ndr->depth--;
14345                 ndr_print_WERROR(ndr, "result", r->out.result);
14346                 ndr->depth--;
14347         }
14348         ndr->depth--;
14349 }
14350
14351 static enum ndr_err_code ndr_push_netr_LogonSamLogonWithFlags(struct ndr_push *ndr, int flags, const struct netr_LogonSamLogonWithFlags *r)
14352 {
14353         if (flags & NDR_IN) {
14354                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
14355                 if (r->in.server_name) {
14356                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14357                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14358                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14359                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_name, ndr_charset_length(r->in.server_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
14360                 }
14361                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
14362                 if (r->in.computer_name) {
14363                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
14364                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14365                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
14366                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computer_name, ndr_charset_length(r->in.computer_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
14367                 }
14368                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.credential));
14369                 if (r->in.credential) {
14370                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
14371                 }
14372                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.return_authenticator));
14373                 if (r->in.return_authenticator) {
14374                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
14375                 }
14376                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.logon_level));
14377                 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
14378                 NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
14379                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.validation_level));
14380                 if (r->in.flags == NULL) {
14381                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14382                 }
14383                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.flags));
14384         }
14385         if (flags & NDR_OUT) {
14386                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.return_authenticator));
14387                 if (r->out.return_authenticator) {
14388                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
14389                 }
14390                 if (r->out.validation == NULL) {
14391                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14392                 }
14393                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.validation, r->in.validation_level));
14394                 NDR_CHECK(ndr_push_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
14395                 if (r->out.authoritative == NULL) {
14396                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14397                 }
14398                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->out.authoritative));
14399                 if (r->out.flags == NULL) {
14400                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14401                 }
14402                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.flags));
14403                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
14404         }
14405         return NDR_ERR_SUCCESS;
14406 }
14407
14408 static enum ndr_err_code ndr_pull_netr_LogonSamLogonWithFlags(struct ndr_pull *ndr, int flags, struct netr_LogonSamLogonWithFlags *r)
14409 {
14410         uint32_t _ptr_server_name;
14411         uint32_t _ptr_computer_name;
14412         uint32_t _ptr_credential;
14413         uint32_t _ptr_return_authenticator;
14414         TALLOC_CTX *_mem_save_server_name_0;
14415         TALLOC_CTX *_mem_save_computer_name_0;
14416         TALLOC_CTX *_mem_save_credential_0;
14417         TALLOC_CTX *_mem_save_return_authenticator_0;
14418         TALLOC_CTX *_mem_save_validation_0;
14419         TALLOC_CTX *_mem_save_authoritative_0;
14420         TALLOC_CTX *_mem_save_flags_0;
14421         if (flags & NDR_IN) {
14422                 ZERO_STRUCT(r->out);
14423
14424                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
14425                 if (_ptr_server_name) {
14426                         NDR_PULL_ALLOC(ndr, r->in.server_name);
14427                 } else {
14428                         r->in.server_name = NULL;
14429                 }
14430                 if (r->in.server_name) {
14431                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
14432                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
14433                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
14434                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
14435                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
14436                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.server_name), ndr_get_array_length(ndr, &r->in.server_name));
14437                         }
14438                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
14439                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_name, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t), CH_UTF16));
14440                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
14441                 }
14442                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
14443                 if (_ptr_computer_name) {
14444                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
14445                 } else {
14446                         r->in.computer_name = NULL;
14447                 }
14448                 if (r->in.computer_name) {
14449                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
14450                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
14451                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
14452                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
14453                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
14454                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.computer_name), ndr_get_array_length(ndr, &r->in.computer_name));
14455                         }
14456                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
14457                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computer_name, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t), CH_UTF16));
14458                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
14459                 }
14460                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_credential));
14461                 if (_ptr_credential) {
14462                         NDR_PULL_ALLOC(ndr, r->in.credential);
14463                 } else {
14464                         r->in.credential = NULL;
14465                 }
14466                 if (r->in.credential) {
14467                         _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
14468                         NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, 0);
14469                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
14470                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, 0);
14471                 }
14472                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
14473                 if (_ptr_return_authenticator) {
14474                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
14475                 } else {
14476                         r->in.return_authenticator = NULL;
14477                 }
14478                 if (r->in.return_authenticator) {
14479                         _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
14480                         NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, 0);
14481                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
14482                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
14483                 }
14484                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.logon_level));
14485                 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
14486                 NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
14487                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.validation_level));
14488                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14489                         NDR_PULL_ALLOC(ndr, r->in.flags);
14490                 }
14491                 _mem_save_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
14492                 NDR_PULL_SET_MEM_CTX(ndr, r->in.flags, LIBNDR_FLAG_REF_ALLOC);
14493                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.flags));
14494                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_flags_0, LIBNDR_FLAG_REF_ALLOC);
14495                 NDR_PULL_ALLOC(ndr, r->out.validation);
14496                 ZERO_STRUCTP(r->out.validation);
14497                 NDR_PULL_ALLOC(ndr, r->out.authoritative);
14498                 ZERO_STRUCTP(r->out.authoritative);
14499                 NDR_PULL_ALLOC(ndr, r->out.flags);
14500                 *r->out.flags = *r->in.flags;
14501         }
14502         if (flags & NDR_OUT) {
14503                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
14504                 if (_ptr_return_authenticator) {
14505                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
14506                 } else {
14507                         r->out.return_authenticator = NULL;
14508                 }
14509                 if (r->out.return_authenticator) {
14510                         _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
14511                         NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, 0);
14512                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
14513                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
14514                 }
14515                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14516                         NDR_PULL_ALLOC(ndr, r->out.validation);
14517                 }
14518                 _mem_save_validation_0 = NDR_PULL_GET_MEM_CTX(ndr);
14519                 NDR_PULL_SET_MEM_CTX(ndr, r->out.validation, LIBNDR_FLAG_REF_ALLOC);
14520                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.validation, r->in.validation_level));
14521                 NDR_CHECK(ndr_pull_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
14522                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_validation_0, LIBNDR_FLAG_REF_ALLOC);
14523                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14524                         NDR_PULL_ALLOC(ndr, r->out.authoritative);
14525                 }
14526                 _mem_save_authoritative_0 = NDR_PULL_GET_MEM_CTX(ndr);
14527                 NDR_PULL_SET_MEM_CTX(ndr, r->out.authoritative, LIBNDR_FLAG_REF_ALLOC);
14528                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->out.authoritative));
14529                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_authoritative_0, LIBNDR_FLAG_REF_ALLOC);
14530                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14531                         NDR_PULL_ALLOC(ndr, r->out.flags);
14532                 }
14533                 _mem_save_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
14534                 NDR_PULL_SET_MEM_CTX(ndr, r->out.flags, LIBNDR_FLAG_REF_ALLOC);
14535                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.flags));
14536                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_flags_0, LIBNDR_FLAG_REF_ALLOC);
14537                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
14538         }
14539         return NDR_ERR_SUCCESS;
14540 }
14541
14542 _PUBLIC_ void ndr_print_netr_LogonSamLogonWithFlags(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogonWithFlags *r)
14543 {
14544         ndr_print_struct(ndr, name, "netr_LogonSamLogonWithFlags");
14545         ndr->depth++;
14546         if (flags & NDR_SET_VALUES) {
14547                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
14548         }
14549         if (flags & NDR_IN) {
14550                 ndr_print_struct(ndr, "in", "netr_LogonSamLogonWithFlags");
14551                 ndr->depth++;
14552                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
14553                 ndr->depth++;
14554                 if (r->in.server_name) {
14555                         ndr_print_string(ndr, "server_name", r->in.server_name);
14556                 }
14557                 ndr->depth--;
14558                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
14559                 ndr->depth++;
14560                 if (r->in.computer_name) {
14561                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
14562                 }
14563                 ndr->depth--;
14564                 ndr_print_ptr(ndr, "credential", r->in.credential);
14565                 ndr->depth++;
14566                 if (r->in.credential) {
14567                         ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
14568                 }
14569                 ndr->depth--;
14570                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
14571                 ndr->depth++;
14572                 if (r->in.return_authenticator) {
14573                         ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
14574                 }
14575                 ndr->depth--;
14576                 ndr_print_uint16(ndr, "logon_level", r->in.logon_level);
14577                 ndr_print_set_switch_value(ndr, &r->in.logon, r->in.logon_level);
14578                 ndr_print_netr_LogonLevel(ndr, "logon", &r->in.logon);
14579                 ndr_print_uint16(ndr, "validation_level", r->in.validation_level);
14580                 ndr_print_ptr(ndr, "flags", r->in.flags);
14581                 ndr->depth++;
14582                 ndr_print_uint32(ndr, "flags", *r->in.flags);
14583                 ndr->depth--;
14584                 ndr->depth--;
14585         }
14586         if (flags & NDR_OUT) {
14587                 ndr_print_struct(ndr, "out", "netr_LogonSamLogonWithFlags");
14588                 ndr->depth++;
14589                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
14590                 ndr->depth++;
14591                 if (r->out.return_authenticator) {
14592                         ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
14593                 }
14594                 ndr->depth--;
14595                 ndr_print_ptr(ndr, "validation", r->out.validation);
14596                 ndr->depth++;
14597                 ndr_print_set_switch_value(ndr, r->out.validation, r->in.validation_level);
14598                 ndr_print_netr_Validation(ndr, "validation", r->out.validation);
14599                 ndr->depth--;
14600                 ndr_print_ptr(ndr, "authoritative", r->out.authoritative);
14601                 ndr->depth++;
14602                 ndr_print_uint8(ndr, "authoritative", *r->out.authoritative);
14603                 ndr->depth--;
14604                 ndr_print_ptr(ndr, "flags", r->out.flags);
14605                 ndr->depth++;
14606                 ndr_print_uint32(ndr, "flags", *r->out.flags);
14607                 ndr->depth--;
14608                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
14609                 ndr->depth--;
14610         }
14611         ndr->depth--;
14612 }
14613
14614 static enum ndr_err_code ndr_push_netr_NETRSERVERGETTRUSTINFO(struct ndr_push *ndr, int flags, const struct netr_NETRSERVERGETTRUSTINFO *r)
14615 {
14616         if (flags & NDR_IN) {
14617         }
14618         if (flags & NDR_OUT) {
14619                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
14620         }
14621         return NDR_ERR_SUCCESS;
14622 }
14623
14624 static enum ndr_err_code ndr_pull_netr_NETRSERVERGETTRUSTINFO(struct ndr_pull *ndr, int flags, struct netr_NETRSERVERGETTRUSTINFO *r)
14625 {
14626         if (flags & NDR_IN) {
14627         }
14628         if (flags & NDR_OUT) {
14629                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
14630         }
14631         return NDR_ERR_SUCCESS;
14632 }
14633
14634 _PUBLIC_ void ndr_print_netr_NETRSERVERGETTRUSTINFO(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRSERVERGETTRUSTINFO *r)
14635 {
14636         ndr_print_struct(ndr, name, "netr_NETRSERVERGETTRUSTINFO");
14637         ndr->depth++;
14638         if (flags & NDR_SET_VALUES) {
14639                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
14640         }
14641         if (flags & NDR_IN) {
14642                 ndr_print_struct(ndr, "in", "netr_NETRSERVERGETTRUSTINFO");
14643                 ndr->depth++;
14644                 ndr->depth--;
14645         }
14646         if (flags & NDR_OUT) {
14647                 ndr_print_struct(ndr, "out", "netr_NETRSERVERGETTRUSTINFO");
14648                 ndr->depth++;
14649                 ndr_print_WERROR(ndr, "result", r->out.result);
14650                 ndr->depth--;
14651         }
14652         ndr->depth--;
14653 }
14654
14655 static const struct ndr_interface_call netlogon_calls[] = {
14656         {
14657                 "netr_LogonUasLogon",
14658                 sizeof(struct netr_LogonUasLogon),
14659                 (ndr_push_flags_fn_t) ndr_push_netr_LogonUasLogon,
14660                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonUasLogon,
14661                 (ndr_print_function_t) ndr_print_netr_LogonUasLogon,
14662                 false,
14663         },
14664         {
14665                 "netr_LogonUasLogoff",
14666                 sizeof(struct netr_LogonUasLogoff),
14667                 (ndr_push_flags_fn_t) ndr_push_netr_LogonUasLogoff,
14668                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonUasLogoff,
14669                 (ndr_print_function_t) ndr_print_netr_LogonUasLogoff,
14670                 false,
14671         },
14672         {
14673                 "netr_LogonSamLogon",
14674                 sizeof(struct netr_LogonSamLogon),
14675                 (ndr_push_flags_fn_t) ndr_push_netr_LogonSamLogon,
14676                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonSamLogon,
14677                 (ndr_print_function_t) ndr_print_netr_LogonSamLogon,
14678                 false,
14679         },
14680         {
14681                 "netr_LogonSamLogoff",
14682                 sizeof(struct netr_LogonSamLogoff),
14683                 (ndr_push_flags_fn_t) ndr_push_netr_LogonSamLogoff,
14684                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonSamLogoff,
14685                 (ndr_print_function_t) ndr_print_netr_LogonSamLogoff,
14686                 false,
14687         },
14688         {
14689                 "netr_ServerReqChallenge",
14690                 sizeof(struct netr_ServerReqChallenge),
14691                 (ndr_push_flags_fn_t) ndr_push_netr_ServerReqChallenge,
14692                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerReqChallenge,
14693                 (ndr_print_function_t) ndr_print_netr_ServerReqChallenge,
14694                 false,
14695         },
14696         {
14697                 "netr_ServerAuthenticate",
14698                 sizeof(struct netr_ServerAuthenticate),
14699                 (ndr_push_flags_fn_t) ndr_push_netr_ServerAuthenticate,
14700                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerAuthenticate,
14701                 (ndr_print_function_t) ndr_print_netr_ServerAuthenticate,
14702                 false,
14703         },
14704         {
14705                 "netr_ServerPasswordSet",
14706                 sizeof(struct netr_ServerPasswordSet),
14707                 (ndr_push_flags_fn_t) ndr_push_netr_ServerPasswordSet,
14708                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerPasswordSet,
14709                 (ndr_print_function_t) ndr_print_netr_ServerPasswordSet,
14710                 false,
14711         },
14712         {
14713                 "netr_DatabaseDeltas",
14714                 sizeof(struct netr_DatabaseDeltas),
14715                 (ndr_push_flags_fn_t) ndr_push_netr_DatabaseDeltas,
14716                 (ndr_pull_flags_fn_t) ndr_pull_netr_DatabaseDeltas,
14717                 (ndr_print_function_t) ndr_print_netr_DatabaseDeltas,
14718                 false,
14719         },
14720         {
14721                 "netr_DatabaseSync",
14722                 sizeof(struct netr_DatabaseSync),
14723                 (ndr_push_flags_fn_t) ndr_push_netr_DatabaseSync,
14724                 (ndr_pull_flags_fn_t) ndr_pull_netr_DatabaseSync,
14725                 (ndr_print_function_t) ndr_print_netr_DatabaseSync,
14726                 false,
14727         },
14728         {
14729                 "netr_AccountDeltas",
14730                 sizeof(struct netr_AccountDeltas),
14731                 (ndr_push_flags_fn_t) ndr_push_netr_AccountDeltas,
14732                 (ndr_pull_flags_fn_t) ndr_pull_netr_AccountDeltas,
14733                 (ndr_print_function_t) ndr_print_netr_AccountDeltas,
14734                 false,
14735         },
14736         {
14737                 "netr_AccountSync",
14738                 sizeof(struct netr_AccountSync),
14739                 (ndr_push_flags_fn_t) ndr_push_netr_AccountSync,
14740                 (ndr_pull_flags_fn_t) ndr_pull_netr_AccountSync,
14741                 (ndr_print_function_t) ndr_print_netr_AccountSync,
14742                 false,
14743         },
14744         {
14745                 "netr_GetDcName",
14746                 sizeof(struct netr_GetDcName),
14747                 (ndr_push_flags_fn_t) ndr_push_netr_GetDcName,
14748                 (ndr_pull_flags_fn_t) ndr_pull_netr_GetDcName,
14749                 (ndr_print_function_t) ndr_print_netr_GetDcName,
14750                 false,
14751         },
14752         {
14753                 "netr_LogonControl",
14754                 sizeof(struct netr_LogonControl),
14755                 (ndr_push_flags_fn_t) ndr_push_netr_LogonControl,
14756                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonControl,
14757                 (ndr_print_function_t) ndr_print_netr_LogonControl,
14758                 false,
14759         },
14760         {
14761                 "netr_GetAnyDCName",
14762                 sizeof(struct netr_GetAnyDCName),
14763                 (ndr_push_flags_fn_t) ndr_push_netr_GetAnyDCName,
14764                 (ndr_pull_flags_fn_t) ndr_pull_netr_GetAnyDCName,
14765                 (ndr_print_function_t) ndr_print_netr_GetAnyDCName,
14766                 false,
14767         },
14768         {
14769                 "netr_LogonControl2",
14770                 sizeof(struct netr_LogonControl2),
14771                 (ndr_push_flags_fn_t) ndr_push_netr_LogonControl2,
14772                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonControl2,
14773                 (ndr_print_function_t) ndr_print_netr_LogonControl2,
14774                 false,
14775         },
14776         {
14777                 "netr_ServerAuthenticate2",
14778                 sizeof(struct netr_ServerAuthenticate2),
14779                 (ndr_push_flags_fn_t) ndr_push_netr_ServerAuthenticate2,
14780                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerAuthenticate2,
14781                 (ndr_print_function_t) ndr_print_netr_ServerAuthenticate2,
14782                 false,
14783         },
14784         {
14785                 "netr_DatabaseSync2",
14786                 sizeof(struct netr_DatabaseSync2),
14787                 (ndr_push_flags_fn_t) ndr_push_netr_DatabaseSync2,
14788                 (ndr_pull_flags_fn_t) ndr_pull_netr_DatabaseSync2,
14789                 (ndr_print_function_t) ndr_print_netr_DatabaseSync2,
14790                 false,
14791         },
14792         {
14793                 "netr_DatabaseRedo",
14794                 sizeof(struct netr_DatabaseRedo),
14795                 (ndr_push_flags_fn_t) ndr_push_netr_DatabaseRedo,
14796                 (ndr_pull_flags_fn_t) ndr_pull_netr_DatabaseRedo,
14797                 (ndr_print_function_t) ndr_print_netr_DatabaseRedo,
14798                 false,
14799         },
14800         {
14801                 "netr_LogonControl2Ex",
14802                 sizeof(struct netr_LogonControl2Ex),
14803                 (ndr_push_flags_fn_t) ndr_push_netr_LogonControl2Ex,
14804                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonControl2Ex,
14805                 (ndr_print_function_t) ndr_print_netr_LogonControl2Ex,
14806                 false,
14807         },
14808         {
14809                 "netr_NetrEnumerateTrustedDomains",
14810                 sizeof(struct netr_NetrEnumerateTrustedDomains),
14811                 (ndr_push_flags_fn_t) ndr_push_netr_NetrEnumerateTrustedDomains,
14812                 (ndr_pull_flags_fn_t) ndr_pull_netr_NetrEnumerateTrustedDomains,
14813                 (ndr_print_function_t) ndr_print_netr_NetrEnumerateTrustedDomains,
14814                 false,
14815         },
14816         {
14817                 "netr_DsRGetDCName",
14818                 sizeof(struct netr_DsRGetDCName),
14819                 (ndr_push_flags_fn_t) ndr_push_netr_DsRGetDCName,
14820                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRGetDCName,
14821                 (ndr_print_function_t) ndr_print_netr_DsRGetDCName,
14822                 false,
14823         },
14824         {
14825                 "netr_NETRLOGONDUMMYROUTINE1",
14826                 sizeof(struct netr_NETRLOGONDUMMYROUTINE1),
14827                 (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONDUMMYROUTINE1,
14828                 (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONDUMMYROUTINE1,
14829                 (ndr_print_function_t) ndr_print_netr_NETRLOGONDUMMYROUTINE1,
14830                 false,
14831         },
14832         {
14833                 "netr_NETRLOGONSETSERVICEBITS",
14834                 sizeof(struct netr_NETRLOGONSETSERVICEBITS),
14835                 (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONSETSERVICEBITS,
14836                 (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONSETSERVICEBITS,
14837                 (ndr_print_function_t) ndr_print_netr_NETRLOGONSETSERVICEBITS,
14838                 false,
14839         },
14840         {
14841                 "netr_LogonGetTrustRid",
14842                 sizeof(struct netr_LogonGetTrustRid),
14843                 (ndr_push_flags_fn_t) ndr_push_netr_LogonGetTrustRid,
14844                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonGetTrustRid,
14845                 (ndr_print_function_t) ndr_print_netr_LogonGetTrustRid,
14846                 false,
14847         },
14848         {
14849                 "netr_NETRLOGONCOMPUTESERVERDIGEST",
14850                 sizeof(struct netr_NETRLOGONCOMPUTESERVERDIGEST),
14851                 (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONCOMPUTESERVERDIGEST,
14852                 (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONCOMPUTESERVERDIGEST,
14853                 (ndr_print_function_t) ndr_print_netr_NETRLOGONCOMPUTESERVERDIGEST,
14854                 false,
14855         },
14856         {
14857                 "netr_NETRLOGONCOMPUTECLIENTDIGEST",
14858                 sizeof(struct netr_NETRLOGONCOMPUTECLIENTDIGEST),
14859                 (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONCOMPUTECLIENTDIGEST,
14860                 (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONCOMPUTECLIENTDIGEST,
14861                 (ndr_print_function_t) ndr_print_netr_NETRLOGONCOMPUTECLIENTDIGEST,
14862                 false,
14863         },
14864         {
14865                 "netr_ServerAuthenticate3",
14866                 sizeof(struct netr_ServerAuthenticate3),
14867                 (ndr_push_flags_fn_t) ndr_push_netr_ServerAuthenticate3,
14868                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerAuthenticate3,
14869                 (ndr_print_function_t) ndr_print_netr_ServerAuthenticate3,
14870                 false,
14871         },
14872         {
14873                 "netr_DsRGetDCNameEx",
14874                 sizeof(struct netr_DsRGetDCNameEx),
14875                 (ndr_push_flags_fn_t) ndr_push_netr_DsRGetDCNameEx,
14876                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRGetDCNameEx,
14877                 (ndr_print_function_t) ndr_print_netr_DsRGetDCNameEx,
14878                 false,
14879         },
14880         {
14881                 "netr_DsRGetSiteName",
14882                 sizeof(struct netr_DsRGetSiteName),
14883                 (ndr_push_flags_fn_t) ndr_push_netr_DsRGetSiteName,
14884                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRGetSiteName,
14885                 (ndr_print_function_t) ndr_print_netr_DsRGetSiteName,
14886                 false,
14887         },
14888         {
14889                 "netr_LogonGetDomainInfo",
14890                 sizeof(struct netr_LogonGetDomainInfo),
14891                 (ndr_push_flags_fn_t) ndr_push_netr_LogonGetDomainInfo,
14892                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonGetDomainInfo,
14893                 (ndr_print_function_t) ndr_print_netr_LogonGetDomainInfo,
14894                 false,
14895         },
14896         {
14897                 "netr_ServerPasswordSet2",
14898                 sizeof(struct netr_ServerPasswordSet2),
14899                 (ndr_push_flags_fn_t) ndr_push_netr_ServerPasswordSet2,
14900                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerPasswordSet2,
14901                 (ndr_print_function_t) ndr_print_netr_ServerPasswordSet2,
14902                 false,
14903         },
14904         {
14905                 "netr_ServerPasswordGet",
14906                 sizeof(struct netr_ServerPasswordGet),
14907                 (ndr_push_flags_fn_t) ndr_push_netr_ServerPasswordGet,
14908                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerPasswordGet,
14909                 (ndr_print_function_t) ndr_print_netr_ServerPasswordGet,
14910                 false,
14911         },
14912         {
14913                 "netr_NETRLOGONSENDTOSAM",
14914                 sizeof(struct netr_NETRLOGONSENDTOSAM),
14915                 (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONSENDTOSAM,
14916                 (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONSENDTOSAM,
14917                 (ndr_print_function_t) ndr_print_netr_NETRLOGONSENDTOSAM,
14918                 false,
14919         },
14920         {
14921                 "netr_DsRAddressToSitenamesW",
14922                 sizeof(struct netr_DsRAddressToSitenamesW),
14923                 (ndr_push_flags_fn_t) ndr_push_netr_DsRAddressToSitenamesW,
14924                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRAddressToSitenamesW,
14925                 (ndr_print_function_t) ndr_print_netr_DsRAddressToSitenamesW,
14926                 false,
14927         },
14928         {
14929                 "netr_DsRGetDCNameEx2",
14930                 sizeof(struct netr_DsRGetDCNameEx2),
14931                 (ndr_push_flags_fn_t) ndr_push_netr_DsRGetDCNameEx2,
14932                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRGetDCNameEx2,
14933                 (ndr_print_function_t) ndr_print_netr_DsRGetDCNameEx2,
14934                 false,
14935         },
14936         {
14937                 "netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN",
14938                 sizeof(struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN),
14939                 (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN,
14940                 (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN,
14941                 (ndr_print_function_t) ndr_print_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN,
14942                 false,
14943         },
14944         {
14945                 "netr_NetrEnumerateTrustedDomainsEx",
14946                 sizeof(struct netr_NetrEnumerateTrustedDomainsEx),
14947                 (ndr_push_flags_fn_t) ndr_push_netr_NetrEnumerateTrustedDomainsEx,
14948                 (ndr_pull_flags_fn_t) ndr_pull_netr_NetrEnumerateTrustedDomainsEx,
14949                 (ndr_print_function_t) ndr_print_netr_NetrEnumerateTrustedDomainsEx,
14950                 false,
14951         },
14952         {
14953                 "netr_DsRAddressToSitenamesExW",
14954                 sizeof(struct netr_DsRAddressToSitenamesExW),
14955                 (ndr_push_flags_fn_t) ndr_push_netr_DsRAddressToSitenamesExW,
14956                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRAddressToSitenamesExW,
14957                 (ndr_print_function_t) ndr_print_netr_DsRAddressToSitenamesExW,
14958                 false,
14959         },
14960         {
14961                 "netr_DsrGetDcSiteCoverageW",
14962                 sizeof(struct netr_DsrGetDcSiteCoverageW),
14963                 (ndr_push_flags_fn_t) ndr_push_netr_DsrGetDcSiteCoverageW,
14964                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsrGetDcSiteCoverageW,
14965                 (ndr_print_function_t) ndr_print_netr_DsrGetDcSiteCoverageW,
14966                 false,
14967         },
14968         {
14969                 "netr_LogonSamLogonEx",
14970                 sizeof(struct netr_LogonSamLogonEx),
14971                 (ndr_push_flags_fn_t) ndr_push_netr_LogonSamLogonEx,
14972                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonSamLogonEx,
14973                 (ndr_print_function_t) ndr_print_netr_LogonSamLogonEx,
14974                 false,
14975         },
14976         {
14977                 "netr_DsrEnumerateDomainTrusts",
14978                 sizeof(struct netr_DsrEnumerateDomainTrusts),
14979                 (ndr_push_flags_fn_t) ndr_push_netr_DsrEnumerateDomainTrusts,
14980                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsrEnumerateDomainTrusts,
14981                 (ndr_print_function_t) ndr_print_netr_DsrEnumerateDomainTrusts,
14982                 false,
14983         },
14984         {
14985                 "netr_DsrDeregisterDNSHostRecords",
14986                 sizeof(struct netr_DsrDeregisterDNSHostRecords),
14987                 (ndr_push_flags_fn_t) ndr_push_netr_DsrDeregisterDNSHostRecords,
14988                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsrDeregisterDNSHostRecords,
14989                 (ndr_print_function_t) ndr_print_netr_DsrDeregisterDNSHostRecords,
14990                 false,
14991         },
14992         {
14993                 "netr_ServerTrustPasswordsGet",
14994                 sizeof(struct netr_ServerTrustPasswordsGet),
14995                 (ndr_push_flags_fn_t) ndr_push_netr_ServerTrustPasswordsGet,
14996                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerTrustPasswordsGet,
14997                 (ndr_print_function_t) ndr_print_netr_ServerTrustPasswordsGet,
14998                 false,
14999         },
15000         {
15001                 "netr_DsRGetForestTrustInformation",
15002                 sizeof(struct netr_DsRGetForestTrustInformation),
15003                 (ndr_push_flags_fn_t) ndr_push_netr_DsRGetForestTrustInformation,
15004                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRGetForestTrustInformation,
15005                 (ndr_print_function_t) ndr_print_netr_DsRGetForestTrustInformation,
15006                 false,
15007         },
15008         {
15009                 "netr_GetForestTrustInformation",
15010                 sizeof(struct netr_GetForestTrustInformation),
15011                 (ndr_push_flags_fn_t) ndr_push_netr_GetForestTrustInformation,
15012                 (ndr_pull_flags_fn_t) ndr_pull_netr_GetForestTrustInformation,
15013                 (ndr_print_function_t) ndr_print_netr_GetForestTrustInformation,
15014                 false,
15015         },
15016         {
15017                 "netr_LogonSamLogonWithFlags",
15018                 sizeof(struct netr_LogonSamLogonWithFlags),
15019                 (ndr_push_flags_fn_t) ndr_push_netr_LogonSamLogonWithFlags,
15020                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonSamLogonWithFlags,
15021                 (ndr_print_function_t) ndr_print_netr_LogonSamLogonWithFlags,
15022                 false,
15023         },
15024         {
15025                 "netr_NETRSERVERGETTRUSTINFO",
15026                 sizeof(struct netr_NETRSERVERGETTRUSTINFO),
15027                 (ndr_push_flags_fn_t) ndr_push_netr_NETRSERVERGETTRUSTINFO,
15028                 (ndr_pull_flags_fn_t) ndr_pull_netr_NETRSERVERGETTRUSTINFO,
15029                 (ndr_print_function_t) ndr_print_netr_NETRSERVERGETTRUSTINFO,
15030                 false,
15031         },
15032         { NULL, 0, NULL, NULL, NULL, false }
15033 };
15034
15035 static const char * const netlogon_endpoint_strings[] = {
15036         "ncacn_np:[\\pipe\\netlogon]", 
15037         "ncacn_ip_tcp:", 
15038         "ncalrpc:", 
15039 };
15040
15041 static const struct ndr_interface_string_array netlogon_endpoints = {
15042         .count  = 3,
15043         .names  = netlogon_endpoint_strings
15044 };
15045
15046 static const char * const netlogon_authservice_strings[] = {
15047         "host", 
15048 };
15049
15050 static const struct ndr_interface_string_array netlogon_authservices = {
15051         .count  = 3,
15052         .names  = netlogon_authservice_strings
15053 };
15054
15055
15056 const struct ndr_interface_table ndr_table_netlogon = {
15057         .name           = "netlogon",
15058         .syntax_id      = {
15059                 {0x12345678,0x1234,0xabcd,{0xef,0x00},{0x01,0x23,0x45,0x67,0xcf,0xfb}},
15060                 NDR_NETLOGON_VERSION
15061         },
15062         .helpstring     = NDR_NETLOGON_HELPSTRING,
15063         .num_calls      = 47,
15064         .calls          = netlogon_calls,
15065         .endpoints      = &netlogon_endpoints,
15066         .authservices   = &netlogon_authservices
15067 };
15068