netlogon: give netlogon w7/w2k8r2 AES negotiate flag proper name (see bug #6099 for...
[metze/samba/wip.git] / 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_misc.h"
7 #include "librpc/gen_ndr/ndr_lsa.h"
8 #include "librpc/gen_ndr/ndr_samr.h"
9 #include "librpc/gen_ndr/ndr_security.h"
10 #include "librpc/gen_ndr/ndr_nbt.h"
11 static enum ndr_err_code ndr_push_netr_UasInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_UasInfo *r)
12 {
13         if (ndr_flags & NDR_SCALARS) {
14                 NDR_CHECK(ndr_push_align(ndr, 4));
15                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->account_name));
16                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->priv));
17                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->auth_flags));
18                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->logon_count));
19                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->bad_pw_count));
20                 NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->last_logon));
21                 NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->last_logoff));
22                 NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->logoff_time));
23                 NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->kickoff_time));
24                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->password_age));
25                 NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->pw_can_change));
26                 NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->pw_must_change));
27                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->computer));
28                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
29                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->script_path));
30                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown));
31         }
32         if (ndr_flags & NDR_BUFFERS) {
33                 if (r->account_name) {
34                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->account_name, CH_UTF16)));
35                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
36                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->account_name, CH_UTF16)));
37                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->account_name, ndr_charset_length(r->account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
38                 }
39                 if (r->computer) {
40                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->computer, CH_UTF16)));
41                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
42                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->computer, CH_UTF16)));
43                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->computer, ndr_charset_length(r->computer, CH_UTF16), sizeof(uint16_t), CH_UTF16));
44                 }
45                 if (r->domain) {
46                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
47                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
48                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
49                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain, ndr_charset_length(r->domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
50                 }
51                 if (r->script_path) {
52                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->script_path, CH_UTF16)));
53                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
54                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->script_path, CH_UTF16)));
55                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->script_path, ndr_charset_length(r->script_path, CH_UTF16), sizeof(uint16_t), CH_UTF16));
56                 }
57         }
58         return NDR_ERR_SUCCESS;
59 }
60
61 static enum ndr_err_code ndr_pull_netr_UasInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_UasInfo *r)
62 {
63         uint32_t _ptr_account_name;
64         TALLOC_CTX *_mem_save_account_name_0;
65         uint32_t _ptr_computer;
66         TALLOC_CTX *_mem_save_computer_0;
67         uint32_t _ptr_domain;
68         TALLOC_CTX *_mem_save_domain_0;
69         uint32_t _ptr_script_path;
70         TALLOC_CTX *_mem_save_script_path_0;
71         if (ndr_flags & NDR_SCALARS) {
72                 NDR_CHECK(ndr_pull_align(ndr, 4));
73                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_account_name));
74                 if (_ptr_account_name) {
75                         NDR_PULL_ALLOC(ndr, r->account_name);
76                 } else {
77                         r->account_name = NULL;
78                 }
79                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->priv));
80                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->auth_flags));
81                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->logon_count));
82                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->bad_pw_count));
83                 NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->last_logon));
84                 NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->last_logoff));
85                 NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->logoff_time));
86                 NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->kickoff_time));
87                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->password_age));
88                 NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->pw_can_change));
89                 NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->pw_must_change));
90                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer));
91                 if (_ptr_computer) {
92                         NDR_PULL_ALLOC(ndr, r->computer);
93                 } else {
94                         r->computer = NULL;
95                 }
96                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
97                 if (_ptr_domain) {
98                         NDR_PULL_ALLOC(ndr, r->domain);
99                 } else {
100                         r->domain = NULL;
101                 }
102                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_script_path));
103                 if (_ptr_script_path) {
104                         NDR_PULL_ALLOC(ndr, r->script_path);
105                 } else {
106                         r->script_path = NULL;
107                 }
108                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown));
109         }
110         if (ndr_flags & NDR_BUFFERS) {
111                 if (r->account_name) {
112                         _mem_save_account_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
113                         NDR_PULL_SET_MEM_CTX(ndr, r->account_name, 0);
114                         NDR_CHECK(ndr_pull_array_size(ndr, &r->account_name));
115                         NDR_CHECK(ndr_pull_array_length(ndr, &r->account_name));
116                         if (ndr_get_array_length(ndr, &r->account_name) > ndr_get_array_size(ndr, &r->account_name)) {
117                                 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));
118                         }
119                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->account_name), sizeof(uint16_t)));
120                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->account_name, ndr_get_array_length(ndr, &r->account_name), sizeof(uint16_t), CH_UTF16));
121                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_account_name_0, 0);
122                 }
123                 if (r->computer) {
124                         _mem_save_computer_0 = NDR_PULL_GET_MEM_CTX(ndr);
125                         NDR_PULL_SET_MEM_CTX(ndr, r->computer, 0);
126                         NDR_CHECK(ndr_pull_array_size(ndr, &r->computer));
127                         NDR_CHECK(ndr_pull_array_length(ndr, &r->computer));
128                         if (ndr_get_array_length(ndr, &r->computer) > ndr_get_array_size(ndr, &r->computer)) {
129                                 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));
130                         }
131                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->computer), sizeof(uint16_t)));
132                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->computer, ndr_get_array_length(ndr, &r->computer), sizeof(uint16_t), CH_UTF16));
133                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_0, 0);
134                 }
135                 if (r->domain) {
136                         _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
137                         NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
138                         NDR_CHECK(ndr_pull_array_size(ndr, &r->domain));
139                         NDR_CHECK(ndr_pull_array_length(ndr, &r->domain));
140                         if (ndr_get_array_length(ndr, &r->domain) > ndr_get_array_size(ndr, &r->domain)) {
141                                 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));
142                         }
143                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t)));
144                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t), CH_UTF16));
145                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
146                 }
147                 if (r->script_path) {
148                         _mem_save_script_path_0 = NDR_PULL_GET_MEM_CTX(ndr);
149                         NDR_PULL_SET_MEM_CTX(ndr, r->script_path, 0);
150                         NDR_CHECK(ndr_pull_array_size(ndr, &r->script_path));
151                         NDR_CHECK(ndr_pull_array_length(ndr, &r->script_path));
152                         if (ndr_get_array_length(ndr, &r->script_path) > ndr_get_array_size(ndr, &r->script_path)) {
153                                 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));
154                         }
155                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->script_path), sizeof(uint16_t)));
156                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->script_path, ndr_get_array_length(ndr, &r->script_path), sizeof(uint16_t), CH_UTF16));
157                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_script_path_0, 0);
158                 }
159         }
160         return NDR_ERR_SUCCESS;
161 }
162
163 _PUBLIC_ void ndr_print_netr_UasInfo(struct ndr_print *ndr, const char *name, const struct netr_UasInfo *r)
164 {
165         ndr_print_struct(ndr, name, "netr_UasInfo");
166         ndr->depth++;
167         ndr_print_ptr(ndr, "account_name", r->account_name);
168         ndr->depth++;
169         if (r->account_name) {
170                 ndr_print_string(ndr, "account_name", r->account_name);
171         }
172         ndr->depth--;
173         ndr_print_uint32(ndr, "priv", r->priv);
174         ndr_print_uint32(ndr, "auth_flags", r->auth_flags);
175         ndr_print_uint32(ndr, "logon_count", r->logon_count);
176         ndr_print_uint32(ndr, "bad_pw_count", r->bad_pw_count);
177         ndr_print_time_t(ndr, "last_logon", r->last_logon);
178         ndr_print_time_t(ndr, "last_logoff", r->last_logoff);
179         ndr_print_time_t(ndr, "logoff_time", r->logoff_time);
180         ndr_print_time_t(ndr, "kickoff_time", r->kickoff_time);
181         ndr_print_uint32(ndr, "password_age", r->password_age);
182         ndr_print_time_t(ndr, "pw_can_change", r->pw_can_change);
183         ndr_print_time_t(ndr, "pw_must_change", r->pw_must_change);
184         ndr_print_ptr(ndr, "computer", r->computer);
185         ndr->depth++;
186         if (r->computer) {
187                 ndr_print_string(ndr, "computer", r->computer);
188         }
189         ndr->depth--;
190         ndr_print_ptr(ndr, "domain", r->domain);
191         ndr->depth++;
192         if (r->domain) {
193                 ndr_print_string(ndr, "domain", r->domain);
194         }
195         ndr->depth--;
196         ndr_print_ptr(ndr, "script_path", r->script_path);
197         ndr->depth++;
198         if (r->script_path) {
199                 ndr_print_string(ndr, "script_path", r->script_path);
200         }
201         ndr->depth--;
202         ndr_print_uint32(ndr, "unknown", r->unknown);
203         ndr->depth--;
204 }
205
206 static enum ndr_err_code ndr_push_netr_UasLogoffInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_UasLogoffInfo *r)
207 {
208         if (ndr_flags & NDR_SCALARS) {
209                 NDR_CHECK(ndr_push_align(ndr, 4));
210                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->duration));
211                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->logon_count));
212         }
213         if (ndr_flags & NDR_BUFFERS) {
214         }
215         return NDR_ERR_SUCCESS;
216 }
217
218 static enum ndr_err_code ndr_pull_netr_UasLogoffInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_UasLogoffInfo *r)
219 {
220         if (ndr_flags & NDR_SCALARS) {
221                 NDR_CHECK(ndr_pull_align(ndr, 4));
222                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->duration));
223                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->logon_count));
224         }
225         if (ndr_flags & NDR_BUFFERS) {
226         }
227         return NDR_ERR_SUCCESS;
228 }
229
230 _PUBLIC_ void ndr_print_netr_UasLogoffInfo(struct ndr_print *ndr, const char *name, const struct netr_UasLogoffInfo *r)
231 {
232         ndr_print_struct(ndr, name, "netr_UasLogoffInfo");
233         ndr->depth++;
234         ndr_print_uint32(ndr, "duration", r->duration);
235         ndr_print_uint16(ndr, "logon_count", r->logon_count);
236         ndr->depth--;
237 }
238
239 _PUBLIC_ enum ndr_err_code ndr_push_netr_AcctLockStr(struct ndr_push *ndr, int ndr_flags, const struct netr_AcctLockStr *r)
240 {
241         if (ndr_flags & NDR_SCALARS) {
242                 NDR_CHECK(ndr_push_align(ndr, 4));
243                 NDR_CHECK(ndr_push_dlong(ndr, NDR_SCALARS, r->lockout_duration));
244                 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->reset_count));
245                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->bad_attempt_lockout));
246                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy));
247         }
248         if (ndr_flags & NDR_BUFFERS) {
249         }
250         return NDR_ERR_SUCCESS;
251 }
252
253 _PUBLIC_ enum ndr_err_code ndr_pull_netr_AcctLockStr(struct ndr_pull *ndr, int ndr_flags, struct netr_AcctLockStr *r)
254 {
255         if (ndr_flags & NDR_SCALARS) {
256                 NDR_CHECK(ndr_pull_align(ndr, 4));
257                 NDR_CHECK(ndr_pull_dlong(ndr, NDR_SCALARS, &r->lockout_duration));
258                 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->reset_count));
259                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->bad_attempt_lockout));
260                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy));
261         }
262         if (ndr_flags & NDR_BUFFERS) {
263         }
264         return NDR_ERR_SUCCESS;
265 }
266
267 _PUBLIC_ void ndr_print_netr_AcctLockStr(struct ndr_print *ndr, const char *name, const struct netr_AcctLockStr *r)
268 {
269         ndr_print_struct(ndr, name, "netr_AcctLockStr");
270         ndr->depth++;
271         ndr_print_dlong(ndr, "lockout_duration", r->lockout_duration);
272         ndr_print_udlong(ndr, "reset_count", r->reset_count);
273         ndr_print_uint32(ndr, "bad_attempt_lockout", r->bad_attempt_lockout);
274         ndr_print_uint32(ndr, "dummy", r->dummy);
275         ndr->depth--;
276 }
277
278 _PUBLIC_ enum ndr_err_code ndr_push_netr_LogonParameterControl(struct ndr_push *ndr, int ndr_flags, uint32_t r)
279 {
280         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
281         return NDR_ERR_SUCCESS;
282 }
283
284 _PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonParameterControl(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
285 {
286         uint32_t v;
287         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
288         *r = v;
289         return NDR_ERR_SUCCESS;
290 }
291
292 _PUBLIC_ void ndr_print_netr_LogonParameterControl(struct ndr_print *ndr, const char *name, uint32_t r)
293 {
294         ndr_print_uint32(ndr, name, r);
295         ndr->depth++;
296         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_CLEARTEXT_PASSWORD_ALLOWED", MSV1_0_CLEARTEXT_PASSWORD_ALLOWED, r);
297         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_UPDATE_LOGON_STATISTICS", MSV1_0_UPDATE_LOGON_STATISTICS, r);
298         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_RETURN_USER_PARAMETERS", MSV1_0_RETURN_USER_PARAMETERS, r);
299         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_DONT_TRY_GUEST_ACCOUNT", MSV1_0_DONT_TRY_GUEST_ACCOUNT, r);
300         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT", MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT, r);
301         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_RETURN_PASSWORD_EXPIRY", MSV1_0_RETURN_PASSWORD_EXPIRY, r);
302         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_USE_CLIENT_CHALLENGE", MSV1_0_USE_CLIENT_CHALLENGE, r);
303         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_TRY_GUEST_ACCOUNT_ONLY", MSV1_0_TRY_GUEST_ACCOUNT_ONLY, r);
304         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_RETURN_PROFILE_PATH", MSV1_0_RETURN_PROFILE_PATH, r);
305         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY", MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY, r);
306         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT", MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT, r);
307         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_DISABLE_PERSONAL_FALLBACK", MSV1_0_DISABLE_PERSONAL_FALLBACK, r);
308         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_ALLOW_FORCE_GUEST", MSV1_0_ALLOW_FORCE_GUEST, r);
309         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_CLEARTEXT_PASSWORD_SUPPLIED", MSV1_0_CLEARTEXT_PASSWORD_SUPPLIED, r);
310         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_USE_DOMAIN_FOR_ROUTING_ONLY", MSV1_0_USE_DOMAIN_FOR_ROUTING_ONLY, r);
311         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_ALLOW_MSVCHAPV2", MSV1_0_ALLOW_MSVCHAPV2, r);
312         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_S4U2SELF", MSV1_0_S4U2SELF, r);
313         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_CHECK_LOGONHOURS_FOR_S4U", MSV1_0_CHECK_LOGONHOURS_FOR_S4U, r);
314         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "MSV1_0_SUBAUTHENTICATION_DLL_EX", MSV1_0_SUBAUTHENTICATION_DLL_EX, r);
315         ndr->depth--;
316 }
317
318 static enum ndr_err_code ndr_push_netr_IdentityInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_IdentityInfo *r)
319 {
320         if (ndr_flags & NDR_SCALARS) {
321                 NDR_CHECK(ndr_push_align(ndr, 4));
322                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
323                 NDR_CHECK(ndr_push_netr_LogonParameterControl(ndr, NDR_SCALARS, r->parameter_control));
324                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->logon_id_low));
325                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->logon_id_high));
326                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->account_name));
327                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->workstation));
328         }
329         if (ndr_flags & NDR_BUFFERS) {
330                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
331                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->account_name));
332                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->workstation));
333         }
334         return NDR_ERR_SUCCESS;
335 }
336
337 static enum ndr_err_code ndr_pull_netr_IdentityInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_IdentityInfo *r)
338 {
339         if (ndr_flags & NDR_SCALARS) {
340                 NDR_CHECK(ndr_pull_align(ndr, 4));
341                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
342                 NDR_CHECK(ndr_pull_netr_LogonParameterControl(ndr, NDR_SCALARS, &r->parameter_control));
343                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->logon_id_low));
344                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->logon_id_high));
345                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->account_name));
346                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->workstation));
347         }
348         if (ndr_flags & NDR_BUFFERS) {
349                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
350                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->account_name));
351                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->workstation));
352         }
353         return NDR_ERR_SUCCESS;
354 }
355
356 _PUBLIC_ void ndr_print_netr_IdentityInfo(struct ndr_print *ndr, const char *name, const struct netr_IdentityInfo *r)
357 {
358         ndr_print_struct(ndr, name, "netr_IdentityInfo");
359         ndr->depth++;
360         ndr_print_lsa_String(ndr, "domain_name", &r->domain_name);
361         ndr_print_netr_LogonParameterControl(ndr, "parameter_control", r->parameter_control);
362         ndr_print_uint32(ndr, "logon_id_low", r->logon_id_low);
363         ndr_print_uint32(ndr, "logon_id_high", r->logon_id_high);
364         ndr_print_lsa_String(ndr, "account_name", &r->account_name);
365         ndr_print_lsa_String(ndr, "workstation", &r->workstation);
366         ndr->depth--;
367 }
368
369 static enum ndr_err_code ndr_push_netr_PasswordInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_PasswordInfo *r)
370 {
371         if (ndr_flags & NDR_SCALARS) {
372                 NDR_CHECK(ndr_push_align(ndr, 4));
373                 NDR_CHECK(ndr_push_netr_IdentityInfo(ndr, NDR_SCALARS, &r->identity_info));
374                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, &r->lmpassword));
375                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, &r->ntpassword));
376         }
377         if (ndr_flags & NDR_BUFFERS) {
378                 NDR_CHECK(ndr_push_netr_IdentityInfo(ndr, NDR_BUFFERS, &r->identity_info));
379         }
380         return NDR_ERR_SUCCESS;
381 }
382
383 static enum ndr_err_code ndr_pull_netr_PasswordInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_PasswordInfo *r)
384 {
385         if (ndr_flags & NDR_SCALARS) {
386                 NDR_CHECK(ndr_pull_align(ndr, 4));
387                 NDR_CHECK(ndr_pull_netr_IdentityInfo(ndr, NDR_SCALARS, &r->identity_info));
388                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, &r->lmpassword));
389                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, &r->ntpassword));
390         }
391         if (ndr_flags & NDR_BUFFERS) {
392                 NDR_CHECK(ndr_pull_netr_IdentityInfo(ndr, NDR_BUFFERS, &r->identity_info));
393         }
394         return NDR_ERR_SUCCESS;
395 }
396
397 _PUBLIC_ void ndr_print_netr_PasswordInfo(struct ndr_print *ndr, const char *name, const struct netr_PasswordInfo *r)
398 {
399         ndr_print_struct(ndr, name, "netr_PasswordInfo");
400         ndr->depth++;
401         ndr_print_netr_IdentityInfo(ndr, "identity_info", &r->identity_info);
402         ndr_print_samr_Password(ndr, "lmpassword", &r->lmpassword);
403         ndr_print_samr_Password(ndr, "ntpassword", &r->ntpassword);
404         ndr->depth--;
405 }
406
407 static enum ndr_err_code ndr_push_netr_ChallengeResponse(struct ndr_push *ndr, int ndr_flags, const struct netr_ChallengeResponse *r)
408 {
409         {
410                 uint32_t _flags_save_STRUCT = ndr->flags;
411                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
412                 if (ndr_flags & NDR_SCALARS) {
413                         NDR_CHECK(ndr_push_align(ndr, 4));
414                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
415                         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
416                         NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
417                 }
418                 if (ndr_flags & NDR_BUFFERS) {
419                         if (r->data) {
420                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
421                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
422                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
423                                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, r->length));
424                         }
425                 }
426                 ndr->flags = _flags_save_STRUCT;
427         }
428         return NDR_ERR_SUCCESS;
429 }
430
431 static enum ndr_err_code ndr_pull_netr_ChallengeResponse(struct ndr_pull *ndr, int ndr_flags, struct netr_ChallengeResponse *r)
432 {
433         uint32_t _ptr_data;
434         TALLOC_CTX *_mem_save_data_0;
435         {
436                 uint32_t _flags_save_STRUCT = ndr->flags;
437                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
438                 if (ndr_flags & NDR_SCALARS) {
439                         NDR_CHECK(ndr_pull_align(ndr, 4));
440                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
441                         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
442                         NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
443                         if (_ptr_data) {
444                                 NDR_PULL_ALLOC(ndr, r->data);
445                         } else {
446                                 r->data = NULL;
447                         }
448                 }
449                 if (ndr_flags & NDR_BUFFERS) {
450                         if (r->data) {
451                                 _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
452                                 NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
453                                 NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
454                                 NDR_CHECK(ndr_pull_array_length(ndr, &r->data));
455                                 if (ndr_get_array_length(ndr, &r->data) > ndr_get_array_size(ndr, &r->data)) {
456                                         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));
457                                 }
458                                 NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
459                                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, ndr_get_array_length(ndr, &r->data)));
460                                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
461                         }
462                         if (r->data) {
463                                 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->length));
464                         }
465                         if (r->data) {
466                                 NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->data, r->length));
467                         }
468                 }
469                 ndr->flags = _flags_save_STRUCT;
470         }
471         return NDR_ERR_SUCCESS;
472 }
473
474 _PUBLIC_ void ndr_print_netr_ChallengeResponse(struct ndr_print *ndr, const char *name, const struct netr_ChallengeResponse *r)
475 {
476         ndr_print_struct(ndr, name, "netr_ChallengeResponse");
477         {
478                 uint32_t _flags_save_STRUCT = ndr->flags;
479                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
480                 ndr->depth++;
481                 ndr_print_uint16(ndr, "length", r->length);
482                 ndr_print_uint16(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->length:r->size);
483                 ndr_print_ptr(ndr, "data", r->data);
484                 ndr->depth++;
485                 if (r->data) {
486                         ndr_print_array_uint8(ndr, "data", r->data, r->length);
487                 }
488                 ndr->depth--;
489                 ndr->depth--;
490                 ndr->flags = _flags_save_STRUCT;
491         }
492 }
493
494 static enum ndr_err_code ndr_push_netr_NetworkInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_NetworkInfo *r)
495 {
496         {
497                 uint32_t _flags_save_STRUCT = ndr->flags;
498                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
499                 if (ndr_flags & NDR_SCALARS) {
500                         NDR_CHECK(ndr_push_align(ndr, 4));
501                         NDR_CHECK(ndr_push_netr_IdentityInfo(ndr, NDR_SCALARS, &r->identity_info));
502                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->challenge, 8));
503                         NDR_CHECK(ndr_push_netr_ChallengeResponse(ndr, NDR_SCALARS, &r->nt));
504                         NDR_CHECK(ndr_push_netr_ChallengeResponse(ndr, NDR_SCALARS, &r->lm));
505                 }
506                 if (ndr_flags & NDR_BUFFERS) {
507                         NDR_CHECK(ndr_push_netr_IdentityInfo(ndr, NDR_BUFFERS, &r->identity_info));
508                         NDR_CHECK(ndr_push_netr_ChallengeResponse(ndr, NDR_BUFFERS, &r->nt));
509                         NDR_CHECK(ndr_push_netr_ChallengeResponse(ndr, NDR_BUFFERS, &r->lm));
510                 }
511                 ndr->flags = _flags_save_STRUCT;
512         }
513         return NDR_ERR_SUCCESS;
514 }
515
516 static enum ndr_err_code ndr_pull_netr_NetworkInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_NetworkInfo *r)
517 {
518         {
519                 uint32_t _flags_save_STRUCT = ndr->flags;
520                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
521                 if (ndr_flags & NDR_SCALARS) {
522                         NDR_CHECK(ndr_pull_align(ndr, 4));
523                         NDR_CHECK(ndr_pull_netr_IdentityInfo(ndr, NDR_SCALARS, &r->identity_info));
524                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->challenge, 8));
525                         NDR_CHECK(ndr_pull_netr_ChallengeResponse(ndr, NDR_SCALARS, &r->nt));
526                         NDR_CHECK(ndr_pull_netr_ChallengeResponse(ndr, NDR_SCALARS, &r->lm));
527                 }
528                 if (ndr_flags & NDR_BUFFERS) {
529                         NDR_CHECK(ndr_pull_netr_IdentityInfo(ndr, NDR_BUFFERS, &r->identity_info));
530                         NDR_CHECK(ndr_pull_netr_ChallengeResponse(ndr, NDR_BUFFERS, &r->nt));
531                         NDR_CHECK(ndr_pull_netr_ChallengeResponse(ndr, NDR_BUFFERS, &r->lm));
532                 }
533                 ndr->flags = _flags_save_STRUCT;
534         }
535         return NDR_ERR_SUCCESS;
536 }
537
538 _PUBLIC_ void ndr_print_netr_NetworkInfo(struct ndr_print *ndr, const char *name, const struct netr_NetworkInfo *r)
539 {
540         ndr_print_struct(ndr, name, "netr_NetworkInfo");
541         {
542                 uint32_t _flags_save_STRUCT = ndr->flags;
543                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
544                 ndr->depth++;
545                 ndr_print_netr_IdentityInfo(ndr, "identity_info", &r->identity_info);
546                 ndr_print_array_uint8(ndr, "challenge", r->challenge, 8);
547                 ndr_print_netr_ChallengeResponse(ndr, "nt", &r->nt);
548                 ndr_print_netr_ChallengeResponse(ndr, "lm", &r->lm);
549                 ndr->depth--;
550                 ndr->flags = _flags_save_STRUCT;
551         }
552 }
553
554 static enum ndr_err_code ndr_push_netr_GenericInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_GenericInfo *r)
555 {
556         {
557                 uint32_t _flags_save_STRUCT = ndr->flags;
558                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
559                 if (ndr_flags & NDR_SCALARS) {
560                         NDR_CHECK(ndr_push_align(ndr, 4));
561                         NDR_CHECK(ndr_push_netr_IdentityInfo(ndr, NDR_SCALARS, &r->identity_info));
562                         NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->package_name));
563                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
564                         NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
565                 }
566                 if (ndr_flags & NDR_BUFFERS) {
567                         NDR_CHECK(ndr_push_netr_IdentityInfo(ndr, NDR_BUFFERS, &r->identity_info));
568                         NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->package_name));
569                         if (r->data) {
570                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
571                                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, r->length));
572                         }
573                 }
574                 ndr->flags = _flags_save_STRUCT;
575         }
576         return NDR_ERR_SUCCESS;
577 }
578
579 static enum ndr_err_code ndr_pull_netr_GenericInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_GenericInfo *r)
580 {
581         uint32_t _ptr_data;
582         TALLOC_CTX *_mem_save_data_0;
583         {
584                 uint32_t _flags_save_STRUCT = ndr->flags;
585                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
586                 if (ndr_flags & NDR_SCALARS) {
587                         NDR_CHECK(ndr_pull_align(ndr, 4));
588                         NDR_CHECK(ndr_pull_netr_IdentityInfo(ndr, NDR_SCALARS, &r->identity_info));
589                         NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->package_name));
590                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
591                         NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
592                         if (_ptr_data) {
593                                 NDR_PULL_ALLOC(ndr, r->data);
594                         } else {
595                                 r->data = NULL;
596                         }
597                 }
598                 if (ndr_flags & NDR_BUFFERS) {
599                         NDR_CHECK(ndr_pull_netr_IdentityInfo(ndr, NDR_BUFFERS, &r->identity_info));
600                         NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->package_name));
601                         if (r->data) {
602                                 _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
603                                 NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
604                                 NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
605                                 NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
606                                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, ndr_get_array_size(ndr, &r->data)));
607                                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
608                         }
609                         if (r->data) {
610                                 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->length));
611                         }
612                 }
613                 ndr->flags = _flags_save_STRUCT;
614         }
615         return NDR_ERR_SUCCESS;
616 }
617
618 _PUBLIC_ void ndr_print_netr_GenericInfo(struct ndr_print *ndr, const char *name, const struct netr_GenericInfo *r)
619 {
620         ndr_print_struct(ndr, name, "netr_GenericInfo");
621         {
622                 uint32_t _flags_save_STRUCT = ndr->flags;
623                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
624                 ndr->depth++;
625                 ndr_print_netr_IdentityInfo(ndr, "identity_info", &r->identity_info);
626                 ndr_print_lsa_String(ndr, "package_name", &r->package_name);
627                 ndr_print_uint32(ndr, "length", r->length);
628                 ndr_print_ptr(ndr, "data", r->data);
629                 ndr->depth++;
630                 if (r->data) {
631                         ndr_print_array_uint8(ndr, "data", r->data, r->length);
632                 }
633                 ndr->depth--;
634                 ndr->depth--;
635                 ndr->flags = _flags_save_STRUCT;
636         }
637 }
638
639 static enum ndr_err_code ndr_push_netr_LogonInfoClass(struct ndr_push *ndr, int ndr_flags, enum netr_LogonInfoClass r)
640 {
641         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
642         return NDR_ERR_SUCCESS;
643 }
644
645 static enum ndr_err_code ndr_pull_netr_LogonInfoClass(struct ndr_pull *ndr, int ndr_flags, enum netr_LogonInfoClass *r)
646 {
647         uint16_t v;
648         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
649         *r = v;
650         return NDR_ERR_SUCCESS;
651 }
652
653 _PUBLIC_ void ndr_print_netr_LogonInfoClass(struct ndr_print *ndr, const char *name, enum netr_LogonInfoClass r)
654 {
655         const char *val = NULL;
656
657         switch (r) {
658                 case NetlogonInteractiveInformation: val = "NetlogonInteractiveInformation"; break;
659                 case NetlogonNetworkInformation: val = "NetlogonNetworkInformation"; break;
660                 case NetlogonServiceInformation: val = "NetlogonServiceInformation"; break;
661                 case NetlogonGenericInformation: val = "NetlogonGenericInformation"; break;
662                 case NetlogonInteractiveTransitiveInformation: val = "NetlogonInteractiveTransitiveInformation"; break;
663                 case NetlogonNetworkTransitiveInformation: val = "NetlogonNetworkTransitiveInformation"; break;
664                 case NetlogonServiceTransitiveInformation: val = "NetlogonServiceTransitiveInformation"; break;
665         }
666         ndr_print_enum(ndr, name, "ENUM", val, r);
667 }
668
669 _PUBLIC_ enum ndr_err_code ndr_push_netr_LogonLevel(struct ndr_push *ndr, int ndr_flags, const union netr_LogonLevel *r)
670 {
671         if (ndr_flags & NDR_SCALARS) {
672                 int level = ndr_push_get_switch_value(ndr, r);
673                 NDR_CHECK(ndr_push_netr_LogonInfoClass(ndr, NDR_SCALARS, level));
674                 switch (level) {
675                         case NetlogonInteractiveInformation: {
676                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->password));
677                         break; }
678
679                         case NetlogonNetworkInformation: {
680                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->network));
681                         break; }
682
683                         case NetlogonServiceInformation: {
684                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->password));
685                         break; }
686
687                         case NetlogonGenericInformation: {
688                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->generic));
689                         break; }
690
691                         case NetlogonInteractiveTransitiveInformation: {
692                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->password));
693                         break; }
694
695                         case NetlogonNetworkTransitiveInformation: {
696                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->network));
697                         break; }
698
699                         case NetlogonServiceTransitiveInformation: {
700                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->password));
701                         break; }
702
703                         default:
704                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
705                 }
706         }
707         if (ndr_flags & NDR_BUFFERS) {
708                 int level = ndr_push_get_switch_value(ndr, r);
709                 switch (level) {
710                         case NetlogonInteractiveInformation:
711                                 if (r->password) {
712                                         NDR_CHECK(ndr_push_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
713                                 }
714                         break;
715
716                         case NetlogonNetworkInformation:
717                                 if (r->network) {
718                                         NDR_CHECK(ndr_push_netr_NetworkInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->network));
719                                 }
720                         break;
721
722                         case NetlogonServiceInformation:
723                                 if (r->password) {
724                                         NDR_CHECK(ndr_push_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
725                                 }
726                         break;
727
728                         case NetlogonGenericInformation:
729                                 if (r->generic) {
730                                         NDR_CHECK(ndr_push_netr_GenericInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->generic));
731                                 }
732                         break;
733
734                         case NetlogonInteractiveTransitiveInformation:
735                                 if (r->password) {
736                                         NDR_CHECK(ndr_push_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
737                                 }
738                         break;
739
740                         case NetlogonNetworkTransitiveInformation:
741                                 if (r->network) {
742                                         NDR_CHECK(ndr_push_netr_NetworkInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->network));
743                                 }
744                         break;
745
746                         case NetlogonServiceTransitiveInformation:
747                                 if (r->password) {
748                                         NDR_CHECK(ndr_push_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
749                                 }
750                         break;
751
752                         default:
753                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
754                 }
755         }
756         return NDR_ERR_SUCCESS;
757 }
758
759 _PUBLIC_ enum ndr_err_code ndr_pull_netr_LogonLevel(struct ndr_pull *ndr, int ndr_flags, union netr_LogonLevel *r)
760 {
761         int level;
762         uint16_t _level;
763         TALLOC_CTX *_mem_save_password_0;
764         TALLOC_CTX *_mem_save_network_0;
765         TALLOC_CTX *_mem_save_generic_0;
766         level = ndr_pull_get_switch_value(ndr, r);
767         if (ndr_flags & NDR_SCALARS) {
768                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
769                 if (_level != level) {
770                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
771                 }
772                 switch (level) {
773                         case NetlogonInteractiveInformation: {
774                                 uint32_t _ptr_password;
775                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
776                                 if (_ptr_password) {
777                                         NDR_PULL_ALLOC(ndr, r->password);
778                                 } else {
779                                         r->password = NULL;
780                                 }
781                         break; }
782
783                         case NetlogonNetworkInformation: {
784                                 uint32_t _ptr_network;
785                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_network));
786                                 if (_ptr_network) {
787                                         NDR_PULL_ALLOC(ndr, r->network);
788                                 } else {
789                                         r->network = NULL;
790                                 }
791                         break; }
792
793                         case NetlogonServiceInformation: {
794                                 uint32_t _ptr_password;
795                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
796                                 if (_ptr_password) {
797                                         NDR_PULL_ALLOC(ndr, r->password);
798                                 } else {
799                                         r->password = NULL;
800                                 }
801                         break; }
802
803                         case NetlogonGenericInformation: {
804                                 uint32_t _ptr_generic;
805                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_generic));
806                                 if (_ptr_generic) {
807                                         NDR_PULL_ALLOC(ndr, r->generic);
808                                 } else {
809                                         r->generic = NULL;
810                                 }
811                         break; }
812
813                         case NetlogonInteractiveTransitiveInformation: {
814                                 uint32_t _ptr_password;
815                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
816                                 if (_ptr_password) {
817                                         NDR_PULL_ALLOC(ndr, r->password);
818                                 } else {
819                                         r->password = NULL;
820                                 }
821                         break; }
822
823                         case NetlogonNetworkTransitiveInformation: {
824                                 uint32_t _ptr_network;
825                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_network));
826                                 if (_ptr_network) {
827                                         NDR_PULL_ALLOC(ndr, r->network);
828                                 } else {
829                                         r->network = NULL;
830                                 }
831                         break; }
832
833                         case NetlogonServiceTransitiveInformation: {
834                                 uint32_t _ptr_password;
835                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_password));
836                                 if (_ptr_password) {
837                                         NDR_PULL_ALLOC(ndr, r->password);
838                                 } else {
839                                         r->password = NULL;
840                                 }
841                         break; }
842
843                         default:
844                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
845                 }
846         }
847         if (ndr_flags & NDR_BUFFERS) {
848                 switch (level) {
849                         case NetlogonInteractiveInformation:
850                                 if (r->password) {
851                                         _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
852                                         NDR_PULL_SET_MEM_CTX(ndr, r->password, 0);
853                                         NDR_CHECK(ndr_pull_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
854                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
855                                 }
856                         break;
857
858                         case NetlogonNetworkInformation:
859                                 if (r->network) {
860                                         _mem_save_network_0 = NDR_PULL_GET_MEM_CTX(ndr);
861                                         NDR_PULL_SET_MEM_CTX(ndr, r->network, 0);
862                                         NDR_CHECK(ndr_pull_netr_NetworkInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->network));
863                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_network_0, 0);
864                                 }
865                         break;
866
867                         case NetlogonServiceInformation:
868                                 if (r->password) {
869                                         _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
870                                         NDR_PULL_SET_MEM_CTX(ndr, r->password, 0);
871                                         NDR_CHECK(ndr_pull_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
872                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
873                                 }
874                         break;
875
876                         case NetlogonGenericInformation:
877                                 if (r->generic) {
878                                         _mem_save_generic_0 = NDR_PULL_GET_MEM_CTX(ndr);
879                                         NDR_PULL_SET_MEM_CTX(ndr, r->generic, 0);
880                                         NDR_CHECK(ndr_pull_netr_GenericInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->generic));
881                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_generic_0, 0);
882                                 }
883                         break;
884
885                         case NetlogonInteractiveTransitiveInformation:
886                                 if (r->password) {
887                                         _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
888                                         NDR_PULL_SET_MEM_CTX(ndr, r->password, 0);
889                                         NDR_CHECK(ndr_pull_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
890                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
891                                 }
892                         break;
893
894                         case NetlogonNetworkTransitiveInformation:
895                                 if (r->network) {
896                                         _mem_save_network_0 = NDR_PULL_GET_MEM_CTX(ndr);
897                                         NDR_PULL_SET_MEM_CTX(ndr, r->network, 0);
898                                         NDR_CHECK(ndr_pull_netr_NetworkInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->network));
899                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_network_0, 0);
900                                 }
901                         break;
902
903                         case NetlogonServiceTransitiveInformation:
904                                 if (r->password) {
905                                         _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
906                                         NDR_PULL_SET_MEM_CTX(ndr, r->password, 0);
907                                         NDR_CHECK(ndr_pull_netr_PasswordInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->password));
908                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, 0);
909                                 }
910                         break;
911
912                         default:
913                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
914                 }
915         }
916         return NDR_ERR_SUCCESS;
917 }
918
919 _PUBLIC_ void ndr_print_netr_LogonLevel(struct ndr_print *ndr, const char *name, const union netr_LogonLevel *r)
920 {
921         int level;
922         level = ndr_print_get_switch_value(ndr, r);
923         ndr_print_union(ndr, name, level, "netr_LogonLevel");
924         switch (level) {
925                 case NetlogonInteractiveInformation:
926                         ndr_print_ptr(ndr, "password", r->password);
927                         ndr->depth++;
928                         if (r->password) {
929                                 ndr_print_netr_PasswordInfo(ndr, "password", r->password);
930                         }
931                         ndr->depth--;
932                 break;
933
934                 case NetlogonNetworkInformation:
935                         ndr_print_ptr(ndr, "network", r->network);
936                         ndr->depth++;
937                         if (r->network) {
938                                 ndr_print_netr_NetworkInfo(ndr, "network", r->network);
939                         }
940                         ndr->depth--;
941                 break;
942
943                 case NetlogonServiceInformation:
944                         ndr_print_ptr(ndr, "password", r->password);
945                         ndr->depth++;
946                         if (r->password) {
947                                 ndr_print_netr_PasswordInfo(ndr, "password", r->password);
948                         }
949                         ndr->depth--;
950                 break;
951
952                 case NetlogonGenericInformation:
953                         ndr_print_ptr(ndr, "generic", r->generic);
954                         ndr->depth++;
955                         if (r->generic) {
956                                 ndr_print_netr_GenericInfo(ndr, "generic", r->generic);
957                         }
958                         ndr->depth--;
959                 break;
960
961                 case NetlogonInteractiveTransitiveInformation:
962                         ndr_print_ptr(ndr, "password", r->password);
963                         ndr->depth++;
964                         if (r->password) {
965                                 ndr_print_netr_PasswordInfo(ndr, "password", r->password);
966                         }
967                         ndr->depth--;
968                 break;
969
970                 case NetlogonNetworkTransitiveInformation:
971                         ndr_print_ptr(ndr, "network", r->network);
972                         ndr->depth++;
973                         if (r->network) {
974                                 ndr_print_netr_NetworkInfo(ndr, "network", r->network);
975                         }
976                         ndr->depth--;
977                 break;
978
979                 case NetlogonServiceTransitiveInformation:
980                         ndr_print_ptr(ndr, "password", r->password);
981                         ndr->depth++;
982                         if (r->password) {
983                                 ndr_print_netr_PasswordInfo(ndr, "password", r->password);
984                         }
985                         ndr->depth--;
986                 break;
987
988                 default:
989                         ndr_print_bad_level(ndr, name, level);
990         }
991 }
992
993 _PUBLIC_ enum ndr_err_code ndr_push_netr_UserSessionKey(struct ndr_push *ndr, int ndr_flags, const struct netr_UserSessionKey *r)
994 {
995         {
996                 uint32_t _flags_save_STRUCT = ndr->flags;
997                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
998                 if (ndr_flags & NDR_SCALARS) {
999                         NDR_CHECK(ndr_push_align(ndr, 1));
1000                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->key, 16));
1001                 }
1002                 if (ndr_flags & NDR_BUFFERS) {
1003                 }
1004                 ndr->flags = _flags_save_STRUCT;
1005         }
1006         return NDR_ERR_SUCCESS;
1007 }
1008
1009 _PUBLIC_ enum ndr_err_code ndr_pull_netr_UserSessionKey(struct ndr_pull *ndr, int ndr_flags, struct netr_UserSessionKey *r)
1010 {
1011         {
1012                 uint32_t _flags_save_STRUCT = ndr->flags;
1013                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1014                 if (ndr_flags & NDR_SCALARS) {
1015                         NDR_CHECK(ndr_pull_align(ndr, 1));
1016                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->key, 16));
1017                 }
1018                 if (ndr_flags & NDR_BUFFERS) {
1019                 }
1020                 ndr->flags = _flags_save_STRUCT;
1021         }
1022         return NDR_ERR_SUCCESS;
1023 }
1024
1025 _PUBLIC_ void ndr_print_netr_UserSessionKey(struct ndr_print *ndr, const char *name, const struct netr_UserSessionKey *r)
1026 {
1027         ndr_print_struct(ndr, name, "netr_UserSessionKey");
1028         {
1029                 uint32_t _flags_save_STRUCT = ndr->flags;
1030                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1031                 ndr->depth++;
1032                 ndr_print_array_uint8(ndr, "key", r->key, 16);
1033                 ndr->depth--;
1034                 ndr->flags = _flags_save_STRUCT;
1035         }
1036 }
1037
1038 _PUBLIC_ enum ndr_err_code ndr_push_netr_LMSessionKey(struct ndr_push *ndr, int ndr_flags, const struct netr_LMSessionKey *r)
1039 {
1040         {
1041                 uint32_t _flags_save_STRUCT = ndr->flags;
1042                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1043                 if (ndr_flags & NDR_SCALARS) {
1044                         NDR_CHECK(ndr_push_align(ndr, 1));
1045                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->key, 8));
1046                 }
1047                 if (ndr_flags & NDR_BUFFERS) {
1048                 }
1049                 ndr->flags = _flags_save_STRUCT;
1050         }
1051         return NDR_ERR_SUCCESS;
1052 }
1053
1054 _PUBLIC_ enum ndr_err_code ndr_pull_netr_LMSessionKey(struct ndr_pull *ndr, int ndr_flags, struct netr_LMSessionKey *r)
1055 {
1056         {
1057                 uint32_t _flags_save_STRUCT = ndr->flags;
1058                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1059                 if (ndr_flags & NDR_SCALARS) {
1060                         NDR_CHECK(ndr_pull_align(ndr, 1));
1061                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->key, 8));
1062                 }
1063                 if (ndr_flags & NDR_BUFFERS) {
1064                 }
1065                 ndr->flags = _flags_save_STRUCT;
1066         }
1067         return NDR_ERR_SUCCESS;
1068 }
1069
1070 _PUBLIC_ void ndr_print_netr_LMSessionKey(struct ndr_print *ndr, const char *name, const struct netr_LMSessionKey *r)
1071 {
1072         ndr_print_struct(ndr, name, "netr_LMSessionKey");
1073         {
1074                 uint32_t _flags_save_STRUCT = ndr->flags;
1075                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1076                 ndr->depth++;
1077                 ndr_print_array_uint8(ndr, "key", r->key, 8);
1078                 ndr->depth--;
1079                 ndr->flags = _flags_save_STRUCT;
1080         }
1081 }
1082
1083 _PUBLIC_ enum ndr_err_code ndr_push_netr_UserFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
1084 {
1085         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
1086         return NDR_ERR_SUCCESS;
1087 }
1088
1089 _PUBLIC_ enum ndr_err_code ndr_pull_netr_UserFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
1090 {
1091         uint32_t v;
1092         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
1093         *r = v;
1094         return NDR_ERR_SUCCESS;
1095 }
1096
1097 _PUBLIC_ void ndr_print_netr_UserFlags(struct ndr_print *ndr, const char *name, uint32_t r)
1098 {
1099         ndr_print_uint32(ndr, name, r);
1100         ndr->depth++;
1101         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_GUEST", NETLOGON_GUEST, r);
1102         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NOENCRYPTION", NETLOGON_NOENCRYPTION, r);
1103         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_CACHED_ACCOUNT", NETLOGON_CACHED_ACCOUNT, r);
1104         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_USED_LM_PASSWORD", NETLOGON_USED_LM_PASSWORD, r);
1105         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_EXTRA_SIDS", NETLOGON_EXTRA_SIDS, r);
1106         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_SUBAUTH_SESSION_KEY", NETLOGON_SUBAUTH_SESSION_KEY, r);
1107         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_SERVER_TRUST_ACCOUNT", NETLOGON_SERVER_TRUST_ACCOUNT, r);
1108         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NTLMV2_ENABLED", NETLOGON_NTLMV2_ENABLED, r);
1109         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_RESOURCE_GROUPS", NETLOGON_RESOURCE_GROUPS, r);
1110         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_PROFILE_PATH_RETURNED", NETLOGON_PROFILE_PATH_RETURNED, r);
1111         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_GRACE_LOGON", NETLOGON_GRACE_LOGON, r);
1112         ndr->depth--;
1113 }
1114
1115 static enum ndr_err_code ndr_push_netr_SamBaseInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_SamBaseInfo *r)
1116 {
1117         uint32_t cntr_unknown_0;
1118         if (ndr_flags & NDR_SCALARS) {
1119                 NDR_CHECK(ndr_push_align(ndr, 4));
1120                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_logon));
1121                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_logoff));
1122                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->acct_expiry));
1123                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_password_change));
1124                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->allow_password_change));
1125                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->force_password_change));
1126                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->account_name));
1127                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->full_name));
1128                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->logon_script));
1129                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->profile_path));
1130                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->home_directory));
1131                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->home_drive));
1132                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->logon_count));
1133                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->bad_password_count));
1134                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
1135                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->primary_gid));
1136                 NDR_CHECK(ndr_push_samr_RidWithAttributeArray(ndr, NDR_SCALARS, &r->groups));
1137                 NDR_CHECK(ndr_push_netr_UserFlags(ndr, NDR_SCALARS, r->user_flags));
1138                 NDR_CHECK(ndr_push_netr_UserSessionKey(ndr, NDR_SCALARS, &r->key));
1139                 NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS, &r->logon_server));
1140                 NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_SCALARS, &r->domain));
1141                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain_sid));
1142                 NDR_CHECK(ndr_push_netr_LMSessionKey(ndr, NDR_SCALARS, &r->LMSessKey));
1143                 NDR_CHECK(ndr_push_samr_AcctFlags(ndr, NDR_SCALARS, r->acct_flags));
1144                 for (cntr_unknown_0 = 0; cntr_unknown_0 < 7; cntr_unknown_0++) {
1145                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown[cntr_unknown_0]));
1146                 }
1147         }
1148         if (ndr_flags & NDR_BUFFERS) {
1149                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->account_name));
1150                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->full_name));
1151                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->logon_script));
1152                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->profile_path));
1153                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->home_directory));
1154                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->home_drive));
1155                 NDR_CHECK(ndr_push_samr_RidWithAttributeArray(ndr, NDR_BUFFERS, &r->groups));
1156                 NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_BUFFERS, &r->logon_server));
1157                 NDR_CHECK(ndr_push_lsa_StringLarge(ndr, NDR_BUFFERS, &r->domain));
1158                 if (r->domain_sid) {
1159                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_sid));
1160                 }
1161         }
1162         return NDR_ERR_SUCCESS;
1163 }
1164
1165 static enum ndr_err_code ndr_pull_netr_SamBaseInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_SamBaseInfo *r)
1166 {
1167         uint32_t _ptr_domain_sid;
1168         TALLOC_CTX *_mem_save_domain_sid_0;
1169         uint32_t cntr_unknown_0;
1170         if (ndr_flags & NDR_SCALARS) {
1171                 NDR_CHECK(ndr_pull_align(ndr, 4));
1172                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_logon));
1173                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_logoff));
1174                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->acct_expiry));
1175                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_password_change));
1176                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->allow_password_change));
1177                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->force_password_change));
1178                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->account_name));
1179                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->full_name));
1180                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->logon_script));
1181                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->profile_path));
1182                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->home_directory));
1183                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->home_drive));
1184                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->logon_count));
1185                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->bad_password_count));
1186                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
1187                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->primary_gid));
1188                 NDR_CHECK(ndr_pull_samr_RidWithAttributeArray(ndr, NDR_SCALARS, &r->groups));
1189                 NDR_CHECK(ndr_pull_netr_UserFlags(ndr, NDR_SCALARS, &r->user_flags));
1190                 NDR_CHECK(ndr_pull_netr_UserSessionKey(ndr, NDR_SCALARS, &r->key));
1191                 NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS, &r->logon_server));
1192                 NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_SCALARS, &r->domain));
1193                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_sid));
1194                 if (_ptr_domain_sid) {
1195                         NDR_PULL_ALLOC(ndr, r->domain_sid);
1196                 } else {
1197                         r->domain_sid = NULL;
1198                 }
1199                 NDR_CHECK(ndr_pull_netr_LMSessionKey(ndr, NDR_SCALARS, &r->LMSessKey));
1200                 NDR_CHECK(ndr_pull_samr_AcctFlags(ndr, NDR_SCALARS, &r->acct_flags));
1201                 for (cntr_unknown_0 = 0; cntr_unknown_0 < 7; cntr_unknown_0++) {
1202                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown[cntr_unknown_0]));
1203                 }
1204         }
1205         if (ndr_flags & NDR_BUFFERS) {
1206                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->account_name));
1207                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->full_name));
1208                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->logon_script));
1209                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->profile_path));
1210                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->home_directory));
1211                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->home_drive));
1212                 NDR_CHECK(ndr_pull_samr_RidWithAttributeArray(ndr, NDR_BUFFERS, &r->groups));
1213                 NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_BUFFERS, &r->logon_server));
1214                 NDR_CHECK(ndr_pull_lsa_StringLarge(ndr, NDR_BUFFERS, &r->domain));
1215                 if (r->domain_sid) {
1216                         _mem_save_domain_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
1217                         NDR_PULL_SET_MEM_CTX(ndr, r->domain_sid, 0);
1218                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_sid));
1219                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_sid_0, 0);
1220                 }
1221         }
1222         return NDR_ERR_SUCCESS;
1223 }
1224
1225 _PUBLIC_ void ndr_print_netr_SamBaseInfo(struct ndr_print *ndr, const char *name, const struct netr_SamBaseInfo *r)
1226 {
1227         uint32_t cntr_unknown_0;
1228         ndr_print_struct(ndr, name, "netr_SamBaseInfo");
1229         ndr->depth++;
1230         ndr_print_NTTIME(ndr, "last_logon", r->last_logon);
1231         ndr_print_NTTIME(ndr, "last_logoff", r->last_logoff);
1232         ndr_print_NTTIME(ndr, "acct_expiry", r->acct_expiry);
1233         ndr_print_NTTIME(ndr, "last_password_change", r->last_password_change);
1234         ndr_print_NTTIME(ndr, "allow_password_change", r->allow_password_change);
1235         ndr_print_NTTIME(ndr, "force_password_change", r->force_password_change);
1236         ndr_print_lsa_String(ndr, "account_name", &r->account_name);
1237         ndr_print_lsa_String(ndr, "full_name", &r->full_name);
1238         ndr_print_lsa_String(ndr, "logon_script", &r->logon_script);
1239         ndr_print_lsa_String(ndr, "profile_path", &r->profile_path);
1240         ndr_print_lsa_String(ndr, "home_directory", &r->home_directory);
1241         ndr_print_lsa_String(ndr, "home_drive", &r->home_drive);
1242         ndr_print_uint16(ndr, "logon_count", r->logon_count);
1243         ndr_print_uint16(ndr, "bad_password_count", r->bad_password_count);
1244         ndr_print_uint32(ndr, "rid", r->rid);
1245         ndr_print_uint32(ndr, "primary_gid", r->primary_gid);
1246         ndr_print_samr_RidWithAttributeArray(ndr, "groups", &r->groups);
1247         ndr_print_netr_UserFlags(ndr, "user_flags", r->user_flags);
1248         ndr_print_netr_UserSessionKey(ndr, "key", &r->key);
1249         ndr_print_lsa_StringLarge(ndr, "logon_server", &r->logon_server);
1250         ndr_print_lsa_StringLarge(ndr, "domain", &r->domain);
1251         ndr_print_ptr(ndr, "domain_sid", r->domain_sid);
1252         ndr->depth++;
1253         if (r->domain_sid) {
1254                 ndr_print_dom_sid2(ndr, "domain_sid", r->domain_sid);
1255         }
1256         ndr->depth--;
1257         ndr_print_netr_LMSessionKey(ndr, "LMSessKey", &r->LMSessKey);
1258         ndr_print_samr_AcctFlags(ndr, "acct_flags", r->acct_flags);
1259         ndr->print(ndr, "%s: ARRAY(%d)", "unknown", (int)7);
1260         ndr->depth++;
1261         for (cntr_unknown_0=0;cntr_unknown_0<7;cntr_unknown_0++) {
1262                 char *idx_0=NULL;
1263                 if (asprintf(&idx_0, "[%d]", cntr_unknown_0) != -1) {
1264                         ndr_print_uint32(ndr, "unknown", r->unknown[cntr_unknown_0]);
1265                         free(idx_0);
1266                 }
1267         }
1268         ndr->depth--;
1269         ndr->depth--;
1270 }
1271
1272 static enum ndr_err_code ndr_push_netr_SamInfo2(struct ndr_push *ndr, int ndr_flags, const struct netr_SamInfo2 *r)
1273 {
1274         if (ndr_flags & NDR_SCALARS) {
1275                 NDR_CHECK(ndr_push_align(ndr, 4));
1276                 NDR_CHECK(ndr_push_netr_SamBaseInfo(ndr, NDR_SCALARS, &r->base));
1277         }
1278         if (ndr_flags & NDR_BUFFERS) {
1279                 NDR_CHECK(ndr_push_netr_SamBaseInfo(ndr, NDR_BUFFERS, &r->base));
1280         }
1281         return NDR_ERR_SUCCESS;
1282 }
1283
1284 static enum ndr_err_code ndr_pull_netr_SamInfo2(struct ndr_pull *ndr, int ndr_flags, struct netr_SamInfo2 *r)
1285 {
1286         if (ndr_flags & NDR_SCALARS) {
1287                 NDR_CHECK(ndr_pull_align(ndr, 4));
1288                 NDR_CHECK(ndr_pull_netr_SamBaseInfo(ndr, NDR_SCALARS, &r->base));
1289         }
1290         if (ndr_flags & NDR_BUFFERS) {
1291                 NDR_CHECK(ndr_pull_netr_SamBaseInfo(ndr, NDR_BUFFERS, &r->base));
1292         }
1293         return NDR_ERR_SUCCESS;
1294 }
1295
1296 _PUBLIC_ void ndr_print_netr_SamInfo2(struct ndr_print *ndr, const char *name, const struct netr_SamInfo2 *r)
1297 {
1298         ndr_print_struct(ndr, name, "netr_SamInfo2");
1299         ndr->depth++;
1300         ndr_print_netr_SamBaseInfo(ndr, "base", &r->base);
1301         ndr->depth--;
1302 }
1303
1304 static enum ndr_err_code ndr_push_netr_SidAttr(struct ndr_push *ndr, int ndr_flags, const struct netr_SidAttr *r)
1305 {
1306         if (ndr_flags & NDR_SCALARS) {
1307                 NDR_CHECK(ndr_push_align(ndr, 4));
1308                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
1309                 NDR_CHECK(ndr_push_samr_GroupAttrs(ndr, NDR_SCALARS, r->attributes));
1310         }
1311         if (ndr_flags & NDR_BUFFERS) {
1312                 if (r->sid) {
1313                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
1314                 }
1315         }
1316         return NDR_ERR_SUCCESS;
1317 }
1318
1319 static enum ndr_err_code ndr_pull_netr_SidAttr(struct ndr_pull *ndr, int ndr_flags, struct netr_SidAttr *r)
1320 {
1321         uint32_t _ptr_sid;
1322         TALLOC_CTX *_mem_save_sid_0;
1323         if (ndr_flags & NDR_SCALARS) {
1324                 NDR_CHECK(ndr_pull_align(ndr, 4));
1325                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
1326                 if (_ptr_sid) {
1327                         NDR_PULL_ALLOC(ndr, r->sid);
1328                 } else {
1329                         r->sid = NULL;
1330                 }
1331                 NDR_CHECK(ndr_pull_samr_GroupAttrs(ndr, NDR_SCALARS, &r->attributes));
1332         }
1333         if (ndr_flags & NDR_BUFFERS) {
1334                 if (r->sid) {
1335                         _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
1336                         NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
1337                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
1338                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
1339                 }
1340         }
1341         return NDR_ERR_SUCCESS;
1342 }
1343
1344 _PUBLIC_ void ndr_print_netr_SidAttr(struct ndr_print *ndr, const char *name, const struct netr_SidAttr *r)
1345 {
1346         ndr_print_struct(ndr, name, "netr_SidAttr");
1347         ndr->depth++;
1348         ndr_print_ptr(ndr, "sid", r->sid);
1349         ndr->depth++;
1350         if (r->sid) {
1351                 ndr_print_dom_sid2(ndr, "sid", r->sid);
1352         }
1353         ndr->depth--;
1354         ndr_print_samr_GroupAttrs(ndr, "attributes", r->attributes);
1355         ndr->depth--;
1356 }
1357
1358 _PUBLIC_ enum ndr_err_code ndr_push_netr_SamInfo3(struct ndr_push *ndr, int ndr_flags, const struct netr_SamInfo3 *r)
1359 {
1360         uint32_t cntr_sids_1;
1361         if (ndr_flags & NDR_SCALARS) {
1362                 NDR_CHECK(ndr_push_align(ndr, 4));
1363                 NDR_CHECK(ndr_push_netr_SamBaseInfo(ndr, NDR_SCALARS, &r->base));
1364                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sidcount));
1365                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sids));
1366         }
1367         if (ndr_flags & NDR_BUFFERS) {
1368                 NDR_CHECK(ndr_push_netr_SamBaseInfo(ndr, NDR_BUFFERS, &r->base));
1369                 if (r->sids) {
1370                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sidcount));
1371                         for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
1372                                 NDR_CHECK(ndr_push_netr_SidAttr(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
1373                         }
1374                         for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
1375                                 NDR_CHECK(ndr_push_netr_SidAttr(ndr, NDR_BUFFERS, &r->sids[cntr_sids_1]));
1376                         }
1377                 }
1378         }
1379         return NDR_ERR_SUCCESS;
1380 }
1381
1382 _PUBLIC_ enum ndr_err_code ndr_pull_netr_SamInfo3(struct ndr_pull *ndr, int ndr_flags, struct netr_SamInfo3 *r)
1383 {
1384         uint32_t _ptr_sids;
1385         uint32_t cntr_sids_1;
1386         TALLOC_CTX *_mem_save_sids_0;
1387         TALLOC_CTX *_mem_save_sids_1;
1388         if (ndr_flags & NDR_SCALARS) {
1389                 NDR_CHECK(ndr_pull_align(ndr, 4));
1390                 NDR_CHECK(ndr_pull_netr_SamBaseInfo(ndr, NDR_SCALARS, &r->base));
1391                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sidcount));
1392                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sids));
1393                 if (_ptr_sids) {
1394                         NDR_PULL_ALLOC(ndr, r->sids);
1395                 } else {
1396                         r->sids = NULL;
1397                 }
1398         }
1399         if (ndr_flags & NDR_BUFFERS) {
1400                 NDR_CHECK(ndr_pull_netr_SamBaseInfo(ndr, NDR_BUFFERS, &r->base));
1401                 if (r->sids) {
1402                         _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
1403                         NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
1404                         NDR_CHECK(ndr_pull_array_size(ndr, &r->sids));
1405                         NDR_PULL_ALLOC_N(ndr, r->sids, ndr_get_array_size(ndr, &r->sids));
1406                         _mem_save_sids_1 = NDR_PULL_GET_MEM_CTX(ndr);
1407                         NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
1408                         for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
1409                                 NDR_CHECK(ndr_pull_netr_SidAttr(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
1410                         }
1411                         for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
1412                                 NDR_CHECK(ndr_pull_netr_SidAttr(ndr, NDR_BUFFERS, &r->sids[cntr_sids_1]));
1413                         }
1414                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_1, 0);
1415                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, 0);
1416                 }
1417                 if (r->sids) {
1418                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->sidcount));
1419                 }
1420         }
1421         return NDR_ERR_SUCCESS;
1422 }
1423
1424 _PUBLIC_ void ndr_print_netr_SamInfo3(struct ndr_print *ndr, const char *name, const struct netr_SamInfo3 *r)
1425 {
1426         uint32_t cntr_sids_1;
1427         ndr_print_struct(ndr, name, "netr_SamInfo3");
1428         ndr->depth++;
1429         ndr_print_netr_SamBaseInfo(ndr, "base", &r->base);
1430         ndr_print_uint32(ndr, "sidcount", r->sidcount);
1431         ndr_print_ptr(ndr, "sids", r->sids);
1432         ndr->depth++;
1433         if (r->sids) {
1434                 ndr->print(ndr, "%s: ARRAY(%d)", "sids", (int)r->sidcount);
1435                 ndr->depth++;
1436                 for (cntr_sids_1=0;cntr_sids_1<r->sidcount;cntr_sids_1++) {
1437                         char *idx_1=NULL;
1438                         if (asprintf(&idx_1, "[%d]", cntr_sids_1) != -1) {
1439                                 ndr_print_netr_SidAttr(ndr, "sids", &r->sids[cntr_sids_1]);
1440                                 free(idx_1);
1441                         }
1442                 }
1443                 ndr->depth--;
1444         }
1445         ndr->depth--;
1446         ndr->depth--;
1447 }
1448
1449 static enum ndr_err_code ndr_push_netr_SamInfo6(struct ndr_push *ndr, int ndr_flags, const struct netr_SamInfo6 *r)
1450 {
1451         uint32_t cntr_sids_1;
1452         uint32_t cntr_unknown4_0;
1453         if (ndr_flags & NDR_SCALARS) {
1454                 NDR_CHECK(ndr_push_align(ndr, 4));
1455                 NDR_CHECK(ndr_push_netr_SamBaseInfo(ndr, NDR_SCALARS, &r->base));
1456                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sidcount));
1457                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sids));
1458                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->forest));
1459                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->principle));
1460                 for (cntr_unknown4_0 = 0; cntr_unknown4_0 < 20; cntr_unknown4_0++) {
1461                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown4[cntr_unknown4_0]));
1462                 }
1463         }
1464         if (ndr_flags & NDR_BUFFERS) {
1465                 NDR_CHECK(ndr_push_netr_SamBaseInfo(ndr, NDR_BUFFERS, &r->base));
1466                 if (r->sids) {
1467                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sidcount));
1468                         for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
1469                                 NDR_CHECK(ndr_push_netr_SidAttr(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
1470                         }
1471                         for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
1472                                 NDR_CHECK(ndr_push_netr_SidAttr(ndr, NDR_BUFFERS, &r->sids[cntr_sids_1]));
1473                         }
1474                 }
1475                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->forest));
1476                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->principle));
1477         }
1478         return NDR_ERR_SUCCESS;
1479 }
1480
1481 static enum ndr_err_code ndr_pull_netr_SamInfo6(struct ndr_pull *ndr, int ndr_flags, struct netr_SamInfo6 *r)
1482 {
1483         uint32_t _ptr_sids;
1484         uint32_t cntr_sids_1;
1485         TALLOC_CTX *_mem_save_sids_0;
1486         TALLOC_CTX *_mem_save_sids_1;
1487         uint32_t cntr_unknown4_0;
1488         if (ndr_flags & NDR_SCALARS) {
1489                 NDR_CHECK(ndr_pull_align(ndr, 4));
1490                 NDR_CHECK(ndr_pull_netr_SamBaseInfo(ndr, NDR_SCALARS, &r->base));
1491                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sidcount));
1492                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sids));
1493                 if (_ptr_sids) {
1494                         NDR_PULL_ALLOC(ndr, r->sids);
1495                 } else {
1496                         r->sids = NULL;
1497                 }
1498                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->forest));
1499                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->principle));
1500                 for (cntr_unknown4_0 = 0; cntr_unknown4_0 < 20; cntr_unknown4_0++) {
1501                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown4[cntr_unknown4_0]));
1502                 }
1503         }
1504         if (ndr_flags & NDR_BUFFERS) {
1505                 NDR_CHECK(ndr_pull_netr_SamBaseInfo(ndr, NDR_BUFFERS, &r->base));
1506                 if (r->sids) {
1507                         _mem_save_sids_0 = NDR_PULL_GET_MEM_CTX(ndr);
1508                         NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
1509                         NDR_CHECK(ndr_pull_array_size(ndr, &r->sids));
1510                         NDR_PULL_ALLOC_N(ndr, r->sids, ndr_get_array_size(ndr, &r->sids));
1511                         _mem_save_sids_1 = NDR_PULL_GET_MEM_CTX(ndr);
1512                         NDR_PULL_SET_MEM_CTX(ndr, r->sids, 0);
1513                         for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
1514                                 NDR_CHECK(ndr_pull_netr_SidAttr(ndr, NDR_SCALARS, &r->sids[cntr_sids_1]));
1515                         }
1516                         for (cntr_sids_1 = 0; cntr_sids_1 < r->sidcount; cntr_sids_1++) {
1517                                 NDR_CHECK(ndr_pull_netr_SidAttr(ndr, NDR_BUFFERS, &r->sids[cntr_sids_1]));
1518                         }
1519                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_1, 0);
1520                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sids_0, 0);
1521                 }
1522                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->forest));
1523                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->principle));
1524                 if (r->sids) {
1525                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sids, r->sidcount));
1526                 }
1527         }
1528         return NDR_ERR_SUCCESS;
1529 }
1530
1531 _PUBLIC_ void ndr_print_netr_SamInfo6(struct ndr_print *ndr, const char *name, const struct netr_SamInfo6 *r)
1532 {
1533         uint32_t cntr_sids_1;
1534         uint32_t cntr_unknown4_0;
1535         ndr_print_struct(ndr, name, "netr_SamInfo6");
1536         ndr->depth++;
1537         ndr_print_netr_SamBaseInfo(ndr, "base", &r->base);
1538         ndr_print_uint32(ndr, "sidcount", r->sidcount);
1539         ndr_print_ptr(ndr, "sids", r->sids);
1540         ndr->depth++;
1541         if (r->sids) {
1542                 ndr->print(ndr, "%s: ARRAY(%d)", "sids", (int)r->sidcount);
1543                 ndr->depth++;
1544                 for (cntr_sids_1=0;cntr_sids_1<r->sidcount;cntr_sids_1++) {
1545                         char *idx_1=NULL;
1546                         if (asprintf(&idx_1, "[%d]", cntr_sids_1) != -1) {
1547                                 ndr_print_netr_SidAttr(ndr, "sids", &r->sids[cntr_sids_1]);
1548                                 free(idx_1);
1549                         }
1550                 }
1551                 ndr->depth--;
1552         }
1553         ndr->depth--;
1554         ndr_print_lsa_String(ndr, "forest", &r->forest);
1555         ndr_print_lsa_String(ndr, "principle", &r->principle);
1556         ndr->print(ndr, "%s: ARRAY(%d)", "unknown4", (int)20);
1557         ndr->depth++;
1558         for (cntr_unknown4_0=0;cntr_unknown4_0<20;cntr_unknown4_0++) {
1559                 char *idx_0=NULL;
1560                 if (asprintf(&idx_0, "[%d]", cntr_unknown4_0) != -1) {
1561                         ndr_print_uint32(ndr, "unknown4", r->unknown4[cntr_unknown4_0]);
1562                         free(idx_0);
1563                 }
1564         }
1565         ndr->depth--;
1566         ndr->depth--;
1567 }
1568
1569 static enum ndr_err_code ndr_push_netr_PacInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_PacInfo *r)
1570 {
1571         uint32_t cntr_expansionroom_0;
1572         if (ndr_flags & NDR_SCALARS) {
1573                 NDR_CHECK(ndr_push_align(ndr, 4));
1574                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pac_size));
1575                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->pac));
1576                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->logon_domain));
1577                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->logon_server));
1578                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->principal_name));
1579                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->auth_size));
1580                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->auth));
1581                 NDR_CHECK(ndr_push_netr_UserSessionKey(ndr, NDR_SCALARS, &r->user_session_key));
1582                 for (cntr_expansionroom_0 = 0; cntr_expansionroom_0 < 10; cntr_expansionroom_0++) {
1583                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->expansionroom[cntr_expansionroom_0]));
1584                 }
1585                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
1586                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
1587                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
1588                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
1589         }
1590         if (ndr_flags & NDR_BUFFERS) {
1591                 if (r->pac) {
1592                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pac_size));
1593                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->pac, r->pac_size));
1594                 }
1595                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->logon_domain));
1596                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->logon_server));
1597                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->principal_name));
1598                 if (r->auth) {
1599                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->auth_size));
1600                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->auth, r->auth_size));
1601                 }
1602                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
1603                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
1604                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
1605                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
1606         }
1607         return NDR_ERR_SUCCESS;
1608 }
1609
1610 static enum ndr_err_code ndr_pull_netr_PacInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_PacInfo *r)
1611 {
1612         uint32_t _ptr_pac;
1613         TALLOC_CTX *_mem_save_pac_0;
1614         uint32_t _ptr_auth;
1615         TALLOC_CTX *_mem_save_auth_0;
1616         uint32_t cntr_expansionroom_0;
1617         if (ndr_flags & NDR_SCALARS) {
1618                 NDR_CHECK(ndr_pull_align(ndr, 4));
1619                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pac_size));
1620                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_pac));
1621                 if (_ptr_pac) {
1622                         NDR_PULL_ALLOC(ndr, r->pac);
1623                 } else {
1624                         r->pac = NULL;
1625                 }
1626                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->logon_domain));
1627                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->logon_server));
1628                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->principal_name));
1629                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->auth_size));
1630                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_auth));
1631                 if (_ptr_auth) {
1632                         NDR_PULL_ALLOC(ndr, r->auth);
1633                 } else {
1634                         r->auth = NULL;
1635                 }
1636                 NDR_CHECK(ndr_pull_netr_UserSessionKey(ndr, NDR_SCALARS, &r->user_session_key));
1637                 for (cntr_expansionroom_0 = 0; cntr_expansionroom_0 < 10; cntr_expansionroom_0++) {
1638                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->expansionroom[cntr_expansionroom_0]));
1639                 }
1640                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
1641                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
1642                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
1643                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
1644         }
1645         if (ndr_flags & NDR_BUFFERS) {
1646                 if (r->pac) {
1647                         _mem_save_pac_0 = NDR_PULL_GET_MEM_CTX(ndr);
1648                         NDR_PULL_SET_MEM_CTX(ndr, r->pac, 0);
1649                         NDR_CHECK(ndr_pull_array_size(ndr, &r->pac));
1650                         NDR_PULL_ALLOC_N(ndr, r->pac, ndr_get_array_size(ndr, &r->pac));
1651                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->pac, ndr_get_array_size(ndr, &r->pac)));
1652                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_pac_0, 0);
1653                 }
1654                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->logon_domain));
1655                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->logon_server));
1656                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->principal_name));
1657                 if (r->auth) {
1658                         _mem_save_auth_0 = NDR_PULL_GET_MEM_CTX(ndr);
1659                         NDR_PULL_SET_MEM_CTX(ndr, r->auth, 0);
1660                         NDR_CHECK(ndr_pull_array_size(ndr, &r->auth));
1661                         NDR_PULL_ALLOC_N(ndr, r->auth, ndr_get_array_size(ndr, &r->auth));
1662                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->auth, ndr_get_array_size(ndr, &r->auth)));
1663                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_auth_0, 0);
1664                 }
1665                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
1666                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
1667                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
1668                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
1669                 if (r->pac) {
1670                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->pac, r->pac_size));
1671                 }
1672                 if (r->auth) {
1673                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->auth, r->auth_size));
1674                 }
1675         }
1676         return NDR_ERR_SUCCESS;
1677 }
1678
1679 _PUBLIC_ void ndr_print_netr_PacInfo(struct ndr_print *ndr, const char *name, const struct netr_PacInfo *r)
1680 {
1681         uint32_t cntr_expansionroom_0;
1682         ndr_print_struct(ndr, name, "netr_PacInfo");
1683         ndr->depth++;
1684         ndr_print_uint32(ndr, "pac_size", r->pac_size);
1685         ndr_print_ptr(ndr, "pac", r->pac);
1686         ndr->depth++;
1687         if (r->pac) {
1688                 ndr_print_array_uint8(ndr, "pac", r->pac, r->pac_size);
1689         }
1690         ndr->depth--;
1691         ndr_print_lsa_String(ndr, "logon_domain", &r->logon_domain);
1692         ndr_print_lsa_String(ndr, "logon_server", &r->logon_server);
1693         ndr_print_lsa_String(ndr, "principal_name", &r->principal_name);
1694         ndr_print_uint32(ndr, "auth_size", r->auth_size);
1695         ndr_print_ptr(ndr, "auth", r->auth);
1696         ndr->depth++;
1697         if (r->auth) {
1698                 ndr_print_array_uint8(ndr, "auth", r->auth, r->auth_size);
1699         }
1700         ndr->depth--;
1701         ndr_print_netr_UserSessionKey(ndr, "user_session_key", &r->user_session_key);
1702         ndr->print(ndr, "%s: ARRAY(%d)", "expansionroom", (int)10);
1703         ndr->depth++;
1704         for (cntr_expansionroom_0=0;cntr_expansionroom_0<10;cntr_expansionroom_0++) {
1705                 char *idx_0=NULL;
1706                 if (asprintf(&idx_0, "[%d]", cntr_expansionroom_0) != -1) {
1707                         ndr_print_uint32(ndr, "expansionroom", r->expansionroom[cntr_expansionroom_0]);
1708                         free(idx_0);
1709                 }
1710         }
1711         ndr->depth--;
1712         ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
1713         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
1714         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
1715         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
1716         ndr->depth--;
1717 }
1718
1719 static enum ndr_err_code ndr_push_netr_GenericInfo2(struct ndr_push *ndr, int ndr_flags, const struct netr_GenericInfo2 *r)
1720 {
1721         {
1722                 uint32_t _flags_save_STRUCT = ndr->flags;
1723                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1724                 if (ndr_flags & NDR_SCALARS) {
1725                         NDR_CHECK(ndr_push_align(ndr, 4));
1726                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
1727                         NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
1728                 }
1729                 if (ndr_flags & NDR_BUFFERS) {
1730                         if (r->data) {
1731                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
1732                                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, r->length));
1733                         }
1734                 }
1735                 ndr->flags = _flags_save_STRUCT;
1736         }
1737         return NDR_ERR_SUCCESS;
1738 }
1739
1740 static enum ndr_err_code ndr_pull_netr_GenericInfo2(struct ndr_pull *ndr, int ndr_flags, struct netr_GenericInfo2 *r)
1741 {
1742         uint32_t _ptr_data;
1743         TALLOC_CTX *_mem_save_data_0;
1744         {
1745                 uint32_t _flags_save_STRUCT = ndr->flags;
1746                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1747                 if (ndr_flags & NDR_SCALARS) {
1748                         NDR_CHECK(ndr_pull_align(ndr, 4));
1749                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
1750                         NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
1751                         if (_ptr_data) {
1752                                 NDR_PULL_ALLOC(ndr, r->data);
1753                         } else {
1754                                 r->data = NULL;
1755                         }
1756                 }
1757                 if (ndr_flags & NDR_BUFFERS) {
1758                         if (r->data) {
1759                                 _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
1760                                 NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
1761                                 NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
1762                                 NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
1763                                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, ndr_get_array_size(ndr, &r->data)));
1764                                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
1765                         }
1766                         if (r->data) {
1767                                 NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->length));
1768                         }
1769                 }
1770                 ndr->flags = _flags_save_STRUCT;
1771         }
1772         return NDR_ERR_SUCCESS;
1773 }
1774
1775 _PUBLIC_ void ndr_print_netr_GenericInfo2(struct ndr_print *ndr, const char *name, const struct netr_GenericInfo2 *r)
1776 {
1777         ndr_print_struct(ndr, name, "netr_GenericInfo2");
1778         {
1779                 uint32_t _flags_save_STRUCT = ndr->flags;
1780                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
1781                 ndr->depth++;
1782                 ndr_print_uint32(ndr, "length", r->length);
1783                 ndr_print_ptr(ndr, "data", r->data);
1784                 ndr->depth++;
1785                 if (r->data) {
1786                         ndr_print_array_uint8(ndr, "data", r->data, r->length);
1787                 }
1788                 ndr->depth--;
1789                 ndr->depth--;
1790                 ndr->flags = _flags_save_STRUCT;
1791         }
1792 }
1793
1794 _PUBLIC_ enum ndr_err_code ndr_push_netr_Validation(struct ndr_push *ndr, int ndr_flags, const union netr_Validation *r)
1795 {
1796         if (ndr_flags & NDR_SCALARS) {
1797                 int level = ndr_push_get_switch_value(ndr, r);
1798                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level));
1799                 switch (level) {
1800                         case NetlogonValidationSamInfo: {
1801                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sam2));
1802                         break; }
1803
1804                         case NetlogonValidationSamInfo2: {
1805                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sam3));
1806                         break; }
1807
1808                         case 4: {
1809                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->pac));
1810                         break; }
1811
1812                         case NetlogonValidationGenericInfo2: {
1813                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->generic));
1814                         break; }
1815
1816                         case NetlogonValidationSamInfo4: {
1817                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sam6));
1818                         break; }
1819
1820                         default:
1821                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
1822                 }
1823         }
1824         if (ndr_flags & NDR_BUFFERS) {
1825                 int level = ndr_push_get_switch_value(ndr, r);
1826                 switch (level) {
1827                         case NetlogonValidationSamInfo:
1828                                 if (r->sam2) {
1829                                         NDR_CHECK(ndr_push_netr_SamInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam2));
1830                                 }
1831                         break;
1832
1833                         case NetlogonValidationSamInfo2:
1834                                 if (r->sam3) {
1835                                         NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam3));
1836                                 }
1837                         break;
1838
1839                         case 4:
1840                                 if (r->pac) {
1841                                         NDR_CHECK(ndr_push_netr_PacInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->pac));
1842                                 }
1843                         break;
1844
1845                         case NetlogonValidationGenericInfo2:
1846                                 if (r->generic) {
1847                                         NDR_CHECK(ndr_push_netr_GenericInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->generic));
1848                                 }
1849                         break;
1850
1851                         case NetlogonValidationSamInfo4:
1852                                 if (r->sam6) {
1853                                         NDR_CHECK(ndr_push_netr_SamInfo6(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam6));
1854                                 }
1855                         break;
1856
1857                         default:
1858                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
1859                 }
1860         }
1861         return NDR_ERR_SUCCESS;
1862 }
1863
1864 _PUBLIC_ enum ndr_err_code ndr_pull_netr_Validation(struct ndr_pull *ndr, int ndr_flags, union netr_Validation *r)
1865 {
1866         int level;
1867         uint16_t _level;
1868         TALLOC_CTX *_mem_save_sam2_0;
1869         TALLOC_CTX *_mem_save_sam3_0;
1870         TALLOC_CTX *_mem_save_pac_0;
1871         TALLOC_CTX *_mem_save_generic_0;
1872         TALLOC_CTX *_mem_save_sam6_0;
1873         level = ndr_pull_get_switch_value(ndr, r);
1874         if (ndr_flags & NDR_SCALARS) {
1875                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
1876                 if (_level != level) {
1877                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
1878                 }
1879                 switch (level) {
1880                         case NetlogonValidationSamInfo: {
1881                                 uint32_t _ptr_sam2;
1882                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sam2));
1883                                 if (_ptr_sam2) {
1884                                         NDR_PULL_ALLOC(ndr, r->sam2);
1885                                 } else {
1886                                         r->sam2 = NULL;
1887                                 }
1888                         break; }
1889
1890                         case NetlogonValidationSamInfo2: {
1891                                 uint32_t _ptr_sam3;
1892                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sam3));
1893                                 if (_ptr_sam3) {
1894                                         NDR_PULL_ALLOC(ndr, r->sam3);
1895                                 } else {
1896                                         r->sam3 = NULL;
1897                                 }
1898                         break; }
1899
1900                         case 4: {
1901                                 uint32_t _ptr_pac;
1902                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_pac));
1903                                 if (_ptr_pac) {
1904                                         NDR_PULL_ALLOC(ndr, r->pac);
1905                                 } else {
1906                                         r->pac = NULL;
1907                                 }
1908                         break; }
1909
1910                         case NetlogonValidationGenericInfo2: {
1911                                 uint32_t _ptr_generic;
1912                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_generic));
1913                                 if (_ptr_generic) {
1914                                         NDR_PULL_ALLOC(ndr, r->generic);
1915                                 } else {
1916                                         r->generic = NULL;
1917                                 }
1918                         break; }
1919
1920                         case NetlogonValidationSamInfo4: {
1921                                 uint32_t _ptr_sam6;
1922                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sam6));
1923                                 if (_ptr_sam6) {
1924                                         NDR_PULL_ALLOC(ndr, r->sam6);
1925                                 } else {
1926                                         r->sam6 = NULL;
1927                                 }
1928                         break; }
1929
1930                         default:
1931                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
1932                 }
1933         }
1934         if (ndr_flags & NDR_BUFFERS) {
1935                 switch (level) {
1936                         case NetlogonValidationSamInfo:
1937                                 if (r->sam2) {
1938                                         _mem_save_sam2_0 = NDR_PULL_GET_MEM_CTX(ndr);
1939                                         NDR_PULL_SET_MEM_CTX(ndr, r->sam2, 0);
1940                                         NDR_CHECK(ndr_pull_netr_SamInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam2));
1941                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sam2_0, 0);
1942                                 }
1943                         break;
1944
1945                         case NetlogonValidationSamInfo2:
1946                                 if (r->sam3) {
1947                                         _mem_save_sam3_0 = NDR_PULL_GET_MEM_CTX(ndr);
1948                                         NDR_PULL_SET_MEM_CTX(ndr, r->sam3, 0);
1949                                         NDR_CHECK(ndr_pull_netr_SamInfo3(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam3));
1950                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sam3_0, 0);
1951                                 }
1952                         break;
1953
1954                         case 4:
1955                                 if (r->pac) {
1956                                         _mem_save_pac_0 = NDR_PULL_GET_MEM_CTX(ndr);
1957                                         NDR_PULL_SET_MEM_CTX(ndr, r->pac, 0);
1958                                         NDR_CHECK(ndr_pull_netr_PacInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->pac));
1959                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_pac_0, 0);
1960                                 }
1961                         break;
1962
1963                         case NetlogonValidationGenericInfo2:
1964                                 if (r->generic) {
1965                                         _mem_save_generic_0 = NDR_PULL_GET_MEM_CTX(ndr);
1966                                         NDR_PULL_SET_MEM_CTX(ndr, r->generic, 0);
1967                                         NDR_CHECK(ndr_pull_netr_GenericInfo2(ndr, NDR_SCALARS|NDR_BUFFERS, r->generic));
1968                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_generic_0, 0);
1969                                 }
1970                         break;
1971
1972                         case NetlogonValidationSamInfo4:
1973                                 if (r->sam6) {
1974                                         _mem_save_sam6_0 = NDR_PULL_GET_MEM_CTX(ndr);
1975                                         NDR_PULL_SET_MEM_CTX(ndr, r->sam6, 0);
1976                                         NDR_CHECK(ndr_pull_netr_SamInfo6(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam6));
1977                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sam6_0, 0);
1978                                 }
1979                         break;
1980
1981                         default:
1982                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
1983                 }
1984         }
1985         return NDR_ERR_SUCCESS;
1986 }
1987
1988 _PUBLIC_ void ndr_print_netr_Validation(struct ndr_print *ndr, const char *name, const union netr_Validation *r)
1989 {
1990         int level;
1991         level = ndr_print_get_switch_value(ndr, r);
1992         ndr_print_union(ndr, name, level, "netr_Validation");
1993         switch (level) {
1994                 case NetlogonValidationSamInfo:
1995                         ndr_print_ptr(ndr, "sam2", r->sam2);
1996                         ndr->depth++;
1997                         if (r->sam2) {
1998                                 ndr_print_netr_SamInfo2(ndr, "sam2", r->sam2);
1999                         }
2000                         ndr->depth--;
2001                 break;
2002
2003                 case NetlogonValidationSamInfo2:
2004                         ndr_print_ptr(ndr, "sam3", r->sam3);
2005                         ndr->depth++;
2006                         if (r->sam3) {
2007                                 ndr_print_netr_SamInfo3(ndr, "sam3", r->sam3);
2008                         }
2009                         ndr->depth--;
2010                 break;
2011
2012                 case 4:
2013                         ndr_print_ptr(ndr, "pac", r->pac);
2014                         ndr->depth++;
2015                         if (r->pac) {
2016                                 ndr_print_netr_PacInfo(ndr, "pac", r->pac);
2017                         }
2018                         ndr->depth--;
2019                 break;
2020
2021                 case NetlogonValidationGenericInfo2:
2022                         ndr_print_ptr(ndr, "generic", r->generic);
2023                         ndr->depth++;
2024                         if (r->generic) {
2025                                 ndr_print_netr_GenericInfo2(ndr, "generic", r->generic);
2026                         }
2027                         ndr->depth--;
2028                 break;
2029
2030                 case NetlogonValidationSamInfo4:
2031                         ndr_print_ptr(ndr, "sam6", r->sam6);
2032                         ndr->depth++;
2033                         if (r->sam6) {
2034                                 ndr_print_netr_SamInfo6(ndr, "sam6", r->sam6);
2035                         }
2036                         ndr->depth--;
2037                 break;
2038
2039                 default:
2040                         ndr_print_bad_level(ndr, name, level);
2041         }
2042 }
2043
2044 _PUBLIC_ enum ndr_err_code ndr_push_netr_Credential(struct ndr_push *ndr, int ndr_flags, const struct netr_Credential *r)
2045 {
2046         {
2047                 uint32_t _flags_save_STRUCT = ndr->flags;
2048                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
2049                 if (ndr_flags & NDR_SCALARS) {
2050                         NDR_CHECK(ndr_push_align(ndr, 1));
2051                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, 8));
2052                 }
2053                 if (ndr_flags & NDR_BUFFERS) {
2054                 }
2055                 ndr->flags = _flags_save_STRUCT;
2056         }
2057         return NDR_ERR_SUCCESS;
2058 }
2059
2060 _PUBLIC_ enum ndr_err_code ndr_pull_netr_Credential(struct ndr_pull *ndr, int ndr_flags, struct netr_Credential *r)
2061 {
2062         {
2063                 uint32_t _flags_save_STRUCT = ndr->flags;
2064                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
2065                 if (ndr_flags & NDR_SCALARS) {
2066                         NDR_CHECK(ndr_pull_align(ndr, 1));
2067                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, 8));
2068                 }
2069                 if (ndr_flags & NDR_BUFFERS) {
2070                 }
2071                 ndr->flags = _flags_save_STRUCT;
2072         }
2073         return NDR_ERR_SUCCESS;
2074 }
2075
2076 _PUBLIC_ void ndr_print_netr_Credential(struct ndr_print *ndr, const char *name, const struct netr_Credential *r)
2077 {
2078         ndr_print_struct(ndr, name, "netr_Credential");
2079         {
2080                 uint32_t _flags_save_STRUCT = ndr->flags;
2081                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
2082                 ndr->depth++;
2083                 ndr_print_array_uint8(ndr, "data", r->data, 8);
2084                 ndr->depth--;
2085                 ndr->flags = _flags_save_STRUCT;
2086         }
2087 }
2088
2089 _PUBLIC_ enum ndr_err_code ndr_push_netr_Authenticator(struct ndr_push *ndr, int ndr_flags, const struct netr_Authenticator *r)
2090 {
2091         if (ndr_flags & NDR_SCALARS) {
2092                 NDR_CHECK(ndr_push_align(ndr, 4));
2093                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, &r->cred));
2094                 NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->timestamp));
2095         }
2096         if (ndr_flags & NDR_BUFFERS) {
2097         }
2098         return NDR_ERR_SUCCESS;
2099 }
2100
2101 _PUBLIC_ enum ndr_err_code ndr_pull_netr_Authenticator(struct ndr_pull *ndr, int ndr_flags, struct netr_Authenticator *r)
2102 {
2103         if (ndr_flags & NDR_SCALARS) {
2104                 NDR_CHECK(ndr_pull_align(ndr, 4));
2105                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, &r->cred));
2106                 NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->timestamp));
2107         }
2108         if (ndr_flags & NDR_BUFFERS) {
2109         }
2110         return NDR_ERR_SUCCESS;
2111 }
2112
2113 _PUBLIC_ void ndr_print_netr_Authenticator(struct ndr_print *ndr, const char *name, const struct netr_Authenticator *r)
2114 {
2115         ndr_print_struct(ndr, name, "netr_Authenticator");
2116         ndr->depth++;
2117         ndr_print_netr_Credential(ndr, "cred", &r->cred);
2118         ndr_print_time_t(ndr, "timestamp", r->timestamp);
2119         ndr->depth--;
2120 }
2121
2122 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)
2123 {
2124         if (ndr_flags & NDR_SCALARS) {
2125                 NDR_CHECK(ndr_push_align(ndr, 4));
2126                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->account_name));
2127                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
2128                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2129                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2130                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2131                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
2132                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
2133                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
2134                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
2135         }
2136         if (ndr_flags & NDR_BUFFERS) {
2137                 if (r->account_name) {
2138                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->account_name, CH_UTF16)));
2139                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
2140                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->account_name, CH_UTF16)));
2141                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->account_name, ndr_charset_length(r->account_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
2142                 }
2143                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
2144                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2145                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2146                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2147         }
2148         return NDR_ERR_SUCCESS;
2149 }
2150
2151 static enum ndr_err_code ndr_pull_netr_DELTA_DELETE_USER(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_DELETE_USER *r)
2152 {
2153         uint32_t _ptr_account_name;
2154         TALLOC_CTX *_mem_save_account_name_0;
2155         if (ndr_flags & NDR_SCALARS) {
2156                 NDR_CHECK(ndr_pull_align(ndr, 4));
2157                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_account_name));
2158                 if (_ptr_account_name) {
2159                         NDR_PULL_ALLOC(ndr, r->account_name);
2160                 } else {
2161                         r->account_name = NULL;
2162                 }
2163                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
2164                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2165                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2166                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2167                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
2168                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
2169                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
2170                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
2171         }
2172         if (ndr_flags & NDR_BUFFERS) {
2173                 if (r->account_name) {
2174                         _mem_save_account_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
2175                         NDR_PULL_SET_MEM_CTX(ndr, r->account_name, 0);
2176                         NDR_CHECK(ndr_pull_array_size(ndr, &r->account_name));
2177                         NDR_CHECK(ndr_pull_array_length(ndr, &r->account_name));
2178                         if (ndr_get_array_length(ndr, &r->account_name) > ndr_get_array_size(ndr, &r->account_name)) {
2179                                 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));
2180                         }
2181                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->account_name), sizeof(uint16_t)));
2182                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->account_name, ndr_get_array_length(ndr, &r->account_name), sizeof(uint16_t), CH_UTF16));
2183                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_account_name_0, 0);
2184                 }
2185                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
2186                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2187                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2188                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2189         }
2190         return NDR_ERR_SUCCESS;
2191 }
2192
2193 _PUBLIC_ void ndr_print_netr_DELTA_DELETE_USER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_USER *r)
2194 {
2195         ndr_print_struct(ndr, name, "netr_DELTA_DELETE_USER");
2196         ndr->depth++;
2197         ndr_print_ptr(ndr, "account_name", r->account_name);
2198         ndr->depth++;
2199         if (r->account_name) {
2200                 ndr_print_string(ndr, "account_name", r->account_name);
2201         }
2202         ndr->depth--;
2203         ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
2204         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
2205         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
2206         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
2207         ndr_print_uint32(ndr, "unknown5", r->unknown5);
2208         ndr_print_uint32(ndr, "unknown6", r->unknown6);
2209         ndr_print_uint32(ndr, "unknown7", r->unknown7);
2210         ndr_print_uint32(ndr, "unknown8", r->unknown8);
2211         ndr->depth--;
2212 }
2213
2214 static enum ndr_err_code ndr_push_netr_USER_KEY16(struct ndr_push *ndr, int ndr_flags, const struct netr_USER_KEY16 *r)
2215 {
2216         if (ndr_flags & NDR_SCALARS) {
2217                 NDR_CHECK(ndr_push_align(ndr, 4));
2218                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
2219                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
2220                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags));
2221                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, &r->pwd));
2222         }
2223         if (ndr_flags & NDR_BUFFERS) {
2224         }
2225         return NDR_ERR_SUCCESS;
2226 }
2227
2228 static enum ndr_err_code ndr_pull_netr_USER_KEY16(struct ndr_pull *ndr, int ndr_flags, struct netr_USER_KEY16 *r)
2229 {
2230         if (ndr_flags & NDR_SCALARS) {
2231                 NDR_CHECK(ndr_pull_align(ndr, 4));
2232                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
2233                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
2234                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->flags));
2235                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, &r->pwd));
2236         }
2237         if (ndr_flags & NDR_BUFFERS) {
2238         }
2239         return NDR_ERR_SUCCESS;
2240 }
2241
2242 _PUBLIC_ void ndr_print_netr_USER_KEY16(struct ndr_print *ndr, const char *name, const struct netr_USER_KEY16 *r)
2243 {
2244         ndr_print_struct(ndr, name, "netr_USER_KEY16");
2245         ndr->depth++;
2246         ndr_print_uint16(ndr, "length", r->length);
2247         ndr_print_uint16(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->length:r->size);
2248         ndr_print_uint32(ndr, "flags", r->flags);
2249         ndr_print_samr_Password(ndr, "pwd", &r->pwd);
2250         ndr->depth--;
2251 }
2252
2253 static enum ndr_err_code ndr_push_netr_PasswordHistory(struct ndr_push *ndr, int ndr_flags, const struct netr_PasswordHistory *r)
2254 {
2255         if (ndr_flags & NDR_SCALARS) {
2256                 NDR_CHECK(ndr_push_align(ndr, 4));
2257                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->nt_length));
2258                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->nt_length));
2259                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->nt_flags));
2260                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->lm_length));
2261                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->lm_length));
2262                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->lm_flags));
2263                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->nt_history, r->nt_length));
2264                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->lm_history, r->lm_length));
2265         }
2266         if (ndr_flags & NDR_BUFFERS) {
2267         }
2268         return NDR_ERR_SUCCESS;
2269 }
2270
2271 static enum ndr_err_code ndr_pull_netr_PasswordHistory(struct ndr_pull *ndr, int ndr_flags, struct netr_PasswordHistory *r)
2272 {
2273         if (ndr_flags & NDR_SCALARS) {
2274                 NDR_CHECK(ndr_pull_align(ndr, 4));
2275                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->nt_length));
2276                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->nt_size));
2277                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->nt_flags));
2278                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->lm_length));
2279                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->lm_size));
2280                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->lm_flags));
2281                 NDR_PULL_ALLOC_N(ndr, r->nt_history, r->nt_length);
2282                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->nt_history, r->nt_length));
2283                 NDR_PULL_ALLOC_N(ndr, r->lm_history, r->lm_length);
2284                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->lm_history, r->lm_length));
2285         }
2286         if (ndr_flags & NDR_BUFFERS) {
2287         }
2288         return NDR_ERR_SUCCESS;
2289 }
2290
2291 _PUBLIC_ void ndr_print_netr_PasswordHistory(struct ndr_print *ndr, const char *name, const struct netr_PasswordHistory *r)
2292 {
2293         ndr_print_struct(ndr, name, "netr_PasswordHistory");
2294         ndr->depth++;
2295         ndr_print_uint16(ndr, "nt_length", r->nt_length);
2296         ndr_print_uint16(ndr, "nt_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->nt_length:r->nt_size);
2297         ndr_print_uint32(ndr, "nt_flags", r->nt_flags);
2298         ndr_print_uint16(ndr, "lm_length", r->lm_length);
2299         ndr_print_uint16(ndr, "lm_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->lm_length:r->lm_size);
2300         ndr_print_uint32(ndr, "lm_flags", r->lm_flags);
2301         ndr_print_array_uint8(ndr, "nt_history", r->nt_history, r->nt_length);
2302         ndr_print_array_uint8(ndr, "lm_history", r->lm_history, r->lm_length);
2303         ndr->depth--;
2304 }
2305
2306 static enum ndr_err_code ndr_push_netr_USER_KEYS2(struct ndr_push *ndr, int ndr_flags, const struct netr_USER_KEYS2 *r)
2307 {
2308         if (ndr_flags & NDR_SCALARS) {
2309                 NDR_CHECK(ndr_push_align(ndr, 4));
2310                 NDR_CHECK(ndr_push_netr_USER_KEY16(ndr, NDR_SCALARS, &r->lmpassword));
2311                 NDR_CHECK(ndr_push_netr_USER_KEY16(ndr, NDR_SCALARS, &r->ntpassword));
2312                 NDR_CHECK(ndr_push_netr_PasswordHistory(ndr, NDR_SCALARS, &r->history));
2313         }
2314         if (ndr_flags & NDR_BUFFERS) {
2315         }
2316         return NDR_ERR_SUCCESS;
2317 }
2318
2319 static enum ndr_err_code ndr_pull_netr_USER_KEYS2(struct ndr_pull *ndr, int ndr_flags, struct netr_USER_KEYS2 *r)
2320 {
2321         if (ndr_flags & NDR_SCALARS) {
2322                 NDR_CHECK(ndr_pull_align(ndr, 4));
2323                 NDR_CHECK(ndr_pull_netr_USER_KEY16(ndr, NDR_SCALARS, &r->lmpassword));
2324                 NDR_CHECK(ndr_pull_netr_USER_KEY16(ndr, NDR_SCALARS, &r->ntpassword));
2325                 NDR_CHECK(ndr_pull_netr_PasswordHistory(ndr, NDR_SCALARS, &r->history));
2326         }
2327         if (ndr_flags & NDR_BUFFERS) {
2328         }
2329         return NDR_ERR_SUCCESS;
2330 }
2331
2332 _PUBLIC_ void ndr_print_netr_USER_KEYS2(struct ndr_print *ndr, const char *name, const struct netr_USER_KEYS2 *r)
2333 {
2334         ndr_print_struct(ndr, name, "netr_USER_KEYS2");
2335         ndr->depth++;
2336         ndr_print_netr_USER_KEY16(ndr, "lmpassword", &r->lmpassword);
2337         ndr_print_netr_USER_KEY16(ndr, "ntpassword", &r->ntpassword);
2338         ndr_print_netr_PasswordHistory(ndr, "history", &r->history);
2339         ndr->depth--;
2340 }
2341
2342 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)
2343 {
2344         if (ndr_flags & NDR_SCALARS) {
2345                 NDR_CHECK(ndr_push_align(ndr, 4));
2346                 NDR_CHECK(ndr_push_netr_USER_KEYS2(ndr, NDR_SCALARS, &r->keys2));
2347         }
2348         if (ndr_flags & NDR_BUFFERS) {
2349         }
2350         return NDR_ERR_SUCCESS;
2351 }
2352
2353 static enum ndr_err_code ndr_pull_netr_USER_KEY_UNION(struct ndr_pull *ndr, int ndr_flags, struct netr_USER_KEY_UNION *r)
2354 {
2355         if (ndr_flags & NDR_SCALARS) {
2356                 NDR_CHECK(ndr_pull_align(ndr, 4));
2357                 NDR_CHECK(ndr_pull_netr_USER_KEYS2(ndr, NDR_SCALARS, &r->keys2));
2358         }
2359         if (ndr_flags & NDR_BUFFERS) {
2360         }
2361         return NDR_ERR_SUCCESS;
2362 }
2363
2364 _PUBLIC_ void ndr_print_netr_USER_KEY_UNION(struct ndr_print *ndr, const char *name, const struct netr_USER_KEY_UNION *r)
2365 {
2366         ndr_print_struct(ndr, name, "netr_USER_KEY_UNION");
2367         ndr->depth++;
2368         ndr_print_netr_USER_KEYS2(ndr, "keys2", &r->keys2);
2369         ndr->depth--;
2370 }
2371
2372 _PUBLIC_ enum ndr_err_code ndr_push_netr_USER_KEYS(struct ndr_push *ndr, int ndr_flags, const struct netr_USER_KEYS *r)
2373 {
2374         if (ndr_flags & NDR_SCALARS) {
2375                 NDR_CHECK(ndr_push_align(ndr, 4));
2376                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version));
2377                 NDR_CHECK(ndr_push_netr_USER_KEY_UNION(ndr, NDR_SCALARS, &r->keys));
2378         }
2379         if (ndr_flags & NDR_BUFFERS) {
2380         }
2381         return NDR_ERR_SUCCESS;
2382 }
2383
2384 _PUBLIC_ enum ndr_err_code ndr_pull_netr_USER_KEYS(struct ndr_pull *ndr, int ndr_flags, struct netr_USER_KEYS *r)
2385 {
2386         if (ndr_flags & NDR_SCALARS) {
2387                 NDR_CHECK(ndr_pull_align(ndr, 4));
2388                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->version));
2389                 NDR_CHECK(ndr_pull_netr_USER_KEY_UNION(ndr, NDR_SCALARS, &r->keys));
2390         }
2391         if (ndr_flags & NDR_BUFFERS) {
2392         }
2393         return NDR_ERR_SUCCESS;
2394 }
2395
2396 _PUBLIC_ void ndr_print_netr_USER_KEYS(struct ndr_print *ndr, const char *name, const struct netr_USER_KEYS *r)
2397 {
2398         ndr_print_struct(ndr, name, "netr_USER_KEYS");
2399         ndr->depth++;
2400         ndr_print_uint32(ndr, "version", r->version);
2401         ndr_print_netr_USER_KEY_UNION(ndr, "keys", &r->keys);
2402         ndr->depth--;
2403 }
2404
2405 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)
2406 {
2407         if (ndr_flags & NDR_SCALARS) {
2408                 NDR_CHECK(ndr_push_align(ndr, 4));
2409                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->SensitiveDataFlag));
2410                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->DataLength));
2411                 {
2412                         uint32_t _flags_save_uint8 = ndr->flags;
2413                         ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
2414                         NDR_CHECK(ndr_push_unique_ptr(ndr, r->SensitiveData));
2415                         ndr->flags = _flags_save_uint8;
2416                 }
2417         }
2418         if (ndr_flags & NDR_BUFFERS) {
2419                 {
2420                         uint32_t _flags_save_uint8 = ndr->flags;
2421                         ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
2422                         if (r->SensitiveData) {
2423                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->DataLength));
2424                                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->SensitiveData, r->DataLength));
2425                         }
2426                         ndr->flags = _flags_save_uint8;
2427                 }
2428         }
2429         return NDR_ERR_SUCCESS;
2430 }
2431
2432 static enum ndr_err_code ndr_pull_netr_USER_PRIVATE_INFO(struct ndr_pull *ndr, int ndr_flags, struct netr_USER_PRIVATE_INFO *r)
2433 {
2434         uint32_t _ptr_SensitiveData;
2435         TALLOC_CTX *_mem_save_SensitiveData_0;
2436         if (ndr_flags & NDR_SCALARS) {
2437                 NDR_CHECK(ndr_pull_align(ndr, 4));
2438                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->SensitiveDataFlag));
2439                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->DataLength));
2440                 {
2441                         uint32_t _flags_save_uint8 = ndr->flags;
2442                         ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
2443                         NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_SensitiveData));
2444                         if (_ptr_SensitiveData) {
2445                                 NDR_PULL_ALLOC(ndr, r->SensitiveData);
2446                         } else {
2447                                 r->SensitiveData = NULL;
2448                         }
2449                         ndr->flags = _flags_save_uint8;
2450                 }
2451         }
2452         if (ndr_flags & NDR_BUFFERS) {
2453                 {
2454                         uint32_t _flags_save_uint8 = ndr->flags;
2455                         ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
2456                         if (r->SensitiveData) {
2457                                 _mem_save_SensitiveData_0 = NDR_PULL_GET_MEM_CTX(ndr);
2458                                 NDR_PULL_SET_MEM_CTX(ndr, r->SensitiveData, 0);
2459                                 NDR_CHECK(ndr_pull_array_size(ndr, &r->SensitiveData));
2460                                 NDR_PULL_ALLOC_N(ndr, r->SensitiveData, ndr_get_array_size(ndr, &r->SensitiveData));
2461                                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->SensitiveData, ndr_get_array_size(ndr, &r->SensitiveData)));
2462                                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_SensitiveData_0, 0);
2463                         }
2464                         ndr->flags = _flags_save_uint8;
2465                 }
2466                 if (r->SensitiveData) {
2467                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->SensitiveData, r->DataLength));
2468                 }
2469         }
2470         return NDR_ERR_SUCCESS;
2471 }
2472
2473 _PUBLIC_ void ndr_print_netr_USER_PRIVATE_INFO(struct ndr_print *ndr, const char *name, const struct netr_USER_PRIVATE_INFO *r)
2474 {
2475         ndr_print_struct(ndr, name, "netr_USER_PRIVATE_INFO");
2476         ndr->depth++;
2477         ndr_print_uint8(ndr, "SensitiveDataFlag", r->SensitiveDataFlag);
2478         ndr_print_uint32(ndr, "DataLength", r->DataLength);
2479         ndr_print_ptr(ndr, "SensitiveData", r->SensitiveData);
2480         ndr->depth++;
2481         if (r->SensitiveData) {
2482                 ndr_print_array_uint8(ndr, "SensitiveData", r->SensitiveData, r->DataLength);
2483         }
2484         ndr->depth--;
2485         ndr->depth--;
2486 }
2487
2488 static enum ndr_err_code ndr_push_netr_DELTA_USER(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_USER *r)
2489 {
2490         if (ndr_flags & NDR_SCALARS) {
2491                 NDR_CHECK(ndr_push_align(ndr, 4));
2492                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->account_name));
2493                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->full_name));
2494                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
2495                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->primary_gid));
2496                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->home_directory));
2497                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->home_drive));
2498                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->logon_script));
2499                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->description));
2500                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->workstations));
2501                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_logon));
2502                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_logoff));
2503                 NDR_CHECK(ndr_push_samr_LogonHours(ndr, NDR_SCALARS, &r->logon_hours));
2504                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->bad_password_count));
2505                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->logon_count));
2506                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->last_password_change));
2507                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->acct_expiry));
2508                 NDR_CHECK(ndr_push_samr_AcctFlags(ndr, NDR_SCALARS, r->acct_flags));
2509                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, &r->lmpassword));
2510                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, &r->ntpassword));
2511                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->nt_password_present));
2512                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->lm_password_present));
2513                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->password_expired));
2514                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->comment));
2515                 NDR_CHECK(ndr_push_lsa_BinaryString(ndr, NDR_SCALARS, &r->parameters));
2516                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->country_code));
2517                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->code_page));
2518                 NDR_CHECK(ndr_push_netr_USER_PRIVATE_INFO(ndr, NDR_SCALARS, &r->user_private_info));
2519                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
2520                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
2521                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->profile_path));
2522                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2523                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2524                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2525                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
2526                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
2527                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
2528                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
2529         }
2530         if (ndr_flags & NDR_BUFFERS) {
2531                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->account_name));
2532                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->full_name));
2533                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->home_directory));
2534                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->home_drive));
2535                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->logon_script));
2536                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->description));
2537                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->workstations));
2538                 NDR_CHECK(ndr_push_samr_LogonHours(ndr, NDR_BUFFERS, &r->logon_hours));
2539                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->comment));
2540                 NDR_CHECK(ndr_push_lsa_BinaryString(ndr, NDR_BUFFERS, &r->parameters));
2541                 NDR_CHECK(ndr_push_netr_USER_PRIVATE_INFO(ndr, NDR_BUFFERS, &r->user_private_info));
2542                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
2543                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->profile_path));
2544                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2545                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2546                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2547         }
2548         return NDR_ERR_SUCCESS;
2549 }
2550
2551 static enum ndr_err_code ndr_pull_netr_DELTA_USER(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_USER *r)
2552 {
2553         if (ndr_flags & NDR_SCALARS) {
2554                 NDR_CHECK(ndr_pull_align(ndr, 4));
2555                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->account_name));
2556                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->full_name));
2557                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
2558                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->primary_gid));
2559                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->home_directory));
2560                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->home_drive));
2561                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->logon_script));
2562                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->description));
2563                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->workstations));
2564                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_logon));
2565                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_logoff));
2566                 NDR_CHECK(ndr_pull_samr_LogonHours(ndr, NDR_SCALARS, &r->logon_hours));
2567                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->bad_password_count));
2568                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->logon_count));
2569                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->last_password_change));
2570                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->acct_expiry));
2571                 NDR_CHECK(ndr_pull_samr_AcctFlags(ndr, NDR_SCALARS, &r->acct_flags));
2572                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, &r->lmpassword));
2573                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, &r->ntpassword));
2574                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->nt_password_present));
2575                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->lm_password_present));
2576                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->password_expired));
2577                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->comment));
2578                 NDR_CHECK(ndr_pull_lsa_BinaryString(ndr, NDR_SCALARS, &r->parameters));
2579                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->country_code));
2580                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->code_page));
2581                 NDR_CHECK(ndr_pull_netr_USER_PRIVATE_INFO(ndr, NDR_SCALARS, &r->user_private_info));
2582                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
2583                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
2584                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->profile_path));
2585                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2586                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2587                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2588                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
2589                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
2590                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
2591                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
2592         }
2593         if (ndr_flags & NDR_BUFFERS) {
2594                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->account_name));
2595                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->full_name));
2596                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->home_directory));
2597                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->home_drive));
2598                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->logon_script));
2599                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->description));
2600                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->workstations));
2601                 NDR_CHECK(ndr_pull_samr_LogonHours(ndr, NDR_BUFFERS, &r->logon_hours));
2602                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->comment));
2603                 NDR_CHECK(ndr_pull_lsa_BinaryString(ndr, NDR_BUFFERS, &r->parameters));
2604                 NDR_CHECK(ndr_pull_netr_USER_PRIVATE_INFO(ndr, NDR_BUFFERS, &r->user_private_info));
2605                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
2606                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->profile_path));
2607                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2608                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2609                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2610         }
2611         return NDR_ERR_SUCCESS;
2612 }
2613
2614 _PUBLIC_ void ndr_print_netr_DELTA_USER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_USER *r)
2615 {
2616         ndr_print_struct(ndr, name, "netr_DELTA_USER");
2617         ndr->depth++;
2618         ndr_print_lsa_String(ndr, "account_name", &r->account_name);
2619         ndr_print_lsa_String(ndr, "full_name", &r->full_name);
2620         ndr_print_uint32(ndr, "rid", r->rid);
2621         ndr_print_uint32(ndr, "primary_gid", r->primary_gid);
2622         ndr_print_lsa_String(ndr, "home_directory", &r->home_directory);
2623         ndr_print_lsa_String(ndr, "home_drive", &r->home_drive);
2624         ndr_print_lsa_String(ndr, "logon_script", &r->logon_script);
2625         ndr_print_lsa_String(ndr, "description", &r->description);
2626         ndr_print_lsa_String(ndr, "workstations", &r->workstations);
2627         ndr_print_NTTIME(ndr, "last_logon", r->last_logon);
2628         ndr_print_NTTIME(ndr, "last_logoff", r->last_logoff);
2629         ndr_print_samr_LogonHours(ndr, "logon_hours", &r->logon_hours);
2630         ndr_print_uint16(ndr, "bad_password_count", r->bad_password_count);
2631         ndr_print_uint16(ndr, "logon_count", r->logon_count);
2632         ndr_print_NTTIME(ndr, "last_password_change", r->last_password_change);
2633         ndr_print_NTTIME(ndr, "acct_expiry", r->acct_expiry);
2634         ndr_print_samr_AcctFlags(ndr, "acct_flags", r->acct_flags);
2635         ndr_print_samr_Password(ndr, "lmpassword", &r->lmpassword);
2636         ndr_print_samr_Password(ndr, "ntpassword", &r->ntpassword);
2637         ndr_print_uint8(ndr, "nt_password_present", r->nt_password_present);
2638         ndr_print_uint8(ndr, "lm_password_present", r->lm_password_present);
2639         ndr_print_uint8(ndr, "password_expired", r->password_expired);
2640         ndr_print_lsa_String(ndr, "comment", &r->comment);
2641         ndr_print_lsa_BinaryString(ndr, "parameters", &r->parameters);
2642         ndr_print_uint16(ndr, "country_code", r->country_code);
2643         ndr_print_uint16(ndr, "code_page", r->code_page);
2644         ndr_print_netr_USER_PRIVATE_INFO(ndr, "user_private_info", &r->user_private_info);
2645         ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
2646         ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
2647         ndr_print_lsa_String(ndr, "profile_path", &r->profile_path);
2648         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
2649         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
2650         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
2651         ndr_print_uint32(ndr, "unknown5", r->unknown5);
2652         ndr_print_uint32(ndr, "unknown6", r->unknown6);
2653         ndr_print_uint32(ndr, "unknown7", r->unknown7);
2654         ndr_print_uint32(ndr, "unknown8", r->unknown8);
2655         ndr->depth--;
2656 }
2657
2658 static enum ndr_err_code ndr_push_netr_DELTA_DOMAIN(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_DOMAIN *r)
2659 {
2660         if (ndr_flags & NDR_SCALARS) {
2661                 NDR_CHECK(ndr_push_align(ndr, 4));
2662                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
2663                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->oem_information));
2664                 NDR_CHECK(ndr_push_dlong(ndr, NDR_SCALARS, r->force_logoff_time));
2665                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->min_password_length));
2666                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->password_history_length));
2667                 NDR_CHECK(ndr_push_dlong(ndr, NDR_SCALARS, r->max_password_age));
2668                 NDR_CHECK(ndr_push_dlong(ndr, NDR_SCALARS, r->min_password_age));
2669                 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->sequence_num));
2670                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->domain_create_time));
2671                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
2672                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
2673                 NDR_CHECK(ndr_push_lsa_BinaryString(ndr, NDR_SCALARS, &r->account_lockout));
2674                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2675                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2676                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2677                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->logon_to_chgpass));
2678                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
2679                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
2680                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
2681         }
2682         if (ndr_flags & NDR_BUFFERS) {
2683                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
2684                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->oem_information));
2685                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
2686                 NDR_CHECK(ndr_push_lsa_BinaryString(ndr, NDR_BUFFERS, &r->account_lockout));
2687                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2688                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2689                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2690         }
2691         return NDR_ERR_SUCCESS;
2692 }
2693
2694 static enum ndr_err_code ndr_pull_netr_DELTA_DOMAIN(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_DOMAIN *r)
2695 {
2696         if (ndr_flags & NDR_SCALARS) {
2697                 NDR_CHECK(ndr_pull_align(ndr, 4));
2698                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
2699                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->oem_information));
2700                 NDR_CHECK(ndr_pull_dlong(ndr, NDR_SCALARS, &r->force_logoff_time));
2701                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->min_password_length));
2702                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->password_history_length));
2703                 NDR_CHECK(ndr_pull_dlong(ndr, NDR_SCALARS, &r->max_password_age));
2704                 NDR_CHECK(ndr_pull_dlong(ndr, NDR_SCALARS, &r->min_password_age));
2705                 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->sequence_num));
2706                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->domain_create_time));
2707                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
2708                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
2709                 NDR_CHECK(ndr_pull_lsa_BinaryString(ndr, NDR_SCALARS, &r->account_lockout));
2710                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2711                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2712                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2713                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->logon_to_chgpass));
2714                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
2715                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
2716                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
2717         }
2718         if (ndr_flags & NDR_BUFFERS) {
2719                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
2720                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->oem_information));
2721                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
2722                 NDR_CHECK(ndr_pull_lsa_BinaryString(ndr, NDR_BUFFERS, &r->account_lockout));
2723                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2724                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2725                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2726         }
2727         return NDR_ERR_SUCCESS;
2728 }
2729
2730 _PUBLIC_ void ndr_print_netr_DELTA_DOMAIN(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DOMAIN *r)
2731 {
2732         ndr_print_struct(ndr, name, "netr_DELTA_DOMAIN");
2733         ndr->depth++;
2734         ndr_print_lsa_String(ndr, "domain_name", &r->domain_name);
2735         ndr_print_lsa_String(ndr, "oem_information", &r->oem_information);
2736         ndr_print_dlong(ndr, "force_logoff_time", r->force_logoff_time);
2737         ndr_print_uint16(ndr, "min_password_length", r->min_password_length);
2738         ndr_print_uint16(ndr, "password_history_length", r->password_history_length);
2739         ndr_print_dlong(ndr, "max_password_age", r->max_password_age);
2740         ndr_print_dlong(ndr, "min_password_age", r->min_password_age);
2741         ndr_print_udlong(ndr, "sequence_num", r->sequence_num);
2742         ndr_print_NTTIME(ndr, "domain_create_time", r->domain_create_time);
2743         ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
2744         ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
2745         ndr_print_lsa_BinaryString(ndr, "account_lockout", &r->account_lockout);
2746         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
2747         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
2748         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
2749         ndr_print_uint32(ndr, "logon_to_chgpass", r->logon_to_chgpass);
2750         ndr_print_uint32(ndr, "unknown6", r->unknown6);
2751         ndr_print_uint32(ndr, "unknown7", r->unknown7);
2752         ndr_print_uint32(ndr, "unknown8", r->unknown8);
2753         ndr->depth--;
2754 }
2755
2756 static enum ndr_err_code ndr_push_netr_DELTA_GROUP(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_GROUP *r)
2757 {
2758         if (ndr_flags & NDR_SCALARS) {
2759                 NDR_CHECK(ndr_push_align(ndr, 4));
2760                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->group_name));
2761                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
2762                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attributes));
2763                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->description));
2764                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
2765                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
2766                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
2767                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2768                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2769                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2770                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
2771                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
2772                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
2773                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
2774         }
2775         if (ndr_flags & NDR_BUFFERS) {
2776                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->group_name));
2777                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->description));
2778                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
2779                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
2780                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2781                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2782                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2783         }
2784         return NDR_ERR_SUCCESS;
2785 }
2786
2787 static enum ndr_err_code ndr_pull_netr_DELTA_GROUP(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_GROUP *r)
2788 {
2789         if (ndr_flags & NDR_SCALARS) {
2790                 NDR_CHECK(ndr_pull_align(ndr, 4));
2791                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->group_name));
2792                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
2793                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attributes));
2794                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->description));
2795                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
2796                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
2797                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
2798                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2799                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2800                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2801                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
2802                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
2803                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
2804                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
2805         }
2806         if (ndr_flags & NDR_BUFFERS) {
2807                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->group_name));
2808                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->description));
2809                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
2810                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
2811                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2812                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2813                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2814         }
2815         return NDR_ERR_SUCCESS;
2816 }
2817
2818 _PUBLIC_ void ndr_print_netr_DELTA_GROUP(struct ndr_print *ndr, const char *name, const struct netr_DELTA_GROUP *r)
2819 {
2820         ndr_print_struct(ndr, name, "netr_DELTA_GROUP");
2821         ndr->depth++;
2822         ndr_print_lsa_String(ndr, "group_name", &r->group_name);
2823         ndr_print_uint32(ndr, "rid", r->rid);
2824         ndr_print_uint32(ndr, "attributes", r->attributes);
2825         ndr_print_lsa_String(ndr, "description", &r->description);
2826         ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
2827         ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
2828         ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
2829         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
2830         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
2831         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
2832         ndr_print_uint32(ndr, "unknown5", r->unknown5);
2833         ndr_print_uint32(ndr, "unknown6", r->unknown6);
2834         ndr_print_uint32(ndr, "unknown7", r->unknown7);
2835         ndr_print_uint32(ndr, "unknown8", r->unknown8);
2836         ndr->depth--;
2837 }
2838
2839 static enum ndr_err_code ndr_push_netr_DELTA_RENAME(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_RENAME *r)
2840 {
2841         if (ndr_flags & NDR_SCALARS) {
2842                 NDR_CHECK(ndr_push_align(ndr, 4));
2843                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->OldName));
2844                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->NewName));
2845                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
2846                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2847                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2848                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2849                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
2850                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
2851                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
2852                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
2853         }
2854         if (ndr_flags & NDR_BUFFERS) {
2855                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->OldName));
2856                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->NewName));
2857                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
2858                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2859                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2860                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2861         }
2862         return NDR_ERR_SUCCESS;
2863 }
2864
2865 static enum ndr_err_code ndr_pull_netr_DELTA_RENAME(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_RENAME *r)
2866 {
2867         if (ndr_flags & NDR_SCALARS) {
2868                 NDR_CHECK(ndr_pull_align(ndr, 4));
2869                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->OldName));
2870                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->NewName));
2871                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
2872                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
2873                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
2874                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
2875                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
2876                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
2877                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
2878                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
2879         }
2880         if (ndr_flags & NDR_BUFFERS) {
2881                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->OldName));
2882                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->NewName));
2883                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
2884                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
2885                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
2886                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
2887         }
2888         return NDR_ERR_SUCCESS;
2889 }
2890
2891 _PUBLIC_ void ndr_print_netr_DELTA_RENAME(struct ndr_print *ndr, const char *name, const struct netr_DELTA_RENAME *r)
2892 {
2893         ndr_print_struct(ndr, name, "netr_DELTA_RENAME");
2894         ndr->depth++;
2895         ndr_print_lsa_String(ndr, "OldName", &r->OldName);
2896         ndr_print_lsa_String(ndr, "NewName", &r->NewName);
2897         ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
2898         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
2899         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
2900         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
2901         ndr_print_uint32(ndr, "unknown5", r->unknown5);
2902         ndr_print_uint32(ndr, "unknown6", r->unknown6);
2903         ndr_print_uint32(ndr, "unknown7", r->unknown7);
2904         ndr_print_uint32(ndr, "unknown8", r->unknown8);
2905         ndr->depth--;
2906 }
2907
2908 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)
2909 {
2910         uint32_t cntr_rids_1;
2911         uint32_t cntr_attribs_1;
2912         if (ndr_flags & NDR_SCALARS) {
2913                 NDR_CHECK(ndr_push_align(ndr, 4));
2914                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->rids));
2915                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->attribs));
2916                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_rids));
2917                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
2918                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
2919                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown3));
2920                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown4));
2921         }
2922         if (ndr_flags & NDR_BUFFERS) {
2923                 if (r->rids) {
2924                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_rids));
2925                         for (cntr_rids_1 = 0; cntr_rids_1 < r->num_rids; cntr_rids_1++) {
2926                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rids[cntr_rids_1]));
2927                         }
2928                 }
2929                 if (r->attribs) {
2930                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_rids));
2931                         for (cntr_attribs_1 = 0; cntr_attribs_1 < r->num_rids; cntr_attribs_1++) {
2932                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->attribs[cntr_attribs_1]));
2933                         }
2934                 }
2935         }
2936         return NDR_ERR_SUCCESS;
2937 }
2938
2939 static enum ndr_err_code ndr_pull_netr_DELTA_GROUP_MEMBER(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_GROUP_MEMBER *r)
2940 {
2941         uint32_t _ptr_rids;
2942         uint32_t cntr_rids_1;
2943         TALLOC_CTX *_mem_save_rids_0;
2944         TALLOC_CTX *_mem_save_rids_1;
2945         uint32_t _ptr_attribs;
2946         uint32_t cntr_attribs_1;
2947         TALLOC_CTX *_mem_save_attribs_0;
2948         TALLOC_CTX *_mem_save_attribs_1;
2949         if (ndr_flags & NDR_SCALARS) {
2950                 NDR_CHECK(ndr_pull_align(ndr, 4));
2951                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rids));
2952                 if (_ptr_rids) {
2953                         NDR_PULL_ALLOC(ndr, r->rids);
2954                 } else {
2955                         r->rids = NULL;
2956                 }
2957                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_attribs));
2958                 if (_ptr_attribs) {
2959                         NDR_PULL_ALLOC(ndr, r->attribs);
2960                 } else {
2961                         r->attribs = NULL;
2962                 }
2963                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_rids));
2964                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
2965                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
2966                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown3));
2967                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown4));
2968         }
2969         if (ndr_flags & NDR_BUFFERS) {
2970                 if (r->rids) {
2971                         _mem_save_rids_0 = NDR_PULL_GET_MEM_CTX(ndr);
2972                         NDR_PULL_SET_MEM_CTX(ndr, r->rids, 0);
2973                         NDR_CHECK(ndr_pull_array_size(ndr, &r->rids));
2974                         NDR_PULL_ALLOC_N(ndr, r->rids, ndr_get_array_size(ndr, &r->rids));
2975                         _mem_save_rids_1 = NDR_PULL_GET_MEM_CTX(ndr);
2976                         NDR_PULL_SET_MEM_CTX(ndr, r->rids, 0);
2977                         for (cntr_rids_1 = 0; cntr_rids_1 < r->num_rids; cntr_rids_1++) {
2978                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rids[cntr_rids_1]));
2979                         }
2980                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rids_1, 0);
2981                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rids_0, 0);
2982                 }
2983                 if (r->attribs) {
2984                         _mem_save_attribs_0 = NDR_PULL_GET_MEM_CTX(ndr);
2985                         NDR_PULL_SET_MEM_CTX(ndr, r->attribs, 0);
2986                         NDR_CHECK(ndr_pull_array_size(ndr, &r->attribs));
2987                         NDR_PULL_ALLOC_N(ndr, r->attribs, ndr_get_array_size(ndr, &r->attribs));
2988                         _mem_save_attribs_1 = NDR_PULL_GET_MEM_CTX(ndr);
2989                         NDR_PULL_SET_MEM_CTX(ndr, r->attribs, 0);
2990                         for (cntr_attribs_1 = 0; cntr_attribs_1 < r->num_rids; cntr_attribs_1++) {
2991                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->attribs[cntr_attribs_1]));
2992                         }
2993                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_attribs_1, 0);
2994                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_attribs_0, 0);
2995                 }
2996                 if (r->rids) {
2997                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->rids, r->num_rids));
2998                 }
2999                 if (r->attribs) {
3000                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->attribs, r->num_rids));
3001                 }
3002         }
3003         return NDR_ERR_SUCCESS;
3004 }
3005
3006 _PUBLIC_ void ndr_print_netr_DELTA_GROUP_MEMBER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_GROUP_MEMBER *r)
3007 {
3008         uint32_t cntr_rids_1;
3009         uint32_t cntr_attribs_1;
3010         ndr_print_struct(ndr, name, "netr_DELTA_GROUP_MEMBER");
3011         ndr->depth++;
3012         ndr_print_ptr(ndr, "rids", r->rids);
3013         ndr->depth++;
3014         if (r->rids) {
3015                 ndr->print(ndr, "%s: ARRAY(%d)", "rids", (int)r->num_rids);
3016                 ndr->depth++;
3017                 for (cntr_rids_1=0;cntr_rids_1<r->num_rids;cntr_rids_1++) {
3018                         char *idx_1=NULL;
3019                         if (asprintf(&idx_1, "[%d]", cntr_rids_1) != -1) {
3020                                 ndr_print_uint32(ndr, "rids", r->rids[cntr_rids_1]);
3021                                 free(idx_1);
3022                         }
3023                 }
3024                 ndr->depth--;
3025         }
3026         ndr->depth--;
3027         ndr_print_ptr(ndr, "attribs", r->attribs);
3028         ndr->depth++;
3029         if (r->attribs) {
3030                 ndr->print(ndr, "%s: ARRAY(%d)", "attribs", (int)r->num_rids);
3031                 ndr->depth++;
3032                 for (cntr_attribs_1=0;cntr_attribs_1<r->num_rids;cntr_attribs_1++) {
3033                         char *idx_1=NULL;
3034                         if (asprintf(&idx_1, "[%d]", cntr_attribs_1) != -1) {
3035                                 ndr_print_uint32(ndr, "attribs", r->attribs[cntr_attribs_1]);
3036                                 free(idx_1);
3037                         }
3038                 }
3039                 ndr->depth--;
3040         }
3041         ndr->depth--;
3042         ndr_print_uint32(ndr, "num_rids", r->num_rids);
3043         ndr_print_uint32(ndr, "unknown1", r->unknown1);
3044         ndr_print_uint32(ndr, "unknown2", r->unknown2);
3045         ndr_print_uint32(ndr, "unknown3", r->unknown3);
3046         ndr_print_uint32(ndr, "unknown4", r->unknown4);
3047         ndr->depth--;
3048 }
3049
3050 static enum ndr_err_code ndr_push_netr_DELTA_ALIAS(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_ALIAS *r)
3051 {
3052         if (ndr_flags & NDR_SCALARS) {
3053                 NDR_CHECK(ndr_push_align(ndr, 4));
3054                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->alias_name));
3055                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
3056                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
3057                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
3058                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->description));
3059                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
3060                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
3061                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
3062                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
3063                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
3064                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
3065                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
3066         }
3067         if (ndr_flags & NDR_BUFFERS) {
3068                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->alias_name));
3069                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
3070                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->description));
3071                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
3072                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
3073                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
3074         }
3075         return NDR_ERR_SUCCESS;
3076 }
3077
3078 static enum ndr_err_code ndr_pull_netr_DELTA_ALIAS(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_ALIAS *r)
3079 {
3080         if (ndr_flags & NDR_SCALARS) {
3081                 NDR_CHECK(ndr_pull_align(ndr, 4));
3082                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->alias_name));
3083                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
3084                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
3085                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
3086                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->description));
3087                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
3088                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
3089                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
3090                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
3091                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
3092                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
3093                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
3094         }
3095         if (ndr_flags & NDR_BUFFERS) {
3096                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->alias_name));
3097                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
3098                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->description));
3099                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
3100                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
3101                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
3102         }
3103         return NDR_ERR_SUCCESS;
3104 }
3105
3106 _PUBLIC_ void ndr_print_netr_DELTA_ALIAS(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ALIAS *r)
3107 {
3108         ndr_print_struct(ndr, name, "netr_DELTA_ALIAS");
3109         ndr->depth++;
3110         ndr_print_lsa_String(ndr, "alias_name", &r->alias_name);
3111         ndr_print_uint32(ndr, "rid", r->rid);
3112         ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
3113         ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
3114         ndr_print_lsa_String(ndr, "description", &r->description);
3115         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
3116         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
3117         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
3118         ndr_print_uint32(ndr, "unknown5", r->unknown5);
3119         ndr_print_uint32(ndr, "unknown6", r->unknown6);
3120         ndr_print_uint32(ndr, "unknown7", r->unknown7);
3121         ndr_print_uint32(ndr, "unknown8", r->unknown8);
3122         ndr->depth--;
3123 }
3124
3125 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)
3126 {
3127         if (ndr_flags & NDR_SCALARS) {
3128                 NDR_CHECK(ndr_push_align(ndr, 4));
3129                 NDR_CHECK(ndr_push_lsa_SidArray(ndr, NDR_SCALARS, &r->sids));
3130                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
3131                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
3132                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown3));
3133                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown4));
3134         }
3135         if (ndr_flags & NDR_BUFFERS) {
3136                 NDR_CHECK(ndr_push_lsa_SidArray(ndr, NDR_BUFFERS, &r->sids));
3137         }
3138         return NDR_ERR_SUCCESS;
3139 }
3140
3141 static enum ndr_err_code ndr_pull_netr_DELTA_ALIAS_MEMBER(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_ALIAS_MEMBER *r)
3142 {
3143         if (ndr_flags & NDR_SCALARS) {
3144                 NDR_CHECK(ndr_pull_align(ndr, 4));
3145                 NDR_CHECK(ndr_pull_lsa_SidArray(ndr, NDR_SCALARS, &r->sids));
3146                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
3147                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
3148                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown3));
3149                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown4));
3150         }
3151         if (ndr_flags & NDR_BUFFERS) {
3152                 NDR_CHECK(ndr_pull_lsa_SidArray(ndr, NDR_BUFFERS, &r->sids));
3153         }
3154         return NDR_ERR_SUCCESS;
3155 }
3156
3157 _PUBLIC_ void ndr_print_netr_DELTA_ALIAS_MEMBER(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ALIAS_MEMBER *r)
3158 {
3159         ndr_print_struct(ndr, name, "netr_DELTA_ALIAS_MEMBER");
3160         ndr->depth++;
3161         ndr_print_lsa_SidArray(ndr, "sids", &r->sids);
3162         ndr_print_uint32(ndr, "unknown1", r->unknown1);
3163         ndr_print_uint32(ndr, "unknown2", r->unknown2);
3164         ndr_print_uint32(ndr, "unknown3", r->unknown3);
3165         ndr_print_uint32(ndr, "unknown4", r->unknown4);
3166         ndr->depth--;
3167 }
3168
3169 static enum ndr_err_code ndr_push_netr_QUOTA_LIMITS(struct ndr_push *ndr, int ndr_flags, const struct netr_QUOTA_LIMITS *r)
3170 {
3171         if (ndr_flags & NDR_SCALARS) {
3172                 NDR_CHECK(ndr_push_align(ndr, 4));
3173                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pagedpoollimit));
3174                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->nonpagedpoollimit));
3175                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->minimumworkingsetsize));
3176                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maximumworkingsetsize));
3177                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pagefilelimit));
3178                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->timelimit));
3179         }
3180         if (ndr_flags & NDR_BUFFERS) {
3181         }
3182         return NDR_ERR_SUCCESS;
3183 }
3184
3185 static enum ndr_err_code ndr_pull_netr_QUOTA_LIMITS(struct ndr_pull *ndr, int ndr_flags, struct netr_QUOTA_LIMITS *r)
3186 {
3187         if (ndr_flags & NDR_SCALARS) {
3188                 NDR_CHECK(ndr_pull_align(ndr, 4));
3189                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pagedpoollimit));
3190                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->nonpagedpoollimit));
3191                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->minimumworkingsetsize));
3192                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maximumworkingsetsize));
3193                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pagefilelimit));
3194                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->timelimit));
3195         }
3196         if (ndr_flags & NDR_BUFFERS) {
3197         }
3198         return NDR_ERR_SUCCESS;
3199 }
3200
3201 _PUBLIC_ void ndr_print_netr_QUOTA_LIMITS(struct ndr_print *ndr, const char *name, const struct netr_QUOTA_LIMITS *r)
3202 {
3203         ndr_print_struct(ndr, name, "netr_QUOTA_LIMITS");
3204         ndr->depth++;
3205         ndr_print_uint32(ndr, "pagedpoollimit", r->pagedpoollimit);
3206         ndr_print_uint32(ndr, "nonpagedpoollimit", r->nonpagedpoollimit);
3207         ndr_print_uint32(ndr, "minimumworkingsetsize", r->minimumworkingsetsize);
3208         ndr_print_uint32(ndr, "maximumworkingsetsize", r->maximumworkingsetsize);
3209         ndr_print_uint32(ndr, "pagefilelimit", r->pagefilelimit);
3210         ndr_print_NTTIME(ndr, "timelimit", r->timelimit);
3211         ndr->depth--;
3212 }
3213
3214 static enum ndr_err_code ndr_push_netr_DELTA_POLICY(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_POLICY *r)
3215 {
3216         uint32_t cntr_eventauditoptions_1;
3217         if (ndr_flags & NDR_SCALARS) {
3218                 NDR_CHECK(ndr_push_align(ndr, 4));
3219                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxlogsize));
3220                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->auditretentionperiod));
3221                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->auditingmode));
3222                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxauditeventcount));
3223                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->eventauditoptions));
3224                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->primary_domain_name));
3225                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
3226                 NDR_CHECK(ndr_push_netr_QUOTA_LIMITS(ndr, NDR_SCALARS, &r->quota_limits));
3227                 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, r->sequence_num));
3228                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->db_create_time));
3229                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
3230                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
3231                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
3232                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
3233                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
3234                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
3235                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
3236                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
3237                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
3238                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
3239         }
3240         if (ndr_flags & NDR_BUFFERS) {
3241                 if (r->eventauditoptions) {
3242                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxauditeventcount + 1));
3243                         for (cntr_eventauditoptions_1 = 0; cntr_eventauditoptions_1 < r->maxauditeventcount + 1; cntr_eventauditoptions_1++) {
3244                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->eventauditoptions[cntr_eventauditoptions_1]));
3245                         }
3246                 }
3247                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->primary_domain_name));
3248                 if (r->sid) {
3249                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
3250                 }
3251                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
3252                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
3253                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
3254                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
3255                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
3256         }
3257         return NDR_ERR_SUCCESS;
3258 }
3259
3260 static enum ndr_err_code ndr_pull_netr_DELTA_POLICY(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_POLICY *r)
3261 {
3262         uint32_t _ptr_eventauditoptions;
3263         uint32_t cntr_eventauditoptions_1;
3264         TALLOC_CTX *_mem_save_eventauditoptions_0;
3265         TALLOC_CTX *_mem_save_eventauditoptions_1;
3266         uint32_t _ptr_sid;
3267         TALLOC_CTX *_mem_save_sid_0;
3268         if (ndr_flags & NDR_SCALARS) {
3269                 NDR_CHECK(ndr_pull_align(ndr, 4));
3270                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxlogsize));
3271                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->auditretentionperiod));
3272                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->auditingmode));
3273                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxauditeventcount));
3274                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_eventauditoptions));
3275                 if (_ptr_eventauditoptions) {
3276                         NDR_PULL_ALLOC(ndr, r->eventauditoptions);
3277                 } else {
3278                         r->eventauditoptions = NULL;
3279                 }
3280                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->primary_domain_name));
3281                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
3282                 if (_ptr_sid) {
3283                         NDR_PULL_ALLOC(ndr, r->sid);
3284                 } else {
3285                         r->sid = NULL;
3286                 }
3287                 NDR_CHECK(ndr_pull_netr_QUOTA_LIMITS(ndr, NDR_SCALARS, &r->quota_limits));
3288                 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, &r->sequence_num));
3289                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->db_create_time));
3290                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
3291                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
3292                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
3293                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
3294                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
3295                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
3296                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
3297                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
3298                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
3299                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
3300         }
3301         if (ndr_flags & NDR_BUFFERS) {
3302                 if (r->eventauditoptions) {
3303                         _mem_save_eventauditoptions_0 = NDR_PULL_GET_MEM_CTX(ndr);
3304                         NDR_PULL_SET_MEM_CTX(ndr, r->eventauditoptions, 0);
3305                         NDR_CHECK(ndr_pull_array_size(ndr, &r->eventauditoptions));
3306                         NDR_PULL_ALLOC_N(ndr, r->eventauditoptions, ndr_get_array_size(ndr, &r->eventauditoptions));
3307                         _mem_save_eventauditoptions_1 = NDR_PULL_GET_MEM_CTX(ndr);
3308                         NDR_PULL_SET_MEM_CTX(ndr, r->eventauditoptions, 0);
3309                         for (cntr_eventauditoptions_1 = 0; cntr_eventauditoptions_1 < r->maxauditeventcount + 1; cntr_eventauditoptions_1++) {
3310                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->eventauditoptions[cntr_eventauditoptions_1]));
3311                         }
3312                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_eventauditoptions_1, 0);
3313                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_eventauditoptions_0, 0);
3314                 }
3315                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->primary_domain_name));
3316                 if (r->sid) {
3317                         _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
3318                         NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
3319                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
3320                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
3321                 }
3322                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
3323                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
3324                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
3325                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
3326                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
3327                 if (r->eventauditoptions) {
3328                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->eventauditoptions, r->maxauditeventcount + 1));
3329                 }
3330         }
3331         return NDR_ERR_SUCCESS;
3332 }
3333
3334 _PUBLIC_ void ndr_print_netr_DELTA_POLICY(struct ndr_print *ndr, const char *name, const struct netr_DELTA_POLICY *r)
3335 {
3336         uint32_t cntr_eventauditoptions_1;
3337         ndr_print_struct(ndr, name, "netr_DELTA_POLICY");
3338         ndr->depth++;
3339         ndr_print_uint32(ndr, "maxlogsize", r->maxlogsize);
3340         ndr_print_NTTIME(ndr, "auditretentionperiod", r->auditretentionperiod);
3341         ndr_print_uint8(ndr, "auditingmode", r->auditingmode);
3342         ndr_print_uint32(ndr, "maxauditeventcount", r->maxauditeventcount);
3343         ndr_print_ptr(ndr, "eventauditoptions", r->eventauditoptions);
3344         ndr->depth++;
3345         if (r->eventauditoptions) {
3346                 ndr->print(ndr, "%s: ARRAY(%d)", "eventauditoptions", (int)r->maxauditeventcount + 1);
3347                 ndr->depth++;
3348                 for (cntr_eventauditoptions_1=0;cntr_eventauditoptions_1<r->maxauditeventcount + 1;cntr_eventauditoptions_1++) {
3349                         char *idx_1=NULL;
3350                         if (asprintf(&idx_1, "[%d]", cntr_eventauditoptions_1) != -1) {
3351                                 ndr_print_uint32(ndr, "eventauditoptions", r->eventauditoptions[cntr_eventauditoptions_1]);
3352                                 free(idx_1);
3353                         }
3354                 }
3355                 ndr->depth--;
3356         }
3357         ndr->depth--;
3358         ndr_print_lsa_String(ndr, "primary_domain_name", &r->primary_domain_name);
3359         ndr_print_ptr(ndr, "sid", r->sid);
3360         ndr->depth++;
3361         if (r->sid) {
3362                 ndr_print_dom_sid2(ndr, "sid", r->sid);
3363         }
3364         ndr->depth--;
3365         ndr_print_netr_QUOTA_LIMITS(ndr, "quota_limits", &r->quota_limits);
3366         ndr_print_udlong(ndr, "sequence_num", r->sequence_num);
3367         ndr_print_NTTIME(ndr, "db_create_time", r->db_create_time);
3368         ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
3369         ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
3370         ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
3371         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
3372         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
3373         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
3374         ndr_print_uint32(ndr, "unknown5", r->unknown5);
3375         ndr_print_uint32(ndr, "unknown6", r->unknown6);
3376         ndr_print_uint32(ndr, "unknown7", r->unknown7);
3377         ndr_print_uint32(ndr, "unknown8", r->unknown8);
3378         ndr->depth--;
3379 }
3380
3381 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)
3382 {
3383         uint32_t cntr_controller_names_1;
3384         if (ndr_flags & NDR_SCALARS) {
3385                 NDR_CHECK(ndr_push_align(ndr, 4));
3386                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
3387                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_controllers));
3388                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->controller_names));
3389                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
3390                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
3391                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
3392                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
3393                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
3394                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
3395                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->posix_offset));
3396                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
3397                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
3398                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
3399         }
3400         if (ndr_flags & NDR_BUFFERS) {
3401                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
3402                 if (r->controller_names) {
3403                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_controllers));
3404                         for (cntr_controller_names_1 = 0; cntr_controller_names_1 < r->num_controllers; cntr_controller_names_1++) {
3405                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->controller_names[cntr_controller_names_1]));
3406                         }
3407                         for (cntr_controller_names_1 = 0; cntr_controller_names_1 < r->num_controllers; cntr_controller_names_1++) {
3408                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->controller_names[cntr_controller_names_1]));
3409                         }
3410                 }
3411                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
3412                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
3413                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
3414                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
3415                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
3416         }
3417         return NDR_ERR_SUCCESS;
3418 }
3419
3420 static enum ndr_err_code ndr_pull_netr_DELTA_TRUSTED_DOMAIN(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_TRUSTED_DOMAIN *r)
3421 {
3422         uint32_t _ptr_controller_names;
3423         uint32_t cntr_controller_names_1;
3424         TALLOC_CTX *_mem_save_controller_names_0;
3425         TALLOC_CTX *_mem_save_controller_names_1;
3426         if (ndr_flags & NDR_SCALARS) {
3427                 NDR_CHECK(ndr_pull_align(ndr, 4));
3428                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->domain_name));
3429                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_controllers));
3430                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_controller_names));
3431                 if (_ptr_controller_names) {
3432                         NDR_PULL_ALLOC(ndr, r->controller_names);
3433                 } else {
3434                         r->controller_names = NULL;
3435                 }
3436                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
3437                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
3438                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
3439                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
3440                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
3441                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
3442                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->posix_offset));
3443                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
3444                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
3445                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
3446         }
3447         if (ndr_flags & NDR_BUFFERS) {
3448                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->domain_name));
3449                 if (r->controller_names) {
3450                         _mem_save_controller_names_0 = NDR_PULL_GET_MEM_CTX(ndr);
3451                         NDR_PULL_SET_MEM_CTX(ndr, r->controller_names, 0);
3452                         NDR_CHECK(ndr_pull_array_size(ndr, &r->controller_names));
3453                         NDR_PULL_ALLOC_N(ndr, r->controller_names, ndr_get_array_size(ndr, &r->controller_names));
3454                         _mem_save_controller_names_1 = NDR_PULL_GET_MEM_CTX(ndr);
3455                         NDR_PULL_SET_MEM_CTX(ndr, r->controller_names, 0);
3456                         for (cntr_controller_names_1 = 0; cntr_controller_names_1 < r->num_controllers; cntr_controller_names_1++) {
3457                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->controller_names[cntr_controller_names_1]));
3458                         }
3459                         for (cntr_controller_names_1 = 0; cntr_controller_names_1 < r->num_controllers; cntr_controller_names_1++) {
3460                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->controller_names[cntr_controller_names_1]));
3461                         }
3462                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_controller_names_1, 0);
3463                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_controller_names_0, 0);
3464                 }
3465                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
3466                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
3467                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
3468                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
3469                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
3470                 if (r->controller_names) {
3471                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->controller_names, r->num_controllers));
3472                 }
3473         }
3474         return NDR_ERR_SUCCESS;
3475 }
3476
3477 _PUBLIC_ void ndr_print_netr_DELTA_TRUSTED_DOMAIN(struct ndr_print *ndr, const char *name, const struct netr_DELTA_TRUSTED_DOMAIN *r)
3478 {
3479         uint32_t cntr_controller_names_1;
3480         ndr_print_struct(ndr, name, "netr_DELTA_TRUSTED_DOMAIN");
3481         ndr->depth++;
3482         ndr_print_lsa_String(ndr, "domain_name", &r->domain_name);
3483         ndr_print_uint32(ndr, "num_controllers", r->num_controllers);
3484         ndr_print_ptr(ndr, "controller_names", r->controller_names);
3485         ndr->depth++;
3486         if (r->controller_names) {
3487                 ndr->print(ndr, "%s: ARRAY(%d)", "controller_names", (int)r->num_controllers);
3488                 ndr->depth++;
3489                 for (cntr_controller_names_1=0;cntr_controller_names_1<r->num_controllers;cntr_controller_names_1++) {
3490                         char *idx_1=NULL;
3491                         if (asprintf(&idx_1, "[%d]", cntr_controller_names_1) != -1) {
3492                                 ndr_print_lsa_String(ndr, "controller_names", &r->controller_names[cntr_controller_names_1]);
3493                                 free(idx_1);
3494                         }
3495                 }
3496                 ndr->depth--;
3497         }
3498         ndr->depth--;
3499         ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
3500         ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
3501         ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
3502         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
3503         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
3504         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
3505         ndr_print_uint32(ndr, "posix_offset", r->posix_offset);
3506         ndr_print_uint32(ndr, "unknown6", r->unknown6);
3507         ndr_print_uint32(ndr, "unknown7", r->unknown7);
3508         ndr_print_uint32(ndr, "unknown8", r->unknown8);
3509         ndr->depth--;
3510 }
3511
3512 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)
3513 {
3514         if (ndr_flags & NDR_SCALARS) {
3515                 NDR_CHECK(ndr_push_align(ndr, 2));
3516                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->unknown));
3517         }
3518         if (ndr_flags & NDR_BUFFERS) {
3519         }
3520         return NDR_ERR_SUCCESS;
3521 }
3522
3523 static enum ndr_err_code ndr_pull_netr_DELTA_DELETE_TRUST(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_DELETE_TRUST *r)
3524 {
3525         if (ndr_flags & NDR_SCALARS) {
3526                 NDR_CHECK(ndr_pull_align(ndr, 2));
3527                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unknown));
3528         }
3529         if (ndr_flags & NDR_BUFFERS) {
3530         }
3531         return NDR_ERR_SUCCESS;
3532 }
3533
3534 _PUBLIC_ void ndr_print_netr_DELTA_DELETE_TRUST(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_TRUST *r)
3535 {
3536         ndr_print_struct(ndr, name, "netr_DELTA_DELETE_TRUST");
3537         ndr->depth++;
3538         ndr_print_uint16(ndr, "unknown", r->unknown);
3539         ndr->depth--;
3540 }
3541
3542 static enum ndr_err_code ndr_push_netr_DELTA_ACCOUNT(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_ACCOUNT *r)
3543 {
3544         uint32_t cntr_privilege_attrib_1;
3545         uint32_t cntr_privilege_name_1;
3546         if (ndr_flags & NDR_SCALARS) {
3547                 NDR_CHECK(ndr_push_align(ndr, 4));
3548                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->privilege_entries));
3549                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->privilege_control));
3550                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->privilege_attrib));
3551                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->privilege_name));
3552                 NDR_CHECK(ndr_push_netr_QUOTA_LIMITS(ndr, NDR_SCALARS, &r->quotalimits));
3553                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->system_flags));
3554                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
3555                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
3556                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
3557                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
3558                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
3559                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
3560                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
3561                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
3562                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
3563                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
3564         }
3565         if (ndr_flags & NDR_BUFFERS) {
3566                 if (r->privilege_attrib) {
3567                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->privilege_entries));
3568                         for (cntr_privilege_attrib_1 = 0; cntr_privilege_attrib_1 < r->privilege_entries; cntr_privilege_attrib_1++) {
3569                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->privilege_attrib[cntr_privilege_attrib_1]));
3570                         }
3571                 }
3572                 if (r->privilege_name) {
3573                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->privilege_entries));
3574                         for (cntr_privilege_name_1 = 0; cntr_privilege_name_1 < r->privilege_entries; cntr_privilege_name_1++) {
3575                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->privilege_name[cntr_privilege_name_1]));
3576                         }
3577                         for (cntr_privilege_name_1 = 0; cntr_privilege_name_1 < r->privilege_entries; cntr_privilege_name_1++) {
3578                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->privilege_name[cntr_privilege_name_1]));
3579                         }
3580                 }
3581                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
3582                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
3583                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
3584                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
3585                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
3586         }
3587         return NDR_ERR_SUCCESS;
3588 }
3589
3590 static enum ndr_err_code ndr_pull_netr_DELTA_ACCOUNT(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_ACCOUNT *r)
3591 {
3592         uint32_t _ptr_privilege_attrib;
3593         uint32_t cntr_privilege_attrib_1;
3594         TALLOC_CTX *_mem_save_privilege_attrib_0;
3595         TALLOC_CTX *_mem_save_privilege_attrib_1;
3596         uint32_t _ptr_privilege_name;
3597         uint32_t cntr_privilege_name_1;
3598         TALLOC_CTX *_mem_save_privilege_name_0;
3599         TALLOC_CTX *_mem_save_privilege_name_1;
3600         if (ndr_flags & NDR_SCALARS) {
3601                 NDR_CHECK(ndr_pull_align(ndr, 4));
3602                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->privilege_entries));
3603                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->privilege_control));
3604                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_privilege_attrib));
3605                 if (_ptr_privilege_attrib) {
3606                         NDR_PULL_ALLOC(ndr, r->privilege_attrib);
3607                 } else {
3608                         r->privilege_attrib = NULL;
3609                 }
3610                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_privilege_name));
3611                 if (_ptr_privilege_name) {
3612                         NDR_PULL_ALLOC(ndr, r->privilege_name);
3613                 } else {
3614                         r->privilege_name = NULL;
3615                 }
3616                 NDR_CHECK(ndr_pull_netr_QUOTA_LIMITS(ndr, NDR_SCALARS, &r->quotalimits));
3617                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->system_flags));
3618                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
3619                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
3620                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
3621                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
3622                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
3623                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
3624                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
3625                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
3626                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
3627                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
3628         }
3629         if (ndr_flags & NDR_BUFFERS) {
3630                 if (r->privilege_attrib) {
3631                         _mem_save_privilege_attrib_0 = NDR_PULL_GET_MEM_CTX(ndr);
3632                         NDR_PULL_SET_MEM_CTX(ndr, r->privilege_attrib, 0);
3633                         NDR_CHECK(ndr_pull_array_size(ndr, &r->privilege_attrib));
3634                         NDR_PULL_ALLOC_N(ndr, r->privilege_attrib, ndr_get_array_size(ndr, &r->privilege_attrib));
3635                         _mem_save_privilege_attrib_1 = NDR_PULL_GET_MEM_CTX(ndr);
3636                         NDR_PULL_SET_MEM_CTX(ndr, r->privilege_attrib, 0);
3637                         for (cntr_privilege_attrib_1 = 0; cntr_privilege_attrib_1 < r->privilege_entries; cntr_privilege_attrib_1++) {
3638                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->privilege_attrib[cntr_privilege_attrib_1]));
3639                         }
3640                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_privilege_attrib_1, 0);
3641                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_privilege_attrib_0, 0);
3642                 }
3643                 if (r->privilege_name) {
3644                         _mem_save_privilege_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
3645                         NDR_PULL_SET_MEM_CTX(ndr, r->privilege_name, 0);
3646                         NDR_CHECK(ndr_pull_array_size(ndr, &r->privilege_name));
3647                         NDR_PULL_ALLOC_N(ndr, r->privilege_name, ndr_get_array_size(ndr, &r->privilege_name));
3648                         _mem_save_privilege_name_1 = NDR_PULL_GET_MEM_CTX(ndr);
3649                         NDR_PULL_SET_MEM_CTX(ndr, r->privilege_name, 0);
3650                         for (cntr_privilege_name_1 = 0; cntr_privilege_name_1 < r->privilege_entries; cntr_privilege_name_1++) {
3651                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->privilege_name[cntr_privilege_name_1]));
3652                         }
3653                         for (cntr_privilege_name_1 = 0; cntr_privilege_name_1 < r->privilege_entries; cntr_privilege_name_1++) {
3654                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->privilege_name[cntr_privilege_name_1]));
3655                         }
3656                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_privilege_name_1, 0);
3657                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_privilege_name_0, 0);
3658                 }
3659                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
3660                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
3661                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
3662                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
3663                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
3664                 if (r->privilege_attrib) {
3665                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->privilege_attrib, r->privilege_entries));
3666                 }
3667                 if (r->privilege_name) {
3668                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->privilege_name, r->privilege_entries));
3669                 }
3670         }
3671         return NDR_ERR_SUCCESS;
3672 }
3673
3674 _PUBLIC_ void ndr_print_netr_DELTA_ACCOUNT(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ACCOUNT *r)
3675 {
3676         uint32_t cntr_privilege_attrib_1;
3677         uint32_t cntr_privilege_name_1;
3678         ndr_print_struct(ndr, name, "netr_DELTA_ACCOUNT");
3679         ndr->depth++;
3680         ndr_print_uint32(ndr, "privilege_entries", r->privilege_entries);
3681         ndr_print_uint32(ndr, "privilege_control", r->privilege_control);
3682         ndr_print_ptr(ndr, "privilege_attrib", r->privilege_attrib);
3683         ndr->depth++;
3684         if (r->privilege_attrib) {
3685                 ndr->print(ndr, "%s: ARRAY(%d)", "privilege_attrib", (int)r->privilege_entries);
3686                 ndr->depth++;
3687                 for (cntr_privilege_attrib_1=0;cntr_privilege_attrib_1<r->privilege_entries;cntr_privilege_attrib_1++) {
3688                         char *idx_1=NULL;
3689                         if (asprintf(&idx_1, "[%d]", cntr_privilege_attrib_1) != -1) {
3690                                 ndr_print_uint32(ndr, "privilege_attrib", r->privilege_attrib[cntr_privilege_attrib_1]);
3691                                 free(idx_1);
3692                         }
3693                 }
3694                 ndr->depth--;
3695         }
3696         ndr->depth--;
3697         ndr_print_ptr(ndr, "privilege_name", r->privilege_name);
3698         ndr->depth++;
3699         if (r->privilege_name) {
3700                 ndr->print(ndr, "%s: ARRAY(%d)", "privilege_name", (int)r->privilege_entries);
3701                 ndr->depth++;
3702                 for (cntr_privilege_name_1=0;cntr_privilege_name_1<r->privilege_entries;cntr_privilege_name_1++) {
3703                         char *idx_1=NULL;
3704                         if (asprintf(&idx_1, "[%d]", cntr_privilege_name_1) != -1) {
3705                                 ndr_print_lsa_String(ndr, "privilege_name", &r->privilege_name[cntr_privilege_name_1]);
3706                                 free(idx_1);
3707                         }
3708                 }
3709                 ndr->depth--;
3710         }
3711         ndr->depth--;
3712         ndr_print_netr_QUOTA_LIMITS(ndr, "quotalimits", &r->quotalimits);
3713         ndr_print_uint32(ndr, "system_flags", r->system_flags);
3714         ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
3715         ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
3716         ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
3717         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
3718         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
3719         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
3720         ndr_print_uint32(ndr, "unknown5", r->unknown5);
3721         ndr_print_uint32(ndr, "unknown6", r->unknown6);
3722         ndr_print_uint32(ndr, "unknown7", r->unknown7);
3723         ndr_print_uint32(ndr, "unknown8", r->unknown8);
3724         ndr->depth--;
3725 }
3726
3727 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)
3728 {
3729         if (ndr_flags & NDR_SCALARS) {
3730                 NDR_CHECK(ndr_push_align(ndr, 2));
3731                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->unknown));
3732         }
3733         if (ndr_flags & NDR_BUFFERS) {
3734         }
3735         return NDR_ERR_SUCCESS;
3736 }
3737
3738 static enum ndr_err_code ndr_pull_netr_DELTA_DELETE_ACCOUNT(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_DELETE_ACCOUNT *r)
3739 {
3740         if (ndr_flags & NDR_SCALARS) {
3741                 NDR_CHECK(ndr_pull_align(ndr, 2));
3742                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unknown));
3743         }
3744         if (ndr_flags & NDR_BUFFERS) {
3745         }
3746         return NDR_ERR_SUCCESS;
3747 }
3748
3749 _PUBLIC_ void ndr_print_netr_DELTA_DELETE_ACCOUNT(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_ACCOUNT *r)
3750 {
3751         ndr_print_struct(ndr, name, "netr_DELTA_DELETE_ACCOUNT");
3752         ndr->depth++;
3753         ndr_print_uint16(ndr, "unknown", r->unknown);
3754         ndr->depth--;
3755 }
3756
3757 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)
3758 {
3759         if (ndr_flags & NDR_SCALARS) {
3760                 NDR_CHECK(ndr_push_align(ndr, 2));
3761                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->unknown));
3762         }
3763         if (ndr_flags & NDR_BUFFERS) {
3764         }
3765         return NDR_ERR_SUCCESS;
3766 }
3767
3768 static enum ndr_err_code ndr_pull_netr_DELTA_DELETE_SECRET(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_DELETE_SECRET *r)
3769 {
3770         if (ndr_flags & NDR_SCALARS) {
3771                 NDR_CHECK(ndr_pull_align(ndr, 2));
3772                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->unknown));
3773         }
3774         if (ndr_flags & NDR_BUFFERS) {
3775         }
3776         return NDR_ERR_SUCCESS;
3777 }
3778
3779 _PUBLIC_ void ndr_print_netr_DELTA_DELETE_SECRET(struct ndr_print *ndr, const char *name, const struct netr_DELTA_DELETE_SECRET *r)
3780 {
3781         ndr_print_struct(ndr, name, "netr_DELTA_DELETE_SECRET");
3782         ndr->depth++;
3783         ndr_print_uint16(ndr, "unknown", r->unknown);
3784         ndr->depth--;
3785 }
3786
3787 static enum ndr_err_code ndr_push_netr_CIPHER_VALUE(struct ndr_push *ndr, int ndr_flags, const struct netr_CIPHER_VALUE *r)
3788 {
3789         if (ndr_flags & NDR_SCALARS) {
3790                 NDR_CHECK(ndr_push_align(ndr, 4));
3791                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->len));
3792                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxlen));
3793                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->cipher_data));
3794         }
3795         if (ndr_flags & NDR_BUFFERS) {
3796                 if (r->cipher_data) {
3797                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->maxlen));
3798                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
3799                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->len));
3800                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->cipher_data, r->len));
3801                 }
3802         }
3803         return NDR_ERR_SUCCESS;
3804 }
3805
3806 static enum ndr_err_code ndr_pull_netr_CIPHER_VALUE(struct ndr_pull *ndr, int ndr_flags, struct netr_CIPHER_VALUE *r)
3807 {
3808         uint32_t _ptr_cipher_data;
3809         TALLOC_CTX *_mem_save_cipher_data_0;
3810         if (ndr_flags & NDR_SCALARS) {
3811                 NDR_CHECK(ndr_pull_align(ndr, 4));
3812                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->len));
3813                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->maxlen));
3814                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_cipher_data));
3815                 if (_ptr_cipher_data) {
3816                         NDR_PULL_ALLOC(ndr, r->cipher_data);
3817                 } else {
3818                         r->cipher_data = NULL;
3819                 }
3820         }
3821         if (ndr_flags & NDR_BUFFERS) {
3822                 if (r->cipher_data) {
3823                         _mem_save_cipher_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
3824                         NDR_PULL_SET_MEM_CTX(ndr, r->cipher_data, 0);
3825                         NDR_CHECK(ndr_pull_array_size(ndr, &r->cipher_data));
3826                         NDR_CHECK(ndr_pull_array_length(ndr, &r->cipher_data));
3827                         if (ndr_get_array_length(ndr, &r->cipher_data) > ndr_get_array_size(ndr, &r->cipher_data)) {
3828                                 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));
3829                         }
3830                         NDR_PULL_ALLOC_N(ndr, r->cipher_data, ndr_get_array_size(ndr, &r->cipher_data));
3831                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->cipher_data, ndr_get_array_length(ndr, &r->cipher_data)));
3832                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_cipher_data_0, 0);
3833                 }
3834                 if (r->cipher_data) {
3835                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->cipher_data, r->maxlen));
3836                 }
3837                 if (r->cipher_data) {
3838                         NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->cipher_data, r->len));
3839                 }
3840         }
3841         return NDR_ERR_SUCCESS;
3842 }
3843
3844 _PUBLIC_ void ndr_print_netr_CIPHER_VALUE(struct ndr_print *ndr, const char *name, const struct netr_CIPHER_VALUE *r)
3845 {
3846         ndr_print_struct(ndr, name, "netr_CIPHER_VALUE");
3847         ndr->depth++;
3848         ndr_print_uint32(ndr, "len", r->len);
3849         ndr_print_uint32(ndr, "maxlen", r->maxlen);
3850         ndr_print_ptr(ndr, "cipher_data", r->cipher_data);
3851         ndr->depth++;
3852         if (r->cipher_data) {
3853                 ndr_print_array_uint8(ndr, "cipher_data", r->cipher_data, r->len);
3854         }
3855         ndr->depth--;
3856         ndr->depth--;
3857 }
3858
3859 static enum ndr_err_code ndr_push_netr_DELTA_SECRET(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_SECRET *r)
3860 {
3861         if (ndr_flags & NDR_SCALARS) {
3862                 NDR_CHECK(ndr_push_align(ndr, 4));
3863                 NDR_CHECK(ndr_push_netr_CIPHER_VALUE(ndr, NDR_SCALARS, &r->current_cipher));
3864                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->current_cipher_set_time));
3865                 NDR_CHECK(ndr_push_netr_CIPHER_VALUE(ndr, NDR_SCALARS, &r->old_cipher));
3866                 NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->old_cipher_set_time));
3867                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->SecurityInformation));
3868                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
3869                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
3870                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
3871                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
3872                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
3873                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
3874                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown6));
3875                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown7));
3876                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown8));
3877         }
3878         if (ndr_flags & NDR_BUFFERS) {
3879                 NDR_CHECK(ndr_push_netr_CIPHER_VALUE(ndr, NDR_BUFFERS, &r->current_cipher));
3880                 NDR_CHECK(ndr_push_netr_CIPHER_VALUE(ndr, NDR_BUFFERS, &r->old_cipher));
3881                 NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
3882                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
3883                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
3884                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
3885                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
3886         }
3887         return NDR_ERR_SUCCESS;
3888 }
3889
3890 static enum ndr_err_code ndr_pull_netr_DELTA_SECRET(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_SECRET *r)
3891 {
3892         if (ndr_flags & NDR_SCALARS) {
3893                 NDR_CHECK(ndr_pull_align(ndr, 4));
3894                 NDR_CHECK(ndr_pull_netr_CIPHER_VALUE(ndr, NDR_SCALARS, &r->current_cipher));
3895                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->current_cipher_set_time));
3896                 NDR_CHECK(ndr_pull_netr_CIPHER_VALUE(ndr, NDR_SCALARS, &r->old_cipher));
3897                 NDR_CHECK(ndr_pull_NTTIME(ndr, NDR_SCALARS, &r->old_cipher_set_time));
3898                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->SecurityInformation));
3899                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sdbuf));
3900                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown1));
3901                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown2));
3902                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown3));
3903                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->unknown4));
3904                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
3905                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown6));
3906                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown7));
3907                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown8));
3908         }
3909         if (ndr_flags & NDR_BUFFERS) {
3910                 NDR_CHECK(ndr_pull_netr_CIPHER_VALUE(ndr, NDR_BUFFERS, &r->current_cipher));
3911                 NDR_CHECK(ndr_pull_netr_CIPHER_VALUE(ndr, NDR_BUFFERS, &r->old_cipher));
3912                 NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sdbuf));
3913                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown1));
3914                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown2));
3915                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown3));
3916                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->unknown4));
3917         }
3918         return NDR_ERR_SUCCESS;
3919 }
3920
3921 _PUBLIC_ void ndr_print_netr_DELTA_SECRET(struct ndr_print *ndr, const char *name, const struct netr_DELTA_SECRET *r)
3922 {
3923         ndr_print_struct(ndr, name, "netr_DELTA_SECRET");
3924         ndr->depth++;
3925         ndr_print_netr_CIPHER_VALUE(ndr, "current_cipher", &r->current_cipher);
3926         ndr_print_NTTIME(ndr, "current_cipher_set_time", r->current_cipher_set_time);
3927         ndr_print_netr_CIPHER_VALUE(ndr, "old_cipher", &r->old_cipher);
3928         ndr_print_NTTIME(ndr, "old_cipher_set_time", r->old_cipher_set_time);
3929         ndr_print_uint32(ndr, "SecurityInformation", r->SecurityInformation);
3930         ndr_print_sec_desc_buf(ndr, "sdbuf", &r->sdbuf);
3931         ndr_print_lsa_String(ndr, "unknown1", &r->unknown1);
3932         ndr_print_lsa_String(ndr, "unknown2", &r->unknown2);
3933         ndr_print_lsa_String(ndr, "unknown3", &r->unknown3);
3934         ndr_print_lsa_String(ndr, "unknown4", &r->unknown4);
3935         ndr_print_uint32(ndr, "unknown5", r->unknown5);
3936         ndr_print_uint32(ndr, "unknown6", r->unknown6);
3937         ndr_print_uint32(ndr, "unknown7", r->unknown7);
3938         ndr_print_uint32(ndr, "unknown8", r->unknown8);
3939         ndr->depth--;
3940 }
3941
3942 static enum ndr_err_code ndr_push_netr_DeltaEnum(struct ndr_push *ndr, int ndr_flags, enum netr_DeltaEnum r)
3943 {
3944         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
3945         return NDR_ERR_SUCCESS;
3946 }
3947
3948 static enum ndr_err_code ndr_pull_netr_DeltaEnum(struct ndr_pull *ndr, int ndr_flags, enum netr_DeltaEnum *r)
3949 {
3950         uint16_t v;
3951         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
3952         *r = v;
3953         return NDR_ERR_SUCCESS;
3954 }
3955
3956 _PUBLIC_ void ndr_print_netr_DeltaEnum(struct ndr_print *ndr, const char *name, enum netr_DeltaEnum r)
3957 {
3958         const char *val = NULL;
3959
3960         switch (r) {
3961                 case NETR_DELTA_DOMAIN: val = "NETR_DELTA_DOMAIN"; break;
3962                 case NETR_DELTA_GROUP: val = "NETR_DELTA_GROUP"; break;
3963                 case NETR_DELTA_DELETE_GROUP: val = "NETR_DELTA_DELETE_GROUP"; break;
3964                 case NETR_DELTA_RENAME_GROUP: val = "NETR_DELTA_RENAME_GROUP"; break;
3965                 case NETR_DELTA_USER: val = "NETR_DELTA_USER"; break;
3966                 case NETR_DELTA_DELETE_USER: val = "NETR_DELTA_DELETE_USER"; break;
3967                 case NETR_DELTA_RENAME_USER: val = "NETR_DELTA_RENAME_USER"; break;
3968                 case NETR_DELTA_GROUP_MEMBER: val = "NETR_DELTA_GROUP_MEMBER"; break;
3969                 case NETR_DELTA_ALIAS: val = "NETR_DELTA_ALIAS"; break;
3970                 case NETR_DELTA_DELETE_ALIAS: val = "NETR_DELTA_DELETE_ALIAS"; break;
3971                 case NETR_DELTA_RENAME_ALIAS: val = "NETR_DELTA_RENAME_ALIAS"; break;
3972                 case NETR_DELTA_ALIAS_MEMBER: val = "NETR_DELTA_ALIAS_MEMBER"; break;
3973                 case NETR_DELTA_POLICY: val = "NETR_DELTA_POLICY"; break;
3974                 case NETR_DELTA_TRUSTED_DOMAIN: val = "NETR_DELTA_TRUSTED_DOMAIN"; break;
3975                 case NETR_DELTA_DELETE_TRUST: val = "NETR_DELTA_DELETE_TRUST"; break;
3976                 case NETR_DELTA_ACCOUNT: val = "NETR_DELTA_ACCOUNT"; break;
3977                 case NETR_DELTA_DELETE_ACCOUNT: val = "NETR_DELTA_DELETE_ACCOUNT"; break;
3978                 case NETR_DELTA_SECRET: val = "NETR_DELTA_SECRET"; break;
3979                 case NETR_DELTA_DELETE_SECRET: val = "NETR_DELTA_DELETE_SECRET"; break;
3980                 case NETR_DELTA_DELETE_GROUP2: val = "NETR_DELTA_DELETE_GROUP2"; break;
3981                 case NETR_DELTA_DELETE_USER2: val = "NETR_DELTA_DELETE_USER2"; break;
3982                 case NETR_DELTA_MODIFY_COUNT: val = "NETR_DELTA_MODIFY_COUNT"; break;
3983         }
3984         ndr_print_enum(ndr, name, "ENUM", val, r);
3985 }
3986
3987 static enum ndr_err_code ndr_push_netr_DELTA_UNION(struct ndr_push *ndr, int ndr_flags, const union netr_DELTA_UNION *r)
3988 {
3989         if (ndr_flags & NDR_SCALARS) {
3990                 int level = ndr_push_get_switch_value(ndr, r);
3991                 NDR_CHECK(ndr_push_netr_DeltaEnum(ndr, NDR_SCALARS, level));
3992                 switch (level) {
3993                         case NETR_DELTA_DOMAIN: {
3994                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
3995                         break; }
3996
3997                         case NETR_DELTA_GROUP: {
3998                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->group));
3999                         break; }
4000
4001                         case NETR_DELTA_DELETE_GROUP: {
4002                         break; }
4003
4004                         case NETR_DELTA_RENAME_GROUP: {
4005                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->rename_group));
4006                         break; }
4007
4008                         case NETR_DELTA_USER: {
4009                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->user));
4010                         break; }
4011
4012                         case NETR_DELTA_DELETE_USER: {
4013                         break; }
4014
4015                         case NETR_DELTA_RENAME_USER: {
4016                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->rename_user));
4017                         break; }
4018
4019                         case NETR_DELTA_GROUP_MEMBER: {
4020                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->group_member));
4021                         break; }
4022
4023                         case NETR_DELTA_ALIAS: {
4024                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->alias));
4025                         break; }
4026
4027                         case NETR_DELTA_DELETE_ALIAS: {
4028                         break; }
4029
4030                         case NETR_DELTA_RENAME_ALIAS: {
4031                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->rename_alias));
4032                         break; }
4033
4034                         case NETR_DELTA_ALIAS_MEMBER: {
4035                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->alias_member));
4036                         break; }
4037
4038                         case NETR_DELTA_POLICY: {
4039                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->policy));
4040                         break; }
4041
4042                         case NETR_DELTA_TRUSTED_DOMAIN: {
4043                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->trusted_domain));
4044                         break; }
4045
4046                         case NETR_DELTA_DELETE_TRUST: {
4047                                 NDR_CHECK(ndr_push_netr_DELTA_DELETE_TRUST(ndr, NDR_SCALARS, &r->delete_trust));
4048                         break; }
4049
4050                         case NETR_DELTA_ACCOUNT: {
4051                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->account));
4052                         break; }
4053
4054                         case NETR_DELTA_DELETE_ACCOUNT: {
4055                                 NDR_CHECK(ndr_push_netr_DELTA_DELETE_ACCOUNT(ndr, NDR_SCALARS, &r->delete_account));
4056                         break; }
4057
4058                         case NETR_DELTA_SECRET: {
4059                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->secret));
4060                         break; }
4061
4062                         case NETR_DELTA_DELETE_SECRET: {
4063                                 NDR_CHECK(ndr_push_netr_DELTA_DELETE_SECRET(ndr, NDR_SCALARS, &r->delete_secret));
4064                         break; }
4065
4066                         case NETR_DELTA_DELETE_GROUP2: {
4067                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->delete_group));
4068                         break; }
4069
4070                         case NETR_DELTA_DELETE_USER2: {
4071                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->delete_user));
4072                         break; }
4073
4074                         case NETR_DELTA_MODIFY_COUNT: {
4075                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->modified_count));
4076                         break; }
4077
4078                         default:
4079                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
4080                 }
4081         }
4082         if (ndr_flags & NDR_BUFFERS) {
4083                 int level = ndr_push_get_switch_value(ndr, r);
4084                 switch (level) {
4085                         case NETR_DELTA_DOMAIN:
4086                                 if (r->domain) {
4087                                         NDR_CHECK(ndr_push_netr_DELTA_DOMAIN(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain));
4088                                 }
4089                         break;
4090
4091                         case NETR_DELTA_GROUP:
4092                                 if (r->group) {
4093                                         NDR_CHECK(ndr_push_netr_DELTA_GROUP(ndr, NDR_SCALARS|NDR_BUFFERS, r->group));
4094                                 }
4095                         break;
4096
4097                         case NETR_DELTA_DELETE_GROUP:
4098                         break;
4099
4100                         case NETR_DELTA_RENAME_GROUP:
4101                                 if (r->rename_group) {
4102                                         NDR_CHECK(ndr_push_netr_DELTA_RENAME(ndr, NDR_SCALARS|NDR_BUFFERS, r->rename_group));
4103                                 }
4104                         break;
4105
4106                         case NETR_DELTA_USER:
4107                                 if (r->user) {
4108                                         NDR_CHECK(ndr_push_netr_DELTA_USER(ndr, NDR_SCALARS|NDR_BUFFERS, r->user));
4109                                 }
4110                         break;
4111
4112                         case NETR_DELTA_DELETE_USER:
4113                         break;
4114
4115                         case NETR_DELTA_RENAME_USER:
4116                                 if (r->rename_user) {
4117                                         NDR_CHECK(ndr_push_netr_DELTA_RENAME(ndr, NDR_SCALARS|NDR_BUFFERS, r->rename_user));
4118                                 }
4119                         break;
4120
4121                         case NETR_DELTA_GROUP_MEMBER:
4122                                 if (r->group_member) {
4123                                         NDR_CHECK(ndr_push_netr_DELTA_GROUP_MEMBER(ndr, NDR_SCALARS|NDR_BUFFERS, r->group_member));
4124                                 }
4125                         break;
4126
4127                         case NETR_DELTA_ALIAS:
4128                                 if (r->alias) {
4129                                         NDR_CHECK(ndr_push_netr_DELTA_ALIAS(ndr, NDR_SCALARS|NDR_BUFFERS, r->alias));
4130                                 }
4131                         break;
4132
4133                         case NETR_DELTA_DELETE_ALIAS:
4134                         break;
4135
4136                         case NETR_DELTA_RENAME_ALIAS:
4137                                 if (r->rename_alias) {
4138                                         NDR_CHECK(ndr_push_netr_DELTA_RENAME(ndr, NDR_SCALARS|NDR_BUFFERS, r->rename_alias));
4139                                 }
4140                         break;
4141
4142                         case NETR_DELTA_ALIAS_MEMBER:
4143                                 if (r->alias_member) {
4144                                         NDR_CHECK(ndr_push_netr_DELTA_ALIAS_MEMBER(ndr, NDR_SCALARS|NDR_BUFFERS, r->alias_member));
4145                                 }
4146                         break;
4147
4148                         case NETR_DELTA_POLICY:
4149                                 if (r->policy) {
4150                                         NDR_CHECK(ndr_push_netr_DELTA_POLICY(ndr, NDR_SCALARS|NDR_BUFFERS, r->policy));
4151                                 }
4152                         break;
4153
4154                         case NETR_DELTA_TRUSTED_DOMAIN:
4155                                 if (r->trusted_domain) {
4156                                         NDR_CHECK(ndr_push_netr_DELTA_TRUSTED_DOMAIN(ndr, NDR_SCALARS|NDR_BUFFERS, r->trusted_domain));
4157                                 }
4158                         break;
4159
4160                         case NETR_DELTA_DELETE_TRUST:
4161                         break;
4162
4163                         case NETR_DELTA_ACCOUNT:
4164                                 if (r->account) {
4165                                         NDR_CHECK(ndr_push_netr_DELTA_ACCOUNT(ndr, NDR_SCALARS|NDR_BUFFERS, r->account));
4166                                 }
4167                         break;
4168
4169                         case NETR_DELTA_DELETE_ACCOUNT:
4170                         break;
4171
4172                         case NETR_DELTA_SECRET:
4173                                 if (r->secret) {
4174                                         NDR_CHECK(ndr_push_netr_DELTA_SECRET(ndr, NDR_SCALARS|NDR_BUFFERS, r->secret));
4175                                 }
4176                         break;
4177
4178                         case NETR_DELTA_DELETE_SECRET:
4179                         break;
4180
4181                         case NETR_DELTA_DELETE_GROUP2:
4182                                 if (r->delete_group) {
4183                                         NDR_CHECK(ndr_push_netr_DELTA_DELETE_USER(ndr, NDR_SCALARS|NDR_BUFFERS, r->delete_group));
4184                                 }
4185                         break;
4186
4187                         case NETR_DELTA_DELETE_USER2:
4188                                 if (r->delete_user) {
4189                                         NDR_CHECK(ndr_push_netr_DELTA_DELETE_USER(ndr, NDR_SCALARS|NDR_BUFFERS, r->delete_user));
4190                                 }
4191                         break;
4192
4193                         case NETR_DELTA_MODIFY_COUNT:
4194                                 if (r->modified_count) {
4195                                         NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, *r->modified_count));
4196                                 }
4197                         break;
4198
4199                         default:
4200                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
4201                 }
4202         }
4203         return NDR_ERR_SUCCESS;
4204 }
4205
4206 static enum ndr_err_code ndr_pull_netr_DELTA_UNION(struct ndr_pull *ndr, int ndr_flags, union netr_DELTA_UNION *r)
4207 {
4208         int level;
4209         uint16_t _level;
4210         TALLOC_CTX *_mem_save_domain_0;
4211         TALLOC_CTX *_mem_save_group_0;
4212         TALLOC_CTX *_mem_save_rename_group_0;
4213         TALLOC_CTX *_mem_save_user_0;
4214         TALLOC_CTX *_mem_save_rename_user_0;
4215         TALLOC_CTX *_mem_save_group_member_0;
4216         TALLOC_CTX *_mem_save_alias_0;
4217         TALLOC_CTX *_mem_save_rename_alias_0;
4218         TALLOC_CTX *_mem_save_alias_member_0;
4219         TALLOC_CTX *_mem_save_policy_0;
4220         TALLOC_CTX *_mem_save_trusted_domain_0;
4221         TALLOC_CTX *_mem_save_account_0;
4222         TALLOC_CTX *_mem_save_secret_0;
4223         TALLOC_CTX *_mem_save_delete_group_0;
4224         TALLOC_CTX *_mem_save_delete_user_0;
4225         TALLOC_CTX *_mem_save_modified_count_0;
4226         level = ndr_pull_get_switch_value(ndr, r);
4227         if (ndr_flags & NDR_SCALARS) {
4228                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
4229                 if (_level != level) {
4230                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
4231                 }
4232                 switch (level) {
4233                         case NETR_DELTA_DOMAIN: {
4234                                 uint32_t _ptr_domain;
4235                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
4236                                 if (_ptr_domain) {
4237                                         NDR_PULL_ALLOC(ndr, r->domain);
4238                                 } else {
4239                                         r->domain = NULL;
4240                                 }
4241                         break; }
4242
4243                         case NETR_DELTA_GROUP: {
4244                                 uint32_t _ptr_group;
4245                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group));
4246                                 if (_ptr_group) {
4247                                         NDR_PULL_ALLOC(ndr, r->group);
4248                                 } else {
4249                                         r->group = NULL;
4250                                 }
4251                         break; }
4252
4253                         case NETR_DELTA_DELETE_GROUP: {
4254                         break; }
4255
4256                         case NETR_DELTA_RENAME_GROUP: {
4257                                 uint32_t _ptr_rename_group;
4258                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rename_group));
4259                                 if (_ptr_rename_group) {
4260                                         NDR_PULL_ALLOC(ndr, r->rename_group);
4261                                 } else {
4262                                         r->rename_group = NULL;
4263                                 }
4264                         break; }
4265
4266                         case NETR_DELTA_USER: {
4267                                 uint32_t _ptr_user;
4268                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user));
4269                                 if (_ptr_user) {
4270                                         NDR_PULL_ALLOC(ndr, r->user);
4271                                 } else {
4272                                         r->user = NULL;
4273                                 }
4274                         break; }
4275
4276                         case NETR_DELTA_DELETE_USER: {
4277                         break; }
4278
4279                         case NETR_DELTA_RENAME_USER: {
4280                                 uint32_t _ptr_rename_user;
4281                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rename_user));
4282                                 if (_ptr_rename_user) {
4283                                         NDR_PULL_ALLOC(ndr, r->rename_user);
4284                                 } else {
4285                                         r->rename_user = NULL;
4286                                 }
4287                         break; }
4288
4289                         case NETR_DELTA_GROUP_MEMBER: {
4290                                 uint32_t _ptr_group_member;
4291                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_group_member));
4292                                 if (_ptr_group_member) {
4293                                         NDR_PULL_ALLOC(ndr, r->group_member);
4294                                 } else {
4295                                         r->group_member = NULL;
4296                                 }
4297                         break; }
4298
4299                         case NETR_DELTA_ALIAS: {
4300                                 uint32_t _ptr_alias;
4301                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_alias));
4302                                 if (_ptr_alias) {
4303                                         NDR_PULL_ALLOC(ndr, r->alias);
4304                                 } else {
4305                                         r->alias = NULL;
4306                                 }
4307                         break; }
4308
4309                         case NETR_DELTA_DELETE_ALIAS: {
4310                         break; }
4311
4312                         case NETR_DELTA_RENAME_ALIAS: {
4313                                 uint32_t _ptr_rename_alias;
4314                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_rename_alias));
4315                                 if (_ptr_rename_alias) {
4316                                         NDR_PULL_ALLOC(ndr, r->rename_alias);
4317                                 } else {
4318                                         r->rename_alias = NULL;
4319                                 }
4320                         break; }
4321
4322                         case NETR_DELTA_ALIAS_MEMBER: {
4323                                 uint32_t _ptr_alias_member;
4324                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_alias_member));
4325                                 if (_ptr_alias_member) {
4326                                         NDR_PULL_ALLOC(ndr, r->alias_member);
4327                                 } else {
4328                                         r->alias_member = NULL;
4329                                 }
4330                         break; }
4331
4332                         case NETR_DELTA_POLICY: {
4333                                 uint32_t _ptr_policy;
4334                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_policy));
4335                                 if (_ptr_policy) {
4336                                         NDR_PULL_ALLOC(ndr, r->policy);
4337                                 } else {
4338                                         r->policy = NULL;
4339                                 }
4340                         break; }
4341
4342                         case NETR_DELTA_TRUSTED_DOMAIN: {
4343                                 uint32_t _ptr_trusted_domain;
4344                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_trusted_domain));
4345                                 if (_ptr_trusted_domain) {
4346                                         NDR_PULL_ALLOC(ndr, r->trusted_domain);
4347                                 } else {
4348                                         r->trusted_domain = NULL;
4349                                 }
4350                         break; }
4351
4352                         case NETR_DELTA_DELETE_TRUST: {
4353                                 NDR_CHECK(ndr_pull_netr_DELTA_DELETE_TRUST(ndr, NDR_SCALARS, &r->delete_trust));
4354                         break; }
4355
4356                         case NETR_DELTA_ACCOUNT: {
4357                                 uint32_t _ptr_account;
4358                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_account));
4359                                 if (_ptr_account) {
4360                                         NDR_PULL_ALLOC(ndr, r->account);
4361                                 } else {
4362                                         r->account = NULL;
4363                                 }
4364                         break; }
4365
4366                         case NETR_DELTA_DELETE_ACCOUNT: {
4367                                 NDR_CHECK(ndr_pull_netr_DELTA_DELETE_ACCOUNT(ndr, NDR_SCALARS, &r->delete_account));
4368                         break; }
4369
4370                         case NETR_DELTA_SECRET: {
4371                                 uint32_t _ptr_secret;
4372                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_secret));
4373                                 if (_ptr_secret) {
4374                                         NDR_PULL_ALLOC(ndr, r->secret);
4375                                 } else {
4376                                         r->secret = NULL;
4377                                 }
4378                         break; }
4379
4380                         case NETR_DELTA_DELETE_SECRET: {
4381                                 NDR_CHECK(ndr_pull_netr_DELTA_DELETE_SECRET(ndr, NDR_SCALARS, &r->delete_secret));
4382                         break; }
4383
4384                         case NETR_DELTA_DELETE_GROUP2: {
4385                                 uint32_t _ptr_delete_group;
4386                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delete_group));
4387                                 if (_ptr_delete_group) {
4388                                         NDR_PULL_ALLOC(ndr, r->delete_group);
4389                                 } else {
4390                                         r->delete_group = NULL;
4391                                 }
4392                         break; }
4393
4394                         case NETR_DELTA_DELETE_USER2: {
4395                                 uint32_t _ptr_delete_user;
4396                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delete_user));
4397                                 if (_ptr_delete_user) {
4398                                         NDR_PULL_ALLOC(ndr, r->delete_user);
4399                                 } else {
4400                                         r->delete_user = NULL;
4401                                 }
4402                         break; }
4403
4404                         case NETR_DELTA_MODIFY_COUNT: {
4405                                 uint32_t _ptr_modified_count;
4406                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_modified_count));
4407                                 if (_ptr_modified_count) {
4408                                         NDR_PULL_ALLOC(ndr, r->modified_count);
4409                                 } else {
4410                                         r->modified_count = NULL;
4411                                 }
4412                         break; }
4413
4414                         default:
4415                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
4416                 }
4417         }
4418         if (ndr_flags & NDR_BUFFERS) {
4419                 switch (level) {
4420                         case NETR_DELTA_DOMAIN:
4421                                 if (r->domain) {
4422                                         _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
4423                                         NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
4424                                         NDR_CHECK(ndr_pull_netr_DELTA_DOMAIN(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain));
4425                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
4426                                 }
4427                         break;
4428
4429                         case NETR_DELTA_GROUP:
4430                                 if (r->group) {
4431                                         _mem_save_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
4432                                         NDR_PULL_SET_MEM_CTX(ndr, r->group, 0);
4433                                         NDR_CHECK(ndr_pull_netr_DELTA_GROUP(ndr, NDR_SCALARS|NDR_BUFFERS, r->group));
4434                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_0, 0);
4435                                 }
4436                         break;
4437
4438                         case NETR_DELTA_DELETE_GROUP:
4439                         break;
4440
4441                         case NETR_DELTA_RENAME_GROUP:
4442                                 if (r->rename_group) {
4443                                         _mem_save_rename_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
4444                                         NDR_PULL_SET_MEM_CTX(ndr, r->rename_group, 0);
4445                                         NDR_CHECK(ndr_pull_netr_DELTA_RENAME(ndr, NDR_SCALARS|NDR_BUFFERS, r->rename_group));
4446                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rename_group_0, 0);
4447                                 }
4448                         break;
4449
4450                         case NETR_DELTA_USER:
4451                                 if (r->user) {
4452                                         _mem_save_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
4453                                         NDR_PULL_SET_MEM_CTX(ndr, r->user, 0);
4454                                         NDR_CHECK(ndr_pull_netr_DELTA_USER(ndr, NDR_SCALARS|NDR_BUFFERS, r->user));
4455                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_0, 0);
4456                                 }
4457                         break;
4458
4459                         case NETR_DELTA_DELETE_USER:
4460                         break;
4461
4462                         case NETR_DELTA_RENAME_USER:
4463                                 if (r->rename_user) {
4464                                         _mem_save_rename_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
4465                                         NDR_PULL_SET_MEM_CTX(ndr, r->rename_user, 0);
4466                                         NDR_CHECK(ndr_pull_netr_DELTA_RENAME(ndr, NDR_SCALARS|NDR_BUFFERS, r->rename_user));
4467                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rename_user_0, 0);
4468                                 }
4469                         break;
4470
4471                         case NETR_DELTA_GROUP_MEMBER:
4472                                 if (r->group_member) {
4473                                         _mem_save_group_member_0 = NDR_PULL_GET_MEM_CTX(ndr);
4474                                         NDR_PULL_SET_MEM_CTX(ndr, r->group_member, 0);
4475                                         NDR_CHECK(ndr_pull_netr_DELTA_GROUP_MEMBER(ndr, NDR_SCALARS|NDR_BUFFERS, r->group_member));
4476                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_group_member_0, 0);
4477                                 }
4478                         break;
4479
4480                         case NETR_DELTA_ALIAS:
4481                                 if (r->alias) {
4482                                         _mem_save_alias_0 = NDR_PULL_GET_MEM_CTX(ndr);
4483                                         NDR_PULL_SET_MEM_CTX(ndr, r->alias, 0);
4484                                         NDR_CHECK(ndr_pull_netr_DELTA_ALIAS(ndr, NDR_SCALARS|NDR_BUFFERS, r->alias));
4485                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_alias_0, 0);
4486                                 }
4487                         break;
4488
4489                         case NETR_DELTA_DELETE_ALIAS:
4490                         break;
4491
4492                         case NETR_DELTA_RENAME_ALIAS:
4493                                 if (r->rename_alias) {
4494                                         _mem_save_rename_alias_0 = NDR_PULL_GET_MEM_CTX(ndr);
4495                                         NDR_PULL_SET_MEM_CTX(ndr, r->rename_alias, 0);
4496                                         NDR_CHECK(ndr_pull_netr_DELTA_RENAME(ndr, NDR_SCALARS|NDR_BUFFERS, r->rename_alias));
4497                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rename_alias_0, 0);
4498                                 }
4499                         break;
4500
4501                         case NETR_DELTA_ALIAS_MEMBER:
4502                                 if (r->alias_member) {
4503                                         _mem_save_alias_member_0 = NDR_PULL_GET_MEM_CTX(ndr);
4504                                         NDR_PULL_SET_MEM_CTX(ndr, r->alias_member, 0);
4505                                         NDR_CHECK(ndr_pull_netr_DELTA_ALIAS_MEMBER(ndr, NDR_SCALARS|NDR_BUFFERS, r->alias_member));
4506                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_alias_member_0, 0);
4507                                 }
4508                         break;
4509
4510                         case NETR_DELTA_POLICY:
4511                                 if (r->policy) {
4512                                         _mem_save_policy_0 = NDR_PULL_GET_MEM_CTX(ndr);
4513                                         NDR_PULL_SET_MEM_CTX(ndr, r->policy, 0);
4514                                         NDR_CHECK(ndr_pull_netr_DELTA_POLICY(ndr, NDR_SCALARS|NDR_BUFFERS, r->policy));
4515                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_policy_0, 0);
4516                                 }
4517                         break;
4518
4519                         case NETR_DELTA_TRUSTED_DOMAIN:
4520                                 if (r->trusted_domain) {
4521                                         _mem_save_trusted_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
4522                                         NDR_PULL_SET_MEM_CTX(ndr, r->trusted_domain, 0);
4523                                         NDR_CHECK(ndr_pull_netr_DELTA_TRUSTED_DOMAIN(ndr, NDR_SCALARS|NDR_BUFFERS, r->trusted_domain));
4524                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusted_domain_0, 0);
4525                                 }
4526                         break;
4527
4528                         case NETR_DELTA_DELETE_TRUST:
4529                         break;
4530
4531                         case NETR_DELTA_ACCOUNT:
4532                                 if (r->account) {
4533                                         _mem_save_account_0 = NDR_PULL_GET_MEM_CTX(ndr);
4534                                         NDR_PULL_SET_MEM_CTX(ndr, r->account, 0);
4535                                         NDR_CHECK(ndr_pull_netr_DELTA_ACCOUNT(ndr, NDR_SCALARS|NDR_BUFFERS, r->account));
4536                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_account_0, 0);
4537                                 }
4538                         break;
4539
4540                         case NETR_DELTA_DELETE_ACCOUNT:
4541                         break;
4542
4543                         case NETR_DELTA_SECRET:
4544                                 if (r->secret) {
4545                                         _mem_save_secret_0 = NDR_PULL_GET_MEM_CTX(ndr);
4546                                         NDR_PULL_SET_MEM_CTX(ndr, r->secret, 0);
4547                                         NDR_CHECK(ndr_pull_netr_DELTA_SECRET(ndr, NDR_SCALARS|NDR_BUFFERS, r->secret));
4548                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_secret_0, 0);
4549                                 }
4550                         break;
4551
4552                         case NETR_DELTA_DELETE_SECRET:
4553                         break;
4554
4555                         case NETR_DELTA_DELETE_GROUP2:
4556                                 if (r->delete_group) {
4557                                         _mem_save_delete_group_0 = NDR_PULL_GET_MEM_CTX(ndr);
4558                                         NDR_PULL_SET_MEM_CTX(ndr, r->delete_group, 0);
4559                                         NDR_CHECK(ndr_pull_netr_DELTA_DELETE_USER(ndr, NDR_SCALARS|NDR_BUFFERS, r->delete_group));
4560                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delete_group_0, 0);
4561                                 }
4562                         break;
4563
4564                         case NETR_DELTA_DELETE_USER2:
4565                                 if (r->delete_user) {
4566                                         _mem_save_delete_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
4567                                         NDR_PULL_SET_MEM_CTX(ndr, r->delete_user, 0);
4568                                         NDR_CHECK(ndr_pull_netr_DELTA_DELETE_USER(ndr, NDR_SCALARS|NDR_BUFFERS, r->delete_user));
4569                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delete_user_0, 0);
4570                                 }
4571                         break;
4572
4573                         case NETR_DELTA_MODIFY_COUNT:
4574                                 if (r->modified_count) {
4575                                         _mem_save_modified_count_0 = NDR_PULL_GET_MEM_CTX(ndr);
4576                                         NDR_PULL_SET_MEM_CTX(ndr, r->modified_count, 0);
4577                                         NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, r->modified_count));
4578                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_modified_count_0, 0);
4579                                 }
4580                         break;
4581
4582                         default:
4583                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
4584                 }
4585         }
4586         return NDR_ERR_SUCCESS;
4587 }
4588
4589 _PUBLIC_ void ndr_print_netr_DELTA_UNION(struct ndr_print *ndr, const char *name, const union netr_DELTA_UNION *r)
4590 {
4591         int level;
4592         level = ndr_print_get_switch_value(ndr, r);
4593         ndr_print_union(ndr, name, level, "netr_DELTA_UNION");
4594         switch (level) {
4595                 case NETR_DELTA_DOMAIN:
4596                         ndr_print_ptr(ndr, "domain", r->domain);
4597                         ndr->depth++;
4598                         if (r->domain) {
4599                                 ndr_print_netr_DELTA_DOMAIN(ndr, "domain", r->domain);
4600                         }
4601                         ndr->depth--;
4602                 break;
4603
4604                 case NETR_DELTA_GROUP:
4605                         ndr_print_ptr(ndr, "group", r->group);
4606                         ndr->depth++;
4607                         if (r->group) {
4608                                 ndr_print_netr_DELTA_GROUP(ndr, "group", r->group);
4609                         }
4610                         ndr->depth--;
4611                 break;
4612
4613                 case NETR_DELTA_DELETE_GROUP:
4614                 break;
4615
4616                 case NETR_DELTA_RENAME_GROUP:
4617                         ndr_print_ptr(ndr, "rename_group", r->rename_group);
4618                         ndr->depth++;
4619                         if (r->rename_group) {
4620                                 ndr_print_netr_DELTA_RENAME(ndr, "rename_group", r->rename_group);
4621                         }
4622                         ndr->depth--;
4623                 break;
4624
4625                 case NETR_DELTA_USER:
4626                         ndr_print_ptr(ndr, "user", r->user);
4627                         ndr->depth++;
4628                         if (r->user) {
4629                                 ndr_print_netr_DELTA_USER(ndr, "user", r->user);
4630                         }
4631                         ndr->depth--;
4632                 break;
4633
4634                 case NETR_DELTA_DELETE_USER:
4635                 break;
4636
4637                 case NETR_DELTA_RENAME_USER:
4638                         ndr_print_ptr(ndr, "rename_user", r->rename_user);
4639                         ndr->depth++;
4640                         if (r->rename_user) {
4641                                 ndr_print_netr_DELTA_RENAME(ndr, "rename_user", r->rename_user);
4642                         }
4643                         ndr->depth--;
4644                 break;
4645
4646                 case NETR_DELTA_GROUP_MEMBER:
4647                         ndr_print_ptr(ndr, "group_member", r->group_member);
4648                         ndr->depth++;
4649                         if (r->group_member) {
4650                                 ndr_print_netr_DELTA_GROUP_MEMBER(ndr, "group_member", r->group_member);
4651                         }
4652                         ndr->depth--;
4653                 break;
4654
4655                 case NETR_DELTA_ALIAS:
4656                         ndr_print_ptr(ndr, "alias", r->alias);
4657                         ndr->depth++;
4658                         if (r->alias) {
4659                                 ndr_print_netr_DELTA_ALIAS(ndr, "alias", r->alias);
4660                         }
4661                         ndr->depth--;
4662                 break;
4663
4664                 case NETR_DELTA_DELETE_ALIAS:
4665                 break;
4666
4667                 case NETR_DELTA_RENAME_ALIAS:
4668                         ndr_print_ptr(ndr, "rename_alias", r->rename_alias);
4669                         ndr->depth++;
4670                         if (r->rename_alias) {
4671                                 ndr_print_netr_DELTA_RENAME(ndr, "rename_alias", r->rename_alias);
4672                         }
4673                         ndr->depth--;
4674                 break;
4675
4676                 case NETR_DELTA_ALIAS_MEMBER:
4677                         ndr_print_ptr(ndr, "alias_member", r->alias_member);
4678                         ndr->depth++;
4679                         if (r->alias_member) {
4680                                 ndr_print_netr_DELTA_ALIAS_MEMBER(ndr, "alias_member", r->alias_member);
4681                         }
4682                         ndr->depth--;
4683                 break;
4684
4685                 case NETR_DELTA_POLICY:
4686                         ndr_print_ptr(ndr, "policy", r->policy);
4687                         ndr->depth++;
4688                         if (r->policy) {
4689                                 ndr_print_netr_DELTA_POLICY(ndr, "policy", r->policy);
4690                         }
4691                         ndr->depth--;
4692                 break;
4693
4694                 case NETR_DELTA_TRUSTED_DOMAIN:
4695                         ndr_print_ptr(ndr, "trusted_domain", r->trusted_domain);
4696                         ndr->depth++;
4697                         if (r->trusted_domain) {
4698                                 ndr_print_netr_DELTA_TRUSTED_DOMAIN(ndr, "trusted_domain", r->trusted_domain);
4699                         }
4700                         ndr->depth--;
4701                 break;
4702
4703                 case NETR_DELTA_DELETE_TRUST:
4704                         ndr_print_netr_DELTA_DELETE_TRUST(ndr, "delete_trust", &r->delete_trust);
4705                 break;
4706
4707                 case NETR_DELTA_ACCOUNT:
4708                         ndr_print_ptr(ndr, "account", r->account);
4709                         ndr->depth++;
4710                         if (r->account) {
4711                                 ndr_print_netr_DELTA_ACCOUNT(ndr, "account", r->account);
4712                         }
4713                         ndr->depth--;
4714                 break;
4715
4716                 case NETR_DELTA_DELETE_ACCOUNT:
4717                         ndr_print_netr_DELTA_DELETE_ACCOUNT(ndr, "delete_account", &r->delete_account);
4718                 break;
4719
4720                 case NETR_DELTA_SECRET:
4721                         ndr_print_ptr(ndr, "secret", r->secret);
4722                         ndr->depth++;
4723                         if (r->secret) {
4724                                 ndr_print_netr_DELTA_SECRET(ndr, "secret", r->secret);
4725                         }
4726                         ndr->depth--;
4727                 break;
4728
4729                 case NETR_DELTA_DELETE_SECRET:
4730                         ndr_print_netr_DELTA_DELETE_SECRET(ndr, "delete_secret", &r->delete_secret);
4731                 break;
4732
4733                 case NETR_DELTA_DELETE_GROUP2:
4734                         ndr_print_ptr(ndr, "delete_group", r->delete_group);
4735                         ndr->depth++;
4736                         if (r->delete_group) {
4737                                 ndr_print_netr_DELTA_DELETE_USER(ndr, "delete_group", r->delete_group);
4738                         }
4739                         ndr->depth--;
4740                 break;
4741
4742                 case NETR_DELTA_DELETE_USER2:
4743                         ndr_print_ptr(ndr, "delete_user", r->delete_user);
4744                         ndr->depth++;
4745                         if (r->delete_user) {
4746                                 ndr_print_netr_DELTA_DELETE_USER(ndr, "delete_user", r->delete_user);
4747                         }
4748                         ndr->depth--;
4749                 break;
4750
4751                 case NETR_DELTA_MODIFY_COUNT:
4752                         ndr_print_ptr(ndr, "modified_count", r->modified_count);
4753                         ndr->depth++;
4754                         if (r->modified_count) {
4755                                 ndr_print_udlong(ndr, "modified_count", *r->modified_count);
4756                         }
4757                         ndr->depth--;
4758                 break;
4759
4760                 default:
4761                         ndr_print_bad_level(ndr, name, level);
4762         }
4763 }
4764
4765 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)
4766 {
4767         if (ndr_flags & NDR_SCALARS) {
4768                 int level = ndr_push_get_switch_value(ndr, r);
4769                 NDR_CHECK(ndr_push_netr_DeltaEnum(ndr, NDR_SCALARS, level));
4770                 switch (level) {
4771                         case NETR_DELTA_DOMAIN: {
4772                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4773                         break; }
4774
4775                         case NETR_DELTA_GROUP: {
4776                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4777                         break; }
4778
4779                         case NETR_DELTA_DELETE_GROUP: {
4780                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4781                         break; }
4782
4783                         case NETR_DELTA_RENAME_GROUP: {
4784                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4785                         break; }
4786
4787                         case NETR_DELTA_USER: {
4788                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4789                         break; }
4790
4791                         case NETR_DELTA_DELETE_USER: {
4792                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4793                         break; }
4794
4795                         case NETR_DELTA_RENAME_USER: {
4796                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4797                         break; }
4798
4799                         case NETR_DELTA_GROUP_MEMBER: {
4800                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4801                         break; }
4802
4803                         case NETR_DELTA_ALIAS: {
4804                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4805                         break; }
4806
4807                         case NETR_DELTA_DELETE_ALIAS: {
4808                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4809                         break; }
4810
4811                         case NETR_DELTA_RENAME_ALIAS: {
4812                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4813                         break; }
4814
4815                         case NETR_DELTA_ALIAS_MEMBER: {
4816                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4817                         break; }
4818
4819                         case NETR_DELTA_POLICY: {
4820                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
4821                         break; }
4822
4823                         case NETR_DELTA_TRUSTED_DOMAIN: {
4824                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
4825                         break; }
4826
4827                         case NETR_DELTA_DELETE_TRUST: {
4828                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
4829                         break; }
4830
4831                         case NETR_DELTA_ACCOUNT: {
4832                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
4833                         break; }
4834
4835                         case NETR_DELTA_DELETE_ACCOUNT: {
4836                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
4837                         break; }
4838
4839                         case NETR_DELTA_SECRET: {
4840                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
4841                         break; }
4842
4843                         case NETR_DELTA_DELETE_SECRET: {
4844                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
4845                         break; }
4846
4847                         case NETR_DELTA_DELETE_GROUP2: {
4848                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4849                         break; }
4850
4851                         case NETR_DELTA_DELETE_USER2: {
4852                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->rid));
4853                         break; }
4854
4855                         case NETR_DELTA_MODIFY_COUNT: {
4856                         break; }
4857
4858                         default:
4859                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
4860                 }
4861         }
4862         if (ndr_flags & NDR_BUFFERS) {
4863                 int level = ndr_push_get_switch_value(ndr, r);
4864                 switch (level) {
4865                         case NETR_DELTA_DOMAIN:
4866                         break;
4867
4868                         case NETR_DELTA_GROUP:
4869                         break;
4870
4871                         case NETR_DELTA_DELETE_GROUP:
4872                         break;
4873
4874                         case NETR_DELTA_RENAME_GROUP:
4875                         break;
4876
4877                         case NETR_DELTA_USER:
4878                         break;
4879
4880                         case NETR_DELTA_DELETE_USER:
4881                         break;
4882
4883                         case NETR_DELTA_RENAME_USER:
4884                         break;
4885
4886                         case NETR_DELTA_GROUP_MEMBER:
4887                         break;
4888
4889                         case NETR_DELTA_ALIAS:
4890                         break;
4891
4892                         case NETR_DELTA_DELETE_ALIAS:
4893                         break;
4894
4895                         case NETR_DELTA_RENAME_ALIAS:
4896                         break;
4897
4898                         case NETR_DELTA_ALIAS_MEMBER:
4899                         break;
4900
4901                         case NETR_DELTA_POLICY:
4902                                 if (r->sid) {
4903                                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
4904                                 }
4905                         break;
4906
4907                         case NETR_DELTA_TRUSTED_DOMAIN:
4908                                 if (r->sid) {
4909                                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
4910                                 }
4911                         break;
4912
4913                         case NETR_DELTA_DELETE_TRUST:
4914                                 if (r->sid) {
4915                                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
4916                                 }
4917                         break;
4918
4919                         case NETR_DELTA_ACCOUNT:
4920                                 if (r->sid) {
4921                                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
4922                                 }
4923                         break;
4924
4925                         case NETR_DELTA_DELETE_ACCOUNT:
4926                                 if (r->sid) {
4927                                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
4928                                 }
4929                         break;
4930
4931                         case NETR_DELTA_SECRET:
4932                                 if (r->name) {
4933                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
4934                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4935                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
4936                                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4937                                 }
4938                         break;
4939
4940                         case NETR_DELTA_DELETE_SECRET:
4941                                 if (r->name) {
4942                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
4943                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
4944                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->name, CH_UTF16)));
4945                                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, ndr_charset_length(r->name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
4946                                 }
4947                         break;
4948
4949                         case NETR_DELTA_DELETE_GROUP2:
4950                         break;
4951
4952                         case NETR_DELTA_DELETE_USER2:
4953                         break;
4954
4955                         case NETR_DELTA_MODIFY_COUNT:
4956                         break;
4957
4958                         default:
4959                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
4960                 }
4961         }
4962         return NDR_ERR_SUCCESS;
4963 }
4964
4965 static enum ndr_err_code ndr_pull_netr_DELTA_ID_UNION(struct ndr_pull *ndr, int ndr_flags, union netr_DELTA_ID_UNION *r)
4966 {
4967         int level;
4968         uint16_t _level;
4969         TALLOC_CTX *_mem_save_sid_0;
4970         TALLOC_CTX *_mem_save_name_0;
4971         level = ndr_pull_get_switch_value(ndr, r);
4972         if (ndr_flags & NDR_SCALARS) {
4973                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &_level));
4974                 if (_level != level) {
4975                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
4976                 }
4977                 switch (level) {
4978                         case NETR_DELTA_DOMAIN: {
4979                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
4980                         break; }
4981
4982                         case NETR_DELTA_GROUP: {
4983                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
4984                         break; }
4985
4986                         case NETR_DELTA_DELETE_GROUP: {
4987                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
4988                         break; }
4989
4990                         case NETR_DELTA_RENAME_GROUP: {
4991                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
4992                         break; }
4993
4994                         case NETR_DELTA_USER: {
4995                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
4996                         break; }
4997
4998                         case NETR_DELTA_DELETE_USER: {
4999                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
5000                         break; }
5001
5002                         case NETR_DELTA_RENAME_USER: {
5003                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
5004                         break; }
5005
5006                         case NETR_DELTA_GROUP_MEMBER: {
5007                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
5008                         break; }
5009
5010                         case NETR_DELTA_ALIAS: {
5011                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
5012                         break; }
5013
5014                         case NETR_DELTA_DELETE_ALIAS: {
5015                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
5016                         break; }
5017
5018                         case NETR_DELTA_RENAME_ALIAS: {
5019                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
5020                         break; }
5021
5022                         case NETR_DELTA_ALIAS_MEMBER: {
5023                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
5024                         break; }
5025
5026                         case NETR_DELTA_POLICY: {
5027                                 uint32_t _ptr_sid;
5028                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
5029                                 if (_ptr_sid) {
5030                                         NDR_PULL_ALLOC(ndr, r->sid);
5031                                 } else {
5032                                         r->sid = NULL;
5033                                 }
5034                         break; }
5035
5036                         case NETR_DELTA_TRUSTED_DOMAIN: {
5037                                 uint32_t _ptr_sid;
5038                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
5039                                 if (_ptr_sid) {
5040                                         NDR_PULL_ALLOC(ndr, r->sid);
5041                                 } else {
5042                                         r->sid = NULL;
5043                                 }
5044                         break; }
5045
5046                         case NETR_DELTA_DELETE_TRUST: {
5047                                 uint32_t _ptr_sid;
5048                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
5049                                 if (_ptr_sid) {
5050                                         NDR_PULL_ALLOC(ndr, r->sid);
5051                                 } else {
5052                                         r->sid = NULL;
5053                                 }
5054                         break; }
5055
5056                         case NETR_DELTA_ACCOUNT: {
5057                                 uint32_t _ptr_sid;
5058                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
5059                                 if (_ptr_sid) {
5060                                         NDR_PULL_ALLOC(ndr, r->sid);
5061                                 } else {
5062                                         r->sid = NULL;
5063                                 }
5064                         break; }
5065
5066                         case NETR_DELTA_DELETE_ACCOUNT: {
5067                                 uint32_t _ptr_sid;
5068                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
5069                                 if (_ptr_sid) {
5070                                         NDR_PULL_ALLOC(ndr, r->sid);
5071                                 } else {
5072                                         r->sid = NULL;
5073                                 }
5074                         break; }
5075
5076                         case NETR_DELTA_SECRET: {
5077                                 uint32_t _ptr_name;
5078                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
5079                                 if (_ptr_name) {
5080                                         NDR_PULL_ALLOC(ndr, r->name);
5081                                 } else {
5082                                         r->name = NULL;
5083                                 }
5084                         break; }
5085
5086                         case NETR_DELTA_DELETE_SECRET: {
5087                                 uint32_t _ptr_name;
5088                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_name));
5089                                 if (_ptr_name) {
5090                                         NDR_PULL_ALLOC(ndr, r->name);
5091                                 } else {
5092                                         r->name = NULL;
5093                                 }
5094                         break; }
5095
5096                         case NETR_DELTA_DELETE_GROUP2: {
5097                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
5098                         break; }
5099
5100                         case NETR_DELTA_DELETE_USER2: {
5101                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->rid));
5102                         break; }
5103
5104                         case NETR_DELTA_MODIFY_COUNT: {
5105                         break; }
5106
5107                         default:
5108                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
5109                 }
5110         }
5111         if (ndr_flags & NDR_BUFFERS) {
5112                 switch (level) {
5113                         case NETR_DELTA_DOMAIN:
5114                         break;
5115
5116                         case NETR_DELTA_GROUP:
5117                         break;
5118
5119                         case NETR_DELTA_DELETE_GROUP:
5120                         break;
5121
5122                         case NETR_DELTA_RENAME_GROUP:
5123                         break;
5124
5125                         case NETR_DELTA_USER:
5126                         break;
5127
5128                         case NETR_DELTA_DELETE_USER:
5129                         break;
5130
5131                         case NETR_DELTA_RENAME_USER:
5132                         break;
5133
5134                         case NETR_DELTA_GROUP_MEMBER:
5135                         break;
5136
5137                         case NETR_DELTA_ALIAS:
5138                         break;
5139
5140                         case NETR_DELTA_DELETE_ALIAS:
5141                         break;
5142
5143                         case NETR_DELTA_RENAME_ALIAS:
5144                         break;
5145
5146                         case NETR_DELTA_ALIAS_MEMBER:
5147                         break;
5148
5149                         case NETR_DELTA_POLICY:
5150                                 if (r->sid) {
5151                                         _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
5152                                         NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
5153                                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
5154                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
5155                                 }
5156                         break;
5157
5158                         case NETR_DELTA_TRUSTED_DOMAIN:
5159                                 if (r->sid) {
5160                                         _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
5161                                         NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
5162                                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
5163                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
5164                                 }
5165                         break;
5166
5167                         case NETR_DELTA_DELETE_TRUST:
5168                                 if (r->sid) {
5169                                         _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
5170                                         NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
5171                                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
5172                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
5173                                 }
5174                         break;
5175
5176                         case NETR_DELTA_ACCOUNT:
5177                                 if (r->sid) {
5178                                         _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
5179                                         NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
5180                                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
5181                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
5182                                 }
5183                         break;
5184
5185                         case NETR_DELTA_DELETE_ACCOUNT:
5186                                 if (r->sid) {
5187                                         _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
5188                                         NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
5189                                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
5190                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
5191                                 }
5192                         break;
5193
5194                         case NETR_DELTA_SECRET:
5195                                 if (r->name) {
5196                                         _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5197                                         NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
5198                                         NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
5199                                         NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
5200                                         if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
5201                                                 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));
5202                                         }
5203                                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t)));
5204                                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
5205                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
5206                                 }
5207                         break;
5208
5209                         case NETR_DELTA_DELETE_SECRET:
5210                                 if (r->name) {
5211                                         _mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5212                                         NDR_PULL_SET_MEM_CTX(ndr, r->name, 0);
5213                                         NDR_CHECK(ndr_pull_array_size(ndr, &r->name));
5214                                         NDR_CHECK(ndr_pull_array_length(ndr, &r->name));
5215                                         if (ndr_get_array_length(ndr, &r->name) > ndr_get_array_size(ndr, &r->name)) {
5216                                                 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));
5217                                         }
5218                                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t)));
5219                                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->name, ndr_get_array_length(ndr, &r->name), sizeof(uint16_t), CH_UTF16));
5220                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, 0);
5221                                 }
5222                         break;
5223
5224                         case NETR_DELTA_DELETE_GROUP2:
5225                         break;
5226
5227                         case NETR_DELTA_DELETE_USER2:
5228                         break;
5229
5230                         case NETR_DELTA_MODIFY_COUNT:
5231                         break;
5232
5233                         default:
5234                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
5235                 }
5236         }
5237         return NDR_ERR_SUCCESS;
5238 }
5239
5240 _PUBLIC_ void ndr_print_netr_DELTA_ID_UNION(struct ndr_print *ndr, const char *name, const union netr_DELTA_ID_UNION *r)
5241 {
5242         int level;
5243         level = ndr_print_get_switch_value(ndr, r);
5244         ndr_print_union(ndr, name, level, "netr_DELTA_ID_UNION");
5245         switch (level) {
5246                 case NETR_DELTA_DOMAIN:
5247                         ndr_print_uint32(ndr, "rid", r->rid);
5248                 break;
5249
5250                 case NETR_DELTA_GROUP:
5251                         ndr_print_uint32(ndr, "rid", r->rid);
5252                 break;
5253
5254                 case NETR_DELTA_DELETE_GROUP:
5255                         ndr_print_uint32(ndr, "rid", r->rid);
5256                 break;
5257
5258                 case NETR_DELTA_RENAME_GROUP:
5259                         ndr_print_uint32(ndr, "rid", r->rid);
5260                 break;
5261
5262                 case NETR_DELTA_USER:
5263                         ndr_print_uint32(ndr, "rid", r->rid);
5264                 break;
5265
5266                 case NETR_DELTA_DELETE_USER:
5267                         ndr_print_uint32(ndr, "rid", r->rid);
5268                 break;
5269
5270                 case NETR_DELTA_RENAME_USER:
5271                         ndr_print_uint32(ndr, "rid", r->rid);
5272                 break;
5273
5274                 case NETR_DELTA_GROUP_MEMBER:
5275                         ndr_print_uint32(ndr, "rid", r->rid);
5276                 break;
5277
5278                 case NETR_DELTA_ALIAS:
5279                         ndr_print_uint32(ndr, "rid", r->rid);
5280                 break;
5281
5282                 case NETR_DELTA_DELETE_ALIAS:
5283                         ndr_print_uint32(ndr, "rid", r->rid);
5284                 break;
5285
5286                 case NETR_DELTA_RENAME_ALIAS:
5287                         ndr_print_uint32(ndr, "rid", r->rid);
5288                 break;
5289
5290                 case NETR_DELTA_ALIAS_MEMBER:
5291                         ndr_print_uint32(ndr, "rid", r->rid);
5292                 break;
5293
5294                 case NETR_DELTA_POLICY:
5295                         ndr_print_ptr(ndr, "sid", r->sid);
5296                         ndr->depth++;
5297                         if (r->sid) {
5298                                 ndr_print_dom_sid2(ndr, "sid", r->sid);
5299                         }
5300                         ndr->depth--;
5301                 break;
5302
5303                 case NETR_DELTA_TRUSTED_DOMAIN:
5304                         ndr_print_ptr(ndr, "sid", r->sid);
5305                         ndr->depth++;
5306                         if (r->sid) {
5307                                 ndr_print_dom_sid2(ndr, "sid", r->sid);
5308                         }
5309                         ndr->depth--;
5310                 break;
5311
5312                 case NETR_DELTA_DELETE_TRUST:
5313                         ndr_print_ptr(ndr, "sid", r->sid);
5314                         ndr->depth++;
5315                         if (r->sid) {
5316                                 ndr_print_dom_sid2(ndr, "sid", r->sid);
5317                         }
5318                         ndr->depth--;
5319                 break;
5320
5321                 case NETR_DELTA_ACCOUNT:
5322                         ndr_print_ptr(ndr, "sid", r->sid);
5323                         ndr->depth++;
5324                         if (r->sid) {
5325                                 ndr_print_dom_sid2(ndr, "sid", r->sid);
5326                         }
5327                         ndr->depth--;
5328                 break;
5329
5330                 case NETR_DELTA_DELETE_ACCOUNT:
5331                         ndr_print_ptr(ndr, "sid", r->sid);
5332                         ndr->depth++;
5333                         if (r->sid) {
5334                                 ndr_print_dom_sid2(ndr, "sid", r->sid);
5335                         }
5336                         ndr->depth--;
5337                 break;
5338
5339                 case NETR_DELTA_SECRET:
5340                         ndr_print_ptr(ndr, "name", r->name);
5341                         ndr->depth++;
5342                         if (r->name) {
5343                                 ndr_print_string(ndr, "name", r->name);
5344                         }
5345                         ndr->depth--;
5346                 break;
5347
5348                 case NETR_DELTA_DELETE_SECRET:
5349                         ndr_print_ptr(ndr, "name", r->name);
5350                         ndr->depth++;
5351                         if (r->name) {
5352                                 ndr_print_string(ndr, "name", r->name);
5353                         }
5354                         ndr->depth--;
5355                 break;
5356
5357                 case NETR_DELTA_DELETE_GROUP2:
5358                         ndr_print_uint32(ndr, "rid", r->rid);
5359                 break;
5360
5361                 case NETR_DELTA_DELETE_USER2:
5362                         ndr_print_uint32(ndr, "rid", r->rid);
5363                 break;
5364
5365                 case NETR_DELTA_MODIFY_COUNT:
5366                 break;
5367
5368                 default:
5369                         ndr_print_bad_level(ndr, name, level);
5370         }
5371 }
5372
5373 static enum ndr_err_code ndr_push_netr_DELTA_ENUM(struct ndr_push *ndr, int ndr_flags, const struct netr_DELTA_ENUM *r)
5374 {
5375         if (ndr_flags & NDR_SCALARS) {
5376                 NDR_CHECK(ndr_push_align(ndr, 4));
5377                 NDR_CHECK(ndr_push_netr_DeltaEnum(ndr, NDR_SCALARS, r->delta_type));
5378                 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->delta_id_union, r->delta_type));
5379                 NDR_CHECK(ndr_push_netr_DELTA_ID_UNION(ndr, NDR_SCALARS, &r->delta_id_union));
5380                 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->delta_union, r->delta_type));
5381                 NDR_CHECK(ndr_push_netr_DELTA_UNION(ndr, NDR_SCALARS, &r->delta_union));
5382         }
5383         if (ndr_flags & NDR_BUFFERS) {
5384                 NDR_CHECK(ndr_push_netr_DELTA_ID_UNION(ndr, NDR_BUFFERS, &r->delta_id_union));
5385                 NDR_CHECK(ndr_push_netr_DELTA_UNION(ndr, NDR_BUFFERS, &r->delta_union));
5386         }
5387         return NDR_ERR_SUCCESS;
5388 }
5389
5390 static enum ndr_err_code ndr_pull_netr_DELTA_ENUM(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_ENUM *r)
5391 {
5392         if (ndr_flags & NDR_SCALARS) {
5393                 NDR_CHECK(ndr_pull_align(ndr, 4));
5394                 NDR_CHECK(ndr_pull_netr_DeltaEnum(ndr, NDR_SCALARS, &r->delta_type));
5395                 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->delta_id_union, r->delta_type));
5396                 NDR_CHECK(ndr_pull_netr_DELTA_ID_UNION(ndr, NDR_SCALARS, &r->delta_id_union));
5397                 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->delta_union, r->delta_type));
5398                 NDR_CHECK(ndr_pull_netr_DELTA_UNION(ndr, NDR_SCALARS, &r->delta_union));
5399         }
5400         if (ndr_flags & NDR_BUFFERS) {
5401                 NDR_CHECK(ndr_pull_netr_DELTA_ID_UNION(ndr, NDR_BUFFERS, &r->delta_id_union));
5402                 NDR_CHECK(ndr_pull_netr_DELTA_UNION(ndr, NDR_BUFFERS, &r->delta_union));
5403         }
5404         return NDR_ERR_SUCCESS;
5405 }
5406
5407 _PUBLIC_ void ndr_print_netr_DELTA_ENUM(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ENUM *r)
5408 {
5409         ndr_print_struct(ndr, name, "netr_DELTA_ENUM");
5410         ndr->depth++;
5411         ndr_print_netr_DeltaEnum(ndr, "delta_type", r->delta_type);
5412         ndr_print_set_switch_value(ndr, &r->delta_id_union, r->delta_type);
5413         ndr_print_netr_DELTA_ID_UNION(ndr, "delta_id_union", &r->delta_id_union);
5414         ndr_print_set_switch_value(ndr, &r->delta_union, r->delta_type);
5415         ndr_print_netr_DELTA_UNION(ndr, "delta_union", &r->delta_union);
5416         ndr->depth--;
5417 }
5418
5419 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)
5420 {
5421         uint32_t cntr_delta_enum_1;
5422         if (ndr_flags & NDR_SCALARS) {
5423                 NDR_CHECK(ndr_push_align(ndr, 4));
5424                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_deltas));
5425                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->delta_enum));
5426         }
5427         if (ndr_flags & NDR_BUFFERS) {
5428                 if (r->delta_enum) {
5429                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_deltas));
5430                         for (cntr_delta_enum_1 = 0; cntr_delta_enum_1 < r->num_deltas; cntr_delta_enum_1++) {
5431                                 NDR_CHECK(ndr_push_netr_DELTA_ENUM(ndr, NDR_SCALARS, &r->delta_enum[cntr_delta_enum_1]));
5432                         }
5433                         for (cntr_delta_enum_1 = 0; cntr_delta_enum_1 < r->num_deltas; cntr_delta_enum_1++) {
5434                                 NDR_CHECK(ndr_push_netr_DELTA_ENUM(ndr, NDR_BUFFERS, &r->delta_enum[cntr_delta_enum_1]));
5435                         }
5436                 }
5437         }
5438         return NDR_ERR_SUCCESS;
5439 }
5440
5441 static enum ndr_err_code ndr_pull_netr_DELTA_ENUM_ARRAY(struct ndr_pull *ndr, int ndr_flags, struct netr_DELTA_ENUM_ARRAY *r)
5442 {
5443         uint32_t _ptr_delta_enum;
5444         uint32_t cntr_delta_enum_1;
5445         TALLOC_CTX *_mem_save_delta_enum_0;
5446         TALLOC_CTX *_mem_save_delta_enum_1;
5447         if (ndr_flags & NDR_SCALARS) {
5448                 NDR_CHECK(ndr_pull_align(ndr, 4));
5449                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_deltas));
5450                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delta_enum));
5451                 if (_ptr_delta_enum) {
5452                         NDR_PULL_ALLOC(ndr, r->delta_enum);
5453                 } else {
5454                         r->delta_enum = NULL;
5455                 }
5456         }
5457         if (ndr_flags & NDR_BUFFERS) {
5458                 if (r->delta_enum) {
5459                         _mem_save_delta_enum_0 = NDR_PULL_GET_MEM_CTX(ndr);
5460                         NDR_PULL_SET_MEM_CTX(ndr, r->delta_enum, 0);
5461                         NDR_CHECK(ndr_pull_array_size(ndr, &r->delta_enum));
5462                         NDR_PULL_ALLOC_N(ndr, r->delta_enum, ndr_get_array_size(ndr, &r->delta_enum));
5463                         _mem_save_delta_enum_1 = NDR_PULL_GET_MEM_CTX(ndr);
5464                         NDR_PULL_SET_MEM_CTX(ndr, r->delta_enum, 0);
5465                         for (cntr_delta_enum_1 = 0; cntr_delta_enum_1 < r->num_deltas; cntr_delta_enum_1++) {
5466                                 NDR_CHECK(ndr_pull_netr_DELTA_ENUM(ndr, NDR_SCALARS, &r->delta_enum[cntr_delta_enum_1]));
5467                         }
5468                         for (cntr_delta_enum_1 = 0; cntr_delta_enum_1 < r->num_deltas; cntr_delta_enum_1++) {
5469                                 NDR_CHECK(ndr_pull_netr_DELTA_ENUM(ndr, NDR_BUFFERS, &r->delta_enum[cntr_delta_enum_1]));
5470                         }
5471                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_1, 0);
5472                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_0, 0);
5473                 }
5474                 if (r->delta_enum) {
5475                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->delta_enum, r->num_deltas));
5476                 }
5477         }
5478         return NDR_ERR_SUCCESS;
5479 }
5480
5481 _PUBLIC_ void ndr_print_netr_DELTA_ENUM_ARRAY(struct ndr_print *ndr, const char *name, const struct netr_DELTA_ENUM_ARRAY *r)
5482 {
5483         uint32_t cntr_delta_enum_1;
5484         ndr_print_struct(ndr, name, "netr_DELTA_ENUM_ARRAY");
5485         ndr->depth++;
5486         ndr_print_uint32(ndr, "num_deltas", r->num_deltas);
5487         ndr_print_ptr(ndr, "delta_enum", r->delta_enum);
5488         ndr->depth++;
5489         if (r->delta_enum) {
5490                 ndr->print(ndr, "%s: ARRAY(%d)", "delta_enum", (int)r->num_deltas);
5491                 ndr->depth++;
5492                 for (cntr_delta_enum_1=0;cntr_delta_enum_1<r->num_deltas;cntr_delta_enum_1++) {
5493                         char *idx_1=NULL;
5494                         if (asprintf(&idx_1, "[%d]", cntr_delta_enum_1) != -1) {
5495                                 ndr_print_netr_DELTA_ENUM(ndr, "delta_enum", &r->delta_enum[cntr_delta_enum_1]);
5496                                 free(idx_1);
5497                         }
5498                 }
5499                 ndr->depth--;
5500         }
5501         ndr->depth--;
5502         ndr->depth--;
5503 }
5504
5505 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)
5506 {
5507         {
5508                 uint32_t _flags_save_STRUCT = ndr->flags;
5509                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
5510                 if (ndr_flags & NDR_SCALARS) {
5511                         NDR_CHECK(ndr_push_align(ndr, 4));
5512                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->computer_name, 16));
5513                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->timecreated));
5514                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->serial_number));
5515                 }
5516                 if (ndr_flags & NDR_BUFFERS) {
5517                 }
5518                 ndr->flags = _flags_save_STRUCT;
5519         }
5520         return NDR_ERR_SUCCESS;
5521 }
5522
5523 static enum ndr_err_code ndr_pull_netr_UAS_INFO_0(struct ndr_pull *ndr, int ndr_flags, struct netr_UAS_INFO_0 *r)
5524 {
5525         {
5526                 uint32_t _flags_save_STRUCT = ndr->flags;
5527                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
5528                 if (ndr_flags & NDR_SCALARS) {
5529                         NDR_CHECK(ndr_pull_align(ndr, 4));
5530                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->computer_name, 16));
5531                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->timecreated));
5532                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->serial_number));
5533                 }
5534                 if (ndr_flags & NDR_BUFFERS) {
5535                 }
5536                 ndr->flags = _flags_save_STRUCT;
5537         }
5538         return NDR_ERR_SUCCESS;
5539 }
5540
5541 _PUBLIC_ void ndr_print_netr_UAS_INFO_0(struct ndr_print *ndr, const char *name, const struct netr_UAS_INFO_0 *r)
5542 {
5543         ndr_print_struct(ndr, name, "netr_UAS_INFO_0");
5544         {
5545                 uint32_t _flags_save_STRUCT = ndr->flags;
5546                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
5547                 ndr->depth++;
5548                 ndr_print_array_uint8(ndr, "computer_name", r->computer_name, 16);
5549                 ndr_print_uint32(ndr, "timecreated", r->timecreated);
5550                 ndr_print_uint32(ndr, "serial_number", r->serial_number);
5551                 ndr->depth--;
5552                 ndr->flags = _flags_save_STRUCT;
5553         }
5554 }
5555
5556 static enum ndr_err_code ndr_push_netr_AccountBuffer(struct ndr_push *ndr, int ndr_flags, const struct netr_AccountBuffer *r)
5557 {
5558         if (ndr_flags & NDR_SCALARS) {
5559                 NDR_CHECK(ndr_push_align(ndr, 4));
5560                 {
5561                         uint32_t _flags_save_DATA_BLOB = ndr->flags;
5562                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
5563                         NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->blob));
5564                         ndr->flags = _flags_save_DATA_BLOB;
5565                 }
5566         }
5567         if (ndr_flags & NDR_BUFFERS) {
5568         }
5569         return NDR_ERR_SUCCESS;
5570 }
5571
5572 static enum ndr_err_code ndr_pull_netr_AccountBuffer(struct ndr_pull *ndr, int ndr_flags, struct netr_AccountBuffer *r)
5573 {
5574         if (ndr_flags & NDR_SCALARS) {
5575                 NDR_CHECK(ndr_pull_align(ndr, 4));
5576                 {
5577                         uint32_t _flags_save_DATA_BLOB = ndr->flags;
5578                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
5579                         NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->blob));
5580                         ndr->flags = _flags_save_DATA_BLOB;
5581                 }
5582         }
5583         if (ndr_flags & NDR_BUFFERS) {
5584         }
5585         return NDR_ERR_SUCCESS;
5586 }
5587
5588 _PUBLIC_ void ndr_print_netr_AccountBuffer(struct ndr_print *ndr, const char *name, const struct netr_AccountBuffer *r)
5589 {
5590         ndr_print_struct(ndr, name, "netr_AccountBuffer");
5591         ndr->depth++;
5592         ndr_print_DATA_BLOB(ndr, "blob", r->blob);
5593         ndr->depth--;
5594 }
5595
5596 static enum ndr_err_code ndr_push_netr_InfoFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
5597 {
5598         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
5599         return NDR_ERR_SUCCESS;
5600 }
5601
5602 static enum ndr_err_code ndr_pull_netr_InfoFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
5603 {
5604         uint32_t v;
5605         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
5606         *r = v;
5607         return NDR_ERR_SUCCESS;
5608 }
5609
5610 _PUBLIC_ void ndr_print_netr_InfoFlags(struct ndr_print *ndr, const char *name, uint32_t r)
5611 {
5612         ndr_print_uint32(ndr, name, r);
5613         ndr->depth++;
5614         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_CTRL_REPL_NEEDED", NETLOGON_CTRL_REPL_NEEDED, r);
5615         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_CTRL_REPL_IN_PROGRESS", NETLOGON_CTRL_REPL_IN_PROGRESS, r);
5616         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_CTRL_REPL_FULL_SYNC", NETLOGON_CTRL_REPL_FULL_SYNC, r);
5617         ndr->depth--;
5618 }
5619
5620 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)
5621 {
5622         if (ndr_flags & NDR_SCALARS) {
5623                 NDR_CHECK(ndr_push_align(ndr, 4));
5624                 NDR_CHECK(ndr_push_netr_InfoFlags(ndr, NDR_SCALARS, r->flags));
5625                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pdc_connection_status));
5626         }
5627         if (ndr_flags & NDR_BUFFERS) {
5628         }
5629         return NDR_ERR_SUCCESS;
5630 }
5631
5632 static enum ndr_err_code ndr_pull_netr_NETLOGON_INFO_1(struct ndr_pull *ndr, int ndr_flags, struct netr_NETLOGON_INFO_1 *r)
5633 {
5634         if (ndr_flags & NDR_SCALARS) {
5635                 NDR_CHECK(ndr_pull_align(ndr, 4));
5636                 NDR_CHECK(ndr_pull_netr_InfoFlags(ndr, NDR_SCALARS, &r->flags));
5637                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pdc_connection_status));
5638         }
5639         if (ndr_flags & NDR_BUFFERS) {
5640         }
5641         return NDR_ERR_SUCCESS;
5642 }
5643
5644 _PUBLIC_ void ndr_print_netr_NETLOGON_INFO_1(struct ndr_print *ndr, const char *name, const struct netr_NETLOGON_INFO_1 *r)
5645 {
5646         ndr_print_struct(ndr, name, "netr_NETLOGON_INFO_1");
5647         ndr->depth++;
5648         ndr_print_netr_InfoFlags(ndr, "flags", r->flags);
5649         ndr_print_uint32(ndr, "pdc_connection_status", r->pdc_connection_status);
5650         ndr->depth--;
5651 }
5652
5653 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)
5654 {
5655         if (ndr_flags & NDR_SCALARS) {
5656                 NDR_CHECK(ndr_push_align(ndr, 4));
5657                 NDR_CHECK(ndr_push_netr_InfoFlags(ndr, NDR_SCALARS, r->flags));
5658                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->pdc_connection_status));
5659                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->trusted_dc_name));
5660                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->tc_connection_status));
5661         }
5662         if (ndr_flags & NDR_BUFFERS) {
5663                 if (r->trusted_dc_name) {
5664                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->trusted_dc_name, CH_UTF16)));
5665                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5666                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->trusted_dc_name, CH_UTF16)));
5667                         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));
5668                 }
5669         }
5670         return NDR_ERR_SUCCESS;
5671 }
5672
5673 static enum ndr_err_code ndr_pull_netr_NETLOGON_INFO_2(struct ndr_pull *ndr, int ndr_flags, struct netr_NETLOGON_INFO_2 *r)
5674 {
5675         uint32_t _ptr_trusted_dc_name;
5676         TALLOC_CTX *_mem_save_trusted_dc_name_0;
5677         if (ndr_flags & NDR_SCALARS) {
5678                 NDR_CHECK(ndr_pull_align(ndr, 4));
5679                 NDR_CHECK(ndr_pull_netr_InfoFlags(ndr, NDR_SCALARS, &r->flags));
5680                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->pdc_connection_status));
5681                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_trusted_dc_name));
5682                 if (_ptr_trusted_dc_name) {
5683                         NDR_PULL_ALLOC(ndr, r->trusted_dc_name);
5684                 } else {
5685                         r->trusted_dc_name = NULL;
5686                 }
5687                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->tc_connection_status));
5688         }
5689         if (ndr_flags & NDR_BUFFERS) {
5690                 if (r->trusted_dc_name) {
5691                         _mem_save_trusted_dc_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5692                         NDR_PULL_SET_MEM_CTX(ndr, r->trusted_dc_name, 0);
5693                         NDR_CHECK(ndr_pull_array_size(ndr, &r->trusted_dc_name));
5694                         NDR_CHECK(ndr_pull_array_length(ndr, &r->trusted_dc_name));
5695                         if (ndr_get_array_length(ndr, &r->trusted_dc_name) > ndr_get_array_size(ndr, &r->trusted_dc_name)) {
5696                                 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));
5697                         }
5698                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->trusted_dc_name), sizeof(uint16_t)));
5699                         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));
5700                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusted_dc_name_0, 0);
5701                 }
5702         }
5703         return NDR_ERR_SUCCESS;
5704 }
5705
5706 _PUBLIC_ void ndr_print_netr_NETLOGON_INFO_2(struct ndr_print *ndr, const char *name, const struct netr_NETLOGON_INFO_2 *r)
5707 {
5708         ndr_print_struct(ndr, name, "netr_NETLOGON_INFO_2");
5709         ndr->depth++;
5710         ndr_print_netr_InfoFlags(ndr, "flags", r->flags);
5711         ndr_print_uint32(ndr, "pdc_connection_status", r->pdc_connection_status);
5712         ndr_print_ptr(ndr, "trusted_dc_name", r->trusted_dc_name);
5713         ndr->depth++;
5714         if (r->trusted_dc_name) {
5715                 ndr_print_string(ndr, "trusted_dc_name", r->trusted_dc_name);
5716         }
5717         ndr->depth--;
5718         ndr_print_uint32(ndr, "tc_connection_status", r->tc_connection_status);
5719         ndr->depth--;
5720 }
5721
5722 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)
5723 {
5724         if (ndr_flags & NDR_SCALARS) {
5725                 NDR_CHECK(ndr_push_align(ndr, 4));
5726                 NDR_CHECK(ndr_push_netr_InfoFlags(ndr, NDR_SCALARS, r->flags));
5727                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->logon_attempts));
5728                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
5729                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
5730                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown3));
5731                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown4));
5732                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown5));
5733         }
5734         if (ndr_flags & NDR_BUFFERS) {
5735         }
5736         return NDR_ERR_SUCCESS;
5737 }
5738
5739 static enum ndr_err_code ndr_pull_netr_NETLOGON_INFO_3(struct ndr_pull *ndr, int ndr_flags, struct netr_NETLOGON_INFO_3 *r)
5740 {
5741         if (ndr_flags & NDR_SCALARS) {
5742                 NDR_CHECK(ndr_pull_align(ndr, 4));
5743                 NDR_CHECK(ndr_pull_netr_InfoFlags(ndr, NDR_SCALARS, &r->flags));
5744                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->logon_attempts));
5745                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
5746                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
5747                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown3));
5748                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown4));
5749                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown5));
5750         }
5751         if (ndr_flags & NDR_BUFFERS) {
5752         }
5753         return NDR_ERR_SUCCESS;
5754 }
5755
5756 _PUBLIC_ void ndr_print_netr_NETLOGON_INFO_3(struct ndr_print *ndr, const char *name, const struct netr_NETLOGON_INFO_3 *r)
5757 {
5758         ndr_print_struct(ndr, name, "netr_NETLOGON_INFO_3");
5759         ndr->depth++;
5760         ndr_print_netr_InfoFlags(ndr, "flags", r->flags);
5761         ndr_print_uint32(ndr, "logon_attempts", r->logon_attempts);
5762         ndr_print_uint32(ndr, "unknown1", r->unknown1);
5763         ndr_print_uint32(ndr, "unknown2", r->unknown2);
5764         ndr_print_uint32(ndr, "unknown3", r->unknown3);
5765         ndr_print_uint32(ndr, "unknown4", r->unknown4);
5766         ndr_print_uint32(ndr, "unknown5", r->unknown5);
5767         ndr->depth--;
5768 }
5769
5770 static enum ndr_err_code ndr_push_netr_NETLOGON_INFO_4(struct ndr_push *ndr, int ndr_flags, const struct netr_NETLOGON_INFO_4 *r)
5771 {
5772         if (ndr_flags & NDR_SCALARS) {
5773                 NDR_CHECK(ndr_push_align(ndr, 4));
5774                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->trusted_dc_name));
5775                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->trusted_domain_name));
5776         }
5777         if (ndr_flags & NDR_BUFFERS) {
5778                 if (r->trusted_dc_name) {
5779                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->trusted_dc_name, CH_UTF16)));
5780                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5781                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->trusted_dc_name, CH_UTF16)));
5782                         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));
5783                 }
5784                 if (r->trusted_domain_name) {
5785                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->trusted_domain_name, CH_UTF16)));
5786                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
5787                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->trusted_domain_name, CH_UTF16)));
5788                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->trusted_domain_name, ndr_charset_length(r->trusted_domain_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
5789                 }
5790         }
5791         return NDR_ERR_SUCCESS;
5792 }
5793
5794 static enum ndr_err_code ndr_pull_netr_NETLOGON_INFO_4(struct ndr_pull *ndr, int ndr_flags, struct netr_NETLOGON_INFO_4 *r)
5795 {
5796         uint32_t _ptr_trusted_dc_name;
5797         TALLOC_CTX *_mem_save_trusted_dc_name_0;
5798         uint32_t _ptr_trusted_domain_name;
5799         TALLOC_CTX *_mem_save_trusted_domain_name_0;
5800         if (ndr_flags & NDR_SCALARS) {
5801                 NDR_CHECK(ndr_pull_align(ndr, 4));
5802                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_trusted_dc_name));
5803                 if (_ptr_trusted_dc_name) {
5804                         NDR_PULL_ALLOC(ndr, r->trusted_dc_name);
5805                 } else {
5806                         r->trusted_dc_name = NULL;
5807                 }
5808                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_trusted_domain_name));
5809                 if (_ptr_trusted_domain_name) {
5810                         NDR_PULL_ALLOC(ndr, r->trusted_domain_name);
5811                 } else {
5812                         r->trusted_domain_name = NULL;
5813                 }
5814         }
5815         if (ndr_flags & NDR_BUFFERS) {
5816                 if (r->trusted_dc_name) {
5817                         _mem_save_trusted_dc_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5818                         NDR_PULL_SET_MEM_CTX(ndr, r->trusted_dc_name, 0);
5819                         NDR_CHECK(ndr_pull_array_size(ndr, &r->trusted_dc_name));
5820                         NDR_CHECK(ndr_pull_array_length(ndr, &r->trusted_dc_name));
5821                         if (ndr_get_array_length(ndr, &r->trusted_dc_name) > ndr_get_array_size(ndr, &r->trusted_dc_name)) {
5822                                 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));
5823                         }
5824                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->trusted_dc_name), sizeof(uint16_t)));
5825                         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));
5826                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusted_dc_name_0, 0);
5827                 }
5828                 if (r->trusted_domain_name) {
5829                         _mem_save_trusted_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
5830                         NDR_PULL_SET_MEM_CTX(ndr, r->trusted_domain_name, 0);
5831                         NDR_CHECK(ndr_pull_array_size(ndr, &r->trusted_domain_name));
5832                         NDR_CHECK(ndr_pull_array_length(ndr, &r->trusted_domain_name));
5833                         if (ndr_get_array_length(ndr, &r->trusted_domain_name) > ndr_get_array_size(ndr, &r->trusted_domain_name)) {
5834                                 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_domain_name), ndr_get_array_length(ndr, &r->trusted_domain_name));
5835                         }
5836                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->trusted_domain_name), sizeof(uint16_t)));
5837                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->trusted_domain_name, ndr_get_array_length(ndr, &r->trusted_domain_name), sizeof(uint16_t), CH_UTF16));
5838                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusted_domain_name_0, 0);
5839                 }
5840         }
5841         return NDR_ERR_SUCCESS;
5842 }
5843
5844 _PUBLIC_ void ndr_print_netr_NETLOGON_INFO_4(struct ndr_print *ndr, const char *name, const struct netr_NETLOGON_INFO_4 *r)
5845 {
5846         ndr_print_struct(ndr, name, "netr_NETLOGON_INFO_4");
5847         ndr->depth++;
5848         ndr_print_ptr(ndr, "trusted_dc_name", r->trusted_dc_name);
5849         ndr->depth++;
5850         if (r->trusted_dc_name) {
5851                 ndr_print_string(ndr, "trusted_dc_name", r->trusted_dc_name);
5852         }
5853         ndr->depth--;
5854         ndr_print_ptr(ndr, "trusted_domain_name", r->trusted_domain_name);
5855         ndr->depth++;
5856         if (r->trusted_domain_name) {
5857                 ndr_print_string(ndr, "trusted_domain_name", r->trusted_domain_name);
5858         }
5859         ndr->depth--;
5860         ndr->depth--;
5861 }
5862
5863 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)
5864 {
5865         if (ndr_flags & NDR_SCALARS) {
5866                 int level = ndr_push_get_switch_value(ndr, r);
5867                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
5868                 switch (level) {
5869                         case 1: {
5870                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->info1));
5871                         break; }
5872
5873                         case 2: {
5874                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->info2));
5875                         break; }
5876
5877                         case 3: {
5878                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->info3));
5879                         break; }
5880
5881                         case 4: {
5882                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->info4));
5883                         break; }
5884
5885                         default:
5886                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
5887                 }
5888         }
5889         if (ndr_flags & NDR_BUFFERS) {
5890                 int level = ndr_push_get_switch_value(ndr, r);
5891                 switch (level) {
5892                         case 1:
5893                                 if (r->info1) {
5894                                         NDR_CHECK(ndr_push_netr_NETLOGON_INFO_1(ndr, NDR_SCALARS, r->info1));
5895                                 }
5896                         break;
5897
5898                         case 2:
5899                                 if (r->info2) {
5900                                         NDR_CHECK(ndr_push_netr_NETLOGON_INFO_2(ndr, NDR_SCALARS|NDR_BUFFERS, r->info2));
5901                                 }
5902                         break;
5903
5904                         case 3:
5905                                 if (r->info3) {
5906                                         NDR_CHECK(ndr_push_netr_NETLOGON_INFO_3(ndr, NDR_SCALARS, r->info3));
5907                                 }
5908                         break;
5909
5910                         case 4:
5911                                 if (r->info4) {
5912                                         NDR_CHECK(ndr_push_netr_NETLOGON_INFO_4(ndr, NDR_SCALARS|NDR_BUFFERS, r->info4));
5913                                 }
5914                         break;
5915
5916                         default:
5917                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
5918                 }
5919         }
5920         return NDR_ERR_SUCCESS;
5921 }
5922
5923 static enum ndr_err_code ndr_pull_netr_CONTROL_QUERY_INFORMATION(struct ndr_pull *ndr, int ndr_flags, union netr_CONTROL_QUERY_INFORMATION *r)
5924 {
5925         int level;
5926         uint32_t _level;
5927         TALLOC_CTX *_mem_save_info1_0;
5928         TALLOC_CTX *_mem_save_info2_0;
5929         TALLOC_CTX *_mem_save_info3_0;
5930         TALLOC_CTX *_mem_save_info4_0;
5931         level = ndr_pull_get_switch_value(ndr, r);
5932         if (ndr_flags & NDR_SCALARS) {
5933                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
5934                 if (_level != level) {
5935                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
5936                 }
5937                 switch (level) {
5938                         case 1: {
5939                                 uint32_t _ptr_info1;
5940                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info1));
5941                                 if (_ptr_info1) {
5942                                         NDR_PULL_ALLOC(ndr, r->info1);
5943                                 } else {
5944                                         r->info1 = NULL;
5945                                 }
5946                         break; }
5947
5948                         case 2: {
5949                                 uint32_t _ptr_info2;
5950                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info2));
5951                                 if (_ptr_info2) {
5952                                         NDR_PULL_ALLOC(ndr, r->info2);
5953                                 } else {
5954                                         r->info2 = NULL;
5955                                 }
5956                         break; }
5957
5958                         case 3: {
5959                                 uint32_t _ptr_info3;
5960                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info3));
5961                                 if (_ptr_info3) {
5962                                         NDR_PULL_ALLOC(ndr, r->info3);
5963                                 } else {
5964                                         r->info3 = NULL;
5965                                 }
5966                         break; }
5967
5968                         case 4: {
5969                                 uint32_t _ptr_info4;
5970                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info4));
5971                                 if (_ptr_info4) {
5972                                         NDR_PULL_ALLOC(ndr, r->info4);
5973                                 } else {
5974                                         r->info4 = NULL;
5975                                 }
5976                         break; }
5977
5978                         default:
5979                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
5980                 }
5981         }
5982         if (ndr_flags & NDR_BUFFERS) {
5983                 switch (level) {
5984                         case 1:
5985                                 if (r->info1) {
5986                                         _mem_save_info1_0 = NDR_PULL_GET_MEM_CTX(ndr);
5987                                         NDR_PULL_SET_MEM_CTX(ndr, r->info1, 0);
5988                                         NDR_CHECK(ndr_pull_netr_NETLOGON_INFO_1(ndr, NDR_SCALARS, r->info1));
5989                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info1_0, 0);
5990                                 }
5991                         break;
5992
5993                         case 2:
5994                                 if (r->info2) {
5995                                         _mem_save_info2_0 = NDR_PULL_GET_MEM_CTX(ndr);
5996                                         NDR_PULL_SET_MEM_CTX(ndr, r->info2, 0);
5997                                         NDR_CHECK(ndr_pull_netr_NETLOGON_INFO_2(ndr, NDR_SCALARS|NDR_BUFFERS, r->info2));
5998                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info2_0, 0);
5999                                 }
6000                         break;
6001
6002                         case 3:
6003                                 if (r->info3) {
6004                                         _mem_save_info3_0 = NDR_PULL_GET_MEM_CTX(ndr);
6005                                         NDR_PULL_SET_MEM_CTX(ndr, r->info3, 0);
6006                                         NDR_CHECK(ndr_pull_netr_NETLOGON_INFO_3(ndr, NDR_SCALARS, r->info3));
6007                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info3_0, 0);
6008                                 }
6009                         break;
6010
6011                         case 4:
6012                                 if (r->info4) {
6013                                         _mem_save_info4_0 = NDR_PULL_GET_MEM_CTX(ndr);
6014                                         NDR_PULL_SET_MEM_CTX(ndr, r->info4, 0);
6015                                         NDR_CHECK(ndr_pull_netr_NETLOGON_INFO_4(ndr, NDR_SCALARS|NDR_BUFFERS, r->info4));
6016                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info4_0, 0);
6017                                 }
6018                         break;
6019
6020                         default:
6021                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
6022                 }
6023         }
6024         return NDR_ERR_SUCCESS;
6025 }
6026
6027 _PUBLIC_ void ndr_print_netr_CONTROL_QUERY_INFORMATION(struct ndr_print *ndr, const char *name, const union netr_CONTROL_QUERY_INFORMATION *r)
6028 {
6029         int level;
6030         level = ndr_print_get_switch_value(ndr, r);
6031         ndr_print_union(ndr, name, level, "netr_CONTROL_QUERY_INFORMATION");
6032         switch (level) {
6033                 case 1:
6034                         ndr_print_ptr(ndr, "info1", r->info1);
6035                         ndr->depth++;
6036                         if (r->info1) {
6037                                 ndr_print_netr_NETLOGON_INFO_1(ndr, "info1", r->info1);
6038                         }
6039                         ndr->depth--;
6040                 break;
6041
6042                 case 2:
6043                         ndr_print_ptr(ndr, "info2", r->info2);
6044                         ndr->depth++;
6045                         if (r->info2) {
6046                                 ndr_print_netr_NETLOGON_INFO_2(ndr, "info2", r->info2);
6047                         }
6048                         ndr->depth--;
6049                 break;
6050
6051                 case 3:
6052                         ndr_print_ptr(ndr, "info3", r->info3);
6053                         ndr->depth++;
6054                         if (r->info3) {
6055                                 ndr_print_netr_NETLOGON_INFO_3(ndr, "info3", r->info3);
6056                         }
6057                         ndr->depth--;
6058                 break;
6059
6060                 case 4:
6061                         ndr_print_ptr(ndr, "info4", r->info4);
6062                         ndr->depth++;
6063                         if (r->info4) {
6064                                 ndr_print_netr_NETLOGON_INFO_4(ndr, "info4", r->info4);
6065                         }
6066                         ndr->depth--;
6067                 break;
6068
6069                 default:
6070                         ndr_print_bad_level(ndr, name, level);
6071         }
6072 }
6073
6074 static enum ndr_err_code ndr_push_netr_LogonControlCode(struct ndr_push *ndr, int ndr_flags, enum netr_LogonControlCode r)
6075 {
6076         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
6077         return NDR_ERR_SUCCESS;
6078 }
6079
6080 static enum ndr_err_code ndr_pull_netr_LogonControlCode(struct ndr_pull *ndr, int ndr_flags, enum netr_LogonControlCode *r)
6081 {
6082         uint32_t v;
6083         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
6084         *r = v;
6085         return NDR_ERR_SUCCESS;
6086 }
6087
6088 _PUBLIC_ void ndr_print_netr_LogonControlCode(struct ndr_print *ndr, const char *name, enum netr_LogonControlCode r)
6089 {
6090         const char *val = NULL;
6091
6092         switch (r) {
6093                 case NETLOGON_CONTROL_QUERY: val = "NETLOGON_CONTROL_QUERY"; break;
6094                 case NETLOGON_CONTROL_REPLICATE: val = "NETLOGON_CONTROL_REPLICATE"; break;
6095                 case NETLOGON_CONTROL_SYNCHRONIZE: val = "NETLOGON_CONTROL_SYNCHRONIZE"; break;
6096                 case NETLOGON_CONTROL_PDC_REPLICATE: val = "NETLOGON_CONTROL_PDC_REPLICATE"; break;
6097                 case NETLOGON_CONTROL_REDISCOVER: val = "NETLOGON_CONTROL_REDISCOVER"; break;
6098                 case NETLOGON_CONTROL_TC_QUERY: val = "NETLOGON_CONTROL_TC_QUERY"; break;
6099                 case NETLOGON_CONTROL_TRANSPORT_NOTIFY: val = "NETLOGON_CONTROL_TRANSPORT_NOTIFY"; break;
6100                 case NETLOGON_CONTROL_FIND_USER: val = "NETLOGON_CONTROL_FIND_USER"; break;
6101                 case NETLOGON_CONTROL_CHANGE_PASSWORD: val = "NETLOGON_CONTROL_CHANGE_PASSWORD"; break;
6102                 case NETLOGON_CONTROL_TC_VERIFY: val = "NETLOGON_CONTROL_TC_VERIFY"; break;
6103                 case NETLOGON_CONTROL_FORCE_DNS_REG: val = "NETLOGON_CONTROL_FORCE_DNS_REG"; break;
6104                 case NETLOGON_CONTROL_QUERY_DNS_REG: val = "NETLOGON_CONTROL_QUERY_DNS_REG"; break;
6105                 case NETLOGON_CONTROL_BACKUP_CHANGE_LOG: val = "NETLOGON_CONTROL_BACKUP_CHANGE_LOG"; break;
6106                 case NETLOGON_CONTROL_TRUNCATE_LOG: val = "NETLOGON_CONTROL_TRUNCATE_LOG"; break;
6107                 case NETLOGON_CONTROL_SET_DBFLAG: val = "NETLOGON_CONTROL_SET_DBFLAG"; break;
6108                 case NETLOGON_CONTROL_BREAKPOINT: val = "NETLOGON_CONTROL_BREAKPOINT"; break;
6109         }
6110         ndr_print_enum(ndr, name, "ENUM", val, r);
6111 }
6112
6113 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)
6114 {
6115         if (ndr_flags & NDR_SCALARS) {
6116                 int level = ndr_push_get_switch_value(ndr, r);
6117                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
6118                 switch (level) {
6119                         case NETLOGON_CONTROL_REDISCOVER: {
6120                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
6121                         break; }
6122
6123                         case NETLOGON_CONTROL_TC_QUERY: {
6124                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
6125                         break; }
6126
6127                         case NETLOGON_CONTROL_TRANSPORT_NOTIFY: {
6128                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
6129                         break; }
6130
6131                         case NETLOGON_CONTROL_CHANGE_PASSWORD: {
6132                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
6133                         break; }
6134
6135                         case NETLOGON_CONTROL_TC_VERIFY: {
6136                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain));
6137                         break; }
6138
6139                         case NETLOGON_CONTROL_FIND_USER: {
6140                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->user));
6141                         break; }
6142
6143                         case NETLOGON_CONTROL_SET_DBFLAG: {
6144                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->debug_level));
6145                         break; }
6146
6147                         default:
6148                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
6149                 }
6150         }
6151         if (ndr_flags & NDR_BUFFERS) {
6152                 int level = ndr_push_get_switch_value(ndr, r);
6153                 switch (level) {
6154                         case NETLOGON_CONTROL_REDISCOVER:
6155                                 if (r->domain) {
6156                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
6157                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6158                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
6159                                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain, ndr_charset_length(r->domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6160                                 }
6161                         break;
6162
6163                         case NETLOGON_CONTROL_TC_QUERY:
6164                                 if (r->domain) {
6165                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
6166                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6167                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
6168                                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain, ndr_charset_length(r->domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6169                                 }
6170                         break;
6171
6172                         case NETLOGON_CONTROL_TRANSPORT_NOTIFY:
6173                                 if (r->domain) {
6174                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
6175                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6176                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
6177                                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain, ndr_charset_length(r->domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6178                                 }
6179                         break;
6180
6181                         case NETLOGON_CONTROL_CHANGE_PASSWORD:
6182                                 if (r->domain) {
6183                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
6184                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6185                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
6186                                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain, ndr_charset_length(r->domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6187                                 }
6188                         break;
6189
6190                         case NETLOGON_CONTROL_TC_VERIFY:
6191                                 if (r->domain) {
6192                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
6193                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6194                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain, CH_UTF16)));
6195                                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain, ndr_charset_length(r->domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6196                                 }
6197                         break;
6198
6199                         case NETLOGON_CONTROL_FIND_USER:
6200                                 if (r->user) {
6201                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
6202                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6203                                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->user, CH_UTF16)));
6204                                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->user, ndr_charset_length(r->user, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6205                                 }
6206                         break;
6207
6208                         case NETLOGON_CONTROL_SET_DBFLAG:
6209                         break;
6210
6211                         default:
6212                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
6213                 }
6214         }
6215         return NDR_ERR_SUCCESS;
6216 }
6217
6218 static enum ndr_err_code ndr_pull_netr_CONTROL_DATA_INFORMATION(struct ndr_pull *ndr, int ndr_flags, union netr_CONTROL_DATA_INFORMATION *r)
6219 {
6220         int level;
6221         uint32_t _level;
6222         TALLOC_CTX *_mem_save_domain_0;
6223         TALLOC_CTX *_mem_save_user_0;
6224         level = ndr_pull_get_switch_value(ndr, r);
6225         if (ndr_flags & NDR_SCALARS) {
6226                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
6227                 if (_level != level) {
6228                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
6229                 }
6230                 switch (level) {
6231                         case NETLOGON_CONTROL_REDISCOVER: {
6232                                 uint32_t _ptr_domain;
6233                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
6234                                 if (_ptr_domain) {
6235                                         NDR_PULL_ALLOC(ndr, r->domain);
6236                                 } else {
6237                                         r->domain = NULL;
6238                                 }
6239                         break; }
6240
6241                         case NETLOGON_CONTROL_TC_QUERY: {
6242                                 uint32_t _ptr_domain;
6243                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
6244                                 if (_ptr_domain) {
6245                                         NDR_PULL_ALLOC(ndr, r->domain);
6246                                 } else {
6247                                         r->domain = NULL;
6248                                 }
6249                         break; }
6250
6251                         case NETLOGON_CONTROL_TRANSPORT_NOTIFY: {
6252                                 uint32_t _ptr_domain;
6253                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
6254                                 if (_ptr_domain) {
6255                                         NDR_PULL_ALLOC(ndr, r->domain);
6256                                 } else {
6257                                         r->domain = NULL;
6258                                 }
6259                         break; }
6260
6261                         case NETLOGON_CONTROL_CHANGE_PASSWORD: {
6262                                 uint32_t _ptr_domain;
6263                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
6264                                 if (_ptr_domain) {
6265                                         NDR_PULL_ALLOC(ndr, r->domain);
6266                                 } else {
6267                                         r->domain = NULL;
6268                                 }
6269                         break; }
6270
6271                         case NETLOGON_CONTROL_TC_VERIFY: {
6272                                 uint32_t _ptr_domain;
6273                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
6274                                 if (_ptr_domain) {
6275                                         NDR_PULL_ALLOC(ndr, r->domain);
6276                                 } else {
6277                                         r->domain = NULL;
6278                                 }
6279                         break; }
6280
6281                         case NETLOGON_CONTROL_FIND_USER: {
6282                                 uint32_t _ptr_user;
6283                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_user));
6284                                 if (_ptr_user) {
6285                                         NDR_PULL_ALLOC(ndr, r->user);
6286                                 } else {
6287                                         r->user = NULL;
6288                                 }
6289                         break; }
6290
6291                         case NETLOGON_CONTROL_SET_DBFLAG: {
6292                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->debug_level));
6293                         break; }
6294
6295                         default:
6296                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
6297                 }
6298         }
6299         if (ndr_flags & NDR_BUFFERS) {
6300                 switch (level) {
6301                         case NETLOGON_CONTROL_REDISCOVER:
6302                                 if (r->domain) {
6303                                         _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
6304                                         NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
6305                                         NDR_CHECK(ndr_pull_array_size(ndr, &r->domain));
6306                                         NDR_CHECK(ndr_pull_array_length(ndr, &r->domain));
6307                                         if (ndr_get_array_length(ndr, &r->domain) > ndr_get_array_size(ndr, &r->domain)) {
6308                                                 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));
6309                                         }
6310                                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t)));
6311                                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t), CH_UTF16));
6312                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
6313                                 }
6314                         break;
6315
6316                         case NETLOGON_CONTROL_TC_QUERY:
6317                                 if (r->domain) {
6318                                         _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
6319                                         NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
6320                                         NDR_CHECK(ndr_pull_array_size(ndr, &r->domain));
6321                                         NDR_CHECK(ndr_pull_array_length(ndr, &r->domain));
6322                                         if (ndr_get_array_length(ndr, &r->domain) > ndr_get_array_size(ndr, &r->domain)) {
6323                                                 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));
6324                                         }
6325                                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t)));
6326                                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t), CH_UTF16));
6327                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
6328                                 }
6329                         break;
6330
6331                         case NETLOGON_CONTROL_TRANSPORT_NOTIFY:
6332                                 if (r->domain) {
6333                                         _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
6334                                         NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
6335                                         NDR_CHECK(ndr_pull_array_size(ndr, &r->domain));
6336                                         NDR_CHECK(ndr_pull_array_length(ndr, &r->domain));
6337                                         if (ndr_get_array_length(ndr, &r->domain) > ndr_get_array_size(ndr, &r->domain)) {
6338                                                 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));
6339                                         }
6340                                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t)));
6341                                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t), CH_UTF16));
6342                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
6343                                 }
6344                         break;
6345
6346                         case NETLOGON_CONTROL_CHANGE_PASSWORD:
6347                                 if (r->domain) {
6348                                         _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
6349                                         NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
6350                                         NDR_CHECK(ndr_pull_array_size(ndr, &r->domain));
6351                                         NDR_CHECK(ndr_pull_array_length(ndr, &r->domain));
6352                                         if (ndr_get_array_length(ndr, &r->domain) > ndr_get_array_size(ndr, &r->domain)) {
6353                                                 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));
6354                                         }
6355                                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t)));
6356                                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t), CH_UTF16));
6357                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
6358                                 }
6359                         break;
6360
6361                         case NETLOGON_CONTROL_TC_VERIFY:
6362                                 if (r->domain) {
6363                                         _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
6364                                         NDR_PULL_SET_MEM_CTX(ndr, r->domain, 0);
6365                                         NDR_CHECK(ndr_pull_array_size(ndr, &r->domain));
6366                                         NDR_CHECK(ndr_pull_array_length(ndr, &r->domain));
6367                                         if (ndr_get_array_length(ndr, &r->domain) > ndr_get_array_size(ndr, &r->domain)) {
6368                                                 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));
6369                                         }
6370                                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t)));
6371                                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain, ndr_get_array_length(ndr, &r->domain), sizeof(uint16_t), CH_UTF16));
6372                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
6373                                 }
6374                         break;
6375
6376                         case NETLOGON_CONTROL_FIND_USER:
6377                                 if (r->user) {
6378                                         _mem_save_user_0 = NDR_PULL_GET_MEM_CTX(ndr);
6379                                         NDR_PULL_SET_MEM_CTX(ndr, r->user, 0);
6380                                         NDR_CHECK(ndr_pull_array_size(ndr, &r->user));
6381                                         NDR_CHECK(ndr_pull_array_length(ndr, &r->user));
6382                                         if (ndr_get_array_length(ndr, &r->user) > ndr_get_array_size(ndr, &r->user)) {
6383                                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->user), ndr_get_array_length(ndr, &r->user));
6384                                         }
6385                                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t)));
6386                                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->user, ndr_get_array_length(ndr, &r->user), sizeof(uint16_t), CH_UTF16));
6387                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_0, 0);
6388                                 }
6389                         break;
6390
6391                         case NETLOGON_CONTROL_SET_DBFLAG:
6392                         break;
6393
6394                         default:
6395                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
6396                 }
6397         }
6398         return NDR_ERR_SUCCESS;
6399 }
6400
6401 _PUBLIC_ void ndr_print_netr_CONTROL_DATA_INFORMATION(struct ndr_print *ndr, const char *name, const union netr_CONTROL_DATA_INFORMATION *r)
6402 {
6403         int level;
6404         level = ndr_print_get_switch_value(ndr, r);
6405         ndr_print_union(ndr, name, level, "netr_CONTROL_DATA_INFORMATION");
6406         switch (level) {
6407                 case NETLOGON_CONTROL_REDISCOVER:
6408                         ndr_print_ptr(ndr, "domain", r->domain);
6409                         ndr->depth++;
6410                         if (r->domain) {
6411                                 ndr_print_string(ndr, "domain", r->domain);
6412                         }
6413                         ndr->depth--;
6414                 break;
6415
6416                 case NETLOGON_CONTROL_TC_QUERY:
6417                         ndr_print_ptr(ndr, "domain", r->domain);
6418                         ndr->depth++;
6419                         if (r->domain) {
6420                                 ndr_print_string(ndr, "domain", r->domain);
6421                         }
6422                         ndr->depth--;
6423                 break;
6424
6425                 case NETLOGON_CONTROL_TRANSPORT_NOTIFY:
6426                         ndr_print_ptr(ndr, "domain", r->domain);
6427                         ndr->depth++;
6428                         if (r->domain) {
6429                                 ndr_print_string(ndr, "domain", r->domain);
6430                         }
6431                         ndr->depth--;
6432                 break;
6433
6434                 case NETLOGON_CONTROL_CHANGE_PASSWORD:
6435                         ndr_print_ptr(ndr, "domain", r->domain);
6436                         ndr->depth++;
6437                         if (r->domain) {
6438                                 ndr_print_string(ndr, "domain", r->domain);
6439                         }
6440                         ndr->depth--;
6441                 break;
6442
6443                 case NETLOGON_CONTROL_TC_VERIFY:
6444                         ndr_print_ptr(ndr, "domain", r->domain);
6445                         ndr->depth++;
6446                         if (r->domain) {
6447                                 ndr_print_string(ndr, "domain", r->domain);
6448                         }
6449                         ndr->depth--;
6450                 break;
6451
6452                 case NETLOGON_CONTROL_FIND_USER:
6453                         ndr_print_ptr(ndr, "user", r->user);
6454                         ndr->depth++;
6455                         if (r->user) {
6456                                 ndr_print_string(ndr, "user", r->user);
6457                         }
6458                         ndr->depth--;
6459                 break;
6460
6461                 case NETLOGON_CONTROL_SET_DBFLAG:
6462                         ndr_print_uint32(ndr, "debug_level", r->debug_level);
6463                 break;
6464
6465                 default:
6466                         ndr_print_bad_level(ndr, name, level);
6467         }
6468 }
6469
6470 static enum ndr_err_code ndr_push_netr_NegotiateFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
6471 {
6472         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
6473         return NDR_ERR_SUCCESS;
6474 }
6475
6476 static enum ndr_err_code ndr_pull_netr_NegotiateFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
6477 {
6478         uint32_t v;
6479         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
6480         *r = v;
6481         return NDR_ERR_SUCCESS;
6482 }
6483
6484 _PUBLIC_ void ndr_print_netr_NegotiateFlags(struct ndr_print *ndr, const char *name, uint32_t r)
6485 {
6486         ndr_print_uint32(ndr, name, r);
6487         ndr->depth++;
6488         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_ACCOUNT_LOCKOUT", NETLOGON_NEG_ACCOUNT_LOCKOUT, r);
6489         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_PERSISTENT_SAMREPL", NETLOGON_NEG_PERSISTENT_SAMREPL, r);
6490         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_ARCFOUR", NETLOGON_NEG_ARCFOUR, r);
6491         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_PROMOTION_COUNT", NETLOGON_NEG_PROMOTION_COUNT, r);
6492         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_CHANGELOG_BDC", NETLOGON_NEG_CHANGELOG_BDC, r);
6493         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_FULL_SYNC_REPL", NETLOGON_NEG_FULL_SYNC_REPL, r);
6494         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_MULTIPLE_SIDS", NETLOGON_NEG_MULTIPLE_SIDS, r);
6495         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_REDO", NETLOGON_NEG_REDO, r);
6496         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_PASSWORD_CHANGE_REFUSAL", NETLOGON_NEG_PASSWORD_CHANGE_REFUSAL, r);
6497         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_SEND_PASSWORD_INFO_PDC", NETLOGON_NEG_SEND_PASSWORD_INFO_PDC, r);
6498         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_GENERIC_PASSTHROUGH", NETLOGON_NEG_GENERIC_PASSTHROUGH, r);
6499         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_CONCURRENT_RPC", NETLOGON_NEG_CONCURRENT_RPC, r);
6500         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_AVOID_ACCOUNT_DB_REPL", NETLOGON_NEG_AVOID_ACCOUNT_DB_REPL, r);
6501         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_AVOID_SECURITYAUTH_DB_REPL", NETLOGON_NEG_AVOID_SECURITYAUTH_DB_REPL, r);
6502         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_STRONG_KEYS", NETLOGON_NEG_STRONG_KEYS, r);
6503         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_TRANSITIVE_TRUSTS", NETLOGON_NEG_TRANSITIVE_TRUSTS, r);
6504         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_DNS_DOMAIN_TRUSTS", NETLOGON_NEG_DNS_DOMAIN_TRUSTS, r);
6505         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_PASSWORD_SET2", NETLOGON_NEG_PASSWORD_SET2, r);
6506         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_GETDOMAININFO", NETLOGON_NEG_GETDOMAININFO, r);
6507         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_CROSS_FOREST_TRUSTS", NETLOGON_NEG_CROSS_FOREST_TRUSTS, r);
6508         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_NEUTRALIZE_NT4_EMULATION", NETLOGON_NEG_NEUTRALIZE_NT4_EMULATION, r);
6509         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_RODC_PASSTHROUGH", NETLOGON_NEG_RODC_PASSTHROUGH, r);
6510         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_SUPPORTS_AES_SHA2", NETLOGON_NEG_SUPPORTS_AES_SHA2, r);
6511         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_SUPPORTS_AES", NETLOGON_NEG_SUPPORTS_AES, r);
6512         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_AUTHENTICATED_RPC_LSASS", NETLOGON_NEG_AUTHENTICATED_RPC_LSASS, r);
6513         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_AUTHENTICATED_RPC", NETLOGON_NEG_AUTHENTICATED_RPC, r);
6514         ndr->depth--;
6515 }
6516
6517 static enum ndr_err_code ndr_push_SyncStateEnum(struct ndr_push *ndr, int ndr_flags, enum SyncStateEnum r)
6518 {
6519         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
6520         return NDR_ERR_SUCCESS;
6521 }
6522
6523 static enum ndr_err_code ndr_pull_SyncStateEnum(struct ndr_pull *ndr, int ndr_flags, enum SyncStateEnum *r)
6524 {
6525         uint16_t v;
6526         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
6527         *r = v;
6528         return NDR_ERR_SUCCESS;
6529 }
6530
6531 _PUBLIC_ void ndr_print_SyncStateEnum(struct ndr_print *ndr, const char *name, enum SyncStateEnum r)
6532 {
6533         const char *val = NULL;
6534
6535         switch (r) {
6536                 case SYNCSTATE_NORMAL_STATE: val = "SYNCSTATE_NORMAL_STATE"; break;
6537                 case SYNCSTATE_DOMAIN_STATE: val = "SYNCSTATE_DOMAIN_STATE"; break;
6538                 case SYNCSTATE_GROUP_STATE: val = "SYNCSTATE_GROUP_STATE"; break;
6539                 case SYNCSTATE_UAS_BUILT_IN_GROUP_STATE: val = "SYNCSTATE_UAS_BUILT_IN_GROUP_STATE"; break;
6540                 case SYNCSTATE_USER_STATE: val = "SYNCSTATE_USER_STATE"; break;
6541                 case SYNCSTATE_GROUP_MEMBER_STATE: val = "SYNCSTATE_GROUP_MEMBER_STATE"; break;
6542                 case SYNCSTATE_ALIAS_STATE: val = "SYNCSTATE_ALIAS_STATE"; break;
6543                 case SYNCSTATE_ALIAS_MEMBER_STATE: val = "SYNCSTATE_ALIAS_MEMBER_STATE"; break;
6544                 case SYNCSTATE_SAM_DONE_STATE: val = "SYNCSTATE_SAM_DONE_STATE"; break;
6545         }
6546         ndr_print_enum(ndr, name, "ENUM", val, r);
6547 }
6548
6549 static enum ndr_err_code ndr_push_netr_ChangeLogFlags(struct ndr_push *ndr, int ndr_flags, uint16_t r)
6550 {
6551         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
6552         return NDR_ERR_SUCCESS;
6553 }
6554
6555 static enum ndr_err_code ndr_pull_netr_ChangeLogFlags(struct ndr_pull *ndr, int ndr_flags, uint16_t *r)
6556 {
6557         uint16_t v;
6558         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
6559         *r = v;
6560         return NDR_ERR_SUCCESS;
6561 }
6562
6563 _PUBLIC_ void ndr_print_netr_ChangeLogFlags(struct ndr_print *ndr, const char *name, uint16_t r)
6564 {
6565         ndr_print_uint16(ndr, name, r);
6566         ndr->depth++;
6567         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_CHANGELOG_IMMEDIATE_REPL_REQUIRED", NETR_CHANGELOG_IMMEDIATE_REPL_REQUIRED, r);
6568         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_CHANGELOG_CHANGED_PASSWORD", NETR_CHANGELOG_CHANGED_PASSWORD, r);
6569         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_CHANGELOG_SID_INCLUDED", NETR_CHANGELOG_SID_INCLUDED, r);
6570         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_CHANGELOG_NAME_INCLUDED", NETR_CHANGELOG_NAME_INCLUDED, r);
6571         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_CHANGELOG_FIRST_PROMOTION_OBJ", NETR_CHANGELOG_FIRST_PROMOTION_OBJ, r);
6572         ndr->depth--;
6573 }
6574
6575 static enum ndr_err_code ndr_push_netr_ChangeLogObject(struct ndr_push *ndr, int ndr_flags, const union netr_ChangeLogObject *r)
6576 {
6577         if (ndr_flags & NDR_SCALARS) {
6578                 int level = ndr_push_get_switch_value(ndr, r);
6579                 switch (level) {
6580                         case NETR_CHANGELOG_SID_INCLUDED: {
6581                                 NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, &r->object_sid));
6582                         break; }
6583
6584                         case NETR_CHANGELOG_NAME_INCLUDED: {
6585                                 {
6586                                         uint32_t _flags_save_string = ndr->flags;
6587                                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
6588                                         NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->object_name));
6589                                         ndr->flags = _flags_save_string;
6590                                 }
6591                         break; }
6592
6593                         default: {
6594                         break; }
6595
6596                 }
6597         }
6598         if (ndr_flags & NDR_BUFFERS) {
6599                 int level = ndr_push_get_switch_value(ndr, r);
6600                 switch (level) {
6601                         case NETR_CHANGELOG_SID_INCLUDED:
6602                         break;
6603
6604                         case NETR_CHANGELOG_NAME_INCLUDED:
6605                         break;
6606
6607                         default:
6608                         break;
6609
6610                 }
6611         }
6612         return NDR_ERR_SUCCESS;
6613 }
6614
6615 static enum ndr_err_code ndr_pull_netr_ChangeLogObject(struct ndr_pull *ndr, int ndr_flags, union netr_ChangeLogObject *r)
6616 {
6617         int level;
6618         level = ndr_pull_get_switch_value(ndr, r);
6619         if (ndr_flags & NDR_SCALARS) {
6620                 switch (level) {
6621                         case NETR_CHANGELOG_SID_INCLUDED: {
6622                                 NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, &r->object_sid));
6623                         break; }
6624
6625                         case NETR_CHANGELOG_NAME_INCLUDED: {
6626                                 {
6627                                         uint32_t _flags_save_string = ndr->flags;
6628                                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
6629                                         NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->object_name));
6630                                         ndr->flags = _flags_save_string;
6631                                 }
6632                         break; }
6633
6634                         default: {
6635                         break; }
6636
6637                 }
6638         }
6639         if (ndr_flags & NDR_BUFFERS) {
6640                 switch (level) {
6641                         case NETR_CHANGELOG_SID_INCLUDED:
6642                         break;
6643
6644                         case NETR_CHANGELOG_NAME_INCLUDED:
6645                         break;
6646
6647                         default:
6648                         break;
6649
6650                 }
6651         }
6652         return NDR_ERR_SUCCESS;
6653 }
6654
6655 _PUBLIC_ void ndr_print_netr_ChangeLogObject(struct ndr_print *ndr, const char *name, const union netr_ChangeLogObject *r)
6656 {
6657         int level;
6658         level = ndr_print_get_switch_value(ndr, r);
6659         ndr_print_union(ndr, name, level, "netr_ChangeLogObject");
6660         switch (level) {
6661                 case NETR_CHANGELOG_SID_INCLUDED:
6662                         ndr_print_dom_sid(ndr, "object_sid", &r->object_sid);
6663                 break;
6664
6665                 case NETR_CHANGELOG_NAME_INCLUDED:
6666                         ndr_print_string(ndr, "object_name", r->object_name);
6667                 break;
6668
6669                 default:
6670                 break;
6671
6672         }
6673 }
6674
6675 _PUBLIC_ enum ndr_err_code ndr_push_netr_ChangeLogEntry(struct ndr_push *ndr, int ndr_flags, const struct netr_ChangeLogEntry *r)
6676 {
6677         if (ndr_flags & NDR_SCALARS) {
6678                 NDR_CHECK(ndr_push_align(ndr, 4));
6679                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->serial_number1));
6680                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->serial_number2));
6681                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->object_rid));
6682                 NDR_CHECK(ndr_push_netr_ChangeLogFlags(ndr, NDR_SCALARS, r->flags));
6683                 NDR_CHECK(ndr_push_netr_SamDatabaseID8Bit(ndr, NDR_SCALARS, r->db_index));
6684                 NDR_CHECK(ndr_push_netr_DeltaEnum8Bit(ndr, NDR_SCALARS, r->delta_type));
6685                 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->object, r->flags & (NETR_CHANGELOG_SID_INCLUDED | NETR_CHANGELOG_NAME_INCLUDED)));
6686                 NDR_CHECK(ndr_push_netr_ChangeLogObject(ndr, NDR_SCALARS, &r->object));
6687         }
6688         if (ndr_flags & NDR_BUFFERS) {
6689                 NDR_CHECK(ndr_push_netr_ChangeLogObject(ndr, NDR_BUFFERS, &r->object));
6690         }
6691         return NDR_ERR_SUCCESS;
6692 }
6693
6694 _PUBLIC_ enum ndr_err_code ndr_pull_netr_ChangeLogEntry(struct ndr_pull *ndr, int ndr_flags, struct netr_ChangeLogEntry *r)
6695 {
6696         if (ndr_flags & NDR_SCALARS) {
6697                 NDR_CHECK(ndr_pull_align(ndr, 4));
6698                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->serial_number1));
6699                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->serial_number2));
6700                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->object_rid));
6701                 NDR_CHECK(ndr_pull_netr_ChangeLogFlags(ndr, NDR_SCALARS, &r->flags));
6702                 NDR_CHECK(ndr_pull_netr_SamDatabaseID8Bit(ndr, NDR_SCALARS, &r->db_index));
6703                 NDR_CHECK(ndr_pull_netr_DeltaEnum8Bit(ndr, NDR_SCALARS, &r->delta_type));
6704                 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->object, r->flags & (NETR_CHANGELOG_SID_INCLUDED | NETR_CHANGELOG_NAME_INCLUDED)));
6705                 NDR_CHECK(ndr_pull_netr_ChangeLogObject(ndr, NDR_SCALARS, &r->object));
6706         }
6707         if (ndr_flags & NDR_BUFFERS) {
6708                 NDR_CHECK(ndr_pull_netr_ChangeLogObject(ndr, NDR_BUFFERS, &r->object));
6709         }
6710         return NDR_ERR_SUCCESS;
6711 }
6712
6713 _PUBLIC_ void ndr_print_netr_ChangeLogEntry(struct ndr_print *ndr, const char *name, const struct netr_ChangeLogEntry *r)
6714 {
6715         ndr_print_struct(ndr, name, "netr_ChangeLogEntry");
6716         ndr->depth++;
6717         ndr_print_uint32(ndr, "serial_number1", r->serial_number1);
6718         ndr_print_uint32(ndr, "serial_number2", r->serial_number2);
6719         ndr_print_uint32(ndr, "object_rid", r->object_rid);
6720         ndr_print_netr_ChangeLogFlags(ndr, "flags", r->flags);
6721         ndr_print_netr_SamDatabaseID8Bit(ndr, "db_index", r->db_index);
6722         ndr_print_netr_DeltaEnum8Bit(ndr, "delta_type", r->delta_type);
6723         ndr_print_set_switch_value(ndr, &r->object, r->flags & (NETR_CHANGELOG_SID_INCLUDED | NETR_CHANGELOG_NAME_INCLUDED));
6724         ndr_print_netr_ChangeLogObject(ndr, "object", &r->object);
6725         ndr->depth--;
6726 }
6727
6728 _PUBLIC_ size_t ndr_size_netr_ChangeLogEntry(const struct netr_ChangeLogEntry *r, struct smb_iconv_convenience *ic, int flags)
6729 {
6730         return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_netr_ChangeLogEntry, ic);
6731 }
6732
6733 static enum ndr_err_code ndr_push_netr_Blob(struct ndr_push *ndr, int ndr_flags, const struct netr_Blob *r)
6734 {
6735         if (ndr_flags & NDR_SCALARS) {
6736                 NDR_CHECK(ndr_push_align(ndr, 4));
6737                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
6738                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
6739         }
6740         if (ndr_flags & NDR_BUFFERS) {
6741                 if (r->data) {
6742                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
6743                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, r->length));
6744                 }
6745         }
6746         return NDR_ERR_SUCCESS;
6747 }
6748
6749 static enum ndr_err_code ndr_pull_netr_Blob(struct ndr_pull *ndr, int ndr_flags, struct netr_Blob *r)
6750 {
6751         uint32_t _ptr_data;
6752         TALLOC_CTX *_mem_save_data_0;
6753         if (ndr_flags & NDR_SCALARS) {
6754                 NDR_CHECK(ndr_pull_align(ndr, 4));
6755                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
6756                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
6757                 if (_ptr_data) {
6758                         NDR_PULL_ALLOC(ndr, r->data);
6759                 } else {
6760                         r->data = NULL;
6761                 }
6762         }
6763         if (ndr_flags & NDR_BUFFERS) {
6764                 if (r->data) {
6765                         _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
6766                         NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
6767                         NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
6768                         NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
6769                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, ndr_get_array_size(ndr, &r->data)));
6770                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
6771                 }
6772                 if (r->data) {
6773                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->length));
6774                 }
6775         }
6776         return NDR_ERR_SUCCESS;
6777 }
6778
6779 _PUBLIC_ void ndr_print_netr_Blob(struct ndr_print *ndr, const char *name, const struct netr_Blob *r)
6780 {
6781         ndr_print_struct(ndr, name, "netr_Blob");
6782         ndr->depth++;
6783         ndr_print_uint32(ndr, "length", r->length);
6784         ndr_print_ptr(ndr, "data", r->data);
6785         ndr->depth++;
6786         if (r->data) {
6787                 ndr_print_array_uint8(ndr, "data", r->data, r->length);
6788         }
6789         ndr->depth--;
6790         ndr->depth--;
6791 }
6792
6793 static enum ndr_err_code ndr_push_netr_DsRGetDCName_flags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
6794 {
6795         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
6796         return NDR_ERR_SUCCESS;
6797 }
6798
6799 static enum ndr_err_code ndr_pull_netr_DsRGetDCName_flags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
6800 {
6801         uint32_t v;
6802         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
6803         *r = v;
6804         return NDR_ERR_SUCCESS;
6805 }
6806
6807 _PUBLIC_ void ndr_print_netr_DsRGetDCName_flags(struct ndr_print *ndr, const char *name, uint32_t r)
6808 {
6809         ndr_print_uint32(ndr, name, r);
6810         ndr->depth++;
6811         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_FORCE_REDISCOVERY", DS_FORCE_REDISCOVERY, r);
6812         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_DIRECTORY_SERVICE_REQUIRED", DS_DIRECTORY_SERVICE_REQUIRED, r);
6813         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_DIRECTORY_SERVICE_PREFERRED", DS_DIRECTORY_SERVICE_PREFERRED, r);
6814         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_GC_SERVER_REQUIRED", DS_GC_SERVER_REQUIRED, r);
6815         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_PDC_REQUIRED", DS_PDC_REQUIRED, r);
6816         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_BACKGROUND_ONLY", DS_BACKGROUND_ONLY, r);
6817         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_IP_REQUIRED", DS_IP_REQUIRED, r);
6818         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_KDC_REQUIRED", DS_KDC_REQUIRED, r);
6819         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_TIMESERV_REQUIRED", DS_TIMESERV_REQUIRED, r);
6820         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_WRITABLE_REQUIRED", DS_WRITABLE_REQUIRED, r);
6821         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_GOOD_TIMESERV_PREFERRED", DS_GOOD_TIMESERV_PREFERRED, r);
6822         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_AVOID_SELF", DS_AVOID_SELF, r);
6823         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_ONLY_LDAP_NEEDED", DS_ONLY_LDAP_NEEDED, r);
6824         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_IS_FLAT_NAME", DS_IS_FLAT_NAME, r);
6825         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_IS_DNS_NAME", DS_IS_DNS_NAME, r);
6826         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_TRY_NEXTCLOSEST_SITE", DS_TRY_NEXTCLOSEST_SITE, r);
6827         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_DIRECTORY_SERVICE_6_REQUIRED", DS_DIRECTORY_SERVICE_6_REQUIRED, r);
6828         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_RETURN_DNS_NAME", DS_RETURN_DNS_NAME, r);
6829         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_RETURN_FLAT_NAME", DS_RETURN_FLAT_NAME, r);
6830         ndr->depth--;
6831 }
6832
6833 static enum ndr_err_code ndr_push_netr_DsRGetDCNameInfo_AddressType(struct ndr_push *ndr, int ndr_flags, enum netr_DsRGetDCNameInfo_AddressType r)
6834 {
6835         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
6836         return NDR_ERR_SUCCESS;
6837 }
6838
6839 static enum ndr_err_code ndr_pull_netr_DsRGetDCNameInfo_AddressType(struct ndr_pull *ndr, int ndr_flags, enum netr_DsRGetDCNameInfo_AddressType *r)
6840 {
6841         uint32_t v;
6842         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
6843         *r = v;
6844         return NDR_ERR_SUCCESS;
6845 }
6846
6847 _PUBLIC_ void ndr_print_netr_DsRGetDCNameInfo_AddressType(struct ndr_print *ndr, const char *name, enum netr_DsRGetDCNameInfo_AddressType r)
6848 {
6849         const char *val = NULL;
6850
6851         switch (r) {
6852                 case DS_ADDRESS_TYPE_INET: val = "DS_ADDRESS_TYPE_INET"; break;
6853                 case DS_ADDRESS_TYPE_NETBIOS: val = "DS_ADDRESS_TYPE_NETBIOS"; break;
6854         }
6855         ndr_print_enum(ndr, name, "ENUM", val, r);
6856 }
6857
6858 static enum ndr_err_code ndr_push_netr_DsR_DcFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
6859 {
6860         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
6861         return NDR_ERR_SUCCESS;
6862 }
6863
6864 static enum ndr_err_code ndr_pull_netr_DsR_DcFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
6865 {
6866         uint32_t v;
6867         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
6868         *r = v;
6869         return NDR_ERR_SUCCESS;
6870 }
6871
6872 _PUBLIC_ void ndr_print_netr_DsR_DcFlags(struct ndr_print *ndr, const char *name, uint32_t r)
6873 {
6874         ndr_print_uint32(ndr, name, r);
6875         ndr->depth++;
6876         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_PDC", DS_SERVER_PDC, r);
6877         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_GC", DS_SERVER_GC, r);
6878         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_LDAP", DS_SERVER_LDAP, r);
6879         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_DS", DS_SERVER_DS, r);
6880         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_KDC", DS_SERVER_KDC, r);
6881         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_TIMESERV", DS_SERVER_TIMESERV, r);
6882         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_CLOSEST", DS_SERVER_CLOSEST, r);
6883         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_WRITABLE", DS_SERVER_WRITABLE, r);
6884         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_GOOD_TIMESERV", DS_SERVER_GOOD_TIMESERV, r);
6885         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_NDNC", DS_SERVER_NDNC, r);
6886         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_SELECT_SECRET_DOMAIN_6", DS_SERVER_SELECT_SECRET_DOMAIN_6, r);
6887         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_FULL_SECRET_DOMAIN_6", DS_SERVER_FULL_SECRET_DOMAIN_6, r);
6888         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_DNS_CONTROLLER", DS_DNS_CONTROLLER, r);
6889         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_DNS_DOMAIN", DS_DNS_DOMAIN, r);
6890         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_DNS_FOREST", DS_DNS_FOREST, r);
6891         ndr->depth--;
6892 }
6893
6894 _PUBLIC_ enum ndr_err_code ndr_push_netr_DsRGetDCNameInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_DsRGetDCNameInfo *r)
6895 {
6896         if (ndr_flags & NDR_SCALARS) {
6897                 NDR_CHECK(ndr_push_align(ndr, 4));
6898                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dc_unc));
6899                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dc_address));
6900                 NDR_CHECK(ndr_push_netr_DsRGetDCNameInfo_AddressType(ndr, NDR_SCALARS, r->dc_address_type));
6901                 NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->domain_guid));
6902                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain_name));
6903                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->forest_name));
6904                 NDR_CHECK(ndr_push_netr_DsR_DcFlags(ndr, NDR_SCALARS, r->dc_flags));
6905                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dc_site_name));
6906                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->client_site_name));
6907         }
6908         if (ndr_flags & NDR_BUFFERS) {
6909                 if (r->dc_unc) {
6910                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_unc, CH_UTF16)));
6911                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6912                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_unc, CH_UTF16)));
6913                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dc_unc, ndr_charset_length(r->dc_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6914                 }
6915                 if (r->dc_address) {
6916                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_address, CH_UTF16)));
6917                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6918                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_address, CH_UTF16)));
6919                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dc_address, ndr_charset_length(r->dc_address, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6920                 }
6921                 if (r->domain_name) {
6922                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain_name, CH_UTF16)));
6923                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6924                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain_name, CH_UTF16)));
6925                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain_name, ndr_charset_length(r->domain_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6926                 }
6927                 if (r->forest_name) {
6928                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->forest_name, CH_UTF16)));
6929                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6930                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->forest_name, CH_UTF16)));
6931                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->forest_name, ndr_charset_length(r->forest_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6932                 }
6933                 if (r->dc_site_name) {
6934                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_site_name, CH_UTF16)));
6935                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6936                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_site_name, CH_UTF16)));
6937                         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));
6938                 }
6939                 if (r->client_site_name) {
6940                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client_site_name, CH_UTF16)));
6941                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6942                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client_site_name, CH_UTF16)));
6943                         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));
6944                 }
6945         }
6946         return NDR_ERR_SUCCESS;
6947 }
6948
6949 _PUBLIC_ enum ndr_err_code ndr_pull_netr_DsRGetDCNameInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_DsRGetDCNameInfo *r)
6950 {
6951         uint32_t _ptr_dc_unc;
6952         TALLOC_CTX *_mem_save_dc_unc_0;
6953         uint32_t _ptr_dc_address;
6954         TALLOC_CTX *_mem_save_dc_address_0;
6955         uint32_t _ptr_domain_name;
6956         TALLOC_CTX *_mem_save_domain_name_0;
6957         uint32_t _ptr_forest_name;
6958         TALLOC_CTX *_mem_save_forest_name_0;
6959         uint32_t _ptr_dc_site_name;
6960         TALLOC_CTX *_mem_save_dc_site_name_0;
6961         uint32_t _ptr_client_site_name;
6962         TALLOC_CTX *_mem_save_client_site_name_0;
6963         if (ndr_flags & NDR_SCALARS) {
6964                 NDR_CHECK(ndr_pull_align(ndr, 4));
6965                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dc_unc));
6966                 if (_ptr_dc_unc) {
6967                         NDR_PULL_ALLOC(ndr, r->dc_unc);
6968                 } else {
6969                         r->dc_unc = NULL;
6970                 }
6971                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dc_address));
6972                 if (_ptr_dc_address) {
6973                         NDR_PULL_ALLOC(ndr, r->dc_address);
6974                 } else {
6975                         r->dc_address = NULL;
6976                 }
6977                 NDR_CHECK(ndr_pull_netr_DsRGetDCNameInfo_AddressType(ndr, NDR_SCALARS, &r->dc_address_type));
6978                 NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->domain_guid));
6979                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
6980                 if (_ptr_domain_name) {
6981                         NDR_PULL_ALLOC(ndr, r->domain_name);
6982                 } else {
6983                         r->domain_name = NULL;
6984                 }
6985                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_forest_name));
6986                 if (_ptr_forest_name) {
6987                         NDR_PULL_ALLOC(ndr, r->forest_name);
6988                 } else {
6989                         r->forest_name = NULL;
6990                 }
6991                 NDR_CHECK(ndr_pull_netr_DsR_DcFlags(ndr, NDR_SCALARS, &r->dc_flags));
6992                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dc_site_name));
6993                 if (_ptr_dc_site_name) {
6994                         NDR_PULL_ALLOC(ndr, r->dc_site_name);
6995                 } else {
6996                         r->dc_site_name = NULL;
6997                 }
6998                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client_site_name));
6999                 if (_ptr_client_site_name) {
7000                         NDR_PULL_ALLOC(ndr, r->client_site_name);
7001                 } else {
7002                         r->client_site_name = NULL;
7003                 }
7004         }
7005         if (ndr_flags & NDR_BUFFERS) {
7006                 if (r->dc_unc) {
7007                         _mem_save_dc_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
7008                         NDR_PULL_SET_MEM_CTX(ndr, r->dc_unc, 0);
7009                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dc_unc));
7010                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dc_unc));
7011                         if (ndr_get_array_length(ndr, &r->dc_unc) > ndr_get_array_size(ndr, &r->dc_unc)) {
7012                                 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));
7013                         }
7014                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dc_unc), sizeof(uint16_t)));
7015                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dc_unc, ndr_get_array_length(ndr, &r->dc_unc), sizeof(uint16_t), CH_UTF16));
7016                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dc_unc_0, 0);
7017                 }
7018                 if (r->dc_address) {
7019                         _mem_save_dc_address_0 = NDR_PULL_GET_MEM_CTX(ndr);
7020                         NDR_PULL_SET_MEM_CTX(ndr, r->dc_address, 0);
7021                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dc_address));
7022                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dc_address));
7023                         if (ndr_get_array_length(ndr, &r->dc_address) > ndr_get_array_size(ndr, &r->dc_address)) {
7024                                 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));
7025                         }
7026                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dc_address), sizeof(uint16_t)));
7027                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dc_address, ndr_get_array_length(ndr, &r->dc_address), sizeof(uint16_t), CH_UTF16));
7028                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dc_address_0, 0);
7029                 }
7030                 if (r->domain_name) {
7031                         _mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
7032                         NDR_PULL_SET_MEM_CTX(ndr, r->domain_name, 0);
7033                         NDR_CHECK(ndr_pull_array_size(ndr, &r->domain_name));
7034                         NDR_CHECK(ndr_pull_array_length(ndr, &r->domain_name));
7035                         if (ndr_get_array_length(ndr, &r->domain_name) > ndr_get_array_size(ndr, &r->domain_name)) {
7036                                 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));
7037                         }
7038                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain_name), sizeof(uint16_t)));
7039                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain_name, ndr_get_array_length(ndr, &r->domain_name), sizeof(uint16_t), CH_UTF16));
7040                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
7041                 }
7042                 if (r->forest_name) {
7043                         _mem_save_forest_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
7044                         NDR_PULL_SET_MEM_CTX(ndr, r->forest_name, 0);
7045                         NDR_CHECK(ndr_pull_array_size(ndr, &r->forest_name));
7046                         NDR_CHECK(ndr_pull_array_length(ndr, &r->forest_name));
7047                         if (ndr_get_array_length(ndr, &r->forest_name) > ndr_get_array_size(ndr, &r->forest_name)) {
7048                                 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));
7049                         }
7050                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->forest_name), sizeof(uint16_t)));
7051                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->forest_name, ndr_get_array_length(ndr, &r->forest_name), sizeof(uint16_t), CH_UTF16));
7052                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_forest_name_0, 0);
7053                 }
7054                 if (r->dc_site_name) {
7055                         _mem_save_dc_site_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
7056                         NDR_PULL_SET_MEM_CTX(ndr, r->dc_site_name, 0);
7057                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dc_site_name));
7058                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dc_site_name));
7059                         if (ndr_get_array_length(ndr, &r->dc_site_name) > ndr_get_array_size(ndr, &r->dc_site_name)) {
7060                                 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));
7061                         }
7062                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dc_site_name), sizeof(uint16_t)));
7063                         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));
7064                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dc_site_name_0, 0);
7065                 }
7066                 if (r->client_site_name) {
7067                         _mem_save_client_site_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
7068                         NDR_PULL_SET_MEM_CTX(ndr, r->client_site_name, 0);
7069                         NDR_CHECK(ndr_pull_array_size(ndr, &r->client_site_name));
7070                         NDR_CHECK(ndr_pull_array_length(ndr, &r->client_site_name));
7071                         if (ndr_get_array_length(ndr, &r->client_site_name) > ndr_get_array_size(ndr, &r->client_site_name)) {
7072                                 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));
7073                         }
7074                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client_site_name), sizeof(uint16_t)));
7075                         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));
7076                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_site_name_0, 0);
7077                 }
7078         }
7079         return NDR_ERR_SUCCESS;
7080 }
7081
7082 _PUBLIC_ void ndr_print_netr_DsRGetDCNameInfo(struct ndr_print *ndr, const char *name, const struct netr_DsRGetDCNameInfo *r)
7083 {
7084         ndr_print_struct(ndr, name, "netr_DsRGetDCNameInfo");
7085         ndr->depth++;
7086         ndr_print_ptr(ndr, "dc_unc", r->dc_unc);
7087         ndr->depth++;
7088         if (r->dc_unc) {
7089                 ndr_print_string(ndr, "dc_unc", r->dc_unc);
7090         }
7091         ndr->depth--;
7092         ndr_print_ptr(ndr, "dc_address", r->dc_address);
7093         ndr->depth++;
7094         if (r->dc_address) {
7095                 ndr_print_string(ndr, "dc_address", r->dc_address);
7096         }
7097         ndr->depth--;
7098         ndr_print_netr_DsRGetDCNameInfo_AddressType(ndr, "dc_address_type", r->dc_address_type);
7099         ndr_print_GUID(ndr, "domain_guid", &r->domain_guid);
7100         ndr_print_ptr(ndr, "domain_name", r->domain_name);
7101         ndr->depth++;
7102         if (r->domain_name) {
7103                 ndr_print_string(ndr, "domain_name", r->domain_name);
7104         }
7105         ndr->depth--;
7106         ndr_print_ptr(ndr, "forest_name", r->forest_name);
7107         ndr->depth++;
7108         if (r->forest_name) {
7109                 ndr_print_string(ndr, "forest_name", r->forest_name);
7110         }
7111         ndr->depth--;
7112         ndr_print_netr_DsR_DcFlags(ndr, "dc_flags", r->dc_flags);
7113         ndr_print_ptr(ndr, "dc_site_name", r->dc_site_name);
7114         ndr->depth++;
7115         if (r->dc_site_name) {
7116                 ndr_print_string(ndr, "dc_site_name", r->dc_site_name);
7117         }
7118         ndr->depth--;
7119         ndr_print_ptr(ndr, "client_site_name", r->client_site_name);
7120         ndr->depth++;
7121         if (r->client_site_name) {
7122                 ndr_print_string(ndr, "client_site_name", r->client_site_name);
7123         }
7124         ndr->depth--;
7125         ndr->depth--;
7126 }
7127
7128 static enum ndr_err_code ndr_push_netr_Capabilities(struct ndr_push *ndr, int ndr_flags, const union netr_Capabilities *r)
7129 {
7130         if (ndr_flags & NDR_SCALARS) {
7131                 int level = ndr_push_get_switch_value(ndr, r);
7132                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
7133                 switch (level) {
7134                         case 1: {
7135                                 NDR_CHECK(ndr_push_netr_NegotiateFlags(ndr, NDR_SCALARS, r->server_capabilities));
7136                         break; }
7137
7138                         default:
7139                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
7140                 }
7141         }
7142         if (ndr_flags & NDR_BUFFERS) {
7143                 int level = ndr_push_get_switch_value(ndr, r);
7144                 switch (level) {
7145                         case 1:
7146                         break;
7147
7148                         default:
7149                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
7150                 }
7151         }
7152         return NDR_ERR_SUCCESS;
7153 }
7154
7155 static enum ndr_err_code ndr_pull_netr_Capabilities(struct ndr_pull *ndr, int ndr_flags, union netr_Capabilities *r)
7156 {
7157         int level;
7158         uint32_t _level;
7159         level = ndr_pull_get_switch_value(ndr, r);
7160         if (ndr_flags & NDR_SCALARS) {
7161                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
7162                 if (_level != level) {
7163                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
7164                 }
7165                 switch (level) {
7166                         case 1: {
7167                                 NDR_CHECK(ndr_pull_netr_NegotiateFlags(ndr, NDR_SCALARS, &r->server_capabilities));
7168                         break; }
7169
7170                         default:
7171                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
7172                 }
7173         }
7174         if (ndr_flags & NDR_BUFFERS) {
7175                 switch (level) {
7176                         case 1:
7177                         break;
7178
7179                         default:
7180                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
7181                 }
7182         }
7183         return NDR_ERR_SUCCESS;
7184 }
7185
7186 _PUBLIC_ void ndr_print_netr_Capabilities(struct ndr_print *ndr, const char *name, const union netr_Capabilities *r)
7187 {
7188         int level;
7189         level = ndr_print_get_switch_value(ndr, r);
7190         ndr_print_union(ndr, name, level, "netr_Capabilities");
7191         switch (level) {
7192                 case 1:
7193                         ndr_print_netr_NegotiateFlags(ndr, "server_capabilities", r->server_capabilities);
7194                 break;
7195
7196                 default:
7197                         ndr_print_bad_level(ndr, name, level);
7198         }
7199 }
7200
7201 static enum ndr_err_code ndr_push_netr_TrustFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
7202 {
7203         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
7204         return NDR_ERR_SUCCESS;
7205 }
7206
7207 static enum ndr_err_code ndr_pull_netr_TrustFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
7208 {
7209         uint32_t v;
7210         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
7211         *r = v;
7212         return NDR_ERR_SUCCESS;
7213 }
7214
7215 _PUBLIC_ void ndr_print_netr_TrustFlags(struct ndr_print *ndr, const char *name, uint32_t r)
7216 {
7217         ndr_print_uint32(ndr, name, r);
7218         ndr->depth++;
7219         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_IN_FOREST", NETR_TRUST_FLAG_IN_FOREST, r);
7220         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_OUTBOUND", NETR_TRUST_FLAG_OUTBOUND, r);
7221         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_TREEROOT", NETR_TRUST_FLAG_TREEROOT, r);
7222         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_PRIMARY", NETR_TRUST_FLAG_PRIMARY, r);
7223         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_NATIVE", NETR_TRUST_FLAG_NATIVE, r);
7224         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_INBOUND", NETR_TRUST_FLAG_INBOUND, r);
7225         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_MIT_KRB5", NETR_TRUST_FLAG_MIT_KRB5, r);
7226         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_AES", NETR_TRUST_FLAG_AES, r);
7227         ndr->depth--;
7228 }
7229
7230 static enum ndr_err_code ndr_push_netr_WorkstationFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
7231 {
7232         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
7233         return NDR_ERR_SUCCESS;
7234 }
7235
7236 static enum ndr_err_code ndr_pull_netr_WorkstationFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
7237 {
7238         uint32_t v;
7239         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
7240         *r = v;
7241         return NDR_ERR_SUCCESS;
7242 }
7243
7244 _PUBLIC_ void ndr_print_netr_WorkstationFlags(struct ndr_print *ndr, const char *name, uint32_t r)
7245 {
7246         ndr_print_uint32(ndr, name, r);
7247         ndr->depth++;
7248         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_WS_FLAG_HANDLES_INBOUND_TRUSTS", NETR_WS_FLAG_HANDLES_INBOUND_TRUSTS, r);
7249         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_WS_FLAG_HANDLES_SPN_UPDATE", NETR_WS_FLAG_HANDLES_SPN_UPDATE, r);
7250         ndr->depth--;
7251 }
7252
7253 static enum ndr_err_code ndr_push_netr_SuiteMask(struct ndr_push *ndr, int ndr_flags, uint16_t r)
7254 {
7255         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
7256         return NDR_ERR_SUCCESS;
7257 }
7258
7259 static enum ndr_err_code ndr_pull_netr_SuiteMask(struct ndr_pull *ndr, int ndr_flags, uint16_t *r)
7260 {
7261         uint16_t v;
7262         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
7263         *r = v;
7264         return NDR_ERR_SUCCESS;
7265 }
7266
7267 _PUBLIC_ void ndr_print_netr_SuiteMask(struct ndr_print *ndr, const char *name, uint16_t r)
7268 {
7269         ndr_print_uint16(ndr, name, r);
7270         ndr->depth++;
7271         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_BACKOFFICE", NETR_VER_SUITE_BACKOFFICE, r);
7272         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_BLADE", NETR_VER_SUITE_BLADE, r);
7273         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_COMPUTE_SERVER", NETR_VER_SUITE_COMPUTE_SERVER, r);
7274         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_DATACENTER", NETR_VER_SUITE_DATACENTER, r);
7275         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_ENTERPRISE", NETR_VER_SUITE_ENTERPRISE, r);
7276         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_EMBEDDEDNT", NETR_VER_SUITE_EMBEDDEDNT, r);
7277         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_PERSONAL", NETR_VER_SUITE_PERSONAL, r);
7278         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_SINGLEUSERTS", NETR_VER_SUITE_SINGLEUSERTS, r);
7279         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_SMALLBUSINESS", NETR_VER_SUITE_SMALLBUSINESS, r);
7280         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_SMALLBUSINESS_RESTRICTED", NETR_VER_SUITE_SMALLBUSINESS_RESTRICTED, r);
7281         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_STORAGE_SERVER", NETR_VER_SUITE_STORAGE_SERVER, r);
7282         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_TERMINAL", NETR_VER_SUITE_TERMINAL, r);
7283         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_WH_SERVER", NETR_VER_SUITE_WH_SERVER, r);
7284         ndr->depth--;
7285 }
7286
7287 static enum ndr_err_code ndr_push_netr_ProductType(struct ndr_push *ndr, int ndr_flags, uint8_t r)
7288 {
7289         NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r));
7290         return NDR_ERR_SUCCESS;
7291 }
7292
7293 static enum ndr_err_code ndr_pull_netr_ProductType(struct ndr_pull *ndr, int ndr_flags, uint8_t *r)
7294 {
7295         uint8_t v;
7296         NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &v));
7297         *r = v;
7298         return NDR_ERR_SUCCESS;
7299 }
7300
7301 _PUBLIC_ void ndr_print_netr_ProductType(struct ndr_print *ndr, const char *name, uint8_t r)
7302 {
7303         ndr_print_uint8(ndr, name, r);
7304         ndr->depth++;
7305         ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "NETR_VER_NT_DOMAIN_CONTROLLER", NETR_VER_NT_DOMAIN_CONTROLLER, r);
7306         ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "NETR_VER_NT_SERVER", NETR_VER_NT_SERVER, r);
7307         ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "NETR_VER_NT_WORKSTATION", NETR_VER_NT_WORKSTATION, r);
7308         ndr->depth--;
7309 }
7310
7311 static enum ndr_err_code ndr_push_netr_LsaPolicyInformation(struct ndr_push *ndr, int ndr_flags, const struct netr_LsaPolicyInformation *r)
7312 {
7313         if (ndr_flags & NDR_SCALARS) {
7314                 NDR_CHECK(ndr_push_align(ndr, 4));
7315                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->policy_size));
7316                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->policy));
7317         }
7318         if (ndr_flags & NDR_BUFFERS) {
7319                 if (r->policy) {
7320                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->policy_size));
7321                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->policy, r->policy_size));
7322                 }
7323         }
7324         return NDR_ERR_SUCCESS;
7325 }
7326
7327 static enum ndr_err_code ndr_pull_netr_LsaPolicyInformation(struct ndr_pull *ndr, int ndr_flags, struct netr_LsaPolicyInformation *r)
7328 {
7329         uint32_t _ptr_policy;
7330         TALLOC_CTX *_mem_save_policy_0;
7331         if (ndr_flags & NDR_SCALARS) {
7332                 NDR_CHECK(ndr_pull_align(ndr, 4));
7333                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->policy_size));
7334                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_policy));
7335                 if (_ptr_policy) {
7336                         NDR_PULL_ALLOC(ndr, r->policy);
7337                 } else {
7338                         r->policy = NULL;
7339                 }
7340         }
7341         if (ndr_flags & NDR_BUFFERS) {
7342                 if (r->policy) {
7343                         _mem_save_policy_0 = NDR_PULL_GET_MEM_CTX(ndr);
7344                         NDR_PULL_SET_MEM_CTX(ndr, r->policy, 0);
7345                         NDR_CHECK(ndr_pull_array_size(ndr, &r->policy));
7346                         NDR_PULL_ALLOC_N(ndr, r->policy, ndr_get_array_size(ndr, &r->policy));
7347                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->policy, ndr_get_array_size(ndr, &r->policy)));
7348                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_policy_0, 0);
7349                 }
7350                 if (r->policy) {
7351                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->policy, r->policy_size));
7352                 }
7353         }
7354         return NDR_ERR_SUCCESS;
7355 }
7356
7357 _PUBLIC_ void ndr_print_netr_LsaPolicyInformation(struct ndr_print *ndr, const char *name, const struct netr_LsaPolicyInformation *r)
7358 {
7359         ndr_print_struct(ndr, name, "netr_LsaPolicyInformation");
7360         ndr->depth++;
7361         ndr_print_uint32(ndr, "policy_size", r->policy_size);
7362         ndr_print_ptr(ndr, "policy", r->policy);
7363         ndr->depth++;
7364         if (r->policy) {
7365                 ndr_print_array_uint8(ndr, "policy", r->policy, r->policy_size);
7366         }
7367         ndr->depth--;
7368         ndr->depth--;
7369 }
7370
7371 static enum ndr_err_code ndr_push_netr_OsVersionInfoEx(struct ndr_push *ndr, int ndr_flags, const struct netr_OsVersionInfoEx *r)
7372 {
7373         if (ndr_flags & NDR_SCALARS) {
7374                 NDR_CHECK(ndr_push_align(ndr, 4));
7375                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 284));
7376                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->MajorVersion));
7377                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->MinorVersion));
7378                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->BuildNumber));
7379                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->PlatformId));
7380                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->CSDVersion, 128, sizeof(uint16_t), CH_UTF16));
7381                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->ServicePackMajor));
7382                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->ServicePackMinor));
7383                 NDR_CHECK(ndr_push_netr_SuiteMask(ndr, NDR_SCALARS, r->SuiteMask));
7384                 NDR_CHECK(ndr_push_netr_ProductType(ndr, NDR_SCALARS, r->ProductType));
7385                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->Reserved));
7386         }
7387         if (ndr_flags & NDR_BUFFERS) {
7388         }
7389         return NDR_ERR_SUCCESS;
7390 }
7391
7392 static enum ndr_err_code ndr_pull_netr_OsVersionInfoEx(struct ndr_pull *ndr, int ndr_flags, struct netr_OsVersionInfoEx *r)
7393 {
7394         if (ndr_flags & NDR_SCALARS) {
7395                 NDR_CHECK(ndr_pull_align(ndr, 4));
7396                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->OSVersionInfoSize));
7397                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->MajorVersion));
7398                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->MinorVersion));
7399                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->BuildNumber));
7400                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->PlatformId));
7401                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->CSDVersion, 128, sizeof(uint16_t), CH_UTF16));
7402                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->ServicePackMajor));
7403                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->ServicePackMinor));
7404                 NDR_CHECK(ndr_pull_netr_SuiteMask(ndr, NDR_SCALARS, &r->SuiteMask));
7405                 NDR_CHECK(ndr_pull_netr_ProductType(ndr, NDR_SCALARS, &r->ProductType));
7406                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->Reserved));
7407         }
7408         if (ndr_flags & NDR_BUFFERS) {
7409         }
7410         return NDR_ERR_SUCCESS;
7411 }
7412
7413 _PUBLIC_ void ndr_print_netr_OsVersionInfoEx(struct ndr_print *ndr, const char *name, const struct netr_OsVersionInfoEx *r)
7414 {
7415         ndr_print_struct(ndr, name, "netr_OsVersionInfoEx");
7416         ndr->depth++;
7417         ndr_print_uint32(ndr, "OSVersionInfoSize", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?284:r->OSVersionInfoSize);
7418         ndr_print_uint32(ndr, "MajorVersion", r->MajorVersion);
7419         ndr_print_uint32(ndr, "MinorVersion", r->MinorVersion);
7420         ndr_print_uint32(ndr, "BuildNumber", r->BuildNumber);
7421         ndr_print_uint32(ndr, "PlatformId", r->PlatformId);
7422         ndr_print_string(ndr, "CSDVersion", r->CSDVersion);
7423         ndr_print_uint16(ndr, "ServicePackMajor", r->ServicePackMajor);
7424         ndr_print_uint16(ndr, "ServicePackMinor", r->ServicePackMinor);
7425         ndr_print_netr_SuiteMask(ndr, "SuiteMask", r->SuiteMask);
7426         ndr_print_netr_ProductType(ndr, "ProductType", r->ProductType);
7427         ndr_print_uint8(ndr, "Reserved", r->Reserved);
7428         ndr->depth--;
7429 }
7430
7431 static enum ndr_err_code ndr_push_netr_OsVersion(struct ndr_push *ndr, int ndr_flags, const struct netr_OsVersion *r)
7432 {
7433         if (ndr_flags & NDR_SCALARS) {
7434                 NDR_CHECK(ndr_push_align(ndr, 4));
7435                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 142));
7436                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7437                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 142));
7438                 NDR_CHECK(ndr_push_netr_OsVersionInfoEx(ndr, NDR_SCALARS, &r->os));
7439         }
7440         if (ndr_flags & NDR_BUFFERS) {
7441         }
7442         return NDR_ERR_SUCCESS;
7443 }
7444
7445 static enum ndr_err_code ndr_pull_netr_OsVersion(struct ndr_pull *ndr, int ndr_flags, struct netr_OsVersion *r)
7446 {
7447         if (ndr_flags & NDR_SCALARS) {
7448                 NDR_CHECK(ndr_pull_align(ndr, 4));
7449                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
7450                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy));
7451                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
7452                 NDR_CHECK(ndr_pull_netr_OsVersionInfoEx(ndr, NDR_SCALARS, &r->os));
7453         }
7454         if (ndr_flags & NDR_BUFFERS) {
7455         }
7456         return NDR_ERR_SUCCESS;
7457 }
7458
7459 _PUBLIC_ void ndr_print_netr_OsVersion(struct ndr_print *ndr, const char *name, const struct netr_OsVersion *r)
7460 {
7461         ndr_print_struct(ndr, name, "netr_OsVersion");
7462         ndr->depth++;
7463         ndr_print_uint32(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?142:r->length);
7464         ndr_print_uint32(ndr, "dummy", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->dummy);
7465         ndr_print_uint32(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?142:r->size);
7466         ndr_print_netr_OsVersionInfoEx(ndr, "os", &r->os);
7467         ndr->depth--;
7468 }
7469
7470 static enum ndr_err_code ndr_push_netr_OsVersionContainer(struct ndr_push *ndr, int ndr_flags, const struct netr_OsVersionContainer *r)
7471 {
7472         if (ndr_flags & NDR_SCALARS) {
7473                 NDR_CHECK(ndr_push_align(ndr, 4));
7474                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->os == NULL?0:284));
7475                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->os == NULL?0:284));
7476                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->os));
7477         }
7478         if (ndr_flags & NDR_BUFFERS) {
7479                 if (r->os) {
7480                         NDR_CHECK(ndr_push_netr_OsVersion(ndr, NDR_SCALARS, r->os));
7481                 }
7482         }
7483         return NDR_ERR_SUCCESS;
7484 }
7485
7486 static enum ndr_err_code ndr_pull_netr_OsVersionContainer(struct ndr_pull *ndr, int ndr_flags, struct netr_OsVersionContainer *r)
7487 {
7488         uint32_t _ptr_os;
7489         TALLOC_CTX *_mem_save_os_0;
7490         if (ndr_flags & NDR_SCALARS) {
7491                 NDR_CHECK(ndr_pull_align(ndr, 4));
7492                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
7493                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
7494                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_os));
7495                 if (_ptr_os) {
7496                         NDR_PULL_ALLOC(ndr, r->os);
7497                 } else {
7498                         r->os = NULL;
7499                 }
7500         }
7501         if (ndr_flags & NDR_BUFFERS) {
7502                 if (r->os) {
7503                         _mem_save_os_0 = NDR_PULL_GET_MEM_CTX(ndr);
7504                         NDR_PULL_SET_MEM_CTX(ndr, r->os, 0);
7505                         NDR_CHECK(ndr_pull_netr_OsVersion(ndr, NDR_SCALARS, r->os));
7506                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_os_0, 0);
7507                 }
7508         }
7509         return NDR_ERR_SUCCESS;
7510 }
7511
7512 _PUBLIC_ void ndr_print_netr_OsVersionContainer(struct ndr_print *ndr, const char *name, const struct netr_OsVersionContainer *r)
7513 {
7514         ndr_print_struct(ndr, name, "netr_OsVersionContainer");
7515         ndr->depth++;
7516         ndr_print_uint16(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->os == NULL?0:284:r->length);
7517         ndr_print_uint16(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->os == NULL?0:284:r->size);
7518         ndr_print_ptr(ndr, "os", r->os);
7519         ndr->depth++;
7520         if (r->os) {
7521                 ndr_print_netr_OsVersion(ndr, "os", r->os);
7522         }
7523         ndr->depth--;
7524         ndr->depth--;
7525 }
7526
7527 static enum ndr_err_code ndr_push_netr_WorkstationInformation(struct ndr_push *ndr, int ndr_flags, const struct netr_WorkstationInformation *r)
7528 {
7529         if (ndr_flags & NDR_SCALARS) {
7530                 NDR_CHECK(ndr_push_align(ndr, 4));
7531                 NDR_CHECK(ndr_push_netr_LsaPolicyInformation(ndr, NDR_SCALARS, &r->lsa_policy));
7532                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dns_hostname));
7533                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sitename));
7534                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dummy1));
7535                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dummy2));
7536                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dummy3));
7537                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dummy4));
7538                 NDR_CHECK(ndr_push_netr_OsVersionContainer(ndr, NDR_SCALARS, &r->os_version));
7539                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->os_name));
7540                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string3));
7541                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string4));
7542                 NDR_CHECK(ndr_push_netr_WorkstationFlags(ndr, NDR_SCALARS, r->workstation_flags));
7543                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long2));
7544                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long3));
7545                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long4));
7546         }
7547         if (ndr_flags & NDR_BUFFERS) {
7548                 NDR_CHECK(ndr_push_netr_LsaPolicyInformation(ndr, NDR_BUFFERS, &r->lsa_policy));
7549                 if (r->dns_hostname) {
7550                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_hostname, CH_UTF16)));
7551                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7552                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_hostname, CH_UTF16)));
7553                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dns_hostname, ndr_charset_length(r->dns_hostname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
7554                 }
7555                 if (r->sitename) {
7556                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->sitename, CH_UTF16)));
7557                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7558                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->sitename, CH_UTF16)));
7559                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->sitename, ndr_charset_length(r->sitename, CH_UTF16), sizeof(uint16_t), CH_UTF16));
7560                 }
7561                 if (r->dummy1) {
7562                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy1, CH_UTF16)));
7563                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7564                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy1, CH_UTF16)));
7565                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dummy1, ndr_charset_length(r->dummy1, CH_UTF16), sizeof(uint16_t), CH_UTF16));
7566                 }
7567                 if (r->dummy2) {
7568                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy2, CH_UTF16)));
7569                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7570                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy2, CH_UTF16)));
7571                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dummy2, ndr_charset_length(r->dummy2, CH_UTF16), sizeof(uint16_t), CH_UTF16));
7572                 }
7573                 if (r->dummy3) {
7574                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy3, CH_UTF16)));
7575                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7576                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy3, CH_UTF16)));
7577                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dummy3, ndr_charset_length(r->dummy3, CH_UTF16), sizeof(uint16_t), CH_UTF16));
7578                 }
7579                 if (r->dummy4) {
7580                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy4, CH_UTF16)));
7581                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7582                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy4, CH_UTF16)));
7583                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dummy4, ndr_charset_length(r->dummy4, CH_UTF16), sizeof(uint16_t), CH_UTF16));
7584                 }
7585                 NDR_CHECK(ndr_push_netr_OsVersionContainer(ndr, NDR_BUFFERS, &r->os_version));
7586                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->os_name));
7587                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string3));
7588                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string4));
7589         }
7590         return NDR_ERR_SUCCESS;
7591 }
7592
7593 static enum ndr_err_code ndr_pull_netr_WorkstationInformation(struct ndr_pull *ndr, int ndr_flags, struct netr_WorkstationInformation *r)
7594 {
7595         uint32_t _ptr_dns_hostname;
7596         TALLOC_CTX *_mem_save_dns_hostname_0;
7597         uint32_t _ptr_sitename;
7598         TALLOC_CTX *_mem_save_sitename_0;
7599         uint32_t _ptr_dummy1;
7600         TALLOC_CTX *_mem_save_dummy1_0;
7601         uint32_t _ptr_dummy2;
7602         TALLOC_CTX *_mem_save_dummy2_0;
7603         uint32_t _ptr_dummy3;
7604         TALLOC_CTX *_mem_save_dummy3_0;
7605         uint32_t _ptr_dummy4;
7606         TALLOC_CTX *_mem_save_dummy4_0;
7607         if (ndr_flags & NDR_SCALARS) {
7608                 NDR_CHECK(ndr_pull_align(ndr, 4));
7609                 NDR_CHECK(ndr_pull_netr_LsaPolicyInformation(ndr, NDR_SCALARS, &r->lsa_policy));
7610                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dns_hostname));
7611                 if (_ptr_dns_hostname) {
7612                         NDR_PULL_ALLOC(ndr, r->dns_hostname);
7613                 } else {
7614                         r->dns_hostname = NULL;
7615                 }
7616                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sitename));
7617                 if (_ptr_sitename) {
7618                         NDR_PULL_ALLOC(ndr, r->sitename);
7619                 } else {
7620                         r->sitename = NULL;
7621                 }
7622                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dummy1));
7623                 if (_ptr_dummy1) {
7624                         NDR_PULL_ALLOC(ndr, r->dummy1);
7625                 } else {
7626                         r->dummy1 = NULL;
7627                 }
7628                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dummy2));
7629                 if (_ptr_dummy2) {
7630                         NDR_PULL_ALLOC(ndr, r->dummy2);
7631                 } else {
7632                         r->dummy2 = NULL;
7633                 }
7634                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dummy3));
7635                 if (_ptr_dummy3) {
7636                         NDR_PULL_ALLOC(ndr, r->dummy3);
7637                 } else {
7638                         r->dummy3 = NULL;
7639                 }
7640                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dummy4));
7641                 if (_ptr_dummy4) {
7642                         NDR_PULL_ALLOC(ndr, r->dummy4);
7643                 } else {
7644                         r->dummy4 = NULL;
7645                 }
7646                 NDR_CHECK(ndr_pull_netr_OsVersionContainer(ndr, NDR_SCALARS, &r->os_version));
7647                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->os_name));
7648                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string3));
7649                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string4));
7650                 NDR_CHECK(ndr_pull_netr_WorkstationFlags(ndr, NDR_SCALARS, &r->workstation_flags));
7651                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long2));
7652                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long3));
7653                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long4));
7654         }
7655         if (ndr_flags & NDR_BUFFERS) {
7656                 NDR_CHECK(ndr_pull_netr_LsaPolicyInformation(ndr, NDR_BUFFERS, &r->lsa_policy));
7657                 if (r->dns_hostname) {
7658                         _mem_save_dns_hostname_0 = NDR_PULL_GET_MEM_CTX(ndr);
7659                         NDR_PULL_SET_MEM_CTX(ndr, r->dns_hostname, 0);
7660                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dns_hostname));
7661                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dns_hostname));
7662                         if (ndr_get_array_length(ndr, &r->dns_hostname) > ndr_get_array_size(ndr, &r->dns_hostname)) {
7663                                 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_hostname), ndr_get_array_length(ndr, &r->dns_hostname));
7664                         }
7665                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dns_hostname), sizeof(uint16_t)));
7666                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dns_hostname, ndr_get_array_length(ndr, &r->dns_hostname), sizeof(uint16_t), CH_UTF16));
7667                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dns_hostname_0, 0);
7668                 }
7669                 if (r->sitename) {
7670                         _mem_save_sitename_0 = NDR_PULL_GET_MEM_CTX(ndr);
7671                         NDR_PULL_SET_MEM_CTX(ndr, r->sitename, 0);
7672                         NDR_CHECK(ndr_pull_array_size(ndr, &r->sitename));
7673                         NDR_CHECK(ndr_pull_array_length(ndr, &r->sitename));
7674                         if (ndr_get_array_length(ndr, &r->sitename) > ndr_get_array_size(ndr, &r->sitename)) {
7675                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->sitename), ndr_get_array_length(ndr, &r->sitename));
7676                         }
7677                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->sitename), sizeof(uint16_t)));
7678                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->sitename, ndr_get_array_length(ndr, &r->sitename), sizeof(uint16_t), CH_UTF16));
7679                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sitename_0, 0);
7680                 }
7681                 if (r->dummy1) {
7682                         _mem_save_dummy1_0 = NDR_PULL_GET_MEM_CTX(ndr);
7683                         NDR_PULL_SET_MEM_CTX(ndr, r->dummy1, 0);
7684                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dummy1));
7685                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dummy1));
7686                         if (ndr_get_array_length(ndr, &r->dummy1) > ndr_get_array_size(ndr, &r->dummy1)) {
7687                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dummy1), ndr_get_array_length(ndr, &r->dummy1));
7688                         }
7689                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dummy1), sizeof(uint16_t)));
7690                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dummy1, ndr_get_array_length(ndr, &r->dummy1), sizeof(uint16_t), CH_UTF16));
7691                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dummy1_0, 0);
7692                 }
7693                 if (r->dummy2) {
7694                         _mem_save_dummy2_0 = NDR_PULL_GET_MEM_CTX(ndr);
7695                         NDR_PULL_SET_MEM_CTX(ndr, r->dummy2, 0);
7696                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dummy2));
7697                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dummy2));
7698                         if (ndr_get_array_length(ndr, &r->dummy2) > ndr_get_array_size(ndr, &r->dummy2)) {
7699                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dummy2), ndr_get_array_length(ndr, &r->dummy2));
7700                         }
7701                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dummy2), sizeof(uint16_t)));
7702                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dummy2, ndr_get_array_length(ndr, &r->dummy2), sizeof(uint16_t), CH_UTF16));
7703                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dummy2_0, 0);
7704                 }
7705                 if (r->dummy3) {
7706                         _mem_save_dummy3_0 = NDR_PULL_GET_MEM_CTX(ndr);
7707                         NDR_PULL_SET_MEM_CTX(ndr, r->dummy3, 0);
7708                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dummy3));
7709                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dummy3));
7710                         if (ndr_get_array_length(ndr, &r->dummy3) > ndr_get_array_size(ndr, &r->dummy3)) {
7711                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dummy3), ndr_get_array_length(ndr, &r->dummy3));
7712                         }
7713                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dummy3), sizeof(uint16_t)));
7714                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dummy3, ndr_get_array_length(ndr, &r->dummy3), sizeof(uint16_t), CH_UTF16));
7715                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dummy3_0, 0);
7716                 }
7717                 if (r->dummy4) {
7718                         _mem_save_dummy4_0 = NDR_PULL_GET_MEM_CTX(ndr);
7719                         NDR_PULL_SET_MEM_CTX(ndr, r->dummy4, 0);
7720                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dummy4));
7721                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dummy4));
7722                         if (ndr_get_array_length(ndr, &r->dummy4) > ndr_get_array_size(ndr, &r->dummy4)) {
7723                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->dummy4), ndr_get_array_length(ndr, &r->dummy4));
7724                         }
7725                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dummy4), sizeof(uint16_t)));
7726                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dummy4, ndr_get_array_length(ndr, &r->dummy4), sizeof(uint16_t), CH_UTF16));
7727                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dummy4_0, 0);
7728                 }
7729                 NDR_CHECK(ndr_pull_netr_OsVersionContainer(ndr, NDR_BUFFERS, &r->os_version));
7730                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->os_name));
7731                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string3));
7732                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string4));
7733         }
7734         return NDR_ERR_SUCCESS;
7735 }
7736
7737 _PUBLIC_ void ndr_print_netr_WorkstationInformation(struct ndr_print *ndr, const char *name, const struct netr_WorkstationInformation *r)
7738 {
7739         ndr_print_struct(ndr, name, "netr_WorkstationInformation");
7740         ndr->depth++;
7741         ndr_print_netr_LsaPolicyInformation(ndr, "lsa_policy", &r->lsa_policy);
7742         ndr_print_ptr(ndr, "dns_hostname", r->dns_hostname);
7743         ndr->depth++;
7744         if (r->dns_hostname) {
7745                 ndr_print_string(ndr, "dns_hostname", r->dns_hostname);
7746         }
7747         ndr->depth--;
7748         ndr_print_ptr(ndr, "sitename", r->sitename);
7749         ndr->depth++;
7750         if (r->sitename) {
7751                 ndr_print_string(ndr, "sitename", r->sitename);
7752         }
7753         ndr->depth--;
7754         ndr_print_ptr(ndr, "dummy1", r->dummy1);
7755         ndr->depth++;
7756         if (r->dummy1) {
7757                 ndr_print_string(ndr, "dummy1", r->dummy1);
7758         }
7759         ndr->depth--;
7760         ndr_print_ptr(ndr, "dummy2", r->dummy2);
7761         ndr->depth++;
7762         if (r->dummy2) {
7763                 ndr_print_string(ndr, "dummy2", r->dummy2);
7764         }
7765         ndr->depth--;
7766         ndr_print_ptr(ndr, "dummy3", r->dummy3);
7767         ndr->depth++;
7768         if (r->dummy3) {
7769                 ndr_print_string(ndr, "dummy3", r->dummy3);
7770         }
7771         ndr->depth--;
7772         ndr_print_ptr(ndr, "dummy4", r->dummy4);
7773         ndr->depth++;
7774         if (r->dummy4) {
7775                 ndr_print_string(ndr, "dummy4", r->dummy4);
7776         }
7777         ndr->depth--;
7778         ndr_print_netr_OsVersionContainer(ndr, "os_version", &r->os_version);
7779         ndr_print_lsa_String(ndr, "os_name", &r->os_name);
7780         ndr_print_lsa_String(ndr, "dummy_string3", &r->dummy_string3);
7781         ndr_print_lsa_String(ndr, "dummy_string4", &r->dummy_string4);
7782         ndr_print_netr_WorkstationFlags(ndr, "workstation_flags", r->workstation_flags);
7783         ndr_print_uint32(ndr, "dummy_long2", r->dummy_long2);
7784         ndr_print_uint32(ndr, "dummy_long3", r->dummy_long3);
7785         ndr_print_uint32(ndr, "dummy_long4", r->dummy_long4);
7786         ndr->depth--;
7787 }
7788
7789 static enum ndr_err_code ndr_push_netr_WorkstationInfo(struct ndr_push *ndr, int ndr_flags, const union netr_WorkstationInfo *r)
7790 {
7791         if (ndr_flags & NDR_SCALARS) {
7792                 int level = ndr_push_get_switch_value(ndr, r);
7793                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
7794                 switch (level) {
7795                         case 1: {
7796                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->workstation_info));
7797                         break; }
7798
7799                         case 2: {
7800                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->lsa_policy_info));
7801                         break; }
7802
7803                         default:
7804                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
7805                 }
7806         }
7807         if (ndr_flags & NDR_BUFFERS) {
7808                 int level = ndr_push_get_switch_value(ndr, r);
7809                 switch (level) {
7810                         case 1:
7811                                 if (r->workstation_info) {
7812                                         NDR_CHECK(ndr_push_netr_WorkstationInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->workstation_info));
7813                                 }
7814                         break;
7815
7816                         case 2:
7817                                 if (r->lsa_policy_info) {
7818                                         NDR_CHECK(ndr_push_netr_WorkstationInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->lsa_policy_info));
7819                                 }
7820                         break;
7821
7822                         default:
7823                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
7824                 }
7825         }
7826         return NDR_ERR_SUCCESS;
7827 }
7828
7829 static enum ndr_err_code ndr_pull_netr_WorkstationInfo(struct ndr_pull *ndr, int ndr_flags, union netr_WorkstationInfo *r)
7830 {
7831         int level;
7832         uint32_t _level;
7833         TALLOC_CTX *_mem_save_workstation_info_0;
7834         TALLOC_CTX *_mem_save_lsa_policy_info_0;
7835         level = ndr_pull_get_switch_value(ndr, r);
7836         if (ndr_flags & NDR_SCALARS) {
7837                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
7838                 if (_level != level) {
7839                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
7840                 }
7841                 switch (level) {
7842                         case 1: {
7843                                 uint32_t _ptr_workstation_info;
7844                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_workstation_info));
7845                                 if (_ptr_workstation_info) {
7846                                         NDR_PULL_ALLOC(ndr, r->workstation_info);
7847                                 } else {
7848                                         r->workstation_info = NULL;
7849                                 }
7850                         break; }
7851
7852                         case 2: {
7853                                 uint32_t _ptr_lsa_policy_info;
7854                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_lsa_policy_info));
7855                                 if (_ptr_lsa_policy_info) {
7856                                         NDR_PULL_ALLOC(ndr, r->lsa_policy_info);
7857                                 } else {
7858                                         r->lsa_policy_info = NULL;
7859                                 }
7860                         break; }
7861
7862                         default:
7863                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
7864                 }
7865         }
7866         if (ndr_flags & NDR_BUFFERS) {
7867                 switch (level) {
7868                         case 1:
7869                                 if (r->workstation_info) {
7870                                         _mem_save_workstation_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
7871                                         NDR_PULL_SET_MEM_CTX(ndr, r->workstation_info, 0);
7872                                         NDR_CHECK(ndr_pull_netr_WorkstationInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->workstation_info));
7873                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_workstation_info_0, 0);
7874                                 }
7875                         break;
7876
7877                         case 2:
7878                                 if (r->lsa_policy_info) {
7879                                         _mem_save_lsa_policy_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
7880                                         NDR_PULL_SET_MEM_CTX(ndr, r->lsa_policy_info, 0);
7881                                         NDR_CHECK(ndr_pull_netr_WorkstationInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->lsa_policy_info));
7882                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lsa_policy_info_0, 0);
7883                                 }
7884                         break;
7885
7886                         default:
7887                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
7888                 }
7889         }
7890         return NDR_ERR_SUCCESS;
7891 }
7892
7893 _PUBLIC_ void ndr_print_netr_WorkstationInfo(struct ndr_print *ndr, const char *name, const union netr_WorkstationInfo *r)
7894 {
7895         int level;
7896         level = ndr_print_get_switch_value(ndr, r);
7897         ndr_print_union(ndr, name, level, "netr_WorkstationInfo");
7898         switch (level) {
7899                 case 1:
7900                         ndr_print_ptr(ndr, "workstation_info", r->workstation_info);
7901                         ndr->depth++;
7902                         if (r->workstation_info) {
7903                                 ndr_print_netr_WorkstationInformation(ndr, "workstation_info", r->workstation_info);
7904                         }
7905                         ndr->depth--;
7906                 break;
7907
7908                 case 2:
7909                         ndr_print_ptr(ndr, "lsa_policy_info", r->lsa_policy_info);
7910                         ndr->depth++;
7911                         if (r->lsa_policy_info) {
7912                                 ndr_print_netr_WorkstationInformation(ndr, "lsa_policy_info", r->lsa_policy_info);
7913                         }
7914                         ndr->depth--;
7915                 break;
7916
7917                 default:
7918                         ndr_print_bad_level(ndr, name, level);
7919         }
7920 }
7921
7922 static enum ndr_err_code ndr_push_netr_trust_extension(struct ndr_push *ndr, int ndr_flags, const struct netr_trust_extension *r)
7923 {
7924         if (ndr_flags & NDR_SCALARS) {
7925                 NDR_CHECK(ndr_push_align(ndr, 4));
7926                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 8));
7927                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7928                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 8));
7929                 NDR_CHECK(ndr_push_netr_TrustFlags(ndr, NDR_SCALARS, r->flags));
7930                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->parent_index));
7931                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->trust_type));
7932                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->trust_attributes));
7933         }
7934         if (ndr_flags & NDR_BUFFERS) {
7935         }
7936         return NDR_ERR_SUCCESS;
7937 }
7938
7939 static enum ndr_err_code ndr_pull_netr_trust_extension(struct ndr_pull *ndr, int ndr_flags, struct netr_trust_extension *r)
7940 {
7941         if (ndr_flags & NDR_SCALARS) {
7942                 NDR_CHECK(ndr_pull_align(ndr, 4));
7943                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
7944                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy));
7945                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
7946                 NDR_CHECK(ndr_pull_netr_TrustFlags(ndr, NDR_SCALARS, &r->flags));
7947                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->parent_index));
7948                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->trust_type));
7949                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->trust_attributes));
7950         }
7951         if (ndr_flags & NDR_BUFFERS) {
7952         }
7953         return NDR_ERR_SUCCESS;
7954 }
7955
7956 _PUBLIC_ void ndr_print_netr_trust_extension(struct ndr_print *ndr, const char *name, const struct netr_trust_extension *r)
7957 {
7958         ndr_print_struct(ndr, name, "netr_trust_extension");
7959         ndr->depth++;
7960         ndr_print_uint32(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?8:r->length);
7961         ndr_print_uint32(ndr, "dummy", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->dummy);
7962         ndr_print_uint32(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?8:r->size);
7963         ndr_print_netr_TrustFlags(ndr, "flags", r->flags);
7964         ndr_print_uint32(ndr, "parent_index", r->parent_index);
7965         ndr_print_uint32(ndr, "trust_type", r->trust_type);
7966         ndr_print_uint32(ndr, "trust_attributes", r->trust_attributes);
7967         ndr->depth--;
7968 }
7969
7970 static enum ndr_err_code ndr_push_netr_trust_extension_container(struct ndr_push *ndr, int ndr_flags, const struct netr_trust_extension_container *r)
7971 {
7972         if (ndr_flags & NDR_SCALARS) {
7973                 NDR_CHECK(ndr_push_align(ndr, 4));
7974                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
7975                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
7976                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->info));
7977         }
7978         if (ndr_flags & NDR_BUFFERS) {
7979                 if (r->info) {
7980                         NDR_CHECK(ndr_push_netr_trust_extension(ndr, NDR_SCALARS, r->info));
7981                 }
7982         }
7983         return NDR_ERR_SUCCESS;
7984 }
7985
7986 static enum ndr_err_code ndr_pull_netr_trust_extension_container(struct ndr_pull *ndr, int ndr_flags, struct netr_trust_extension_container *r)
7987 {
7988         uint32_t _ptr_info;
7989         TALLOC_CTX *_mem_save_info_0;
7990         if (ndr_flags & NDR_SCALARS) {
7991                 NDR_CHECK(ndr_pull_align(ndr, 4));
7992                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
7993                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
7994                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
7995                 if (_ptr_info) {
7996                         NDR_PULL_ALLOC(ndr, r->info);
7997                 } else {
7998                         r->info = NULL;
7999                 }
8000         }
8001         if (ndr_flags & NDR_BUFFERS) {
8002                 if (r->info) {
8003                         _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
8004                         NDR_PULL_SET_MEM_CTX(ndr, r->info, 0);
8005                         NDR_CHECK(ndr_pull_netr_trust_extension(ndr, NDR_SCALARS, r->info));
8006                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
8007                 }
8008         }
8009         return NDR_ERR_SUCCESS;
8010 }
8011
8012 _PUBLIC_ void ndr_print_netr_trust_extension_container(struct ndr_print *ndr, const char *name, const struct netr_trust_extension_container *r)
8013 {
8014         ndr_print_struct(ndr, name, "netr_trust_extension_container");
8015         ndr->depth++;
8016         ndr_print_uint16(ndr, "length", r->length);
8017         ndr_print_uint16(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->length:r->size);
8018         ndr_print_ptr(ndr, "info", r->info);
8019         ndr->depth++;
8020         if (r->info) {
8021                 ndr_print_netr_trust_extension(ndr, "info", r->info);
8022         }
8023         ndr->depth--;
8024         ndr->depth--;
8025 }
8026
8027 static enum ndr_err_code ndr_push_netr_OneDomainInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_OneDomainInfo *r)
8028 {
8029         if (ndr_flags & NDR_SCALARS) {
8030                 NDR_CHECK(ndr_push_align(ndr, 4));
8031                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->domainname));
8032                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dns_domainname));
8033                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dns_forestname));
8034                 NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->domain_guid));
8035                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain_sid));
8036                 NDR_CHECK(ndr_push_netr_trust_extension_container(ndr, NDR_SCALARS, &r->trust_extension));
8037                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string2));
8038                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string3));
8039                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string4));
8040                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long1));
8041                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long2));
8042                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long3));
8043                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long4));
8044         }
8045         if (ndr_flags & NDR_BUFFERS) {
8046                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->domainname));
8047                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dns_domainname));
8048                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dns_forestname));
8049                 if (r->domain_sid) {
8050                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_sid));
8051                 }
8052                 NDR_CHECK(ndr_push_netr_trust_extension_container(ndr, NDR_BUFFERS, &r->trust_extension));
8053                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string2));
8054                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string3));
8055                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string4));
8056         }
8057         return NDR_ERR_SUCCESS;
8058 }
8059
8060 static enum ndr_err_code ndr_pull_netr_OneDomainInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_OneDomainInfo *r)
8061 {
8062         uint32_t _ptr_domain_sid;
8063         TALLOC_CTX *_mem_save_domain_sid_0;
8064         if (ndr_flags & NDR_SCALARS) {
8065                 NDR_CHECK(ndr_pull_align(ndr, 4));
8066                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->domainname));
8067                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dns_domainname));
8068                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dns_forestname));
8069                 NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->domain_guid));
8070                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_sid));
8071                 if (_ptr_domain_sid) {
8072                         NDR_PULL_ALLOC(ndr, r->domain_sid);
8073                 } else {
8074                         r->domain_sid = NULL;
8075                 }
8076                 NDR_CHECK(ndr_pull_netr_trust_extension_container(ndr, NDR_SCALARS, &r->trust_extension));
8077                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string2));
8078                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string3));
8079                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string4));
8080                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long1));
8081                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long2));
8082                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long3));
8083                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long4));
8084         }
8085         if (ndr_flags & NDR_BUFFERS) {
8086                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->domainname));
8087                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dns_domainname));
8088                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dns_forestname));
8089                 if (r->domain_sid) {
8090                         _mem_save_domain_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
8091                         NDR_PULL_SET_MEM_CTX(ndr, r->domain_sid, 0);
8092                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_sid));
8093                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_sid_0, 0);
8094                 }
8095                 NDR_CHECK(ndr_pull_netr_trust_extension_container(ndr, NDR_BUFFERS, &r->trust_extension));
8096                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string2));
8097                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string3));
8098                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string4));
8099         }
8100         return NDR_ERR_SUCCESS;
8101 }
8102
8103 _PUBLIC_ void ndr_print_netr_OneDomainInfo(struct ndr_print *ndr, const char *name, const struct netr_OneDomainInfo *r)
8104 {
8105         ndr_print_struct(ndr, name, "netr_OneDomainInfo");
8106         ndr->depth++;
8107         ndr_print_lsa_String(ndr, "domainname", &r->domainname);
8108         ndr_print_lsa_String(ndr, "dns_domainname", &r->dns_domainname);
8109         ndr_print_lsa_String(ndr, "dns_forestname", &r->dns_forestname);
8110         ndr_print_GUID(ndr, "domain_guid", &r->domain_guid);
8111         ndr_print_ptr(ndr, "domain_sid", r->domain_sid);
8112         ndr->depth++;
8113         if (r->domain_sid) {
8114                 ndr_print_dom_sid2(ndr, "domain_sid", r->domain_sid);
8115         }
8116         ndr->depth--;
8117         ndr_print_netr_trust_extension_container(ndr, "trust_extension", &r->trust_extension);
8118         ndr_print_lsa_String(ndr, "dummy_string2", &r->dummy_string2);
8119         ndr_print_lsa_String(ndr, "dummy_string3", &r->dummy_string3);
8120         ndr_print_lsa_String(ndr, "dummy_string4", &r->dummy_string4);
8121         ndr_print_uint32(ndr, "dummy_long1", r->dummy_long1);
8122         ndr_print_uint32(ndr, "dummy_long2", r->dummy_long2);
8123         ndr_print_uint32(ndr, "dummy_long3", r->dummy_long3);
8124         ndr_print_uint32(ndr, "dummy_long4", r->dummy_long4);
8125         ndr->depth--;
8126 }
8127
8128 static enum ndr_err_code ndr_push_netr_DomainInformation(struct ndr_push *ndr, int ndr_flags, const struct netr_DomainInformation *r)
8129 {
8130         uint32_t cntr_trusted_domains_1;
8131         if (ndr_flags & NDR_SCALARS) {
8132                 NDR_CHECK(ndr_push_align(ndr, 4));
8133                 NDR_CHECK(ndr_push_netr_OneDomainInfo(ndr, NDR_SCALARS, &r->primary_domain));
8134                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->trusted_domain_count));
8135                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->trusted_domains));
8136                 NDR_CHECK(ndr_push_netr_LsaPolicyInformation(ndr, NDR_SCALARS, &r->lsa_policy));
8137                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dns_hostname));
8138                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string2));
8139                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string3));
8140                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string4));
8141                 NDR_CHECK(ndr_push_netr_WorkstationFlags(ndr, NDR_SCALARS, r->workstation_flags));
8142                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->supported_enc_types));
8143                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long3));
8144                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long4));
8145         }
8146         if (ndr_flags & NDR_BUFFERS) {
8147                 NDR_CHECK(ndr_push_netr_OneDomainInfo(ndr, NDR_BUFFERS, &r->primary_domain));
8148                 if (r->trusted_domains) {
8149                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->trusted_domain_count));
8150                         for (cntr_trusted_domains_1 = 0; cntr_trusted_domains_1 < r->trusted_domain_count; cntr_trusted_domains_1++) {
8151                                 NDR_CHECK(ndr_push_netr_OneDomainInfo(ndr, NDR_SCALARS, &r->trusted_domains[cntr_trusted_domains_1]));
8152                         }
8153                         for (cntr_trusted_domains_1 = 0; cntr_trusted_domains_1 < r->trusted_domain_count; cntr_trusted_domains_1++) {
8154                                 NDR_CHECK(ndr_push_netr_OneDomainInfo(ndr, NDR_BUFFERS, &r->trusted_domains[cntr_trusted_domains_1]));
8155                         }
8156                 }
8157                 NDR_CHECK(ndr_push_netr_LsaPolicyInformation(ndr, NDR_BUFFERS, &r->lsa_policy));
8158                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dns_hostname));
8159                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string2));
8160                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string3));
8161                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string4));
8162         }
8163         return NDR_ERR_SUCCESS;
8164 }
8165
8166 static enum ndr_err_code ndr_pull_netr_DomainInformation(struct ndr_pull *ndr, int ndr_flags, struct netr_DomainInformation *r)
8167 {
8168         uint32_t _ptr_trusted_domains;
8169         uint32_t cntr_trusted_domains_1;
8170         TALLOC_CTX *_mem_save_trusted_domains_0;
8171         TALLOC_CTX *_mem_save_trusted_domains_1;
8172         if (ndr_flags & NDR_SCALARS) {
8173                 NDR_CHECK(ndr_pull_align(ndr, 4));
8174                 NDR_CHECK(ndr_pull_netr_OneDomainInfo(ndr, NDR_SCALARS, &r->primary_domain));
8175                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->trusted_domain_count));
8176                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_trusted_domains));
8177                 if (_ptr_trusted_domains) {
8178                         NDR_PULL_ALLOC(ndr, r->trusted_domains);
8179                 } else {
8180                         r->trusted_domains = NULL;
8181                 }
8182                 NDR_CHECK(ndr_pull_netr_LsaPolicyInformation(ndr, NDR_SCALARS, &r->lsa_policy));
8183                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dns_hostname));
8184                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string2));
8185                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string3));
8186                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string4));
8187                 NDR_CHECK(ndr_pull_netr_WorkstationFlags(ndr, NDR_SCALARS, &r->workstation_flags));
8188                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->supported_enc_types));
8189                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long3));
8190                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long4));
8191         }
8192         if (ndr_flags & NDR_BUFFERS) {
8193                 NDR_CHECK(ndr_pull_netr_OneDomainInfo(ndr, NDR_BUFFERS, &r->primary_domain));
8194                 if (r->trusted_domains) {
8195                         _mem_save_trusted_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
8196                         NDR_PULL_SET_MEM_CTX(ndr, r->trusted_domains, 0);
8197                         NDR_CHECK(ndr_pull_array_size(ndr, &r->trusted_domains));
8198                         NDR_PULL_ALLOC_N(ndr, r->trusted_domains, ndr_get_array_size(ndr, &r->trusted_domains));
8199                         _mem_save_trusted_domains_1 = NDR_PULL_GET_MEM_CTX(ndr);
8200                         NDR_PULL_SET_MEM_CTX(ndr, r->trusted_domains, 0);
8201                         for (cntr_trusted_domains_1 = 0; cntr_trusted_domains_1 < r->trusted_domain_count; cntr_trusted_domains_1++) {
8202                                 NDR_CHECK(ndr_pull_netr_OneDomainInfo(ndr, NDR_SCALARS, &r->trusted_domains[cntr_trusted_domains_1]));
8203                         }
8204                         for (cntr_trusted_domains_1 = 0; cntr_trusted_domains_1 < r->trusted_domain_count; cntr_trusted_domains_1++) {
8205                                 NDR_CHECK(ndr_pull_netr_OneDomainInfo(ndr, NDR_BUFFERS, &r->trusted_domains[cntr_trusted_domains_1]));
8206                         }
8207                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusted_domains_1, 0);
8208                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusted_domains_0, 0);
8209                 }
8210                 NDR_CHECK(ndr_pull_netr_LsaPolicyInformation(ndr, NDR_BUFFERS, &r->lsa_policy));
8211                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dns_hostname));
8212                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string2));
8213                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string3));
8214                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string4));
8215                 if (r->trusted_domains) {
8216                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->trusted_domains, r->trusted_domain_count));
8217                 }
8218         }
8219         return NDR_ERR_SUCCESS;
8220 }
8221
8222 _PUBLIC_ void ndr_print_netr_DomainInformation(struct ndr_print *ndr, const char *name, const struct netr_DomainInformation *r)
8223 {
8224         uint32_t cntr_trusted_domains_1;
8225         ndr_print_struct(ndr, name, "netr_DomainInformation");
8226         ndr->depth++;
8227         ndr_print_netr_OneDomainInfo(ndr, "primary_domain", &r->primary_domain);
8228         ndr_print_uint32(ndr, "trusted_domain_count", r->trusted_domain_count);
8229         ndr_print_ptr(ndr, "trusted_domains", r->trusted_domains);
8230         ndr->depth++;
8231         if (r->trusted_domains) {
8232                 ndr->print(ndr, "%s: ARRAY(%d)", "trusted_domains", (int)r->trusted_domain_count);
8233                 ndr->depth++;
8234                 for (cntr_trusted_domains_1=0;cntr_trusted_domains_1<r->trusted_domain_count;cntr_trusted_domains_1++) {
8235                         char *idx_1=NULL;
8236                         if (asprintf(&idx_1, "[%d]", cntr_trusted_domains_1) != -1) {
8237                                 ndr_print_netr_OneDomainInfo(ndr, "trusted_domains", &r->trusted_domains[cntr_trusted_domains_1]);
8238                                 free(idx_1);
8239                         }
8240                 }
8241                 ndr->depth--;
8242         }
8243         ndr->depth--;
8244         ndr_print_netr_LsaPolicyInformation(ndr, "lsa_policy", &r->lsa_policy);
8245         ndr_print_lsa_String(ndr, "dns_hostname", &r->dns_hostname);
8246         ndr_print_lsa_String(ndr, "dummy_string2", &r->dummy_string2);
8247         ndr_print_lsa_String(ndr, "dummy_string3", &r->dummy_string3);
8248         ndr_print_lsa_String(ndr, "dummy_string4", &r->dummy_string4);
8249         ndr_print_netr_WorkstationFlags(ndr, "workstation_flags", r->workstation_flags);
8250         ndr_print_uint32(ndr, "supported_enc_types", r->supported_enc_types);
8251         ndr_print_uint32(ndr, "dummy_long3", r->dummy_long3);
8252         ndr_print_uint32(ndr, "dummy_long4", r->dummy_long4);
8253         ndr->depth--;
8254 }
8255
8256 static enum ndr_err_code ndr_push_netr_DomainInfo(struct ndr_push *ndr, int ndr_flags, const union netr_DomainInfo *r)
8257 {
8258         if (ndr_flags & NDR_SCALARS) {
8259                 int level = ndr_push_get_switch_value(ndr, r);
8260                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
8261                 switch (level) {
8262                         case 1: {
8263                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain_info));
8264                         break; }
8265
8266                         case 2: {
8267                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->lsa_policy_info));
8268                         break; }
8269
8270                         default:
8271                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
8272                 }
8273         }
8274         if (ndr_flags & NDR_BUFFERS) {
8275                 int level = ndr_push_get_switch_value(ndr, r);
8276                 switch (level) {
8277                         case 1:
8278                                 if (r->domain_info) {
8279                                         NDR_CHECK(ndr_push_netr_DomainInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_info));
8280                                 }
8281                         break;
8282
8283                         case 2:
8284                                 if (r->lsa_policy_info) {
8285                                         NDR_CHECK(ndr_push_netr_LsaPolicyInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->lsa_policy_info));
8286                                 }
8287                         break;
8288
8289                         default:
8290                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
8291                 }
8292         }
8293         return NDR_ERR_SUCCESS;
8294 }
8295
8296 static enum ndr_err_code ndr_pull_netr_DomainInfo(struct ndr_pull *ndr, int ndr_flags, union netr_DomainInfo *r)
8297 {
8298         int level;
8299         uint32_t _level;
8300         TALLOC_CTX *_mem_save_domain_info_0;
8301         TALLOC_CTX *_mem_save_lsa_policy_info_0;
8302         level = ndr_pull_get_switch_value(ndr, r);
8303         if (ndr_flags & NDR_SCALARS) {
8304                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
8305                 if (_level != level) {
8306                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
8307                 }
8308                 switch (level) {
8309                         case 1: {
8310                                 uint32_t _ptr_domain_info;
8311                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_info));
8312                                 if (_ptr_domain_info) {
8313                                         NDR_PULL_ALLOC(ndr, r->domain_info);
8314                                 } else {
8315                                         r->domain_info = NULL;
8316                                 }
8317                         break; }
8318
8319                         case 2: {
8320                                 uint32_t _ptr_lsa_policy_info;
8321                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_lsa_policy_info));
8322                                 if (_ptr_lsa_policy_info) {
8323                                         NDR_PULL_ALLOC(ndr, r->lsa_policy_info);
8324                                 } else {
8325                                         r->lsa_policy_info = NULL;
8326                                 }
8327                         break; }
8328
8329                         default:
8330                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
8331                 }
8332         }
8333         if (ndr_flags & NDR_BUFFERS) {
8334                 switch (level) {
8335                         case 1:
8336                                 if (r->domain_info) {
8337                                         _mem_save_domain_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
8338                                         NDR_PULL_SET_MEM_CTX(ndr, r->domain_info, 0);
8339                                         NDR_CHECK(ndr_pull_netr_DomainInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_info));
8340                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_info_0, 0);
8341                                 }
8342                         break;
8343
8344                         case 2:
8345                                 if (r->lsa_policy_info) {
8346                                         _mem_save_lsa_policy_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
8347                                         NDR_PULL_SET_MEM_CTX(ndr, r->lsa_policy_info, 0);
8348                                         NDR_CHECK(ndr_pull_netr_LsaPolicyInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->lsa_policy_info));
8349                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lsa_policy_info_0, 0);
8350                                 }
8351                         break;
8352
8353                         default:
8354                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
8355                 }
8356         }
8357         return NDR_ERR_SUCCESS;
8358 }
8359
8360 _PUBLIC_ void ndr_print_netr_DomainInfo(struct ndr_print *ndr, const char *name, const union netr_DomainInfo *r)
8361 {
8362         int level;
8363         level = ndr_print_get_switch_value(ndr, r);
8364         ndr_print_union(ndr, name, level, "netr_DomainInfo");
8365         switch (level) {
8366                 case 1:
8367                         ndr_print_ptr(ndr, "domain_info", r->domain_info);
8368                         ndr->depth++;
8369                         if (r->domain_info) {
8370                                 ndr_print_netr_DomainInformation(ndr, "domain_info", r->domain_info);
8371                         }
8372                         ndr->depth--;
8373                 break;
8374
8375                 case 2:
8376                         ndr_print_ptr(ndr, "lsa_policy_info", r->lsa_policy_info);
8377                         ndr->depth++;
8378                         if (r->lsa_policy_info) {
8379                                 ndr_print_netr_LsaPolicyInformation(ndr, "lsa_policy_info", r->lsa_policy_info);
8380                         }
8381                         ndr->depth--;
8382                 break;
8383
8384                 default:
8385                         ndr_print_bad_level(ndr, name, level);
8386         }
8387 }
8388
8389 static enum ndr_err_code ndr_push_netr_CryptPassword(struct ndr_push *ndr, int ndr_flags, const struct netr_CryptPassword *r)
8390 {
8391         {
8392                 uint32_t _flags_save_STRUCT = ndr->flags;
8393                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
8394                 if (ndr_flags & NDR_SCALARS) {
8395                         NDR_CHECK(ndr_push_align(ndr, 4));
8396                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, 512));
8397                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
8398                 }
8399                 if (ndr_flags & NDR_BUFFERS) {
8400                 }
8401                 ndr->flags = _flags_save_STRUCT;
8402         }
8403         return NDR_ERR_SUCCESS;
8404 }
8405
8406 static enum ndr_err_code ndr_pull_netr_CryptPassword(struct ndr_pull *ndr, int ndr_flags, struct netr_CryptPassword *r)
8407 {
8408         {
8409                 uint32_t _flags_save_STRUCT = ndr->flags;
8410                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
8411                 if (ndr_flags & NDR_SCALARS) {
8412                         NDR_CHECK(ndr_pull_align(ndr, 4));
8413                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, 512));
8414                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
8415                 }
8416                 if (ndr_flags & NDR_BUFFERS) {
8417                 }
8418                 ndr->flags = _flags_save_STRUCT;
8419         }
8420         return NDR_ERR_SUCCESS;
8421 }
8422
8423 _PUBLIC_ void ndr_print_netr_CryptPassword(struct ndr_print *ndr, const char *name, const struct netr_CryptPassword *r)
8424 {
8425         ndr_print_struct(ndr, name, "netr_CryptPassword");
8426         {
8427                 uint32_t _flags_save_STRUCT = ndr->flags;
8428                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
8429                 ndr->depth++;
8430                 ndr_print_array_uint8(ndr, "data", r->data, 512);
8431                 ndr_print_uint32(ndr, "length", r->length);
8432                 ndr->depth--;
8433                 ndr->flags = _flags_save_STRUCT;
8434         }
8435 }
8436
8437 static enum ndr_err_code ndr_push_netr_DsRAddressToSitenamesWCtr(struct ndr_push *ndr, int ndr_flags, const struct netr_DsRAddressToSitenamesWCtr *r)
8438 {
8439         uint32_t cntr_sitename_1;
8440         if (ndr_flags & NDR_SCALARS) {
8441                 NDR_CHECK(ndr_push_align(ndr, 4));
8442                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
8443                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sitename));
8444         }
8445         if (ndr_flags & NDR_BUFFERS) {
8446                 if (r->sitename) {
8447                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
8448                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
8449                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->sitename[cntr_sitename_1]));
8450                         }
8451                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
8452                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->sitename[cntr_sitename_1]));
8453                         }
8454                 }
8455         }
8456         return NDR_ERR_SUCCESS;
8457 }
8458
8459 static enum ndr_err_code ndr_pull_netr_DsRAddressToSitenamesWCtr(struct ndr_pull *ndr, int ndr_flags, struct netr_DsRAddressToSitenamesWCtr *r)
8460 {
8461         uint32_t _ptr_sitename;
8462         uint32_t cntr_sitename_1;
8463         TALLOC_CTX *_mem_save_sitename_0;
8464         TALLOC_CTX *_mem_save_sitename_1;
8465         if (ndr_flags & NDR_SCALARS) {
8466                 NDR_CHECK(ndr_pull_align(ndr, 4));
8467                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
8468                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sitename));
8469                 if (_ptr_sitename) {
8470                         NDR_PULL_ALLOC(ndr, r->sitename);
8471                 } else {
8472                         r->sitename = NULL;
8473                 }
8474         }
8475         if (ndr_flags & NDR_BUFFERS) {
8476                 if (r->sitename) {
8477                         _mem_save_sitename_0 = NDR_PULL_GET_MEM_CTX(ndr);
8478                         NDR_PULL_SET_MEM_CTX(ndr, r->sitename, 0);
8479                         NDR_CHECK(ndr_pull_array_size(ndr, &r->sitename));
8480                         NDR_PULL_ALLOC_N(ndr, r->sitename, ndr_get_array_size(ndr, &r->sitename));
8481                         _mem_save_sitename_1 = NDR_PULL_GET_MEM_CTX(ndr);
8482                         NDR_PULL_SET_MEM_CTX(ndr, r->sitename, 0);
8483                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
8484                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->sitename[cntr_sitename_1]));
8485                         }
8486                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
8487                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->sitename[cntr_sitename_1]));
8488                         }
8489                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sitename_1, 0);
8490                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sitename_0, 0);
8491                 }
8492                 if (r->sitename) {
8493                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sitename, r->count));
8494                 }
8495         }
8496         return NDR_ERR_SUCCESS;
8497 }
8498
8499 _PUBLIC_ void ndr_print_netr_DsRAddressToSitenamesWCtr(struct ndr_print *ndr, const char *name, const struct netr_DsRAddressToSitenamesWCtr *r)
8500 {
8501         uint32_t cntr_sitename_1;
8502         ndr_print_struct(ndr, name, "netr_DsRAddressToSitenamesWCtr");
8503         ndr->depth++;
8504         ndr_print_uint32(ndr, "count", r->count);
8505         ndr_print_ptr(ndr, "sitename", r->sitename);
8506         ndr->depth++;
8507         if (r->sitename) {
8508                 ndr->print(ndr, "%s: ARRAY(%d)", "sitename", (int)r->count);
8509                 ndr->depth++;
8510                 for (cntr_sitename_1=0;cntr_sitename_1<r->count;cntr_sitename_1++) {
8511                         char *idx_1=NULL;
8512                         if (asprintf(&idx_1, "[%d]", cntr_sitename_1) != -1) {
8513                                 ndr_print_lsa_String(ndr, "sitename", &r->sitename[cntr_sitename_1]);
8514                                 free(idx_1);
8515                         }
8516                 }
8517                 ndr->depth--;
8518         }
8519         ndr->depth--;
8520         ndr->depth--;
8521 }
8522
8523 static enum ndr_err_code ndr_push_netr_DsRAddress(struct ndr_push *ndr, int ndr_flags, const struct netr_DsRAddress *r)
8524 {
8525         if (ndr_flags & NDR_SCALARS) {
8526                 NDR_CHECK(ndr_push_align(ndr, 4));
8527                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->buffer));
8528                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
8529         }
8530         if (ndr_flags & NDR_BUFFERS) {
8531                 if (r->buffer) {
8532                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
8533                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->buffer, r->size));
8534                 }
8535         }
8536         return NDR_ERR_SUCCESS;
8537 }
8538
8539 static enum ndr_err_code ndr_pull_netr_DsRAddress(struct ndr_pull *ndr, int ndr_flags, struct netr_DsRAddress *r)
8540 {
8541         uint32_t _ptr_buffer;
8542         TALLOC_CTX *_mem_save_buffer_0;
8543         if (ndr_flags & NDR_SCALARS) {
8544                 NDR_CHECK(ndr_pull_align(ndr, 4));
8545                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
8546                 if (_ptr_buffer) {
8547                         NDR_PULL_ALLOC(ndr, r->buffer);
8548                 } else {
8549                         r->buffer = NULL;
8550                 }
8551                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
8552         }
8553         if (ndr_flags & NDR_BUFFERS) {
8554                 if (r->buffer) {
8555                         _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
8556                         NDR_PULL_SET_MEM_CTX(ndr, r->buffer, 0);
8557                         NDR_CHECK(ndr_pull_array_size(ndr, &r->buffer));
8558                         NDR_PULL_ALLOC_N(ndr, r->buffer, ndr_get_array_size(ndr, &r->buffer));
8559                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->buffer, ndr_get_array_size(ndr, &r->buffer)));
8560                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
8561                 }
8562                 if (r->buffer) {
8563                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->buffer, r->size));
8564                 }
8565         }
8566         return NDR_ERR_SUCCESS;
8567 }
8568
8569 _PUBLIC_ void ndr_print_netr_DsRAddress(struct ndr_print *ndr, const char *name, const struct netr_DsRAddress *r)
8570 {
8571         ndr_print_struct(ndr, name, "netr_DsRAddress");
8572         ndr->depth++;
8573         ndr_print_ptr(ndr, "buffer", r->buffer);
8574         ndr->depth++;
8575         if (r->buffer) {
8576                 ndr_print_array_uint8(ndr, "buffer", r->buffer, r->size);
8577         }
8578         ndr->depth--;
8579         ndr_print_uint32(ndr, "size", r->size);
8580         ndr->depth--;
8581 }
8582
8583 static enum ndr_err_code ndr_push_netr_TrustType(struct ndr_push *ndr, int ndr_flags, enum netr_TrustType r)
8584 {
8585         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
8586         return NDR_ERR_SUCCESS;
8587 }
8588
8589 static enum ndr_err_code ndr_pull_netr_TrustType(struct ndr_pull *ndr, int ndr_flags, enum netr_TrustType *r)
8590 {
8591         uint32_t v;
8592         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
8593         *r = v;
8594         return NDR_ERR_SUCCESS;
8595 }
8596
8597 _PUBLIC_ void ndr_print_netr_TrustType(struct ndr_print *ndr, const char *name, enum netr_TrustType r)
8598 {
8599         const char *val = NULL;
8600
8601         switch (r) {
8602                 case NETR_TRUST_TYPE_DOWNLEVEL: val = "NETR_TRUST_TYPE_DOWNLEVEL"; break;
8603                 case NETR_TRUST_TYPE_UPLEVEL: val = "NETR_TRUST_TYPE_UPLEVEL"; break;
8604                 case NETR_TRUST_TYPE_MIT: val = "NETR_TRUST_TYPE_MIT"; break;
8605                 case NETR_TRUST_TYPE_DCE: val = "NETR_TRUST_TYPE_DCE"; break;
8606         }
8607         ndr_print_enum(ndr, name, "ENUM", val, r);
8608 }
8609
8610 static enum ndr_err_code ndr_push_netr_TrustAttributes(struct ndr_push *ndr, int ndr_flags, uint32_t r)
8611 {
8612         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
8613         return NDR_ERR_SUCCESS;
8614 }
8615
8616 static enum ndr_err_code ndr_pull_netr_TrustAttributes(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
8617 {
8618         uint32_t v;
8619         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
8620         *r = v;
8621         return NDR_ERR_SUCCESS;
8622 }
8623
8624 _PUBLIC_ void ndr_print_netr_TrustAttributes(struct ndr_print *ndr, const char *name, uint32_t r)
8625 {
8626         ndr_print_uint32(ndr, name, r);
8627         ndr->depth++;
8628         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_NON_TRANSITIVE", NETR_TRUST_ATTRIBUTE_NON_TRANSITIVE, r);
8629         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_UPLEVEL_ONLY", NETR_TRUST_ATTRIBUTE_UPLEVEL_ONLY, r);
8630         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_QUARANTINED_DOMAIN", NETR_TRUST_ATTRIBUTE_QUARANTINED_DOMAIN, r);
8631         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_FOREST_TRANSITIVE", NETR_TRUST_ATTRIBUTE_FOREST_TRANSITIVE, r);
8632         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_CROSS_ORGANIZATION", NETR_TRUST_ATTRIBUTE_CROSS_ORGANIZATION, r);
8633         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_WITHIN_FOREST", NETR_TRUST_ATTRIBUTE_WITHIN_FOREST, r);
8634         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL", NETR_TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL, r);
8635         ndr->depth--;
8636 }
8637
8638 static enum ndr_err_code ndr_push_netr_DomainTrust(struct ndr_push *ndr, int ndr_flags, const struct netr_DomainTrust *r)
8639 {
8640         if (ndr_flags & NDR_SCALARS) {
8641                 NDR_CHECK(ndr_push_align(ndr, 4));
8642                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->netbios_name));
8643                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dns_name));
8644                 NDR_CHECK(ndr_push_netr_TrustFlags(ndr, NDR_SCALARS, r->trust_flags));
8645                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->parent_index));
8646                 NDR_CHECK(ndr_push_netr_TrustType(ndr, NDR_SCALARS, r->trust_type));
8647                 NDR_CHECK(ndr_push_netr_TrustAttributes(ndr, NDR_SCALARS, r->trust_attributes));
8648                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
8649                 NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->guid));
8650         }
8651         if (ndr_flags & NDR_BUFFERS) {
8652                 if (r->netbios_name) {
8653                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->netbios_name, CH_UTF16)));
8654                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
8655                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->netbios_name, CH_UTF16)));
8656                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->netbios_name, ndr_charset_length(r->netbios_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
8657                 }
8658                 if (r->dns_name) {
8659                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_name, CH_UTF16)));
8660                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
8661                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_name, CH_UTF16)));
8662                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dns_name, ndr_charset_length(r->dns_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
8663                 }
8664                 if (r->sid) {
8665                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
8666                 }
8667         }
8668         return NDR_ERR_SUCCESS;
8669 }
8670
8671 static enum ndr_err_code ndr_pull_netr_DomainTrust(struct ndr_pull *ndr, int ndr_flags, struct netr_DomainTrust *r)
8672 {
8673         uint32_t _ptr_netbios_name;
8674         TALLOC_CTX *_mem_save_netbios_name_0;
8675         uint32_t _ptr_dns_name;
8676         TALLOC_CTX *_mem_save_dns_name_0;
8677         uint32_t _ptr_sid;
8678         TALLOC_CTX *_mem_save_sid_0;
8679         if (ndr_flags & NDR_SCALARS) {
8680                 NDR_CHECK(ndr_pull_align(ndr, 4));
8681                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_netbios_name));
8682                 if (_ptr_netbios_name) {
8683                         NDR_PULL_ALLOC(ndr, r->netbios_name);
8684                 } else {
8685                         r->netbios_name = NULL;
8686                 }
8687                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dns_name));
8688                 if (_ptr_dns_name) {
8689                         NDR_PULL_ALLOC(ndr, r->dns_name);
8690                 } else {
8691                         r->dns_name = NULL;
8692                 }
8693                 NDR_CHECK(ndr_pull_netr_TrustFlags(ndr, NDR_SCALARS, &r->trust_flags));
8694                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->parent_index));
8695                 NDR_CHECK(ndr_pull_netr_TrustType(ndr, NDR_SCALARS, &r->trust_type));
8696                 NDR_CHECK(ndr_pull_netr_TrustAttributes(ndr, NDR_SCALARS, &r->trust_attributes));
8697                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
8698                 if (_ptr_sid) {
8699                         NDR_PULL_ALLOC(ndr, r->sid);
8700                 } else {
8701                         r->sid = NULL;
8702                 }
8703                 NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->guid));
8704         }
8705         if (ndr_flags & NDR_BUFFERS) {
8706                 if (r->netbios_name) {
8707                         _mem_save_netbios_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
8708                         NDR_PULL_SET_MEM_CTX(ndr, r->netbios_name, 0);
8709                         NDR_CHECK(ndr_pull_array_size(ndr, &r->netbios_name));
8710                         NDR_CHECK(ndr_pull_array_length(ndr, &r->netbios_name));
8711                         if (ndr_get_array_length(ndr, &r->netbios_name) > ndr_get_array_size(ndr, &r->netbios_name)) {
8712                                 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));
8713                         }
8714                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->netbios_name), sizeof(uint16_t)));
8715                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->netbios_name, ndr_get_array_length(ndr, &r->netbios_name), sizeof(uint16_t), CH_UTF16));
8716                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_netbios_name_0, 0);
8717                 }
8718                 if (r->dns_name) {
8719                         _mem_save_dns_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
8720                         NDR_PULL_SET_MEM_CTX(ndr, r->dns_name, 0);
8721                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dns_name));
8722                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dns_name));
8723                         if (ndr_get_array_length(ndr, &r->dns_name) > ndr_get_array_size(ndr, &r->dns_name)) {
8724                                 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));
8725                         }
8726                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dns_name), sizeof(uint16_t)));
8727                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dns_name, ndr_get_array_length(ndr, &r->dns_name), sizeof(uint16_t), CH_UTF16));
8728                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dns_name_0, 0);
8729                 }
8730                 if (r->sid) {
8731                         _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
8732                         NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
8733                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
8734                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
8735                 }
8736         }
8737         return NDR_ERR_SUCCESS;
8738 }
8739
8740 _PUBLIC_ void ndr_print_netr_DomainTrust(struct ndr_print *ndr, const char *name, const struct netr_DomainTrust *r)
8741 {
8742         ndr_print_struct(ndr, name, "netr_DomainTrust");
8743         ndr->depth++;
8744         ndr_print_ptr(ndr, "netbios_name", r->netbios_name);
8745         ndr->depth++;
8746         if (r->netbios_name) {
8747                 ndr_print_string(ndr, "netbios_name", r->netbios_name);
8748         }
8749         ndr->depth--;
8750         ndr_print_ptr(ndr, "dns_name", r->dns_name);
8751         ndr->depth++;
8752         if (r->dns_name) {
8753                 ndr_print_string(ndr, "dns_name", r->dns_name);
8754         }
8755         ndr->depth--;
8756         ndr_print_netr_TrustFlags(ndr, "trust_flags", r->trust_flags);
8757         ndr_print_uint32(ndr, "parent_index", r->parent_index);
8758         ndr_print_netr_TrustType(ndr, "trust_type", r->trust_type);
8759         ndr_print_netr_TrustAttributes(ndr, "trust_attributes", r->trust_attributes);
8760         ndr_print_ptr(ndr, "sid", r->sid);
8761         ndr->depth++;
8762         if (r->sid) {
8763                 ndr_print_dom_sid2(ndr, "sid", r->sid);
8764         }
8765         ndr->depth--;
8766         ndr_print_GUID(ndr, "guid", &r->guid);
8767         ndr->depth--;
8768 }
8769
8770 static enum ndr_err_code ndr_push_netr_DomainTrustList(struct ndr_push *ndr, int ndr_flags, const struct netr_DomainTrustList *r)
8771 {
8772         uint32_t cntr_array_1;
8773         if (ndr_flags & NDR_SCALARS) {
8774                 NDR_CHECK(ndr_push_align(ndr, 4));
8775                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
8776                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
8777         }
8778         if (ndr_flags & NDR_BUFFERS) {
8779                 if (r->array) {
8780                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
8781                         for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
8782                                 NDR_CHECK(ndr_push_netr_DomainTrust(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
8783                         }
8784                         for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
8785                                 NDR_CHECK(ndr_push_netr_DomainTrust(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
8786                         }
8787                 }
8788         }
8789         return NDR_ERR_SUCCESS;
8790 }
8791
8792 static enum ndr_err_code ndr_pull_netr_DomainTrustList(struct ndr_pull *ndr, int ndr_flags, struct netr_DomainTrustList *r)
8793 {
8794         uint32_t _ptr_array;
8795         uint32_t cntr_array_1;
8796         TALLOC_CTX *_mem_save_array_0;
8797         TALLOC_CTX *_mem_save_array_1;
8798         if (ndr_flags & NDR_SCALARS) {
8799                 NDR_CHECK(ndr_pull_align(ndr, 4));
8800                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
8801                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
8802                 if (_ptr_array) {
8803                         NDR_PULL_ALLOC(ndr, r->array);
8804                 } else {
8805                         r->array = NULL;
8806                 }
8807         }
8808         if (ndr_flags & NDR_BUFFERS) {
8809                 if (r->array) {
8810                         _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
8811                         NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
8812                         NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
8813                         NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
8814                         _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
8815                         NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
8816                         for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
8817                                 NDR_CHECK(ndr_pull_netr_DomainTrust(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
8818                         }
8819                         for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
8820                                 NDR_CHECK(ndr_pull_netr_DomainTrust(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
8821                         }
8822                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
8823                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
8824                 }
8825                 if (r->array) {
8826                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
8827                 }
8828         }
8829         return NDR_ERR_SUCCESS;
8830 }
8831
8832 _PUBLIC_ void ndr_print_netr_DomainTrustList(struct ndr_print *ndr, const char *name, const struct netr_DomainTrustList *r)
8833 {
8834         uint32_t cntr_array_1;
8835         ndr_print_struct(ndr, name, "netr_DomainTrustList");
8836         ndr->depth++;
8837         ndr_print_uint32(ndr, "count", r->count);
8838         ndr_print_ptr(ndr, "array", r->array);
8839         ndr->depth++;
8840         if (r->array) {
8841                 ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
8842                 ndr->depth++;
8843                 for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
8844                         char *idx_1=NULL;
8845                         if (asprintf(&idx_1, "[%d]", cntr_array_1) != -1) {
8846                                 ndr_print_netr_DomainTrust(ndr, "array", &r->array[cntr_array_1]);
8847                                 free(idx_1);
8848                         }
8849                 }
8850                 ndr->depth--;
8851         }
8852         ndr->depth--;
8853         ndr->depth--;
8854 }
8855
8856 static enum ndr_err_code ndr_push_netr_DsRAddressToSitenamesExWCtr(struct ndr_push *ndr, int ndr_flags, const struct netr_DsRAddressToSitenamesExWCtr *r)
8857 {
8858         uint32_t cntr_sitename_1;
8859         uint32_t cntr_subnetname_1;
8860         if (ndr_flags & NDR_SCALARS) {
8861                 NDR_CHECK(ndr_push_align(ndr, 4));
8862                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
8863                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sitename));
8864                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->subnetname));
8865         }
8866         if (ndr_flags & NDR_BUFFERS) {
8867                 if (r->sitename) {
8868                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
8869                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
8870                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->sitename[cntr_sitename_1]));
8871                         }
8872                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
8873                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->sitename[cntr_sitename_1]));
8874                         }
8875                 }
8876                 if (r->subnetname) {
8877                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
8878                         for (cntr_subnetname_1 = 0; cntr_subnetname_1 < r->count; cntr_subnetname_1++) {
8879                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->subnetname[cntr_subnetname_1]));
8880                         }
8881                         for (cntr_subnetname_1 = 0; cntr_subnetname_1 < r->count; cntr_subnetname_1++) {
8882                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->subnetname[cntr_subnetname_1]));
8883                         }
8884                 }
8885         }
8886         return NDR_ERR_SUCCESS;
8887 }
8888
8889 static enum ndr_err_code ndr_pull_netr_DsRAddressToSitenamesExWCtr(struct ndr_pull *ndr, int ndr_flags, struct netr_DsRAddressToSitenamesExWCtr *r)
8890 {
8891         uint32_t _ptr_sitename;
8892         uint32_t cntr_sitename_1;
8893         TALLOC_CTX *_mem_save_sitename_0;
8894         TALLOC_CTX *_mem_save_sitename_1;
8895         uint32_t _ptr_subnetname;
8896         uint32_t cntr_subnetname_1;
8897         TALLOC_CTX *_mem_save_subnetname_0;
8898         TALLOC_CTX *_mem_save_subnetname_1;
8899         if (ndr_flags & NDR_SCALARS) {
8900                 NDR_CHECK(ndr_pull_align(ndr, 4));
8901                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
8902                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sitename));
8903                 if (_ptr_sitename) {
8904                         NDR_PULL_ALLOC(ndr, r->sitename);
8905                 } else {
8906                         r->sitename = NULL;
8907                 }
8908                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_subnetname));
8909                 if (_ptr_subnetname) {
8910                         NDR_PULL_ALLOC(ndr, r->subnetname);
8911                 } else {
8912                         r->subnetname = NULL;
8913                 }
8914         }
8915         if (ndr_flags & NDR_BUFFERS) {
8916                 if (r->sitename) {
8917                         _mem_save_sitename_0 = NDR_PULL_GET_MEM_CTX(ndr);
8918                         NDR_PULL_SET_MEM_CTX(ndr, r->sitename, 0);
8919                         NDR_CHECK(ndr_pull_array_size(ndr, &r->sitename));
8920                         NDR_PULL_ALLOC_N(ndr, r->sitename, ndr_get_array_size(ndr, &r->sitename));
8921                         _mem_save_sitename_1 = NDR_PULL_GET_MEM_CTX(ndr);
8922                         NDR_PULL_SET_MEM_CTX(ndr, r->sitename, 0);
8923                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
8924                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->sitename[cntr_sitename_1]));
8925                         }
8926                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
8927                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->sitename[cntr_sitename_1]));
8928                         }
8929                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sitename_1, 0);
8930                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sitename_0, 0);
8931                 }
8932                 if (r->subnetname) {
8933                         _mem_save_subnetname_0 = NDR_PULL_GET_MEM_CTX(ndr);
8934                         NDR_PULL_SET_MEM_CTX(ndr, r->subnetname, 0);
8935                         NDR_CHECK(ndr_pull_array_size(ndr, &r->subnetname));
8936                         NDR_PULL_ALLOC_N(ndr, r->subnetname, ndr_get_array_size(ndr, &r->subnetname));
8937                         _mem_save_subnetname_1 = NDR_PULL_GET_MEM_CTX(ndr);
8938                         NDR_PULL_SET_MEM_CTX(ndr, r->subnetname, 0);
8939                         for (cntr_subnetname_1 = 0; cntr_subnetname_1 < r->count; cntr_subnetname_1++) {
8940                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->subnetname[cntr_subnetname_1]));
8941                         }
8942                         for (cntr_subnetname_1 = 0; cntr_subnetname_1 < r->count; cntr_subnetname_1++) {
8943                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->subnetname[cntr_subnetname_1]));
8944                         }
8945                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_subnetname_1, 0);
8946                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_subnetname_0, 0);
8947                 }
8948                 if (r->sitename) {
8949                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sitename, r->count));
8950                 }
8951                 if (r->subnetname) {
8952                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->subnetname, r->count));
8953                 }
8954         }
8955         return NDR_ERR_SUCCESS;
8956 }
8957
8958 _PUBLIC_ void ndr_print_netr_DsRAddressToSitenamesExWCtr(struct ndr_print *ndr, const char *name, const struct netr_DsRAddressToSitenamesExWCtr *r)
8959 {
8960         uint32_t cntr_sitename_1;
8961         uint32_t cntr_subnetname_1;
8962         ndr_print_struct(ndr, name, "netr_DsRAddressToSitenamesExWCtr");
8963         ndr->depth++;
8964         ndr_print_uint32(ndr, "count", r->count);
8965         ndr_print_ptr(ndr, "sitename", r->sitename);
8966         ndr->depth++;
8967         if (r->sitename) {
8968                 ndr->print(ndr, "%s: ARRAY(%d)", "sitename", (int)r->count);
8969                 ndr->depth++;
8970                 for (cntr_sitename_1=0;cntr_sitename_1<r->count;cntr_sitename_1++) {
8971                         char *idx_1=NULL;
8972                         if (asprintf(&idx_1, "[%d]", cntr_sitename_1) != -1) {
8973                                 ndr_print_lsa_String(ndr, "sitename", &r->sitename[cntr_sitename_1]);
8974                                 free(idx_1);
8975                         }
8976                 }
8977                 ndr->depth--;
8978         }
8979         ndr->depth--;
8980         ndr_print_ptr(ndr, "subnetname", r->subnetname);
8981         ndr->depth++;
8982         if (r->subnetname) {
8983                 ndr->print(ndr, "%s: ARRAY(%d)", "subnetname", (int)r->count);
8984                 ndr->depth++;
8985                 for (cntr_subnetname_1=0;cntr_subnetname_1<r->count;cntr_subnetname_1++) {
8986                         char *idx_1=NULL;
8987                         if (asprintf(&idx_1, "[%d]", cntr_subnetname_1) != -1) {
8988                                 ndr_print_lsa_String(ndr, "subnetname", &r->subnetname[cntr_subnetname_1]);
8989                                 free(idx_1);
8990                         }
8991                 }
8992                 ndr->depth--;
8993         }
8994         ndr->depth--;
8995         ndr->depth--;
8996 }
8997
8998 static enum ndr_err_code ndr_push_DcSitesCtr(struct ndr_push *ndr, int ndr_flags, const struct DcSitesCtr *r)
8999 {
9000         uint32_t cntr_sites_1;
9001         if (ndr_flags & NDR_SCALARS) {
9002                 NDR_CHECK(ndr_push_align(ndr, 4));
9003                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_sites));
9004                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sites));
9005         }
9006         if (ndr_flags & NDR_BUFFERS) {
9007                 if (r->sites) {
9008                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_sites));
9009                         for (cntr_sites_1 = 0; cntr_sites_1 < r->num_sites; cntr_sites_1++) {
9010                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->sites[cntr_sites_1]));
9011                         }
9012                         for (cntr_sites_1 = 0; cntr_sites_1 < r->num_sites; cntr_sites_1++) {
9013                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->sites[cntr_sites_1]));
9014                         }
9015                 }
9016         }
9017         return NDR_ERR_SUCCESS;
9018 }
9019
9020 static enum ndr_err_code ndr_pull_DcSitesCtr(struct ndr_pull *ndr, int ndr_flags, struct DcSitesCtr *r)
9021 {
9022         uint32_t _ptr_sites;
9023         uint32_t cntr_sites_1;
9024         TALLOC_CTX *_mem_save_sites_0;
9025         TALLOC_CTX *_mem_save_sites_1;
9026         if (ndr_flags & NDR_SCALARS) {
9027                 NDR_CHECK(ndr_pull_align(ndr, 4));
9028                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_sites));
9029                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sites));
9030                 if (_ptr_sites) {
9031                         NDR_PULL_ALLOC(ndr, r->sites);
9032                 } else {
9033                         r->sites = NULL;
9034                 }
9035         }
9036         if (ndr_flags & NDR_BUFFERS) {
9037                 if (r->sites) {
9038                         _mem_save_sites_0 = NDR_PULL_GET_MEM_CTX(ndr);
9039                         NDR_PULL_SET_MEM_CTX(ndr, r->sites, 0);
9040                         NDR_CHECK(ndr_pull_array_size(ndr, &r->sites));
9041                         NDR_PULL_ALLOC_N(ndr, r->sites, ndr_get_array_size(ndr, &r->sites));
9042                         _mem_save_sites_1 = NDR_PULL_GET_MEM_CTX(ndr);
9043                         NDR_PULL_SET_MEM_CTX(ndr, r->sites, 0);
9044                         for (cntr_sites_1 = 0; cntr_sites_1 < r->num_sites; cntr_sites_1++) {
9045                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->sites[cntr_sites_1]));
9046                         }
9047                         for (cntr_sites_1 = 0; cntr_sites_1 < r->num_sites; cntr_sites_1++) {
9048                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->sites[cntr_sites_1]));
9049                         }
9050                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sites_1, 0);
9051                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sites_0, 0);
9052                 }
9053                 if (r->sites) {
9054                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sites, r->num_sites));
9055                 }
9056         }
9057         return NDR_ERR_SUCCESS;
9058 }
9059
9060 _PUBLIC_ void ndr_print_DcSitesCtr(struct ndr_print *ndr, const char *name, const struct DcSitesCtr *r)
9061 {
9062         uint32_t cntr_sites_1;
9063         ndr_print_struct(ndr, name, "DcSitesCtr");
9064         ndr->depth++;
9065         ndr_print_uint32(ndr, "num_sites", r->num_sites);
9066         ndr_print_ptr(ndr, "sites", r->sites);
9067         ndr->depth++;
9068         if (r->sites) {
9069                 ndr->print(ndr, "%s: ARRAY(%d)", "sites", (int)r->num_sites);
9070                 ndr->depth++;
9071                 for (cntr_sites_1=0;cntr_sites_1<r->num_sites;cntr_sites_1++) {
9072                         char *idx_1=NULL;
9073                         if (asprintf(&idx_1, "[%d]", cntr_sites_1) != -1) {
9074                                 ndr_print_lsa_String(ndr, "sites", &r->sites[cntr_sites_1]);
9075                                 free(idx_1);
9076                         }
9077                 }
9078                 ndr->depth--;
9079         }
9080         ndr->depth--;
9081         ndr->depth--;
9082 }
9083
9084 static enum ndr_err_code ndr_push_netr_TrustInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_TrustInfo *r)
9085 {
9086         uint32_t cntr_data_1;
9087         uint32_t cntr_entries_1;
9088         if (ndr_flags & NDR_SCALARS) {
9089                 NDR_CHECK(ndr_push_align(ndr, 4));
9090                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
9091                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
9092                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->entry_count));
9093                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->entries));
9094         }
9095         if (ndr_flags & NDR_BUFFERS) {
9096                 if (r->data) {
9097                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
9098                         for (cntr_data_1 = 0; cntr_data_1 < r->count; cntr_data_1++) {
9099                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->data[cntr_data_1]));
9100                         }
9101                 }
9102                 if (r->entries) {
9103                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
9104                         for (cntr_entries_1 = 0; cntr_entries_1 < r->count; cntr_entries_1++) {
9105                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->entries[cntr_entries_1]));
9106                         }
9107                         for (cntr_entries_1 = 0; cntr_entries_1 < r->count; cntr_entries_1++) {
9108                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->entries[cntr_entries_1]));
9109                         }
9110                 }
9111         }
9112         return NDR_ERR_SUCCESS;
9113 }
9114
9115 static enum ndr_err_code ndr_pull_netr_TrustInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_TrustInfo *r)
9116 {
9117         uint32_t _ptr_data;
9118         uint32_t cntr_data_1;
9119         TALLOC_CTX *_mem_save_data_0;
9120         TALLOC_CTX *_mem_save_data_1;
9121         uint32_t _ptr_entries;
9122         uint32_t cntr_entries_1;
9123         TALLOC_CTX *_mem_save_entries_0;
9124         TALLOC_CTX *_mem_save_entries_1;
9125         if (ndr_flags & NDR_SCALARS) {
9126                 NDR_CHECK(ndr_pull_align(ndr, 4));
9127                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
9128                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
9129                 if (_ptr_data) {
9130                         NDR_PULL_ALLOC(ndr, r->data);
9131                 } else {
9132                         r->data = NULL;
9133                 }
9134                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->entry_count));
9135                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_entries));
9136                 if (_ptr_entries) {
9137                         NDR_PULL_ALLOC(ndr, r->entries);
9138                 } else {
9139                         r->entries = NULL;
9140                 }
9141         }
9142         if (ndr_flags & NDR_BUFFERS) {
9143                 if (r->data) {
9144                         _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
9145                         NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
9146                         NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
9147                         NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
9148                         _mem_save_data_1 = NDR_PULL_GET_MEM_CTX(ndr);
9149                         NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
9150                         for (cntr_data_1 = 0; cntr_data_1 < r->count; cntr_data_1++) {
9151                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->data[cntr_data_1]));
9152                         }
9153                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_1, 0);
9154                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
9155                 }
9156                 if (r->entries) {
9157                         _mem_save_entries_0 = NDR_PULL_GET_MEM_CTX(ndr);
9158                         NDR_PULL_SET_MEM_CTX(ndr, r->entries, 0);
9159                         NDR_CHECK(ndr_pull_array_size(ndr, &r->entries));
9160                         NDR_PULL_ALLOC_N(ndr, r->entries, ndr_get_array_size(ndr, &r->entries));
9161                         _mem_save_entries_1 = NDR_PULL_GET_MEM_CTX(ndr);
9162                         NDR_PULL_SET_MEM_CTX(ndr, r->entries, 0);
9163                         for (cntr_entries_1 = 0; cntr_entries_1 < r->count; cntr_entries_1++) {
9164                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->entries[cntr_entries_1]));
9165                         }
9166                         for (cntr_entries_1 = 0; cntr_entries_1 < r->count; cntr_entries_1++) {
9167                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->entries[cntr_entries_1]));
9168                         }
9169                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_entries_1, 0);
9170                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_entries_0, 0);
9171                 }
9172                 if (r->data) {
9173                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->count));
9174                 }
9175                 if (r->entries) {
9176                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->entries, r->count));
9177                 }
9178         }
9179         return NDR_ERR_SUCCESS;
9180 }
9181
9182 _PUBLIC_ void ndr_print_netr_TrustInfo(struct ndr_print *ndr, const char *name, const struct netr_TrustInfo *r)
9183 {
9184         uint32_t cntr_data_1;
9185         uint32_t cntr_entries_1;
9186         ndr_print_struct(ndr, name, "netr_TrustInfo");
9187         ndr->depth++;
9188         ndr_print_uint32(ndr, "count", r->count);
9189         ndr_print_ptr(ndr, "data", r->data);
9190         ndr->depth++;
9191         if (r->data) {
9192                 ndr->print(ndr, "%s: ARRAY(%d)", "data", (int)r->count);
9193                 ndr->depth++;
9194                 for (cntr_data_1=0;cntr_data_1<r->count;cntr_data_1++) {
9195                         char *idx_1=NULL;
9196                         if (asprintf(&idx_1, "[%d]", cntr_data_1) != -1) {
9197                                 ndr_print_uint32(ndr, "data", r->data[cntr_data_1]);
9198                                 free(idx_1);
9199                         }
9200                 }
9201                 ndr->depth--;
9202         }
9203         ndr->depth--;
9204         ndr_print_uint32(ndr, "entry_count", r->entry_count);
9205         ndr_print_ptr(ndr, "entries", r->entries);
9206         ndr->depth++;
9207         if (r->entries) {
9208                 ndr->print(ndr, "%s: ARRAY(%d)", "entries", (int)r->count);
9209                 ndr->depth++;
9210                 for (cntr_entries_1=0;cntr_entries_1<r->count;cntr_entries_1++) {
9211                         char *idx_1=NULL;
9212                         if (asprintf(&idx_1, "[%d]", cntr_entries_1) != -1) {
9213                                 ndr_print_lsa_String(ndr, "entries", &r->entries[cntr_entries_1]);
9214                                 free(idx_1);
9215                         }
9216                 }
9217                 ndr->depth--;
9218         }
9219         ndr->depth--;
9220         ndr->depth--;
9221 }
9222
9223 static enum ndr_err_code ndr_push_netr_LogonUasLogon(struct ndr_push *ndr, int flags, const struct netr_LogonUasLogon *r)
9224 {
9225         if (flags & NDR_IN) {
9226                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
9227                 if (r->in.server_name) {
9228                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9229                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9230                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9231                         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));
9232                 }
9233                 if (r->in.account_name == NULL) {
9234                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9235                 }
9236                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
9237                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9238                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
9239                 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));
9240                 if (r->in.workstation == NULL) {
9241                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9242                 }
9243                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.workstation, CH_UTF16)));
9244                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9245                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.workstation, CH_UTF16)));
9246                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.workstation, ndr_charset_length(r->in.workstation, CH_UTF16), sizeof(uint16_t), CH_UTF16));
9247         }
9248         if (flags & NDR_OUT) {
9249                 if (r->out.info == NULL) {
9250                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9251                 }
9252                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.info));
9253                 if (*r->out.info) {
9254                         NDR_CHECK(ndr_push_netr_UasInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
9255                 }
9256                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
9257         }
9258         return NDR_ERR_SUCCESS;
9259 }
9260
9261 static enum ndr_err_code ndr_pull_netr_LogonUasLogon(struct ndr_pull *ndr, int flags, struct netr_LogonUasLogon *r)
9262 {
9263         uint32_t _ptr_server_name;
9264         uint32_t _ptr_info;
9265         TALLOC_CTX *_mem_save_server_name_0;
9266         TALLOC_CTX *_mem_save_info_0;
9267         TALLOC_CTX *_mem_save_info_1;
9268         if (flags & NDR_IN) {
9269                 ZERO_STRUCT(r->out);
9270
9271                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
9272                 if (_ptr_server_name) {
9273                         NDR_PULL_ALLOC(ndr, r->in.server_name);
9274                 } else {
9275                         r->in.server_name = NULL;
9276                 }
9277                 if (r->in.server_name) {
9278                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
9279                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
9280                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
9281                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
9282                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
9283                                 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));
9284                         }
9285                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
9286                         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));
9287                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
9288                 }
9289                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
9290                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
9291                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
9292                         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));
9293                 }
9294                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
9295                 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));
9296                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.workstation));
9297                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.workstation));
9298                 if (ndr_get_array_length(ndr, &r->in.workstation) > ndr_get_array_size(ndr, &r->in.workstation)) {
9299                         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));
9300                 }
9301                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.workstation), sizeof(uint16_t)));
9302                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.workstation, ndr_get_array_length(ndr, &r->in.workstation), sizeof(uint16_t), CH_UTF16));
9303                 NDR_PULL_ALLOC(ndr, r->out.info);
9304                 ZERO_STRUCTP(r->out.info);
9305         }
9306         if (flags & NDR_OUT) {
9307                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9308                         NDR_PULL_ALLOC(ndr, r->out.info);
9309                 }
9310                 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
9311                 NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
9312                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
9313                 if (_ptr_info) {
9314                         NDR_PULL_ALLOC(ndr, *r->out.info);
9315                 } else {
9316                         *r->out.info = NULL;
9317                 }
9318                 if (*r->out.info) {
9319                         _mem_save_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
9320                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.info, 0);
9321                         NDR_CHECK(ndr_pull_netr_UasInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
9322                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_1, 0);
9323                 }
9324                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
9325                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
9326         }
9327         return NDR_ERR_SUCCESS;
9328 }
9329
9330 _PUBLIC_ void ndr_print_netr_LogonUasLogon(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonUasLogon *r)
9331 {
9332         ndr_print_struct(ndr, name, "netr_LogonUasLogon");
9333         ndr->depth++;
9334         if (flags & NDR_SET_VALUES) {
9335                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
9336         }
9337         if (flags & NDR_IN) {
9338                 ndr_print_struct(ndr, "in", "netr_LogonUasLogon");
9339                 ndr->depth++;
9340                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
9341                 ndr->depth++;
9342                 if (r->in.server_name) {
9343                         ndr_print_string(ndr, "server_name", r->in.server_name);
9344                 }
9345                 ndr->depth--;
9346                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
9347                 ndr->depth++;
9348                 ndr_print_string(ndr, "account_name", r->in.account_name);
9349                 ndr->depth--;
9350                 ndr_print_ptr(ndr, "workstation", r->in.workstation);
9351                 ndr->depth++;
9352                 ndr_print_string(ndr, "workstation", r->in.workstation);
9353                 ndr->depth--;
9354                 ndr->depth--;
9355         }
9356         if (flags & NDR_OUT) {
9357                 ndr_print_struct(ndr, "out", "netr_LogonUasLogon");
9358                 ndr->depth++;
9359                 ndr_print_ptr(ndr, "info", r->out.info);
9360                 ndr->depth++;
9361                 ndr_print_ptr(ndr, "info", *r->out.info);
9362                 ndr->depth++;
9363                 if (*r->out.info) {
9364                         ndr_print_netr_UasInfo(ndr, "info", *r->out.info);
9365                 }
9366                 ndr->depth--;
9367                 ndr->depth--;
9368                 ndr_print_WERROR(ndr, "result", r->out.result);
9369                 ndr->depth--;
9370         }
9371         ndr->depth--;
9372 }
9373
9374 static enum ndr_err_code ndr_push_netr_LogonUasLogoff(struct ndr_push *ndr, int flags, const struct netr_LogonUasLogoff *r)
9375 {
9376         if (flags & NDR_IN) {
9377                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
9378                 if (r->in.server_name) {
9379                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9380                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9381                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9382                         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));
9383                 }
9384                 if (r->in.account_name == NULL) {
9385                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9386                 }
9387                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
9388                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9389                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
9390                 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));
9391                 if (r->in.workstation == NULL) {
9392                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9393                 }
9394                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.workstation, CH_UTF16)));
9395                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9396                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.workstation, CH_UTF16)));
9397                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.workstation, ndr_charset_length(r->in.workstation, CH_UTF16), sizeof(uint16_t), CH_UTF16));
9398         }
9399         if (flags & NDR_OUT) {
9400                 if (r->out.info == NULL) {
9401                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9402                 }
9403                 NDR_CHECK(ndr_push_netr_UasLogoffInfo(ndr, NDR_SCALARS, r->out.info));
9404                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
9405         }
9406         return NDR_ERR_SUCCESS;
9407 }
9408
9409 static enum ndr_err_code ndr_pull_netr_LogonUasLogoff(struct ndr_pull *ndr, int flags, struct netr_LogonUasLogoff *r)
9410 {
9411         uint32_t _ptr_server_name;
9412         TALLOC_CTX *_mem_save_server_name_0;
9413         TALLOC_CTX *_mem_save_info_0;
9414         if (flags & NDR_IN) {
9415                 ZERO_STRUCT(r->out);
9416
9417                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
9418                 if (_ptr_server_name) {
9419                         NDR_PULL_ALLOC(ndr, r->in.server_name);
9420                 } else {
9421                         r->in.server_name = NULL;
9422                 }
9423                 if (r->in.server_name) {
9424                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
9425                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
9426                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
9427                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
9428                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
9429                                 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));
9430                         }
9431                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
9432                         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));
9433                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
9434                 }
9435                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
9436                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
9437                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
9438                         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));
9439                 }
9440                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
9441                 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));
9442                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.workstation));
9443                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.workstation));
9444                 if (ndr_get_array_length(ndr, &r->in.workstation) > ndr_get_array_size(ndr, &r->in.workstation)) {
9445                         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));
9446                 }
9447                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.workstation), sizeof(uint16_t)));
9448                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.workstation, ndr_get_array_length(ndr, &r->in.workstation), sizeof(uint16_t), CH_UTF16));
9449                 NDR_PULL_ALLOC(ndr, r->out.info);
9450                 ZERO_STRUCTP(r->out.info);
9451         }
9452         if (flags & NDR_OUT) {
9453                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9454                         NDR_PULL_ALLOC(ndr, r->out.info);
9455                 }
9456                 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
9457                 NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
9458                 NDR_CHECK(ndr_pull_netr_UasLogoffInfo(ndr, NDR_SCALARS, r->out.info));
9459                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
9460                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
9461         }
9462         return NDR_ERR_SUCCESS;
9463 }
9464
9465 _PUBLIC_ void ndr_print_netr_LogonUasLogoff(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonUasLogoff *r)
9466 {
9467         ndr_print_struct(ndr, name, "netr_LogonUasLogoff");
9468         ndr->depth++;
9469         if (flags & NDR_SET_VALUES) {
9470                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
9471         }
9472         if (flags & NDR_IN) {
9473                 ndr_print_struct(ndr, "in", "netr_LogonUasLogoff");
9474                 ndr->depth++;
9475                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
9476                 ndr->depth++;
9477                 if (r->in.server_name) {
9478                         ndr_print_string(ndr, "server_name", r->in.server_name);
9479                 }
9480                 ndr->depth--;
9481                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
9482                 ndr->depth++;
9483                 ndr_print_string(ndr, "account_name", r->in.account_name);
9484                 ndr->depth--;
9485                 ndr_print_ptr(ndr, "workstation", r->in.workstation);
9486                 ndr->depth++;
9487                 ndr_print_string(ndr, "workstation", r->in.workstation);
9488                 ndr->depth--;
9489                 ndr->depth--;
9490         }
9491         if (flags & NDR_OUT) {
9492                 ndr_print_struct(ndr, "out", "netr_LogonUasLogoff");
9493                 ndr->depth++;
9494                 ndr_print_ptr(ndr, "info", r->out.info);
9495                 ndr->depth++;
9496                 ndr_print_netr_UasLogoffInfo(ndr, "info", r->out.info);
9497                 ndr->depth--;
9498                 ndr_print_WERROR(ndr, "result", r->out.result);
9499                 ndr->depth--;
9500         }
9501         ndr->depth--;
9502 }
9503
9504 static enum ndr_err_code ndr_push_netr_LogonSamLogon(struct ndr_push *ndr, int flags, const struct netr_LogonSamLogon *r)
9505 {
9506         if (flags & NDR_IN) {
9507                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
9508                 if (r->in.server_name) {
9509                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9510                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9511                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9512                         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));
9513                 }
9514                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
9515                 if (r->in.computer_name) {
9516                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
9517                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9518                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
9519                         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));
9520                 }
9521                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.credential));
9522                 if (r->in.credential) {
9523                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
9524                 }
9525                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.return_authenticator));
9526                 if (r->in.return_authenticator) {
9527                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
9528                 }
9529                 NDR_CHECK(ndr_push_netr_LogonInfoClass(ndr, NDR_SCALARS, r->in.logon_level));
9530                 if (r->in.logon == NULL) {
9531                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9532                 }
9533                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.logon, r->in.logon_level));
9534                 NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
9535                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.validation_level));
9536         }
9537         if (flags & NDR_OUT) {
9538                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.return_authenticator));
9539                 if (r->out.return_authenticator) {
9540                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
9541                 }
9542                 if (r->out.validation == NULL) {
9543                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9544                 }
9545                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.validation, r->in.validation_level));
9546                 NDR_CHECK(ndr_push_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
9547                 if (r->out.authoritative == NULL) {
9548                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9549                 }
9550                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->out.authoritative));
9551                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
9552         }
9553         return NDR_ERR_SUCCESS;
9554 }
9555
9556 static enum ndr_err_code ndr_pull_netr_LogonSamLogon(struct ndr_pull *ndr, int flags, struct netr_LogonSamLogon *r)
9557 {
9558         uint32_t _ptr_server_name;
9559         uint32_t _ptr_computer_name;
9560         uint32_t _ptr_credential;
9561         uint32_t _ptr_return_authenticator;
9562         TALLOC_CTX *_mem_save_server_name_0;
9563         TALLOC_CTX *_mem_save_computer_name_0;
9564         TALLOC_CTX *_mem_save_credential_0;
9565         TALLOC_CTX *_mem_save_return_authenticator_0;
9566         TALLOC_CTX *_mem_save_logon_0;
9567         TALLOC_CTX *_mem_save_validation_0;
9568         TALLOC_CTX *_mem_save_authoritative_0;
9569         if (flags & NDR_IN) {
9570                 ZERO_STRUCT(r->out);
9571
9572                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
9573                 if (_ptr_server_name) {
9574                         NDR_PULL_ALLOC(ndr, r->in.server_name);
9575                 } else {
9576                         r->in.server_name = NULL;
9577                 }
9578                 if (r->in.server_name) {
9579                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
9580                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
9581                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
9582                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
9583                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
9584                                 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));
9585                         }
9586                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
9587                         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));
9588                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
9589                 }
9590                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
9591                 if (_ptr_computer_name) {
9592                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
9593                 } else {
9594                         r->in.computer_name = NULL;
9595                 }
9596                 if (r->in.computer_name) {
9597                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
9598                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
9599                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
9600                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
9601                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
9602                                 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));
9603                         }
9604                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
9605                         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));
9606                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
9607                 }
9608                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_credential));
9609                 if (_ptr_credential) {
9610                         NDR_PULL_ALLOC(ndr, r->in.credential);
9611                 } else {
9612                         r->in.credential = NULL;
9613                 }
9614                 if (r->in.credential) {
9615                         _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
9616                         NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, 0);
9617                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
9618                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, 0);
9619                 }
9620                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
9621                 if (_ptr_return_authenticator) {
9622                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
9623                 } else {
9624                         r->in.return_authenticator = NULL;
9625                 }
9626                 if (r->in.return_authenticator) {
9627                         _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
9628                         NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, 0);
9629                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
9630                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
9631                 }
9632                 NDR_CHECK(ndr_pull_netr_LogonInfoClass(ndr, NDR_SCALARS, &r->in.logon_level));
9633                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9634                         NDR_PULL_ALLOC(ndr, r->in.logon);
9635                 }
9636                 _mem_save_logon_0 = NDR_PULL_GET_MEM_CTX(ndr);
9637                 NDR_PULL_SET_MEM_CTX(ndr, r->in.logon, LIBNDR_FLAG_REF_ALLOC);
9638                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.logon, r->in.logon_level));
9639                 NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
9640                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_0, LIBNDR_FLAG_REF_ALLOC);
9641                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.validation_level));
9642                 NDR_PULL_ALLOC(ndr, r->out.validation);
9643                 ZERO_STRUCTP(r->out.validation);
9644                 NDR_PULL_ALLOC(ndr, r->out.authoritative);
9645                 ZERO_STRUCTP(r->out.authoritative);
9646         }
9647         if (flags & NDR_OUT) {
9648                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
9649                 if (_ptr_return_authenticator) {
9650                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
9651                 } else {
9652                         r->out.return_authenticator = NULL;
9653                 }
9654                 if (r->out.return_authenticator) {
9655                         _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
9656                         NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, 0);
9657                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
9658                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
9659                 }
9660                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9661                         NDR_PULL_ALLOC(ndr, r->out.validation);
9662                 }
9663                 _mem_save_validation_0 = NDR_PULL_GET_MEM_CTX(ndr);
9664                 NDR_PULL_SET_MEM_CTX(ndr, r->out.validation, LIBNDR_FLAG_REF_ALLOC);
9665                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.validation, r->in.validation_level));
9666                 NDR_CHECK(ndr_pull_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
9667                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_validation_0, LIBNDR_FLAG_REF_ALLOC);
9668                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9669                         NDR_PULL_ALLOC(ndr, r->out.authoritative);
9670                 }
9671                 _mem_save_authoritative_0 = NDR_PULL_GET_MEM_CTX(ndr);
9672                 NDR_PULL_SET_MEM_CTX(ndr, r->out.authoritative, LIBNDR_FLAG_REF_ALLOC);
9673                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->out.authoritative));
9674                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_authoritative_0, LIBNDR_FLAG_REF_ALLOC);
9675                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
9676         }
9677         return NDR_ERR_SUCCESS;
9678 }
9679
9680 _PUBLIC_ void ndr_print_netr_LogonSamLogon(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogon *r)
9681 {
9682         ndr_print_struct(ndr, name, "netr_LogonSamLogon");
9683         ndr->depth++;
9684         if (flags & NDR_SET_VALUES) {
9685                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
9686         }
9687         if (flags & NDR_IN) {
9688                 ndr_print_struct(ndr, "in", "netr_LogonSamLogon");
9689                 ndr->depth++;
9690                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
9691                 ndr->depth++;
9692                 if (r->in.server_name) {
9693                         ndr_print_string(ndr, "server_name", r->in.server_name);
9694                 }
9695                 ndr->depth--;
9696                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
9697                 ndr->depth++;
9698                 if (r->in.computer_name) {
9699                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
9700                 }
9701                 ndr->depth--;
9702                 ndr_print_ptr(ndr, "credential", r->in.credential);
9703                 ndr->depth++;
9704                 if (r->in.credential) {
9705                         ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
9706                 }
9707                 ndr->depth--;
9708                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
9709                 ndr->depth++;
9710                 if (r->in.return_authenticator) {
9711                         ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
9712                 }
9713                 ndr->depth--;
9714                 ndr_print_netr_LogonInfoClass(ndr, "logon_level", r->in.logon_level);
9715                 ndr_print_ptr(ndr, "logon", r->in.logon);
9716                 ndr->depth++;
9717                 ndr_print_set_switch_value(ndr, r->in.logon, r->in.logon_level);
9718                 ndr_print_netr_LogonLevel(ndr, "logon", r->in.logon);
9719                 ndr->depth--;
9720                 ndr_print_uint16(ndr, "validation_level", r->in.validation_level);
9721                 ndr->depth--;
9722         }
9723         if (flags & NDR_OUT) {
9724                 ndr_print_struct(ndr, "out", "netr_LogonSamLogon");
9725                 ndr->depth++;
9726                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
9727                 ndr->depth++;
9728                 if (r->out.return_authenticator) {
9729                         ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
9730                 }
9731                 ndr->depth--;
9732                 ndr_print_ptr(ndr, "validation", r->out.validation);
9733                 ndr->depth++;
9734                 ndr_print_set_switch_value(ndr, r->out.validation, r->in.validation_level);
9735                 ndr_print_netr_Validation(ndr, "validation", r->out.validation);
9736                 ndr->depth--;
9737                 ndr_print_ptr(ndr, "authoritative", r->out.authoritative);
9738                 ndr->depth++;
9739                 ndr_print_uint8(ndr, "authoritative", *r->out.authoritative);
9740                 ndr->depth--;
9741                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
9742                 ndr->depth--;
9743         }
9744         ndr->depth--;
9745 }
9746
9747 static enum ndr_err_code ndr_push_netr_LogonSamLogoff(struct ndr_push *ndr, int flags, const struct netr_LogonSamLogoff *r)
9748 {
9749         if (flags & NDR_IN) {
9750                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
9751                 if (r->in.server_name) {
9752                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9753                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9754                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9755                         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));
9756                 }
9757                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
9758                 if (r->in.computer_name) {
9759                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
9760                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9761                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
9762                         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));
9763                 }
9764                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.credential));
9765                 if (r->in.credential) {
9766                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
9767                 }
9768                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.return_authenticator));
9769                 if (r->in.return_authenticator) {
9770                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
9771                 }
9772                 NDR_CHECK(ndr_push_netr_LogonInfoClass(ndr, NDR_SCALARS, r->in.logon_level));
9773                 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
9774                 NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
9775         }
9776         if (flags & NDR_OUT) {
9777                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.return_authenticator));
9778                 if (r->out.return_authenticator) {
9779                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
9780                 }
9781                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
9782         }
9783         return NDR_ERR_SUCCESS;
9784 }
9785
9786 static enum ndr_err_code ndr_pull_netr_LogonSamLogoff(struct ndr_pull *ndr, int flags, struct netr_LogonSamLogoff *r)
9787 {
9788         uint32_t _ptr_server_name;
9789         uint32_t _ptr_computer_name;
9790         uint32_t _ptr_credential;
9791         uint32_t _ptr_return_authenticator;
9792         TALLOC_CTX *_mem_save_server_name_0;
9793         TALLOC_CTX *_mem_save_computer_name_0;
9794         TALLOC_CTX *_mem_save_credential_0;
9795         TALLOC_CTX *_mem_save_return_authenticator_0;
9796         if (flags & NDR_IN) {
9797                 ZERO_STRUCT(r->out);
9798
9799                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
9800                 if (_ptr_server_name) {
9801                         NDR_PULL_ALLOC(ndr, r->in.server_name);
9802                 } else {
9803                         r->in.server_name = NULL;
9804                 }
9805                 if (r->in.server_name) {
9806                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
9807                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
9808                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
9809                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
9810                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
9811                                 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));
9812                         }
9813                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
9814                         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));
9815                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
9816                 }
9817                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
9818                 if (_ptr_computer_name) {
9819                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
9820                 } else {
9821                         r->in.computer_name = NULL;
9822                 }
9823                 if (r->in.computer_name) {
9824                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
9825                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
9826                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
9827                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
9828                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
9829                                 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));
9830                         }
9831                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
9832                         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));
9833                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
9834                 }
9835                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_credential));
9836                 if (_ptr_credential) {
9837                         NDR_PULL_ALLOC(ndr, r->in.credential);
9838                 } else {
9839                         r->in.credential = NULL;
9840                 }
9841                 if (r->in.credential) {
9842                         _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
9843                         NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, 0);
9844                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
9845                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, 0);
9846                 }
9847                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
9848                 if (_ptr_return_authenticator) {
9849                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
9850                 } else {
9851                         r->in.return_authenticator = NULL;
9852                 }
9853                 if (r->in.return_authenticator) {
9854                         _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
9855                         NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, 0);
9856                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
9857                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
9858                 }
9859                 NDR_CHECK(ndr_pull_netr_LogonInfoClass(ndr, NDR_SCALARS, &r->in.logon_level));
9860                 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
9861                 NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
9862         }
9863         if (flags & NDR_OUT) {
9864                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
9865                 if (_ptr_return_authenticator) {
9866                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
9867                 } else {
9868                         r->out.return_authenticator = NULL;
9869                 }
9870                 if (r->out.return_authenticator) {
9871                         _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
9872                         NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, 0);
9873                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
9874                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
9875                 }
9876                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
9877         }
9878         return NDR_ERR_SUCCESS;
9879 }
9880
9881 _PUBLIC_ void ndr_print_netr_LogonSamLogoff(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogoff *r)
9882 {
9883         ndr_print_struct(ndr, name, "netr_LogonSamLogoff");
9884         ndr->depth++;
9885         if (flags & NDR_SET_VALUES) {
9886                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
9887         }
9888         if (flags & NDR_IN) {
9889                 ndr_print_struct(ndr, "in", "netr_LogonSamLogoff");
9890                 ndr->depth++;
9891                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
9892                 ndr->depth++;
9893                 if (r->in.server_name) {
9894                         ndr_print_string(ndr, "server_name", r->in.server_name);
9895                 }
9896                 ndr->depth--;
9897                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
9898                 ndr->depth++;
9899                 if (r->in.computer_name) {
9900                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
9901                 }
9902                 ndr->depth--;
9903                 ndr_print_ptr(ndr, "credential", r->in.credential);
9904                 ndr->depth++;
9905                 if (r->in.credential) {
9906                         ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
9907                 }
9908                 ndr->depth--;
9909                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
9910                 ndr->depth++;
9911                 if (r->in.return_authenticator) {
9912                         ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
9913                 }
9914                 ndr->depth--;
9915                 ndr_print_netr_LogonInfoClass(ndr, "logon_level", r->in.logon_level);
9916                 ndr_print_set_switch_value(ndr, &r->in.logon, r->in.logon_level);
9917                 ndr_print_netr_LogonLevel(ndr, "logon", &r->in.logon);
9918                 ndr->depth--;
9919         }
9920         if (flags & NDR_OUT) {
9921                 ndr_print_struct(ndr, "out", "netr_LogonSamLogoff");
9922                 ndr->depth++;
9923                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
9924                 ndr->depth++;
9925                 if (r->out.return_authenticator) {
9926                         ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
9927                 }
9928                 ndr->depth--;
9929                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
9930                 ndr->depth--;
9931         }
9932         ndr->depth--;
9933 }
9934
9935 _PUBLIC_ enum ndr_err_code ndr_push_netr_ServerReqChallenge(struct ndr_push *ndr, int flags, const struct netr_ServerReqChallenge *r)
9936 {
9937         if (flags & NDR_IN) {
9938                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
9939                 if (r->in.server_name) {
9940                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9941                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9942                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9943                         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));
9944                 }
9945                 if (r->in.computer_name == NULL) {
9946                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9947                 }
9948                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
9949                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9950                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
9951                 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));
9952                 if (r->in.credentials == NULL) {
9953                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9954                 }
9955                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
9956         }
9957         if (flags & NDR_OUT) {
9958                 if (r->out.return_credentials == NULL) {
9959                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9960                 }
9961                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
9962                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
9963         }
9964         return NDR_ERR_SUCCESS;
9965 }
9966
9967 _PUBLIC_ enum ndr_err_code ndr_pull_netr_ServerReqChallenge(struct ndr_pull *ndr, int flags, struct netr_ServerReqChallenge *r)
9968 {
9969         uint32_t _ptr_server_name;
9970         TALLOC_CTX *_mem_save_server_name_0;
9971         TALLOC_CTX *_mem_save_credentials_0;
9972         TALLOC_CTX *_mem_save_return_credentials_0;
9973         if (flags & NDR_IN) {
9974                 ZERO_STRUCT(r->out);
9975
9976                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
9977                 if (_ptr_server_name) {
9978                         NDR_PULL_ALLOC(ndr, r->in.server_name);
9979                 } else {
9980                         r->in.server_name = NULL;
9981                 }
9982                 if (r->in.server_name) {
9983                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
9984                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
9985                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
9986                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
9987                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
9988                                 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));
9989                         }
9990                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
9991                         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));
9992                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
9993                 }
9994                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
9995                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
9996                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
9997                         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));
9998                 }
9999                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
10000                 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));
10001                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10002                         NDR_PULL_ALLOC(ndr, r->in.credentials);
10003                 }
10004                 _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
10005                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credentials, LIBNDR_FLAG_REF_ALLOC);
10006                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
10007                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
10008                 NDR_PULL_ALLOC(ndr, r->out.return_credentials);
10009                 ZERO_STRUCTP(r->out.return_credentials);
10010         }
10011         if (flags & NDR_OUT) {
10012                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10013                         NDR_PULL_ALLOC(ndr, r->out.return_credentials);
10014                 }
10015                 _mem_save_return_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
10016                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_credentials, LIBNDR_FLAG_REF_ALLOC);
10017                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
10018                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_credentials_0, LIBNDR_FLAG_REF_ALLOC);
10019                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
10020         }
10021         return NDR_ERR_SUCCESS;
10022 }
10023
10024 _PUBLIC_ void ndr_print_netr_ServerReqChallenge(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerReqChallenge *r)
10025 {
10026         ndr_print_struct(ndr, name, "netr_ServerReqChallenge");
10027         ndr->depth++;
10028         if (flags & NDR_SET_VALUES) {
10029                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
10030         }
10031         if (flags & NDR_IN) {
10032                 ndr_print_struct(ndr, "in", "netr_ServerReqChallenge");
10033                 ndr->depth++;
10034                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
10035                 ndr->depth++;
10036                 if (r->in.server_name) {
10037                         ndr_print_string(ndr, "server_name", r->in.server_name);
10038                 }
10039                 ndr->depth--;
10040                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
10041                 ndr->depth++;
10042                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
10043                 ndr->depth--;
10044                 ndr_print_ptr(ndr, "credentials", r->in.credentials);
10045                 ndr->depth++;
10046                 ndr_print_netr_Credential(ndr, "credentials", r->in.credentials);
10047                 ndr->depth--;
10048                 ndr->depth--;
10049         }
10050         if (flags & NDR_OUT) {
10051                 ndr_print_struct(ndr, "out", "netr_ServerReqChallenge");
10052                 ndr->depth++;
10053                 ndr_print_ptr(ndr, "return_credentials", r->out.return_credentials);
10054                 ndr->depth++;
10055                 ndr_print_netr_Credential(ndr, "return_credentials", r->out.return_credentials);
10056                 ndr->depth--;
10057                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
10058                 ndr->depth--;
10059         }
10060         ndr->depth--;
10061 }
10062
10063 static enum ndr_err_code ndr_push_netr_ServerAuthenticate(struct ndr_push *ndr, int flags, const struct netr_ServerAuthenticate *r)
10064 {
10065         if (flags & NDR_IN) {
10066                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
10067                 if (r->in.server_name) {
10068                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
10069                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10070                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
10071                         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));
10072                 }
10073                 if (r->in.account_name == NULL) {
10074                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10075                 }
10076                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
10077                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10078                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
10079                 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));
10080                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
10081                 if (r->in.computer_name == NULL) {
10082                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10083                 }
10084                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
10085                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10086                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
10087                 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));
10088                 if (r->in.credentials == NULL) {
10089                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10090                 }
10091                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
10092         }
10093         if (flags & NDR_OUT) {
10094                 if (r->out.return_credentials == NULL) {
10095                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10096                 }
10097                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
10098                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
10099         }
10100         return NDR_ERR_SUCCESS;
10101 }
10102
10103 static enum ndr_err_code ndr_pull_netr_ServerAuthenticate(struct ndr_pull *ndr, int flags, struct netr_ServerAuthenticate *r)
10104 {
10105         uint32_t _ptr_server_name;
10106         TALLOC_CTX *_mem_save_server_name_0;
10107         TALLOC_CTX *_mem_save_credentials_0;
10108         TALLOC_CTX *_mem_save_return_credentials_0;
10109         if (flags & NDR_IN) {
10110                 ZERO_STRUCT(r->out);
10111
10112                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
10113                 if (_ptr_server_name) {
10114                         NDR_PULL_ALLOC(ndr, r->in.server_name);
10115                 } else {
10116                         r->in.server_name = NULL;
10117                 }
10118                 if (r->in.server_name) {
10119                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
10120                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
10121                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
10122                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
10123                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
10124                                 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));
10125                         }
10126                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
10127                         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));
10128                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
10129                 }
10130                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
10131                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
10132                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
10133                         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));
10134                 }
10135                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
10136                 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));
10137                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
10138                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
10139                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
10140                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
10141                         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));
10142                 }
10143                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
10144                 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));
10145                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10146                         NDR_PULL_ALLOC(ndr, r->in.credentials);
10147                 }
10148                 _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
10149                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credentials, LIBNDR_FLAG_REF_ALLOC);
10150                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
10151                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
10152                 NDR_PULL_ALLOC(ndr, r->out.return_credentials);
10153                 ZERO_STRUCTP(r->out.return_credentials);
10154         }
10155         if (flags & NDR_OUT) {
10156                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10157                         NDR_PULL_ALLOC(ndr, r->out.return_credentials);
10158                 }
10159                 _mem_save_return_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
10160                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_credentials, LIBNDR_FLAG_REF_ALLOC);
10161                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
10162                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_credentials_0, LIBNDR_FLAG_REF_ALLOC);
10163                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
10164         }
10165         return NDR_ERR_SUCCESS;
10166 }
10167
10168 _PUBLIC_ void ndr_print_netr_ServerAuthenticate(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerAuthenticate *r)
10169 {
10170         ndr_print_struct(ndr, name, "netr_ServerAuthenticate");
10171         ndr->depth++;
10172         if (flags & NDR_SET_VALUES) {
10173                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
10174         }
10175         if (flags & NDR_IN) {
10176                 ndr_print_struct(ndr, "in", "netr_ServerAuthenticate");
10177                 ndr->depth++;
10178                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
10179                 ndr->depth++;
10180                 if (r->in.server_name) {
10181                         ndr_print_string(ndr, "server_name", r->in.server_name);
10182                 }
10183                 ndr->depth--;
10184                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
10185                 ndr->depth++;
10186                 ndr_print_string(ndr, "account_name", r->in.account_name);
10187                 ndr->depth--;
10188                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
10189                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
10190                 ndr->depth++;
10191                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
10192                 ndr->depth--;
10193                 ndr_print_ptr(ndr, "credentials", r->in.credentials);
10194                 ndr->depth++;
10195                 ndr_print_netr_Credential(ndr, "credentials", r->in.credentials);
10196                 ndr->depth--;
10197                 ndr->depth--;
10198         }
10199         if (flags & NDR_OUT) {
10200                 ndr_print_struct(ndr, "out", "netr_ServerAuthenticate");
10201                 ndr->depth++;
10202                 ndr_print_ptr(ndr, "return_credentials", r->out.return_credentials);
10203                 ndr->depth++;
10204                 ndr_print_netr_Credential(ndr, "return_credentials", r->out.return_credentials);
10205                 ndr->depth--;
10206                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
10207                 ndr->depth--;
10208         }
10209         ndr->depth--;
10210 }
10211
10212 static enum ndr_err_code ndr_push_netr_ServerPasswordSet(struct ndr_push *ndr, int flags, const struct netr_ServerPasswordSet *r)
10213 {
10214         if (flags & NDR_IN) {
10215                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
10216                 if (r->in.server_name) {
10217                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
10218                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10219                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
10220                         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));
10221                 }
10222                 if (r->in.account_name == NULL) {
10223                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10224                 }
10225                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
10226                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10227                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
10228                 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));
10229                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
10230                 if (r->in.computer_name == NULL) {
10231                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10232                 }
10233                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
10234                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10235                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
10236                 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));
10237                 if (r->in.credential == NULL) {
10238                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10239                 }
10240                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
10241                 if (r->in.new_password == NULL) {
10242                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10243                 }
10244                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, r->in.new_password));
10245         }
10246         if (flags & NDR_OUT) {
10247                 if (r->out.return_authenticator == NULL) {
10248                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10249                 }
10250                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10251                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
10252         }
10253         return NDR_ERR_SUCCESS;
10254 }
10255
10256 static enum ndr_err_code ndr_pull_netr_ServerPasswordSet(struct ndr_pull *ndr, int flags, struct netr_ServerPasswordSet *r)
10257 {
10258         uint32_t _ptr_server_name;
10259         TALLOC_CTX *_mem_save_server_name_0;
10260         TALLOC_CTX *_mem_save_credential_0;
10261         TALLOC_CTX *_mem_save_return_authenticator_0;
10262         TALLOC_CTX *_mem_save_new_password_0;
10263         if (flags & NDR_IN) {
10264                 ZERO_STRUCT(r->out);
10265
10266                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
10267                 if (_ptr_server_name) {
10268                         NDR_PULL_ALLOC(ndr, r->in.server_name);
10269                 } else {
10270                         r->in.server_name = NULL;
10271                 }
10272                 if (r->in.server_name) {
10273                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
10274                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
10275                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
10276                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
10277                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
10278                                 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));
10279                         }
10280                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
10281                         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));
10282                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
10283                 }
10284                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
10285                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
10286                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
10287                         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));
10288                 }
10289                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
10290                 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));
10291                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
10292                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
10293                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
10294                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
10295                         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));
10296                 }
10297                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
10298                 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));
10299                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10300                         NDR_PULL_ALLOC(ndr, r->in.credential);
10301                 }
10302                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
10303                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
10304                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
10305                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
10306                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10307                         NDR_PULL_ALLOC(ndr, r->in.new_password);
10308                 }
10309                 _mem_save_new_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
10310                 NDR_PULL_SET_MEM_CTX(ndr, r->in.new_password, LIBNDR_FLAG_REF_ALLOC);
10311                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, r->in.new_password));
10312                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_new_password_0, LIBNDR_FLAG_REF_ALLOC);
10313                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10314                 ZERO_STRUCTP(r->out.return_authenticator);
10315         }
10316         if (flags & NDR_OUT) {
10317                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10318                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10319                 }
10320                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
10321                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
10322                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10323                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
10324                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
10325         }
10326         return NDR_ERR_SUCCESS;
10327 }
10328
10329 _PUBLIC_ void ndr_print_netr_ServerPasswordSet(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerPasswordSet *r)
10330 {
10331         ndr_print_struct(ndr, name, "netr_ServerPasswordSet");
10332         ndr->depth++;
10333         if (flags & NDR_SET_VALUES) {
10334                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
10335         }
10336         if (flags & NDR_IN) {
10337                 ndr_print_struct(ndr, "in", "netr_ServerPasswordSet");
10338                 ndr->depth++;
10339                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
10340                 ndr->depth++;
10341                 if (r->in.server_name) {
10342                         ndr_print_string(ndr, "server_name", r->in.server_name);
10343                 }
10344                 ndr->depth--;
10345                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
10346                 ndr->depth++;
10347                 ndr_print_string(ndr, "account_name", r->in.account_name);
10348                 ndr->depth--;
10349                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
10350                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
10351                 ndr->depth++;
10352                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
10353                 ndr->depth--;
10354                 ndr_print_ptr(ndr, "credential", r->in.credential);
10355                 ndr->depth++;
10356                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
10357                 ndr->depth--;
10358                 ndr_print_ptr(ndr, "new_password", r->in.new_password);
10359                 ndr->depth++;
10360                 ndr_print_samr_Password(ndr, "new_password", r->in.new_password);
10361                 ndr->depth--;
10362                 ndr->depth--;
10363         }
10364         if (flags & NDR_OUT) {
10365                 ndr_print_struct(ndr, "out", "netr_ServerPasswordSet");
10366                 ndr->depth++;
10367                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
10368                 ndr->depth++;
10369                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
10370                 ndr->depth--;
10371                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
10372                 ndr->depth--;
10373         }
10374         ndr->depth--;
10375 }
10376
10377 static enum ndr_err_code ndr_push_netr_DatabaseDeltas(struct ndr_push *ndr, int flags, const struct netr_DatabaseDeltas *r)
10378 {
10379         if (flags & NDR_IN) {
10380                 if (r->in.logon_server == NULL) {
10381                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10382                 }
10383                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10384                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10385                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10386                 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));
10387                 if (r->in.computername == NULL) {
10388                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10389                 }
10390                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
10391                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10392                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
10393                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
10394                 if (r->in.credential == NULL) {
10395                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10396                 }
10397                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
10398                 if (r->in.return_authenticator == NULL) {
10399                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10400                 }
10401                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
10402                 NDR_CHECK(ndr_push_netr_SamDatabaseID(ndr, NDR_SCALARS, r->in.database_id));
10403                 if (r->in.sequence_num == NULL) {
10404                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10405                 }
10406                 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, *r->in.sequence_num));
10407                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.preferredmaximumlength));
10408         }
10409         if (flags & NDR_OUT) {
10410                 if (r->out.return_authenticator == NULL) {
10411                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10412                 }
10413                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10414                 if (r->out.sequence_num == NULL) {
10415                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10416                 }
10417                 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, *r->out.sequence_num));
10418                 if (r->out.delta_enum_array == NULL) {
10419                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10420                 }
10421                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.delta_enum_array));
10422                 if (*r->out.delta_enum_array) {
10423                         NDR_CHECK(ndr_push_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
10424                 }
10425                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
10426         }
10427         return NDR_ERR_SUCCESS;
10428 }
10429
10430 static enum ndr_err_code ndr_pull_netr_DatabaseDeltas(struct ndr_pull *ndr, int flags, struct netr_DatabaseDeltas *r)
10431 {
10432         uint32_t _ptr_delta_enum_array;
10433         TALLOC_CTX *_mem_save_credential_0;
10434         TALLOC_CTX *_mem_save_return_authenticator_0;
10435         TALLOC_CTX *_mem_save_sequence_num_0;
10436         TALLOC_CTX *_mem_save_delta_enum_array_0;
10437         TALLOC_CTX *_mem_save_delta_enum_array_1;
10438         if (flags & NDR_IN) {
10439                 ZERO_STRUCT(r->out);
10440
10441                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
10442                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
10443                 if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
10444                         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));
10445                 }
10446                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
10447                 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));
10448                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
10449                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
10450                 if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
10451                         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));
10452                 }
10453                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
10454                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
10455                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10456                         NDR_PULL_ALLOC(ndr, r->in.credential);
10457                 }
10458                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
10459                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
10460                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
10461                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
10462                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10463                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
10464                 }
10465                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
10466                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
10467                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
10468                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
10469                 NDR_CHECK(ndr_pull_netr_SamDatabaseID(ndr, NDR_SCALARS, &r->in.database_id));
10470                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10471                         NDR_PULL_ALLOC(ndr, r->in.sequence_num);
10472                 }
10473                 _mem_save_sequence_num_0 = NDR_PULL_GET_MEM_CTX(ndr);
10474                 NDR_PULL_SET_MEM_CTX(ndr, r->in.sequence_num, LIBNDR_FLAG_REF_ALLOC);
10475                 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, r->in.sequence_num));
10476                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sequence_num_0, LIBNDR_FLAG_REF_ALLOC);
10477                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.preferredmaximumlength));
10478                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10479                 *r->out.return_authenticator = *r->in.return_authenticator;
10480                 NDR_PULL_ALLOC(ndr, r->out.sequence_num);
10481                 *r->out.sequence_num = *r->in.sequence_num;
10482                 NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
10483                 ZERO_STRUCTP(r->out.delta_enum_array);
10484         }
10485         if (flags & NDR_OUT) {
10486                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10487                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10488                 }
10489                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
10490                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
10491                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10492                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
10493                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10494                         NDR_PULL_ALLOC(ndr, r->out.sequence_num);
10495                 }
10496                 _mem_save_sequence_num_0 = NDR_PULL_GET_MEM_CTX(ndr);
10497                 NDR_PULL_SET_MEM_CTX(ndr, r->out.sequence_num, LIBNDR_FLAG_REF_ALLOC);
10498                 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, r->out.sequence_num));
10499                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sequence_num_0, LIBNDR_FLAG_REF_ALLOC);
10500                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10501                         NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
10502                 }
10503                 _mem_save_delta_enum_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
10504                 NDR_PULL_SET_MEM_CTX(ndr, r->out.delta_enum_array, LIBNDR_FLAG_REF_ALLOC);
10505                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delta_enum_array));
10506                 if (_ptr_delta_enum_array) {
10507                         NDR_PULL_ALLOC(ndr, *r->out.delta_enum_array);
10508                 } else {
10509                         *r->out.delta_enum_array = NULL;
10510                 }
10511                 if (*r->out.delta_enum_array) {
10512                         _mem_save_delta_enum_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
10513                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.delta_enum_array, 0);
10514                         NDR_CHECK(ndr_pull_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
10515                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_1, 0);
10516                 }
10517                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_0, LIBNDR_FLAG_REF_ALLOC);
10518                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
10519         }
10520         return NDR_ERR_SUCCESS;
10521 }
10522
10523 _PUBLIC_ void ndr_print_netr_DatabaseDeltas(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseDeltas *r)
10524 {
10525         ndr_print_struct(ndr, name, "netr_DatabaseDeltas");
10526         ndr->depth++;
10527         if (flags & NDR_SET_VALUES) {
10528                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
10529         }
10530         if (flags & NDR_IN) {
10531                 ndr_print_struct(ndr, "in", "netr_DatabaseDeltas");
10532                 ndr->depth++;
10533                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
10534                 ndr->depth++;
10535                 ndr_print_string(ndr, "logon_server", r->in.logon_server);
10536                 ndr->depth--;
10537                 ndr_print_ptr(ndr, "computername", r->in.computername);
10538                 ndr->depth++;
10539                 ndr_print_string(ndr, "computername", r->in.computername);
10540                 ndr->depth--;
10541                 ndr_print_ptr(ndr, "credential", r->in.credential);
10542                 ndr->depth++;
10543                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
10544                 ndr->depth--;
10545                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
10546                 ndr->depth++;
10547                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
10548                 ndr->depth--;
10549                 ndr_print_netr_SamDatabaseID(ndr, "database_id", r->in.database_id);
10550                 ndr_print_ptr(ndr, "sequence_num", r->in.sequence_num);
10551                 ndr->depth++;
10552                 ndr_print_udlong(ndr, "sequence_num", *r->in.sequence_num);
10553                 ndr->depth--;
10554                 ndr_print_uint32(ndr, "preferredmaximumlength", r->in.preferredmaximumlength);
10555                 ndr->depth--;
10556         }
10557         if (flags & NDR_OUT) {
10558                 ndr_print_struct(ndr, "out", "netr_DatabaseDeltas");
10559                 ndr->depth++;
10560                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
10561                 ndr->depth++;
10562                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
10563                 ndr->depth--;
10564                 ndr_print_ptr(ndr, "sequence_num", r->out.sequence_num);
10565                 ndr->depth++;
10566                 ndr_print_udlong(ndr, "sequence_num", *r->out.sequence_num);
10567                 ndr->depth--;
10568                 ndr_print_ptr(ndr, "delta_enum_array", r->out.delta_enum_array);
10569                 ndr->depth++;
10570                 ndr_print_ptr(ndr, "delta_enum_array", *r->out.delta_enum_array);
10571                 ndr->depth++;
10572                 if (*r->out.delta_enum_array) {
10573                         ndr_print_netr_DELTA_ENUM_ARRAY(ndr, "delta_enum_array", *r->out.delta_enum_array);
10574                 }
10575                 ndr->depth--;
10576                 ndr->depth--;
10577                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
10578                 ndr->depth--;
10579         }
10580         ndr->depth--;
10581 }
10582
10583 static enum ndr_err_code ndr_push_netr_DatabaseSync(struct ndr_push *ndr, int flags, const struct netr_DatabaseSync *r)
10584 {
10585         if (flags & NDR_IN) {
10586                 if (r->in.logon_server == NULL) {
10587                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10588                 }
10589                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10590                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10591                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10592                 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));
10593                 if (r->in.computername == NULL) {
10594                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10595                 }
10596                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
10597                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10598                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
10599                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
10600                 if (r->in.credential == NULL) {
10601                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10602                 }
10603                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
10604                 if (r->in.return_authenticator == NULL) {
10605                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10606                 }
10607                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
10608                 NDR_CHECK(ndr_push_netr_SamDatabaseID(ndr, NDR_SCALARS, r->in.database_id));
10609                 if (r->in.sync_context == NULL) {
10610                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10611                 }
10612                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.sync_context));
10613                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.preferredmaximumlength));
10614         }
10615         if (flags & NDR_OUT) {
10616                 if (r->out.return_authenticator == NULL) {
10617                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10618                 }
10619                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10620                 if (r->out.sync_context == NULL) {
10621                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10622                 }
10623                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.sync_context));
10624                 if (r->out.delta_enum_array == NULL) {
10625                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10626                 }
10627                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.delta_enum_array));
10628                 if (*r->out.delta_enum_array) {
10629                         NDR_CHECK(ndr_push_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
10630                 }
10631                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
10632         }
10633         return NDR_ERR_SUCCESS;
10634 }
10635
10636 static enum ndr_err_code ndr_pull_netr_DatabaseSync(struct ndr_pull *ndr, int flags, struct netr_DatabaseSync *r)
10637 {
10638         uint32_t _ptr_delta_enum_array;
10639         TALLOC_CTX *_mem_save_credential_0;
10640         TALLOC_CTX *_mem_save_return_authenticator_0;
10641         TALLOC_CTX *_mem_save_sync_context_0;
10642         TALLOC_CTX *_mem_save_delta_enum_array_0;
10643         TALLOC_CTX *_mem_save_delta_enum_array_1;
10644         if (flags & NDR_IN) {
10645                 ZERO_STRUCT(r->out);
10646
10647                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
10648                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
10649                 if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
10650                         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));
10651                 }
10652                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
10653                 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));
10654                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
10655                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
10656                 if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
10657                         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));
10658                 }
10659                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
10660                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
10661                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10662                         NDR_PULL_ALLOC(ndr, r->in.credential);
10663                 }
10664                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
10665                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
10666                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
10667                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
10668                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10669                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
10670                 }
10671                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
10672                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
10673                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
10674                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
10675                 NDR_CHECK(ndr_pull_netr_SamDatabaseID(ndr, NDR_SCALARS, &r->in.database_id));
10676                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10677                         NDR_PULL_ALLOC(ndr, r->in.sync_context);
10678                 }
10679                 _mem_save_sync_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
10680                 NDR_PULL_SET_MEM_CTX(ndr, r->in.sync_context, LIBNDR_FLAG_REF_ALLOC);
10681                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.sync_context));
10682                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sync_context_0, LIBNDR_FLAG_REF_ALLOC);
10683                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.preferredmaximumlength));
10684                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10685                 *r->out.return_authenticator = *r->in.return_authenticator;
10686                 NDR_PULL_ALLOC(ndr, r->out.sync_context);
10687                 *r->out.sync_context = *r->in.sync_context;
10688                 NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
10689                 ZERO_STRUCTP(r->out.delta_enum_array);
10690         }
10691         if (flags & NDR_OUT) {
10692                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10693                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10694                 }
10695                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
10696                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
10697                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10698                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
10699                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10700                         NDR_PULL_ALLOC(ndr, r->out.sync_context);
10701                 }
10702                 _mem_save_sync_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
10703                 NDR_PULL_SET_MEM_CTX(ndr, r->out.sync_context, LIBNDR_FLAG_REF_ALLOC);
10704                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.sync_context));
10705                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sync_context_0, LIBNDR_FLAG_REF_ALLOC);
10706                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10707                         NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
10708                 }
10709                 _mem_save_delta_enum_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
10710                 NDR_PULL_SET_MEM_CTX(ndr, r->out.delta_enum_array, LIBNDR_FLAG_REF_ALLOC);
10711                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delta_enum_array));
10712                 if (_ptr_delta_enum_array) {
10713                         NDR_PULL_ALLOC(ndr, *r->out.delta_enum_array);
10714                 } else {
10715                         *r->out.delta_enum_array = NULL;
10716                 }
10717                 if (*r->out.delta_enum_array) {
10718                         _mem_save_delta_enum_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
10719                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.delta_enum_array, 0);
10720                         NDR_CHECK(ndr_pull_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
10721                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_1, 0);
10722                 }
10723                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_0, LIBNDR_FLAG_REF_ALLOC);
10724                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
10725         }
10726         return NDR_ERR_SUCCESS;
10727 }
10728
10729 _PUBLIC_ void ndr_print_netr_DatabaseSync(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseSync *r)
10730 {
10731         ndr_print_struct(ndr, name, "netr_DatabaseSync");
10732         ndr->depth++;
10733         if (flags & NDR_SET_VALUES) {
10734                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
10735         }
10736         if (flags & NDR_IN) {
10737                 ndr_print_struct(ndr, "in", "netr_DatabaseSync");
10738                 ndr->depth++;
10739                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
10740                 ndr->depth++;
10741                 ndr_print_string(ndr, "logon_server", r->in.logon_server);
10742                 ndr->depth--;
10743                 ndr_print_ptr(ndr, "computername", r->in.computername);
10744                 ndr->depth++;
10745                 ndr_print_string(ndr, "computername", r->in.computername);
10746                 ndr->depth--;
10747                 ndr_print_ptr(ndr, "credential", r->in.credential);
10748                 ndr->depth++;
10749                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
10750                 ndr->depth--;
10751                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
10752                 ndr->depth++;
10753                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
10754                 ndr->depth--;
10755                 ndr_print_netr_SamDatabaseID(ndr, "database_id", r->in.database_id);
10756                 ndr_print_ptr(ndr, "sync_context", r->in.sync_context);
10757                 ndr->depth++;
10758                 ndr_print_uint32(ndr, "sync_context", *r->in.sync_context);
10759                 ndr->depth--;
10760                 ndr_print_uint32(ndr, "preferredmaximumlength", r->in.preferredmaximumlength);
10761                 ndr->depth--;
10762         }
10763         if (flags & NDR_OUT) {
10764                 ndr_print_struct(ndr, "out", "netr_DatabaseSync");
10765                 ndr->depth++;
10766                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
10767                 ndr->depth++;
10768                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
10769                 ndr->depth--;
10770                 ndr_print_ptr(ndr, "sync_context", r->out.sync_context);
10771                 ndr->depth++;
10772                 ndr_print_uint32(ndr, "sync_context", *r->out.sync_context);
10773                 ndr->depth--;
10774                 ndr_print_ptr(ndr, "delta_enum_array", r->out.delta_enum_array);
10775                 ndr->depth++;
10776                 ndr_print_ptr(ndr, "delta_enum_array", *r->out.delta_enum_array);
10777                 ndr->depth++;
10778                 if (*r->out.delta_enum_array) {
10779                         ndr_print_netr_DELTA_ENUM_ARRAY(ndr, "delta_enum_array", *r->out.delta_enum_array);
10780                 }
10781                 ndr->depth--;
10782                 ndr->depth--;
10783                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
10784                 ndr->depth--;
10785         }
10786         ndr->depth--;
10787 }
10788
10789 static enum ndr_err_code ndr_push_netr_AccountDeltas(struct ndr_push *ndr, int flags, const struct netr_AccountDeltas *r)
10790 {
10791         if (flags & NDR_IN) {
10792                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
10793                 if (r->in.logon_server) {
10794                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10795                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10796                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10797                         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));
10798                 }
10799                 if (r->in.computername == NULL) {
10800                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10801                 }
10802                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
10803                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10804                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
10805                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
10806                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
10807                 if (r->in.return_authenticator == NULL) {
10808                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10809                 }
10810                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
10811                 NDR_CHECK(ndr_push_netr_UAS_INFO_0(ndr, NDR_SCALARS, &r->in.uas));
10812                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
10813                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
10814                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffersize));
10815         }
10816         if (flags & NDR_OUT) {
10817                 if (r->out.return_authenticator == NULL) {
10818                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10819                 }
10820                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10821                 if (r->out.buffer == NULL) {
10822                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10823                 }
10824                 {
10825                         struct ndr_push *_ndr_buffer;
10826                         NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_buffer, 4, -1));
10827                         NDR_CHECK(ndr_push_netr_AccountBuffer(_ndr_buffer, NDR_SCALARS, r->out.buffer));
10828                         NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_buffer, 4, -1));
10829                 }
10830                 if (r->out.count_returned == NULL) {
10831                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10832                 }
10833                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count_returned));
10834                 if (r->out.total_entries == NULL) {
10835                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10836                 }
10837                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.total_entries));
10838                 if (r->out.recordid == NULL) {
10839                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10840                 }
10841                 NDR_CHECK(ndr_push_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->out.recordid));
10842                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
10843         }
10844         return NDR_ERR_SUCCESS;
10845 }
10846
10847 static enum ndr_err_code ndr_pull_netr_AccountDeltas(struct ndr_pull *ndr, int flags, struct netr_AccountDeltas *r)
10848 {
10849         uint32_t _ptr_logon_server;
10850         TALLOC_CTX *_mem_save_logon_server_0;
10851         TALLOC_CTX *_mem_save_return_authenticator_0;
10852         TALLOC_CTX *_mem_save_buffer_0;
10853         TALLOC_CTX *_mem_save_count_returned_0;
10854         TALLOC_CTX *_mem_save_total_entries_0;
10855         TALLOC_CTX *_mem_save_recordid_0;
10856         if (flags & NDR_IN) {
10857                 ZERO_STRUCT(r->out);
10858
10859                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
10860                 if (_ptr_logon_server) {
10861                         NDR_PULL_ALLOC(ndr, r->in.logon_server);
10862                 } else {
10863                         r->in.logon_server = NULL;
10864                 }
10865                 if (r->in.logon_server) {
10866                         _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
10867                         NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
10868                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
10869                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
10870                         if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
10871                                 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));
10872                         }
10873                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
10874                         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));
10875                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
10876                 }
10877                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
10878                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
10879                 if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
10880                         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));
10881                 }
10882                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
10883                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
10884                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
10885                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10886                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
10887                 }
10888                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
10889                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
10890                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
10891                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
10892                 NDR_CHECK(ndr_pull_netr_UAS_INFO_0(ndr, NDR_SCALARS, &r->in.uas));
10893                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.count));
10894                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
10895                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffersize));
10896                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10897                 *r->out.return_authenticator = *r->in.return_authenticator;
10898                 NDR_PULL_ALLOC(ndr, r->out.buffer);
10899                 ZERO_STRUCTP(r->out.buffer);
10900                 NDR_PULL_ALLOC(ndr, r->out.count_returned);
10901                 ZERO_STRUCTP(r->out.count_returned);
10902                 NDR_PULL_ALLOC(ndr, r->out.total_entries);
10903                 ZERO_STRUCTP(r->out.total_entries);
10904                 NDR_PULL_ALLOC(ndr, r->out.recordid);
10905                 ZERO_STRUCTP(r->out.recordid);
10906         }
10907         if (flags & NDR_OUT) {
10908                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10909                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10910                 }
10911                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
10912                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
10913                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10914                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
10915                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10916                         NDR_PULL_ALLOC(ndr, r->out.buffer);
10917                 }
10918                 _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
10919                 NDR_PULL_SET_MEM_CTX(ndr, r->out.buffer, LIBNDR_FLAG_REF_ALLOC);
10920                 {
10921                         struct ndr_pull *_ndr_buffer;
10922                         NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_buffer, 4, -1));
10923                         NDR_CHECK(ndr_pull_netr_AccountBuffer(_ndr_buffer, NDR_SCALARS, r->out.buffer));
10924                         NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_buffer, 4, -1));
10925                 }
10926                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, LIBNDR_FLAG_REF_ALLOC);
10927                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10928                         NDR_PULL_ALLOC(ndr, r->out.count_returned);
10929                 }
10930                 _mem_save_count_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
10931                 NDR_PULL_SET_MEM_CTX(ndr, r->out.count_returned, LIBNDR_FLAG_REF_ALLOC);
10932                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count_returned));
10933                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_returned_0, LIBNDR_FLAG_REF_ALLOC);
10934                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10935                         NDR_PULL_ALLOC(ndr, r->out.total_entries);
10936                 }
10937                 _mem_save_total_entries_0 = NDR_PULL_GET_MEM_CTX(ndr);
10938                 NDR_PULL_SET_MEM_CTX(ndr, r->out.total_entries, LIBNDR_FLAG_REF_ALLOC);
10939                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.total_entries));
10940                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_total_entries_0, LIBNDR_FLAG_REF_ALLOC);
10941                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10942                         NDR_PULL_ALLOC(ndr, r->out.recordid);
10943                 }
10944                 _mem_save_recordid_0 = NDR_PULL_GET_MEM_CTX(ndr);
10945                 NDR_PULL_SET_MEM_CTX(ndr, r->out.recordid, LIBNDR_FLAG_REF_ALLOC);
10946                 NDR_CHECK(ndr_pull_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->out.recordid));
10947                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_recordid_0, LIBNDR_FLAG_REF_ALLOC);
10948                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
10949         }
10950         return NDR_ERR_SUCCESS;
10951 }
10952
10953 _PUBLIC_ void ndr_print_netr_AccountDeltas(struct ndr_print *ndr, const char *name, int flags, const struct netr_AccountDeltas *r)
10954 {
10955         ndr_print_struct(ndr, name, "netr_AccountDeltas");
10956         ndr->depth++;
10957         if (flags & NDR_SET_VALUES) {
10958                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
10959         }
10960         if (flags & NDR_IN) {
10961                 ndr_print_struct(ndr, "in", "netr_AccountDeltas");
10962                 ndr->depth++;
10963                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
10964                 ndr->depth++;
10965                 if (r->in.logon_server) {
10966                         ndr_print_string(ndr, "logon_server", r->in.logon_server);
10967                 }
10968                 ndr->depth--;
10969                 ndr_print_ptr(ndr, "computername", r->in.computername);
10970                 ndr->depth++;
10971                 ndr_print_string(ndr, "computername", r->in.computername);
10972                 ndr->depth--;
10973                 ndr_print_netr_Authenticator(ndr, "credential", &r->in.credential);
10974                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
10975                 ndr->depth++;
10976                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
10977                 ndr->depth--;
10978                 ndr_print_netr_UAS_INFO_0(ndr, "uas", &r->in.uas);
10979                 ndr_print_uint32(ndr, "count", r->in.count);
10980                 ndr_print_uint32(ndr, "level", r->in.level);
10981                 ndr_print_uint32(ndr, "buffersize", r->in.buffersize);
10982                 ndr->depth--;
10983         }
10984         if (flags & NDR_OUT) {
10985                 ndr_print_struct(ndr, "out", "netr_AccountDeltas");
10986                 ndr->depth++;
10987                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
10988                 ndr->depth++;
10989                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
10990                 ndr->depth--;
10991                 ndr_print_ptr(ndr, "buffer", r->out.buffer);
10992                 ndr->depth++;
10993                 ndr_print_netr_AccountBuffer(ndr, "buffer", r->out.buffer);
10994                 ndr->depth--;
10995                 ndr_print_ptr(ndr, "count_returned", r->out.count_returned);
10996                 ndr->depth++;
10997                 ndr_print_uint32(ndr, "count_returned", *r->out.count_returned);
10998                 ndr->depth--;
10999                 ndr_print_ptr(ndr, "total_entries", r->out.total_entries);
11000                 ndr->depth++;
11001                 ndr_print_uint32(ndr, "total_entries", *r->out.total_entries);
11002                 ndr->depth--;
11003                 ndr_print_ptr(ndr, "recordid", r->out.recordid);
11004                 ndr->depth++;
11005                 ndr_print_netr_UAS_INFO_0(ndr, "recordid", r->out.recordid);
11006                 ndr->depth--;
11007                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
11008                 ndr->depth--;
11009         }
11010         ndr->depth--;
11011 }
11012
11013 static enum ndr_err_code ndr_push_netr_AccountSync(struct ndr_push *ndr, int flags, const struct netr_AccountSync *r)
11014 {
11015         if (flags & NDR_IN) {
11016                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
11017                 if (r->in.logon_server) {
11018                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11019                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11020                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11021                         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));
11022                 }
11023                 if (r->in.computername == NULL) {
11024                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11025                 }
11026                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
11027                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11028                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
11029                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11030                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
11031                 if (r->in.return_authenticator == NULL) {
11032                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11033                 }
11034                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
11035                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.reference));
11036                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
11037                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffersize));
11038                 if (r->in.recordid == NULL) {
11039                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11040                 }
11041                 NDR_CHECK(ndr_push_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->in.recordid));
11042         }
11043         if (flags & NDR_OUT) {
11044                 if (r->out.return_authenticator == NULL) {
11045                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11046                 }
11047                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
11048                 if (r->out.buffer == NULL) {
11049                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11050                 }
11051                 {
11052                         struct ndr_push *_ndr_buffer;
11053                         NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_buffer, 4, -1));
11054                         NDR_CHECK(ndr_push_netr_AccountBuffer(_ndr_buffer, NDR_SCALARS, r->out.buffer));
11055                         NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_buffer, 4, -1));
11056                 }
11057                 if (r->out.count_returned == NULL) {
11058                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11059                 }
11060                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count_returned));
11061                 if (r->out.total_entries == NULL) {
11062                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11063                 }
11064                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.total_entries));
11065                 if (r->out.next_reference == NULL) {
11066                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11067                 }
11068                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.next_reference));
11069                 if (r->out.recordid == NULL) {
11070                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11071                 }
11072                 NDR_CHECK(ndr_push_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->out.recordid));
11073                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
11074         }
11075         return NDR_ERR_SUCCESS;
11076 }
11077
11078 static enum ndr_err_code ndr_pull_netr_AccountSync(struct ndr_pull *ndr, int flags, struct netr_AccountSync *r)
11079 {
11080         uint32_t _ptr_logon_server;
11081         TALLOC_CTX *_mem_save_logon_server_0;
11082         TALLOC_CTX *_mem_save_return_authenticator_0;
11083         TALLOC_CTX *_mem_save_buffer_0;
11084         TALLOC_CTX *_mem_save_count_returned_0;
11085         TALLOC_CTX *_mem_save_total_entries_0;
11086         TALLOC_CTX *_mem_save_next_reference_0;
11087         TALLOC_CTX *_mem_save_recordid_0;
11088         if (flags & NDR_IN) {
11089                 ZERO_STRUCT(r->out);
11090
11091                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
11092                 if (_ptr_logon_server) {
11093                         NDR_PULL_ALLOC(ndr, r->in.logon_server);
11094                 } else {
11095                         r->in.logon_server = NULL;
11096                 }
11097                 if (r->in.logon_server) {
11098                         _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
11099                         NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
11100                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
11101                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
11102                         if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
11103                                 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));
11104                         }
11105                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
11106                         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));
11107                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
11108                 }
11109                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
11110                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
11111                 if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
11112                         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));
11113                 }
11114                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
11115                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
11116                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
11117                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11118                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
11119                 }
11120                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
11121                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
11122                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
11123                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
11124                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.reference));
11125                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
11126                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffersize));
11127                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11128                         NDR_PULL_ALLOC(ndr, r->in.recordid);
11129                 }
11130                 _mem_save_recordid_0 = NDR_PULL_GET_MEM_CTX(ndr);
11131                 NDR_PULL_SET_MEM_CTX(ndr, r->in.recordid, LIBNDR_FLAG_REF_ALLOC);
11132                 NDR_CHECK(ndr_pull_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->in.recordid));
11133                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_recordid_0, LIBNDR_FLAG_REF_ALLOC);
11134                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
11135                 *r->out.return_authenticator = *r->in.return_authenticator;
11136                 NDR_PULL_ALLOC(ndr, r->out.buffer);
11137                 ZERO_STRUCTP(r->out.buffer);
11138                 NDR_PULL_ALLOC(ndr, r->out.count_returned);
11139                 ZERO_STRUCTP(r->out.count_returned);
11140                 NDR_PULL_ALLOC(ndr, r->out.total_entries);
11141                 ZERO_STRUCTP(r->out.total_entries);
11142                 NDR_PULL_ALLOC(ndr, r->out.next_reference);
11143                 ZERO_STRUCTP(r->out.next_reference);
11144                 NDR_PULL_ALLOC(ndr, r->out.recordid);
11145                 *r->out.recordid = *r->in.recordid;
11146         }
11147         if (flags & NDR_OUT) {
11148                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11149                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
11150                 }
11151                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
11152                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
11153                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
11154                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
11155                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11156                         NDR_PULL_ALLOC(ndr, r->out.buffer);
11157                 }
11158                 _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
11159                 NDR_PULL_SET_MEM_CTX(ndr, r->out.buffer, LIBNDR_FLAG_REF_ALLOC);
11160                 {
11161                         struct ndr_pull *_ndr_buffer;
11162                         NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_buffer, 4, -1));
11163                         NDR_CHECK(ndr_pull_netr_AccountBuffer(_ndr_buffer, NDR_SCALARS, r->out.buffer));
11164                         NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_buffer, 4, -1));
11165                 }
11166                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, LIBNDR_FLAG_REF_ALLOC);
11167                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11168                         NDR_PULL_ALLOC(ndr, r->out.count_returned);
11169                 }
11170                 _mem_save_count_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
11171                 NDR_PULL_SET_MEM_CTX(ndr, r->out.count_returned, LIBNDR_FLAG_REF_ALLOC);
11172                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count_returned));
11173                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_returned_0, LIBNDR_FLAG_REF_ALLOC);
11174                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11175                         NDR_PULL_ALLOC(ndr, r->out.total_entries);
11176                 }
11177                 _mem_save_total_entries_0 = NDR_PULL_GET_MEM_CTX(ndr);
11178                 NDR_PULL_SET_MEM_CTX(ndr, r->out.total_entries, LIBNDR_FLAG_REF_ALLOC);
11179                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.total_entries));
11180                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_total_entries_0, LIBNDR_FLAG_REF_ALLOC);
11181                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11182                         NDR_PULL_ALLOC(ndr, r->out.next_reference);
11183                 }
11184                 _mem_save_next_reference_0 = NDR_PULL_GET_MEM_CTX(ndr);
11185                 NDR_PULL_SET_MEM_CTX(ndr, r->out.next_reference, LIBNDR_FLAG_REF_ALLOC);
11186                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.next_reference));
11187                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_next_reference_0, LIBNDR_FLAG_REF_ALLOC);
11188                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11189                         NDR_PULL_ALLOC(ndr, r->out.recordid);
11190                 }
11191                 _mem_save_recordid_0 = NDR_PULL_GET_MEM_CTX(ndr);
11192                 NDR_PULL_SET_MEM_CTX(ndr, r->out.recordid, LIBNDR_FLAG_REF_ALLOC);
11193                 NDR_CHECK(ndr_pull_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->out.recordid));
11194                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_recordid_0, LIBNDR_FLAG_REF_ALLOC);
11195                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
11196         }
11197         return NDR_ERR_SUCCESS;
11198 }
11199
11200 _PUBLIC_ void ndr_print_netr_AccountSync(struct ndr_print *ndr, const char *name, int flags, const struct netr_AccountSync *r)
11201 {
11202         ndr_print_struct(ndr, name, "netr_AccountSync");
11203         ndr->depth++;
11204         if (flags & NDR_SET_VALUES) {
11205                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11206         }
11207         if (flags & NDR_IN) {
11208                 ndr_print_struct(ndr, "in", "netr_AccountSync");
11209                 ndr->depth++;
11210                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
11211                 ndr->depth++;
11212                 if (r->in.logon_server) {
11213                         ndr_print_string(ndr, "logon_server", r->in.logon_server);
11214                 }
11215                 ndr->depth--;
11216                 ndr_print_ptr(ndr, "computername", r->in.computername);
11217                 ndr->depth++;
11218                 ndr_print_string(ndr, "computername", r->in.computername);
11219                 ndr->depth--;
11220                 ndr_print_netr_Authenticator(ndr, "credential", &r->in.credential);
11221                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
11222                 ndr->depth++;
11223                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
11224                 ndr->depth--;
11225                 ndr_print_uint32(ndr, "reference", r->in.reference);
11226                 ndr_print_uint32(ndr, "level", r->in.level);
11227                 ndr_print_uint32(ndr, "buffersize", r->in.buffersize);
11228                 ndr_print_ptr(ndr, "recordid", r->in.recordid);
11229                 ndr->depth++;
11230                 ndr_print_netr_UAS_INFO_0(ndr, "recordid", r->in.recordid);
11231                 ndr->depth--;
11232                 ndr->depth--;
11233         }
11234         if (flags & NDR_OUT) {
11235                 ndr_print_struct(ndr, "out", "netr_AccountSync");
11236                 ndr->depth++;
11237                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
11238                 ndr->depth++;
11239                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
11240                 ndr->depth--;
11241                 ndr_print_ptr(ndr, "buffer", r->out.buffer);
11242                 ndr->depth++;
11243                 ndr_print_netr_AccountBuffer(ndr, "buffer", r->out.buffer);
11244                 ndr->depth--;
11245                 ndr_print_ptr(ndr, "count_returned", r->out.count_returned);
11246                 ndr->depth++;
11247                 ndr_print_uint32(ndr, "count_returned", *r->out.count_returned);
11248                 ndr->depth--;
11249                 ndr_print_ptr(ndr, "total_entries", r->out.total_entries);
11250                 ndr->depth++;
11251                 ndr_print_uint32(ndr, "total_entries", *r->out.total_entries);
11252                 ndr->depth--;
11253                 ndr_print_ptr(ndr, "next_reference", r->out.next_reference);
11254                 ndr->depth++;
11255                 ndr_print_uint32(ndr, "next_reference", *r->out.next_reference);
11256                 ndr->depth--;
11257                 ndr_print_ptr(ndr, "recordid", r->out.recordid);
11258                 ndr->depth++;
11259                 ndr_print_netr_UAS_INFO_0(ndr, "recordid", r->out.recordid);
11260                 ndr->depth--;
11261                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
11262                 ndr->depth--;
11263         }
11264         ndr->depth--;
11265 }
11266
11267 static enum ndr_err_code ndr_push_netr_GetDcName(struct ndr_push *ndr, int flags, const struct netr_GetDcName *r)
11268 {
11269         if (flags & NDR_IN) {
11270                 if (r->in.logon_server == NULL) {
11271                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11272                 }
11273                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11274                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11275                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11276                 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));
11277                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domainname));
11278                 if (r->in.domainname) {
11279                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domainname, CH_UTF16)));
11280                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11281                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domainname, CH_UTF16)));
11282                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.domainname, ndr_charset_length(r->in.domainname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11283                 }
11284         }
11285         if (flags & NDR_OUT) {
11286                 if (r->out.dcname == NULL) {
11287                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11288                 }
11289                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.dcname));
11290                 if (*r->out.dcname) {
11291                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.dcname, CH_UTF16)));
11292                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11293                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.dcname, CH_UTF16)));
11294                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.dcname, ndr_charset_length(*r->out.dcname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11295                 }
11296                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
11297         }
11298         return NDR_ERR_SUCCESS;
11299 }
11300
11301 static enum ndr_err_code ndr_pull_netr_GetDcName(struct ndr_pull *ndr, int flags, struct netr_GetDcName *r)
11302 {
11303         uint32_t _ptr_domainname;
11304         uint32_t _ptr_dcname;
11305         TALLOC_CTX *_mem_save_domainname_0;
11306         TALLOC_CTX *_mem_save_dcname_0;
11307         TALLOC_CTX *_mem_save_dcname_1;
11308         if (flags & NDR_IN) {
11309                 ZERO_STRUCT(r->out);
11310
11311                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
11312                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
11313                 if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
11314                         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));
11315                 }
11316                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
11317                 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));
11318                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domainname));
11319                 if (_ptr_domainname) {
11320                         NDR_PULL_ALLOC(ndr, r->in.domainname);
11321                 } else {
11322                         r->in.domainname = NULL;
11323                 }
11324                 if (r->in.domainname) {
11325                         _mem_save_domainname_0 = NDR_PULL_GET_MEM_CTX(ndr);
11326                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domainname, 0);
11327                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domainname));
11328                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domainname));
11329                         if (ndr_get_array_length(ndr, &r->in.domainname) > ndr_get_array_size(ndr, &r->in.domainname)) {
11330                                 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));
11331                         }
11332                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domainname), sizeof(uint16_t)));
11333                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.domainname, ndr_get_array_length(ndr, &r->in.domainname), sizeof(uint16_t), CH_UTF16));
11334                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domainname_0, 0);
11335                 }
11336                 NDR_PULL_ALLOC(ndr, r->out.dcname);
11337                 ZERO_STRUCTP(r->out.dcname);
11338         }
11339         if (flags & NDR_OUT) {
11340                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11341                         NDR_PULL_ALLOC(ndr, r->out.dcname);
11342                 }
11343                 _mem_save_dcname_0 = NDR_PULL_GET_MEM_CTX(ndr);
11344                 NDR_PULL_SET_MEM_CTX(ndr, r->out.dcname, LIBNDR_FLAG_REF_ALLOC);
11345                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dcname));
11346                 if (_ptr_dcname) {
11347                         NDR_PULL_ALLOC(ndr, *r->out.dcname);
11348                 } else {
11349                         *r->out.dcname = NULL;
11350                 }
11351                 if (*r->out.dcname) {
11352                         _mem_save_dcname_1 = NDR_PULL_GET_MEM_CTX(ndr);
11353                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.dcname, 0);
11354                         NDR_CHECK(ndr_pull_array_size(ndr, r->out.dcname));
11355                         NDR_CHECK(ndr_pull_array_length(ndr, r->out.dcname));
11356                         if (ndr_get_array_length(ndr, r->out.dcname) > ndr_get_array_size(ndr, r->out.dcname)) {
11357                                 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));
11358                         }
11359                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.dcname), sizeof(uint16_t)));
11360                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.dcname, ndr_get_array_length(ndr, r->out.dcname), sizeof(uint16_t), CH_UTF16));
11361                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dcname_1, 0);
11362                 }
11363                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dcname_0, LIBNDR_FLAG_REF_ALLOC);
11364                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
11365         }
11366         return NDR_ERR_SUCCESS;
11367 }
11368
11369 _PUBLIC_ void ndr_print_netr_GetDcName(struct ndr_print *ndr, const char *name, int flags, const struct netr_GetDcName *r)
11370 {
11371         ndr_print_struct(ndr, name, "netr_GetDcName");
11372         ndr->depth++;
11373         if (flags & NDR_SET_VALUES) {
11374                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11375         }
11376         if (flags & NDR_IN) {
11377                 ndr_print_struct(ndr, "in", "netr_GetDcName");
11378                 ndr->depth++;
11379                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
11380                 ndr->depth++;
11381                 ndr_print_string(ndr, "logon_server", r->in.logon_server);
11382                 ndr->depth--;
11383                 ndr_print_ptr(ndr, "domainname", r->in.domainname);
11384                 ndr->depth++;
11385                 if (r->in.domainname) {
11386                         ndr_print_string(ndr, "domainname", r->in.domainname);
11387                 }
11388                 ndr->depth--;
11389                 ndr->depth--;
11390         }
11391         if (flags & NDR_OUT) {
11392                 ndr_print_struct(ndr, "out", "netr_GetDcName");
11393                 ndr->depth++;
11394                 ndr_print_ptr(ndr, "dcname", r->out.dcname);
11395                 ndr->depth++;
11396                 ndr_print_ptr(ndr, "dcname", *r->out.dcname);
11397                 ndr->depth++;
11398                 if (*r->out.dcname) {
11399                         ndr_print_string(ndr, "dcname", *r->out.dcname);
11400                 }
11401                 ndr->depth--;
11402                 ndr->depth--;
11403                 ndr_print_WERROR(ndr, "result", r->out.result);
11404                 ndr->depth--;
11405         }
11406         ndr->depth--;
11407 }
11408
11409 static enum ndr_err_code ndr_push_netr_LogonControl(struct ndr_push *ndr, int flags, const struct netr_LogonControl *r)
11410 {
11411         if (flags & NDR_IN) {
11412                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
11413                 if (r->in.logon_server) {
11414                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11415                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11416                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11417                         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));
11418                 }
11419                 NDR_CHECK(ndr_push_netr_LogonControlCode(ndr, NDR_SCALARS, r->in.function_code));
11420                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
11421         }
11422         if (flags & NDR_OUT) {
11423                 if (r->out.query == NULL) {
11424                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11425                 }
11426                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.query, r->in.level));
11427                 NDR_CHECK(ndr_push_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
11428                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
11429         }
11430         return NDR_ERR_SUCCESS;
11431 }
11432
11433 static enum ndr_err_code ndr_pull_netr_LogonControl(struct ndr_pull *ndr, int flags, struct netr_LogonControl *r)
11434 {
11435         uint32_t _ptr_logon_server;
11436         TALLOC_CTX *_mem_save_logon_server_0;
11437         TALLOC_CTX *_mem_save_query_0;
11438         if (flags & NDR_IN) {
11439                 ZERO_STRUCT(r->out);
11440
11441                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
11442                 if (_ptr_logon_server) {
11443                         NDR_PULL_ALLOC(ndr, r->in.logon_server);
11444                 } else {
11445                         r->in.logon_server = NULL;
11446                 }
11447                 if (r->in.logon_server) {
11448                         _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
11449                         NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
11450                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
11451                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
11452                         if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
11453                                 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));
11454                         }
11455                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
11456                         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));
11457                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
11458                 }
11459                 NDR_CHECK(ndr_pull_netr_LogonControlCode(ndr, NDR_SCALARS, &r->in.function_code));
11460                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
11461                 NDR_PULL_ALLOC(ndr, r->out.query);
11462                 ZERO_STRUCTP(r->out.query);
11463         }
11464         if (flags & NDR_OUT) {
11465                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11466                         NDR_PULL_ALLOC(ndr, r->out.query);
11467                 }
11468                 _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
11469                 NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC);
11470                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.query, r->in.level));
11471                 NDR_CHECK(ndr_pull_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
11472                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
11473                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
11474         }
11475         return NDR_ERR_SUCCESS;
11476 }
11477
11478 _PUBLIC_ void ndr_print_netr_LogonControl(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonControl *r)
11479 {
11480         ndr_print_struct(ndr, name, "netr_LogonControl");
11481         ndr->depth++;
11482         if (flags & NDR_SET_VALUES) {
11483                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11484         }
11485         if (flags & NDR_IN) {
11486                 ndr_print_struct(ndr, "in", "netr_LogonControl");
11487                 ndr->depth++;
11488                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
11489                 ndr->depth++;
11490                 if (r->in.logon_server) {
11491                         ndr_print_string(ndr, "logon_server", r->in.logon_server);
11492                 }
11493                 ndr->depth--;
11494                 ndr_print_netr_LogonControlCode(ndr, "function_code", r->in.function_code);
11495                 ndr_print_uint32(ndr, "level", r->in.level);
11496                 ndr->depth--;
11497         }
11498         if (flags & NDR_OUT) {
11499                 ndr_print_struct(ndr, "out", "netr_LogonControl");
11500                 ndr->depth++;
11501                 ndr_print_ptr(ndr, "query", r->out.query);
11502                 ndr->depth++;
11503                 ndr_print_set_switch_value(ndr, r->out.query, r->in.level);
11504                 ndr_print_netr_CONTROL_QUERY_INFORMATION(ndr, "query", r->out.query);
11505                 ndr->depth--;
11506                 ndr_print_WERROR(ndr, "result", r->out.result);
11507                 ndr->depth--;
11508         }
11509         ndr->depth--;
11510 }
11511
11512 static enum ndr_err_code ndr_push_netr_GetAnyDCName(struct ndr_push *ndr, int flags, const struct netr_GetAnyDCName *r)
11513 {
11514         if (flags & NDR_IN) {
11515                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
11516                 if (r->in.logon_server) {
11517                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11518                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11519                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11520                         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));
11521                 }
11522                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domainname));
11523                 if (r->in.domainname) {
11524                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domainname, CH_UTF16)));
11525                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11526                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domainname, CH_UTF16)));
11527                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.domainname, ndr_charset_length(r->in.domainname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11528                 }
11529         }
11530         if (flags & NDR_OUT) {
11531                 if (r->out.dcname == NULL) {
11532                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11533                 }
11534                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.dcname));
11535                 if (*r->out.dcname) {
11536                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.dcname, CH_UTF16)));
11537                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11538                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.dcname, CH_UTF16)));
11539                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.dcname, ndr_charset_length(*r->out.dcname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11540                 }
11541                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
11542         }
11543         return NDR_ERR_SUCCESS;
11544 }
11545
11546 static enum ndr_err_code ndr_pull_netr_GetAnyDCName(struct ndr_pull *ndr, int flags, struct netr_GetAnyDCName *r)
11547 {
11548         uint32_t _ptr_logon_server;
11549         uint32_t _ptr_domainname;
11550         uint32_t _ptr_dcname;
11551         TALLOC_CTX *_mem_save_logon_server_0;
11552         TALLOC_CTX *_mem_save_domainname_0;
11553         TALLOC_CTX *_mem_save_dcname_0;
11554         TALLOC_CTX *_mem_save_dcname_1;
11555         if (flags & NDR_IN) {
11556                 ZERO_STRUCT(r->out);
11557
11558                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
11559                 if (_ptr_logon_server) {
11560                         NDR_PULL_ALLOC(ndr, r->in.logon_server);
11561                 } else {
11562                         r->in.logon_server = NULL;
11563                 }
11564                 if (r->in.logon_server) {
11565                         _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
11566                         NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
11567                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
11568                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
11569                         if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
11570                                 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));
11571                         }
11572                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
11573                         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));
11574                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
11575                 }
11576                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domainname));
11577                 if (_ptr_domainname) {
11578                         NDR_PULL_ALLOC(ndr, r->in.domainname);
11579                 } else {
11580                         r->in.domainname = NULL;
11581                 }
11582                 if (r->in.domainname) {
11583                         _mem_save_domainname_0 = NDR_PULL_GET_MEM_CTX(ndr);
11584                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domainname, 0);
11585                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domainname));
11586                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domainname));
11587                         if (ndr_get_array_length(ndr, &r->in.domainname) > ndr_get_array_size(ndr, &r->in.domainname)) {
11588                                 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));
11589                         }
11590                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domainname), sizeof(uint16_t)));
11591                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.domainname, ndr_get_array_length(ndr, &r->in.domainname), sizeof(uint16_t), CH_UTF16));
11592                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domainname_0, 0);
11593                 }
11594                 NDR_PULL_ALLOC(ndr, r->out.dcname);
11595                 ZERO_STRUCTP(r->out.dcname);
11596         }
11597         if (flags & NDR_OUT) {
11598                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11599                         NDR_PULL_ALLOC(ndr, r->out.dcname);
11600                 }
11601                 _mem_save_dcname_0 = NDR_PULL_GET_MEM_CTX(ndr);
11602                 NDR_PULL_SET_MEM_CTX(ndr, r->out.dcname, LIBNDR_FLAG_REF_ALLOC);
11603                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dcname));
11604                 if (_ptr_dcname) {
11605                         NDR_PULL_ALLOC(ndr, *r->out.dcname);
11606                 } else {
11607                         *r->out.dcname = NULL;
11608                 }
11609                 if (*r->out.dcname) {
11610                         _mem_save_dcname_1 = NDR_PULL_GET_MEM_CTX(ndr);
11611                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.dcname, 0);
11612                         NDR_CHECK(ndr_pull_array_size(ndr, r->out.dcname));
11613                         NDR_CHECK(ndr_pull_array_length(ndr, r->out.dcname));
11614                         if (ndr_get_array_length(ndr, r->out.dcname) > ndr_get_array_size(ndr, r->out.dcname)) {
11615                                 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));
11616                         }
11617                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.dcname), sizeof(uint16_t)));
11618                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.dcname, ndr_get_array_length(ndr, r->out.dcname), sizeof(uint16_t), CH_UTF16));
11619                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dcname_1, 0);
11620                 }
11621                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dcname_0, LIBNDR_FLAG_REF_ALLOC);
11622                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
11623         }
11624         return NDR_ERR_SUCCESS;
11625 }
11626
11627 _PUBLIC_ void ndr_print_netr_GetAnyDCName(struct ndr_print *ndr, const char *name, int flags, const struct netr_GetAnyDCName *r)
11628 {
11629         ndr_print_struct(ndr, name, "netr_GetAnyDCName");
11630         ndr->depth++;
11631         if (flags & NDR_SET_VALUES) {
11632                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11633         }
11634         if (flags & NDR_IN) {
11635                 ndr_print_struct(ndr, "in", "netr_GetAnyDCName");
11636                 ndr->depth++;
11637                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
11638                 ndr->depth++;
11639                 if (r->in.logon_server) {
11640                         ndr_print_string(ndr, "logon_server", r->in.logon_server);
11641                 }
11642                 ndr->depth--;
11643                 ndr_print_ptr(ndr, "domainname", r->in.domainname);
11644                 ndr->depth++;
11645                 if (r->in.domainname) {
11646                         ndr_print_string(ndr, "domainname", r->in.domainname);
11647                 }
11648                 ndr->depth--;
11649                 ndr->depth--;
11650         }
11651         if (flags & NDR_OUT) {
11652                 ndr_print_struct(ndr, "out", "netr_GetAnyDCName");
11653                 ndr->depth++;
11654                 ndr_print_ptr(ndr, "dcname", r->out.dcname);
11655                 ndr->depth++;
11656                 ndr_print_ptr(ndr, "dcname", *r->out.dcname);
11657                 ndr->depth++;
11658                 if (*r->out.dcname) {
11659                         ndr_print_string(ndr, "dcname", *r->out.dcname);
11660                 }
11661                 ndr->depth--;
11662                 ndr->depth--;
11663                 ndr_print_WERROR(ndr, "result", r->out.result);
11664                 ndr->depth--;
11665         }
11666         ndr->depth--;
11667 }
11668
11669 static enum ndr_err_code ndr_push_netr_LogonControl2(struct ndr_push *ndr, int flags, const struct netr_LogonControl2 *r)
11670 {
11671         if (flags & NDR_IN) {
11672                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
11673                 if (r->in.logon_server) {
11674                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11675                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11676                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11677                         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));
11678                 }
11679                 NDR_CHECK(ndr_push_netr_LogonControlCode(ndr, NDR_SCALARS, r->in.function_code));
11680                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
11681                 if (r->in.data == NULL) {
11682                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11683                 }
11684                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.data, r->in.function_code));
11685                 NDR_CHECK(ndr_push_netr_CONTROL_DATA_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.data));
11686         }
11687         if (flags & NDR_OUT) {
11688                 if (r->out.query == NULL) {
11689                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11690                 }
11691                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.query, r->in.level));
11692                 NDR_CHECK(ndr_push_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
11693                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
11694         }
11695         return NDR_ERR_SUCCESS;
11696 }
11697
11698 static enum ndr_err_code ndr_pull_netr_LogonControl2(struct ndr_pull *ndr, int flags, struct netr_LogonControl2 *r)
11699 {
11700         uint32_t _ptr_logon_server;
11701         TALLOC_CTX *_mem_save_logon_server_0;
11702         TALLOC_CTX *_mem_save_data_0;
11703         TALLOC_CTX *_mem_save_query_0;
11704         if (flags & NDR_IN) {
11705                 ZERO_STRUCT(r->out);
11706
11707                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
11708                 if (_ptr_logon_server) {
11709                         NDR_PULL_ALLOC(ndr, r->in.logon_server);
11710                 } else {
11711                         r->in.logon_server = NULL;
11712                 }
11713                 if (r->in.logon_server) {
11714                         _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
11715                         NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
11716                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
11717                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
11718                         if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
11719                                 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));
11720                         }
11721                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
11722                         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));
11723                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
11724                 }
11725                 NDR_CHECK(ndr_pull_netr_LogonControlCode(ndr, NDR_SCALARS, &r->in.function_code));
11726                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
11727                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11728                         NDR_PULL_ALLOC(ndr, r->in.data);
11729                 }
11730                 _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
11731                 NDR_PULL_SET_MEM_CTX(ndr, r->in.data, LIBNDR_FLAG_REF_ALLOC);
11732                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.data, r->in.function_code));
11733                 NDR_CHECK(ndr_pull_netr_CONTROL_DATA_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.data));
11734                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, LIBNDR_FLAG_REF_ALLOC);
11735                 NDR_PULL_ALLOC(ndr, r->out.query);
11736                 ZERO_STRUCTP(r->out.query);
11737         }
11738         if (flags & NDR_OUT) {
11739                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11740                         NDR_PULL_ALLOC(ndr, r->out.query);
11741                 }
11742                 _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
11743                 NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC);
11744                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.query, r->in.level));
11745                 NDR_CHECK(ndr_pull_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
11746                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
11747                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
11748         }
11749         return NDR_ERR_SUCCESS;
11750 }
11751
11752 _PUBLIC_ void ndr_print_netr_LogonControl2(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonControl2 *r)
11753 {
11754         ndr_print_struct(ndr, name, "netr_LogonControl2");
11755         ndr->depth++;
11756         if (flags & NDR_SET_VALUES) {
11757                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11758         }
11759         if (flags & NDR_IN) {
11760                 ndr_print_struct(ndr, "in", "netr_LogonControl2");
11761                 ndr->depth++;
11762                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
11763                 ndr->depth++;
11764                 if (r->in.logon_server) {
11765                         ndr_print_string(ndr, "logon_server", r->in.logon_server);
11766                 }
11767                 ndr->depth--;
11768                 ndr_print_netr_LogonControlCode(ndr, "function_code", r->in.function_code);
11769                 ndr_print_uint32(ndr, "level", r->in.level);
11770                 ndr_print_ptr(ndr, "data", r->in.data);
11771                 ndr->depth++;
11772                 ndr_print_set_switch_value(ndr, r->in.data, r->in.function_code);
11773                 ndr_print_netr_CONTROL_DATA_INFORMATION(ndr, "data", r->in.data);
11774                 ndr->depth--;
11775                 ndr->depth--;
11776         }
11777         if (flags & NDR_OUT) {
11778                 ndr_print_struct(ndr, "out", "netr_LogonControl2");
11779                 ndr->depth++;
11780                 ndr_print_ptr(ndr, "query", r->out.query);
11781                 ndr->depth++;
11782                 ndr_print_set_switch_value(ndr, r->out.query, r->in.level);
11783                 ndr_print_netr_CONTROL_QUERY_INFORMATION(ndr, "query", r->out.query);
11784                 ndr->depth--;
11785                 ndr_print_WERROR(ndr, "result", r->out.result);
11786                 ndr->depth--;
11787         }
11788         ndr->depth--;
11789 }
11790
11791 static enum ndr_err_code ndr_push_netr_ServerAuthenticate2(struct ndr_push *ndr, int flags, const struct netr_ServerAuthenticate2 *r)
11792 {
11793         if (flags & NDR_IN) {
11794                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
11795                 if (r->in.server_name) {
11796                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
11797                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11798                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
11799                         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));
11800                 }
11801                 if (r->in.account_name == NULL) {
11802                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11803                 }
11804                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
11805                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11806                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
11807                 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));
11808                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
11809                 if (r->in.computer_name == NULL) {
11810                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11811                 }
11812                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
11813                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11814                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
11815                 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));
11816                 if (r->in.credentials == NULL) {
11817                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11818                 }
11819                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
11820                 if (r->in.negotiate_flags == NULL) {
11821                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11822                 }
11823                 NDR_CHECK(ndr_push_netr_NegotiateFlags(ndr, NDR_SCALARS, *r->in.negotiate_flags));
11824         }
11825         if (flags & NDR_OUT) {
11826                 if (r->out.return_credentials == NULL) {
11827                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11828                 }
11829                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
11830                 if (r->out.negotiate_flags == NULL) {
11831                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11832                 }
11833                 NDR_CHECK(ndr_push_netr_NegotiateFlags(ndr, NDR_SCALARS, *r->out.negotiate_flags));
11834                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
11835         }
11836         return NDR_ERR_SUCCESS;
11837 }
11838
11839 static enum ndr_err_code ndr_pull_netr_ServerAuthenticate2(struct ndr_pull *ndr, int flags, struct netr_ServerAuthenticate2 *r)
11840 {
11841         uint32_t _ptr_server_name;
11842         TALLOC_CTX *_mem_save_server_name_0;
11843         TALLOC_CTX *_mem_save_credentials_0;
11844         TALLOC_CTX *_mem_save_return_credentials_0;
11845         TALLOC_CTX *_mem_save_negotiate_flags_0;
11846         if (flags & NDR_IN) {
11847                 ZERO_STRUCT(r->out);
11848
11849                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
11850                 if (_ptr_server_name) {
11851                         NDR_PULL_ALLOC(ndr, r->in.server_name);
11852                 } else {
11853                         r->in.server_name = NULL;
11854                 }
11855                 if (r->in.server_name) {
11856                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
11857                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
11858                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
11859                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
11860                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
11861                                 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));
11862                         }
11863                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
11864                         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));
11865                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
11866                 }
11867                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
11868                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
11869                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
11870                         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));
11871                 }
11872                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
11873                 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));
11874                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
11875                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
11876                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
11877                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
11878                         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));
11879                 }
11880                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
11881                 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));
11882                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11883                         NDR_PULL_ALLOC(ndr, r->in.credentials);
11884                 }
11885                 _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
11886                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credentials, LIBNDR_FLAG_REF_ALLOC);
11887                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
11888                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
11889                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11890                         NDR_PULL_ALLOC(ndr, r->in.negotiate_flags);
11891                 }
11892                 _mem_save_negotiate_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
11893                 NDR_PULL_SET_MEM_CTX(ndr, r->in.negotiate_flags, LIBNDR_FLAG_REF_ALLOC);
11894                 NDR_CHECK(ndr_pull_netr_NegotiateFlags(ndr, NDR_SCALARS, r->in.negotiate_flags));
11895                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_negotiate_flags_0, LIBNDR_FLAG_REF_ALLOC);
11896                 NDR_PULL_ALLOC(ndr, r->out.return_credentials);
11897                 ZERO_STRUCTP(r->out.return_credentials);
11898                 NDR_PULL_ALLOC(ndr, r->out.negotiate_flags);
11899                 *r->out.negotiate_flags = *r->in.negotiate_flags;
11900         }
11901         if (flags & NDR_OUT) {
11902                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11903                         NDR_PULL_ALLOC(ndr, r->out.return_credentials);
11904                 }
11905                 _mem_save_return_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
11906                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_credentials, LIBNDR_FLAG_REF_ALLOC);
11907                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
11908                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_credentials_0, LIBNDR_FLAG_REF_ALLOC);
11909                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11910                         NDR_PULL_ALLOC(ndr, r->out.negotiate_flags);
11911                 }
11912                 _mem_save_negotiate_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
11913                 NDR_PULL_SET_MEM_CTX(ndr, r->out.negotiate_flags, LIBNDR_FLAG_REF_ALLOC);
11914                 NDR_CHECK(ndr_pull_netr_NegotiateFlags(ndr, NDR_SCALARS, r->out.negotiate_flags));
11915                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_negotiate_flags_0, LIBNDR_FLAG_REF_ALLOC);
11916                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
11917         }
11918         return NDR_ERR_SUCCESS;
11919 }
11920
11921 _PUBLIC_ void ndr_print_netr_ServerAuthenticate2(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerAuthenticate2 *r)
11922 {
11923         ndr_print_struct(ndr, name, "netr_ServerAuthenticate2");
11924         ndr->depth++;
11925         if (flags & NDR_SET_VALUES) {
11926                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11927         }
11928         if (flags & NDR_IN) {
11929                 ndr_print_struct(ndr, "in", "netr_ServerAuthenticate2");
11930                 ndr->depth++;
11931                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
11932                 ndr->depth++;
11933                 if (r->in.server_name) {
11934                         ndr_print_string(ndr, "server_name", r->in.server_name);
11935                 }
11936                 ndr->depth--;
11937                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
11938                 ndr->depth++;
11939                 ndr_print_string(ndr, "account_name", r->in.account_name);
11940                 ndr->depth--;
11941                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
11942                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
11943                 ndr->depth++;
11944                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
11945                 ndr->depth--;
11946                 ndr_print_ptr(ndr, "credentials", r->in.credentials);
11947                 ndr->depth++;
11948                 ndr_print_netr_Credential(ndr, "credentials", r->in.credentials);
11949                 ndr->depth--;
11950                 ndr_print_ptr(ndr, "negotiate_flags", r->in.negotiate_flags);
11951                 ndr->depth++;
11952                 ndr_print_netr_NegotiateFlags(ndr, "negotiate_flags", *r->in.negotiate_flags);
11953                 ndr->depth--;
11954                 ndr->depth--;
11955         }
11956         if (flags & NDR_OUT) {
11957                 ndr_print_struct(ndr, "out", "netr_ServerAuthenticate2");
11958                 ndr->depth++;
11959                 ndr_print_ptr(ndr, "return_credentials", r->out.return_credentials);
11960                 ndr->depth++;
11961                 ndr_print_netr_Credential(ndr, "return_credentials", r->out.return_credentials);
11962                 ndr->depth--;
11963                 ndr_print_ptr(ndr, "negotiate_flags", r->out.negotiate_flags);
11964                 ndr->depth++;
11965                 ndr_print_netr_NegotiateFlags(ndr, "negotiate_flags", *r->out.negotiate_flags);
11966                 ndr->depth--;
11967                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
11968                 ndr->depth--;
11969         }
11970         ndr->depth--;
11971 }
11972
11973 static enum ndr_err_code ndr_push_netr_DatabaseSync2(struct ndr_push *ndr, int flags, const struct netr_DatabaseSync2 *r)
11974 {
11975         if (flags & NDR_IN) {
11976                 if (r->in.logon_server == NULL) {
11977                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11978                 }
11979                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11980                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11981                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11982                 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));
11983                 if (r->in.computername == NULL) {
11984                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11985                 }
11986                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
11987                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11988                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
11989                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11990                 if (r->in.credential == NULL) {
11991                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11992                 }
11993                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
11994                 if (r->in.return_authenticator == NULL) {
11995                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11996                 }
11997                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
11998                 NDR_CHECK(ndr_push_netr_SamDatabaseID(ndr, NDR_SCALARS, r->in.database_id));
11999                 NDR_CHECK(ndr_push_SyncStateEnum(ndr, NDR_SCALARS, r->in.restart_state));
12000                 if (r->in.sync_context == NULL) {
12001                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12002                 }
12003                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.sync_context));
12004                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.preferredmaximumlength));
12005         }
12006         if (flags & NDR_OUT) {
12007                 if (r->out.return_authenticator == NULL) {
12008                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12009                 }
12010                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
12011                 if (r->out.sync_context == NULL) {
12012                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12013                 }
12014                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.sync_context));
12015                 if (r->out.delta_enum_array == NULL) {
12016                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12017                 }
12018                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.delta_enum_array));
12019                 if (*r->out.delta_enum_array) {
12020                         NDR_CHECK(ndr_push_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
12021                 }
12022                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
12023         }
12024         return NDR_ERR_SUCCESS;
12025 }
12026
12027 static enum ndr_err_code ndr_pull_netr_DatabaseSync2(struct ndr_pull *ndr, int flags, struct netr_DatabaseSync2 *r)
12028 {
12029         uint32_t _ptr_delta_enum_array;
12030         TALLOC_CTX *_mem_save_credential_0;
12031         TALLOC_CTX *_mem_save_return_authenticator_0;
12032         TALLOC_CTX *_mem_save_sync_context_0;
12033         TALLOC_CTX *_mem_save_delta_enum_array_0;
12034         TALLOC_CTX *_mem_save_delta_enum_array_1;
12035         if (flags & NDR_IN) {
12036                 ZERO_STRUCT(r->out);
12037
12038                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
12039                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
12040                 if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
12041                         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));
12042                 }
12043                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
12044                 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));
12045                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
12046                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
12047                 if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
12048                         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));
12049                 }
12050                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
12051                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
12052                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12053                         NDR_PULL_ALLOC(ndr, r->in.credential);
12054                 }
12055                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
12056                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
12057                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
12058                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
12059                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12060                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
12061                 }
12062                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
12063                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
12064                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
12065                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
12066                 NDR_CHECK(ndr_pull_netr_SamDatabaseID(ndr, NDR_SCALARS, &r->in.database_id));
12067                 NDR_CHECK(ndr_pull_SyncStateEnum(ndr, NDR_SCALARS, &r->in.restart_state));
12068                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12069                         NDR_PULL_ALLOC(ndr, r->in.sync_context);
12070                 }
12071                 _mem_save_sync_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
12072                 NDR_PULL_SET_MEM_CTX(ndr, r->in.sync_context, LIBNDR_FLAG_REF_ALLOC);
12073                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.sync_context));
12074                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sync_context_0, LIBNDR_FLAG_REF_ALLOC);
12075                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.preferredmaximumlength));
12076                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
12077                 *r->out.return_authenticator = *r->in.return_authenticator;
12078                 NDR_PULL_ALLOC(ndr, r->out.sync_context);
12079                 *r->out.sync_context = *r->in.sync_context;
12080                 NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
12081                 ZERO_STRUCTP(r->out.delta_enum_array);
12082         }
12083         if (flags & NDR_OUT) {
12084                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12085                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
12086                 }
12087                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
12088                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
12089                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
12090                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
12091                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12092                         NDR_PULL_ALLOC(ndr, r->out.sync_context);
12093                 }
12094                 _mem_save_sync_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
12095                 NDR_PULL_SET_MEM_CTX(ndr, r->out.sync_context, LIBNDR_FLAG_REF_ALLOC);
12096                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.sync_context));
12097                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sync_context_0, LIBNDR_FLAG_REF_ALLOC);
12098                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12099                         NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
12100                 }
12101                 _mem_save_delta_enum_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
12102                 NDR_PULL_SET_MEM_CTX(ndr, r->out.delta_enum_array, LIBNDR_FLAG_REF_ALLOC);
12103                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delta_enum_array));
12104                 if (_ptr_delta_enum_array) {
12105                         NDR_PULL_ALLOC(ndr, *r->out.delta_enum_array);
12106                 } else {
12107                         *r->out.delta_enum_array = NULL;
12108                 }
12109                 if (*r->out.delta_enum_array) {
12110                         _mem_save_delta_enum_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
12111                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.delta_enum_array, 0);
12112                         NDR_CHECK(ndr_pull_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
12113                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_1, 0);
12114                 }
12115                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_0, LIBNDR_FLAG_REF_ALLOC);
12116                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
12117         }
12118         return NDR_ERR_SUCCESS;
12119 }
12120
12121 _PUBLIC_ void ndr_print_netr_DatabaseSync2(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseSync2 *r)
12122 {
12123         ndr_print_struct(ndr, name, "netr_DatabaseSync2");
12124         ndr->depth++;
12125         if (flags & NDR_SET_VALUES) {
12126                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12127         }
12128         if (flags & NDR_IN) {
12129                 ndr_print_struct(ndr, "in", "netr_DatabaseSync2");
12130                 ndr->depth++;
12131                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
12132                 ndr->depth++;
12133                 ndr_print_string(ndr, "logon_server", r->in.logon_server);
12134                 ndr->depth--;
12135                 ndr_print_ptr(ndr, "computername", r->in.computername);
12136                 ndr->depth++;
12137                 ndr_print_string(ndr, "computername", r->in.computername);
12138                 ndr->depth--;
12139                 ndr_print_ptr(ndr, "credential", r->in.credential);
12140                 ndr->depth++;
12141                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
12142                 ndr->depth--;
12143                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
12144                 ndr->depth++;
12145                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
12146                 ndr->depth--;
12147                 ndr_print_netr_SamDatabaseID(ndr, "database_id", r->in.database_id);
12148                 ndr_print_SyncStateEnum(ndr, "restart_state", r->in.restart_state);
12149                 ndr_print_ptr(ndr, "sync_context", r->in.sync_context);
12150                 ndr->depth++;
12151                 ndr_print_uint32(ndr, "sync_context", *r->in.sync_context);
12152                 ndr->depth--;
12153                 ndr_print_uint32(ndr, "preferredmaximumlength", r->in.preferredmaximumlength);
12154                 ndr->depth--;
12155         }
12156         if (flags & NDR_OUT) {
12157                 ndr_print_struct(ndr, "out", "netr_DatabaseSync2");
12158                 ndr->depth++;
12159                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
12160                 ndr->depth++;
12161                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
12162                 ndr->depth--;
12163                 ndr_print_ptr(ndr, "sync_context", r->out.sync_context);
12164                 ndr->depth++;
12165                 ndr_print_uint32(ndr, "sync_context", *r->out.sync_context);
12166                 ndr->depth--;
12167                 ndr_print_ptr(ndr, "delta_enum_array", r->out.delta_enum_array);
12168                 ndr->depth++;
12169                 ndr_print_ptr(ndr, "delta_enum_array", *r->out.delta_enum_array);
12170                 ndr->depth++;
12171                 if (*r->out.delta_enum_array) {
12172                         ndr_print_netr_DELTA_ENUM_ARRAY(ndr, "delta_enum_array", *r->out.delta_enum_array);
12173                 }
12174                 ndr->depth--;
12175                 ndr->depth--;
12176                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
12177                 ndr->depth--;
12178         }
12179         ndr->depth--;
12180 }
12181
12182 static enum ndr_err_code ndr_push_netr_DatabaseRedo(struct ndr_push *ndr, int flags, const struct netr_DatabaseRedo *r)
12183 {
12184         if (flags & NDR_IN) {
12185                 if (r->in.logon_server == NULL) {
12186                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12187                 }
12188                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
12189                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12190                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
12191                 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));
12192                 if (r->in.computername == NULL) {
12193                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12194                 }
12195                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
12196                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12197                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
12198                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
12199                 if (r->in.credential == NULL) {
12200                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12201                 }
12202                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
12203                 if (r->in.return_authenticator == NULL) {
12204                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12205                 }
12206                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
12207                 {
12208                         struct ndr_push *_ndr_change_log_entry;
12209                         NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_change_log_entry, 4, ndr_size_netr_ChangeLogEntry(&r->in.change_log_entry, ndr->iconv_convenience, ndr->flags)));
12210                         NDR_CHECK(ndr_push_netr_ChangeLogEntry(_ndr_change_log_entry, NDR_SCALARS|NDR_BUFFERS, &r->in.change_log_entry));
12211                         NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_change_log_entry, 4, ndr_size_netr_ChangeLogEntry(&r->in.change_log_entry, ndr->iconv_convenience, ndr->flags)));
12212                 }
12213                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_netr_ChangeLogEntry(&r->in.change_log_entry, ndr->iconv_convenience, ndr->flags)));
12214         }
12215         if (flags & NDR_OUT) {
12216                 if (r->out.return_authenticator == NULL) {
12217                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12218                 }
12219                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
12220                 if (r->out.delta_enum_array == NULL) {
12221                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12222                 }
12223                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.delta_enum_array));
12224                 if (*r->out.delta_enum_array) {
12225                         NDR_CHECK(ndr_push_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
12226                 }
12227                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
12228         }
12229         return NDR_ERR_SUCCESS;
12230 }
12231
12232 static enum ndr_err_code ndr_pull_netr_DatabaseRedo(struct ndr_pull *ndr, int flags, struct netr_DatabaseRedo *r)
12233 {
12234         uint32_t _ptr_delta_enum_array;
12235         TALLOC_CTX *_mem_save_credential_0;
12236         TALLOC_CTX *_mem_save_return_authenticator_0;
12237         TALLOC_CTX *_mem_save_delta_enum_array_0;
12238         TALLOC_CTX *_mem_save_delta_enum_array_1;
12239         if (flags & NDR_IN) {
12240                 ZERO_STRUCT(r->out);
12241
12242                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
12243                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
12244                 if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
12245                         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));
12246                 }
12247                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
12248                 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));
12249                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
12250                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
12251                 if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
12252                         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));
12253                 }
12254                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
12255                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
12256                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12257                         NDR_PULL_ALLOC(ndr, r->in.credential);
12258                 }
12259                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
12260                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
12261                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
12262                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
12263                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12264                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
12265                 }
12266                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
12267                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
12268                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
12269                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
12270                 {
12271                         struct ndr_pull *_ndr_change_log_entry;
12272                         NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_change_log_entry, 4, r->in.change_log_entry_size));
12273                         NDR_CHECK(ndr_pull_netr_ChangeLogEntry(_ndr_change_log_entry, NDR_SCALARS|NDR_BUFFERS, &r->in.change_log_entry));
12274                         NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_change_log_entry, 4, r->in.change_log_entry_size));
12275                 }
12276                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.change_log_entry_size));
12277                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
12278                 *r->out.return_authenticator = *r->in.return_authenticator;
12279                 NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
12280                 ZERO_STRUCTP(r->out.delta_enum_array);
12281         }
12282         if (flags & NDR_OUT) {
12283                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12284                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
12285                 }
12286                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
12287                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
12288                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
12289                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
12290                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12291                         NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
12292                 }
12293                 _mem_save_delta_enum_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
12294                 NDR_PULL_SET_MEM_CTX(ndr, r->out.delta_enum_array, LIBNDR_FLAG_REF_ALLOC);
12295                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delta_enum_array));
12296                 if (_ptr_delta_enum_array) {
12297                         NDR_PULL_ALLOC(ndr, *r->out.delta_enum_array);
12298                 } else {
12299                         *r->out.delta_enum_array = NULL;
12300                 }
12301                 if (*r->out.delta_enum_array) {
12302                         _mem_save_delta_enum_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
12303                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.delta_enum_array, 0);
12304                         NDR_CHECK(ndr_pull_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
12305                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_1, 0);
12306                 }
12307                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_0, LIBNDR_FLAG_REF_ALLOC);
12308                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
12309         }
12310         return NDR_ERR_SUCCESS;
12311 }
12312
12313 _PUBLIC_ void ndr_print_netr_DatabaseRedo(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseRedo *r)
12314 {
12315         ndr_print_struct(ndr, name, "netr_DatabaseRedo");
12316         ndr->depth++;
12317         if (flags & NDR_SET_VALUES) {
12318                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12319         }
12320         if (flags & NDR_IN) {
12321                 ndr_print_struct(ndr, "in", "netr_DatabaseRedo");
12322                 ndr->depth++;
12323                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
12324                 ndr->depth++;
12325                 ndr_print_string(ndr, "logon_server", r->in.logon_server);
12326                 ndr->depth--;
12327                 ndr_print_ptr(ndr, "computername", r->in.computername);
12328                 ndr->depth++;
12329                 ndr_print_string(ndr, "computername", r->in.computername);
12330                 ndr->depth--;
12331                 ndr_print_ptr(ndr, "credential", r->in.credential);
12332                 ndr->depth++;
12333                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
12334                 ndr->depth--;
12335                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
12336                 ndr->depth++;
12337                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
12338                 ndr->depth--;
12339                 ndr_print_netr_ChangeLogEntry(ndr, "change_log_entry", &r->in.change_log_entry);
12340                 ndr_print_uint32(ndr, "change_log_entry_size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_netr_ChangeLogEntry(&r->in.change_log_entry, ndr->iconv_convenience, ndr->flags):r->in.change_log_entry_size);
12341                 ndr->depth--;
12342         }
12343         if (flags & NDR_OUT) {
12344                 ndr_print_struct(ndr, "out", "netr_DatabaseRedo");
12345                 ndr->depth++;
12346                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
12347                 ndr->depth++;
12348                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
12349                 ndr->depth--;
12350                 ndr_print_ptr(ndr, "delta_enum_array", r->out.delta_enum_array);
12351                 ndr->depth++;
12352                 ndr_print_ptr(ndr, "delta_enum_array", *r->out.delta_enum_array);
12353                 ndr->depth++;
12354                 if (*r->out.delta_enum_array) {
12355                         ndr_print_netr_DELTA_ENUM_ARRAY(ndr, "delta_enum_array", *r->out.delta_enum_array);
12356                 }
12357                 ndr->depth--;
12358                 ndr->depth--;
12359                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
12360                 ndr->depth--;
12361         }
12362         ndr->depth--;
12363 }
12364
12365 static enum ndr_err_code ndr_push_netr_LogonControl2Ex(struct ndr_push *ndr, int flags, const struct netr_LogonControl2Ex *r)
12366 {
12367         if (flags & NDR_IN) {
12368                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
12369                 if (r->in.logon_server) {
12370                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
12371                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12372                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
12373                         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));
12374                 }
12375                 NDR_CHECK(ndr_push_netr_LogonControlCode(ndr, NDR_SCALARS, r->in.function_code));
12376                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
12377                 if (r->in.data == NULL) {
12378                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12379                 }
12380                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.data, r->in.function_code));
12381                 NDR_CHECK(ndr_push_netr_CONTROL_DATA_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.data));
12382         }
12383         if (flags & NDR_OUT) {
12384                 if (r->out.query == NULL) {
12385                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12386                 }
12387                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.query, r->in.level));
12388                 NDR_CHECK(ndr_push_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
12389                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
12390         }
12391         return NDR_ERR_SUCCESS;
12392 }
12393
12394 static enum ndr_err_code ndr_pull_netr_LogonControl2Ex(struct ndr_pull *ndr, int flags, struct netr_LogonControl2Ex *r)
12395 {
12396         uint32_t _ptr_logon_server;
12397         TALLOC_CTX *_mem_save_logon_server_0;
12398         TALLOC_CTX *_mem_save_data_0;
12399         TALLOC_CTX *_mem_save_query_0;
12400         if (flags & NDR_IN) {
12401                 ZERO_STRUCT(r->out);
12402
12403                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
12404                 if (_ptr_logon_server) {
12405                         NDR_PULL_ALLOC(ndr, r->in.logon_server);
12406                 } else {
12407                         r->in.logon_server = NULL;
12408                 }
12409                 if (r->in.logon_server) {
12410                         _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
12411                         NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
12412                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
12413                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
12414                         if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
12415                                 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));
12416                         }
12417                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
12418                         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));
12419                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
12420                 }
12421                 NDR_CHECK(ndr_pull_netr_LogonControlCode(ndr, NDR_SCALARS, &r->in.function_code));
12422                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
12423                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12424                         NDR_PULL_ALLOC(ndr, r->in.data);
12425                 }
12426                 _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
12427                 NDR_PULL_SET_MEM_CTX(ndr, r->in.data, LIBNDR_FLAG_REF_ALLOC);
12428                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.data, r->in.function_code));
12429                 NDR_CHECK(ndr_pull_netr_CONTROL_DATA_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.data));
12430                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, LIBNDR_FLAG_REF_ALLOC);
12431                 NDR_PULL_ALLOC(ndr, r->out.query);
12432                 ZERO_STRUCTP(r->out.query);
12433         }
12434         if (flags & NDR_OUT) {
12435                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12436                         NDR_PULL_ALLOC(ndr, r->out.query);
12437                 }
12438                 _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
12439                 NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC);
12440                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.query, r->in.level));
12441                 NDR_CHECK(ndr_pull_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
12442                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
12443                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
12444         }
12445         return NDR_ERR_SUCCESS;
12446 }
12447
12448 _PUBLIC_ void ndr_print_netr_LogonControl2Ex(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonControl2Ex *r)
12449 {
12450         ndr_print_struct(ndr, name, "netr_LogonControl2Ex");
12451         ndr->depth++;
12452         if (flags & NDR_SET_VALUES) {
12453                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12454         }
12455         if (flags & NDR_IN) {
12456                 ndr_print_struct(ndr, "in", "netr_LogonControl2Ex");
12457                 ndr->depth++;
12458                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
12459                 ndr->depth++;
12460                 if (r->in.logon_server) {
12461                         ndr_print_string(ndr, "logon_server", r->in.logon_server);
12462                 }
12463                 ndr->depth--;
12464                 ndr_print_netr_LogonControlCode(ndr, "function_code", r->in.function_code);
12465                 ndr_print_uint32(ndr, "level", r->in.level);
12466                 ndr_print_ptr(ndr, "data", r->in.data);
12467                 ndr->depth++;
12468                 ndr_print_set_switch_value(ndr, r->in.data, r->in.function_code);
12469                 ndr_print_netr_CONTROL_DATA_INFORMATION(ndr, "data", r->in.data);
12470                 ndr->depth--;
12471                 ndr->depth--;
12472         }
12473         if (flags & NDR_OUT) {
12474                 ndr_print_struct(ndr, "out", "netr_LogonControl2Ex");
12475                 ndr->depth++;
12476                 ndr_print_ptr(ndr, "query", r->out.query);
12477                 ndr->depth++;
12478                 ndr_print_set_switch_value(ndr, r->out.query, r->in.level);
12479                 ndr_print_netr_CONTROL_QUERY_INFORMATION(ndr, "query", r->out.query);
12480                 ndr->depth--;
12481                 ndr_print_WERROR(ndr, "result", r->out.result);
12482                 ndr->depth--;
12483         }
12484         ndr->depth--;
12485 }
12486
12487 static enum ndr_err_code ndr_push_netr_NetrEnumerateTrustedDomains(struct ndr_push *ndr, int flags, const struct netr_NetrEnumerateTrustedDomains *r)
12488 {
12489         if (flags & NDR_IN) {
12490                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
12491                 if (r->in.server_name) {
12492                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12493                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12494                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12495                         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));
12496                 }
12497         }
12498         if (flags & NDR_OUT) {
12499                 if (r->out.trusted_domains_blob == NULL) {
12500                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12501                 }
12502                 NDR_CHECK(ndr_push_netr_Blob(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trusted_domains_blob));
12503                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
12504         }
12505         return NDR_ERR_SUCCESS;
12506 }
12507
12508 static enum ndr_err_code ndr_pull_netr_NetrEnumerateTrustedDomains(struct ndr_pull *ndr, int flags, struct netr_NetrEnumerateTrustedDomains *r)
12509 {
12510         uint32_t _ptr_server_name;
12511         TALLOC_CTX *_mem_save_server_name_0;
12512         TALLOC_CTX *_mem_save_trusted_domains_blob_0;
12513         if (flags & NDR_IN) {
12514                 ZERO_STRUCT(r->out);
12515
12516                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
12517                 if (_ptr_server_name) {
12518                         NDR_PULL_ALLOC(ndr, r->in.server_name);
12519                 } else {
12520                         r->in.server_name = NULL;
12521                 }
12522                 if (r->in.server_name) {
12523                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
12524                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
12525                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
12526                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
12527                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
12528                                 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));
12529                         }
12530                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
12531                         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));
12532                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
12533                 }
12534                 NDR_PULL_ALLOC(ndr, r->out.trusted_domains_blob);
12535                 ZERO_STRUCTP(r->out.trusted_domains_blob);
12536         }
12537         if (flags & NDR_OUT) {
12538                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12539                         NDR_PULL_ALLOC(ndr, r->out.trusted_domains_blob);
12540                 }
12541                 _mem_save_trusted_domains_blob_0 = NDR_PULL_GET_MEM_CTX(ndr);
12542                 NDR_PULL_SET_MEM_CTX(ndr, r->out.trusted_domains_blob, LIBNDR_FLAG_REF_ALLOC);
12543                 NDR_CHECK(ndr_pull_netr_Blob(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trusted_domains_blob));
12544                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusted_domains_blob_0, LIBNDR_FLAG_REF_ALLOC);
12545                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
12546         }
12547         return NDR_ERR_SUCCESS;
12548 }
12549
12550 _PUBLIC_ void ndr_print_netr_NetrEnumerateTrustedDomains(struct ndr_print *ndr, const char *name, int flags, const struct netr_NetrEnumerateTrustedDomains *r)
12551 {
12552         ndr_print_struct(ndr, name, "netr_NetrEnumerateTrustedDomains");
12553         ndr->depth++;
12554         if (flags & NDR_SET_VALUES) {
12555                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12556         }
12557         if (flags & NDR_IN) {
12558                 ndr_print_struct(ndr, "in", "netr_NetrEnumerateTrustedDomains");
12559                 ndr->depth++;
12560                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
12561                 ndr->depth++;
12562                 if (r->in.server_name) {
12563                         ndr_print_string(ndr, "server_name", r->in.server_name);
12564                 }
12565                 ndr->depth--;
12566                 ndr->depth--;
12567         }
12568         if (flags & NDR_OUT) {
12569                 ndr_print_struct(ndr, "out", "netr_NetrEnumerateTrustedDomains");
12570                 ndr->depth++;
12571                 ndr_print_ptr(ndr, "trusted_domains_blob", r->out.trusted_domains_blob);
12572                 ndr->depth++;
12573                 ndr_print_netr_Blob(ndr, "trusted_domains_blob", r->out.trusted_domains_blob);
12574                 ndr->depth--;
12575                 ndr_print_WERROR(ndr, "result", r->out.result);
12576                 ndr->depth--;
12577         }
12578         ndr->depth--;
12579 }
12580
12581 static enum ndr_err_code ndr_push_netr_DsRGetDCName(struct ndr_push *ndr, int flags, const struct netr_DsRGetDCName *r)
12582 {
12583         if (flags & NDR_IN) {
12584                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
12585                 if (r->in.server_unc) {
12586                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
12587                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12588                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
12589                         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));
12590                 }
12591                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_name));
12592                 if (r->in.domain_name) {
12593                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
12594                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12595                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
12596                         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));
12597                 }
12598                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_guid));
12599                 if (r->in.domain_guid) {
12600                         NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, r->in.domain_guid));
12601                 }
12602                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.site_guid));
12603                 if (r->in.site_guid) {
12604                         NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, r->in.site_guid));
12605                 }
12606                 NDR_CHECK(ndr_push_netr_DsRGetDCName_flags(ndr, NDR_SCALARS, r->in.flags));
12607         }
12608         if (flags & NDR_OUT) {
12609                 if (r->out.info == NULL) {
12610                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12611                 }
12612                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.info));
12613                 if (*r->out.info) {
12614                         NDR_CHECK(ndr_push_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
12615                 }
12616                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
12617         }
12618         return NDR_ERR_SUCCESS;
12619 }
12620
12621 static enum ndr_err_code ndr_pull_netr_DsRGetDCName(struct ndr_pull *ndr, int flags, struct netr_DsRGetDCName *r)
12622 {
12623         uint32_t _ptr_server_unc;
12624         uint32_t _ptr_domain_name;
12625         uint32_t _ptr_domain_guid;
12626         uint32_t _ptr_site_guid;
12627         uint32_t _ptr_info;
12628         TALLOC_CTX *_mem_save_server_unc_0;
12629         TALLOC_CTX *_mem_save_domain_name_0;
12630         TALLOC_CTX *_mem_save_domain_guid_0;
12631         TALLOC_CTX *_mem_save_site_guid_0;
12632         TALLOC_CTX *_mem_save_info_0;
12633         TALLOC_CTX *_mem_save_info_1;
12634         if (flags & NDR_IN) {
12635                 ZERO_STRUCT(r->out);
12636
12637                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
12638                 if (_ptr_server_unc) {
12639                         NDR_PULL_ALLOC(ndr, r->in.server_unc);
12640                 } else {
12641                         r->in.server_unc = NULL;
12642                 }
12643                 if (r->in.server_unc) {
12644                         _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
12645                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
12646                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
12647                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
12648                         if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
12649                                 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));
12650                         }
12651                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
12652                         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));
12653                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
12654                 }
12655                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
12656                 if (_ptr_domain_name) {
12657                         NDR_PULL_ALLOC(ndr, r->in.domain_name);
12658                 } else {
12659                         r->in.domain_name = NULL;
12660                 }
12661                 if (r->in.domain_name) {
12662                         _mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
12663                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_name, 0);
12664                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domain_name));
12665                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domain_name));
12666                         if (ndr_get_array_length(ndr, &r->in.domain_name) > ndr_get_array_size(ndr, &r->in.domain_name)) {
12667                                 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));
12668                         }
12669                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t)));
12670                         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));
12671                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
12672                 }
12673                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_guid));
12674                 if (_ptr_domain_guid) {
12675                         NDR_PULL_ALLOC(ndr, r->in.domain_guid);
12676                 } else {
12677                         r->in.domain_guid = NULL;
12678                 }
12679                 if (r->in.domain_guid) {
12680                         _mem_save_domain_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
12681                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_guid, 0);
12682                         NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, r->in.domain_guid));
12683                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_guid_0, 0);
12684                 }
12685                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_guid));
12686                 if (_ptr_site_guid) {
12687                         NDR_PULL_ALLOC(ndr, r->in.site_guid);
12688                 } else {
12689                         r->in.site_guid = NULL;
12690                 }
12691                 if (r->in.site_guid) {
12692                         _mem_save_site_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
12693                         NDR_PULL_SET_MEM_CTX(ndr, r->in.site_guid, 0);
12694                         NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, r->in.site_guid));
12695                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_guid_0, 0);
12696                 }
12697                 NDR_CHECK(ndr_pull_netr_DsRGetDCName_flags(ndr, NDR_SCALARS, &r->in.flags));
12698                 NDR_PULL_ALLOC(ndr, r->out.info);
12699                 ZERO_STRUCTP(r->out.info);
12700         }
12701         if (flags & NDR_OUT) {
12702                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12703                         NDR_PULL_ALLOC(ndr, r->out.info);
12704                 }
12705                 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
12706                 NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
12707                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
12708                 if (_ptr_info) {
12709                         NDR_PULL_ALLOC(ndr, *r->out.info);
12710                 } else {
12711                         *r->out.info = NULL;
12712                 }
12713                 if (*r->out.info) {
12714                         _mem_save_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
12715                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.info, 0);
12716                         NDR_CHECK(ndr_pull_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
12717                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_1, 0);
12718                 }
12719                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
12720                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
12721         }
12722         return NDR_ERR_SUCCESS;
12723 }
12724
12725 _PUBLIC_ void ndr_print_netr_DsRGetDCName(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetDCName *r)
12726 {
12727         ndr_print_struct(ndr, name, "netr_DsRGetDCName");
12728         ndr->depth++;
12729         if (flags & NDR_SET_VALUES) {
12730                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12731         }
12732         if (flags & NDR_IN) {
12733                 ndr_print_struct(ndr, "in", "netr_DsRGetDCName");
12734                 ndr->depth++;
12735                 ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
12736                 ndr->depth++;
12737                 if (r->in.server_unc) {
12738                         ndr_print_string(ndr, "server_unc", r->in.server_unc);
12739                 }
12740                 ndr->depth--;
12741                 ndr_print_ptr(ndr, "domain_name", r->in.domain_name);
12742                 ndr->depth++;
12743                 if (r->in.domain_name) {
12744                         ndr_print_string(ndr, "domain_name", r->in.domain_name);
12745                 }
12746                 ndr->depth--;
12747                 ndr_print_ptr(ndr, "domain_guid", r->in.domain_guid);
12748                 ndr->depth++;
12749                 if (r->in.domain_guid) {
12750                         ndr_print_GUID(ndr, "domain_guid", r->in.domain_guid);
12751                 }
12752                 ndr->depth--;
12753                 ndr_print_ptr(ndr, "site_guid", r->in.site_guid);
12754                 ndr->depth++;
12755                 if (r->in.site_guid) {
12756                         ndr_print_GUID(ndr, "site_guid", r->in.site_guid);
12757                 }
12758                 ndr->depth--;
12759                 ndr_print_netr_DsRGetDCName_flags(ndr, "flags", r->in.flags);
12760                 ndr->depth--;
12761         }
12762         if (flags & NDR_OUT) {
12763                 ndr_print_struct(ndr, "out", "netr_DsRGetDCName");
12764                 ndr->depth++;
12765                 ndr_print_ptr(ndr, "info", r->out.info);
12766                 ndr->depth++;
12767                 ndr_print_ptr(ndr, "info", *r->out.info);
12768                 ndr->depth++;
12769                 if (*r->out.info) {
12770                         ndr_print_netr_DsRGetDCNameInfo(ndr, "info", *r->out.info);
12771                 }
12772                 ndr->depth--;
12773                 ndr->depth--;
12774                 ndr_print_WERROR(ndr, "result", r->out.result);
12775                 ndr->depth--;
12776         }
12777         ndr->depth--;
12778 }
12779
12780 static enum ndr_err_code ndr_push_netr_LogonGetCapabilities(struct ndr_push *ndr, int flags, const struct netr_LogonGetCapabilities *r)
12781 {
12782         if (flags & NDR_IN) {
12783                 if (r->in.server_name == NULL) {
12784                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12785                 }
12786                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12787                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12788                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12789                 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));
12790                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
12791                 if (r->in.computer_name) {
12792                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
12793                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12794                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
12795                         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));
12796                 }
12797                 if (r->in.credential == NULL) {
12798                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12799                 }
12800                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
12801                 if (r->in.return_authenticator == NULL) {
12802                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12803                 }
12804                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
12805                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.query_level));
12806         }
12807         if (flags & NDR_OUT) {
12808                 if (r->out.return_authenticator == NULL) {
12809                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12810                 }
12811                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
12812                 if (r->out.capabilities == NULL) {
12813                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12814                 }
12815                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.capabilities, r->in.query_level));
12816                 NDR_CHECK(ndr_push_netr_Capabilities(ndr, NDR_SCALARS, r->out.capabilities));
12817                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
12818         }
12819         return NDR_ERR_SUCCESS;
12820 }
12821
12822 static enum ndr_err_code ndr_pull_netr_LogonGetCapabilities(struct ndr_pull *ndr, int flags, struct netr_LogonGetCapabilities *r)
12823 {
12824         uint32_t _ptr_computer_name;
12825         TALLOC_CTX *_mem_save_computer_name_0;
12826         TALLOC_CTX *_mem_save_credential_0;
12827         TALLOC_CTX *_mem_save_return_authenticator_0;
12828         TALLOC_CTX *_mem_save_capabilities_0;
12829         if (flags & NDR_IN) {
12830                 ZERO_STRUCT(r->out);
12831
12832                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
12833                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
12834                 if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
12835                         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));
12836                 }
12837                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
12838                 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));
12839                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
12840                 if (_ptr_computer_name) {
12841                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
12842                 } else {
12843                         r->in.computer_name = NULL;
12844                 }
12845                 if (r->in.computer_name) {
12846                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
12847                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
12848                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
12849                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
12850                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
12851                                 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));
12852                         }
12853                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
12854                         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));
12855                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
12856                 }
12857                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12858                         NDR_PULL_ALLOC(ndr, r->in.credential);
12859                 }
12860                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
12861                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
12862                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
12863                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
12864                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12865                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
12866                 }
12867                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
12868                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
12869                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
12870                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
12871                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.query_level));
12872                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
12873                 *r->out.return_authenticator = *r->in.return_authenticator;
12874                 NDR_PULL_ALLOC(ndr, r->out.capabilities);
12875                 ZERO_STRUCTP(r->out.capabilities);
12876         }
12877         if (flags & NDR_OUT) {
12878                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12879                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
12880                 }
12881                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
12882                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
12883                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
12884                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
12885                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12886                         NDR_PULL_ALLOC(ndr, r->out.capabilities);
12887                 }
12888                 _mem_save_capabilities_0 = NDR_PULL_GET_MEM_CTX(ndr);
12889                 NDR_PULL_SET_MEM_CTX(ndr, r->out.capabilities, LIBNDR_FLAG_REF_ALLOC);
12890                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.capabilities, r->in.query_level));
12891                 NDR_CHECK(ndr_pull_netr_Capabilities(ndr, NDR_SCALARS, r->out.capabilities));
12892                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_capabilities_0, LIBNDR_FLAG_REF_ALLOC);
12893                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
12894         }
12895         return NDR_ERR_SUCCESS;
12896 }
12897
12898 _PUBLIC_ void ndr_print_netr_LogonGetCapabilities(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonGetCapabilities *r)
12899 {
12900         ndr_print_struct(ndr, name, "netr_LogonGetCapabilities");
12901         ndr->depth++;
12902         if (flags & NDR_SET_VALUES) {
12903                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12904         }
12905         if (flags & NDR_IN) {
12906                 ndr_print_struct(ndr, "in", "netr_LogonGetCapabilities");
12907                 ndr->depth++;
12908                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
12909                 ndr->depth++;
12910                 ndr_print_string(ndr, "server_name", r->in.server_name);
12911                 ndr->depth--;
12912                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
12913                 ndr->depth++;
12914                 if (r->in.computer_name) {
12915                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
12916                 }
12917                 ndr->depth--;
12918                 ndr_print_ptr(ndr, "credential", r->in.credential);
12919                 ndr->depth++;
12920                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
12921                 ndr->depth--;
12922                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
12923                 ndr->depth++;
12924                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
12925                 ndr->depth--;
12926                 ndr_print_uint32(ndr, "query_level", r->in.query_level);
12927                 ndr->depth--;
12928         }
12929         if (flags & NDR_OUT) {
12930                 ndr_print_struct(ndr, "out", "netr_LogonGetCapabilities");
12931                 ndr->depth++;
12932                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
12933                 ndr->depth++;
12934                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
12935                 ndr->depth--;
12936                 ndr_print_ptr(ndr, "capabilities", r->out.capabilities);
12937                 ndr->depth++;
12938                 ndr_print_set_switch_value(ndr, r->out.capabilities, r->in.query_level);
12939                 ndr_print_netr_Capabilities(ndr, "capabilities", r->out.capabilities);
12940                 ndr->depth--;
12941                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
12942                 ndr->depth--;
12943         }
12944         ndr->depth--;
12945 }
12946
12947 static enum ndr_err_code ndr_push_netr_NETRLOGONSETSERVICEBITS(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONSETSERVICEBITS *r)
12948 {
12949         if (flags & NDR_IN) {
12950         }
12951         if (flags & NDR_OUT) {
12952                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
12953         }
12954         return NDR_ERR_SUCCESS;
12955 }
12956
12957 static enum ndr_err_code ndr_pull_netr_NETRLOGONSETSERVICEBITS(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONSETSERVICEBITS *r)
12958 {
12959         if (flags & NDR_IN) {
12960         }
12961         if (flags & NDR_OUT) {
12962                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
12963         }
12964         return NDR_ERR_SUCCESS;
12965 }
12966
12967 _PUBLIC_ void ndr_print_netr_NETRLOGONSETSERVICEBITS(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONSETSERVICEBITS *r)
12968 {
12969         ndr_print_struct(ndr, name, "netr_NETRLOGONSETSERVICEBITS");
12970         ndr->depth++;
12971         if (flags & NDR_SET_VALUES) {
12972                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12973         }
12974         if (flags & NDR_IN) {
12975                 ndr_print_struct(ndr, "in", "netr_NETRLOGONSETSERVICEBITS");
12976                 ndr->depth++;
12977                 ndr->depth--;
12978         }
12979         if (flags & NDR_OUT) {
12980                 ndr_print_struct(ndr, "out", "netr_NETRLOGONSETSERVICEBITS");
12981                 ndr->depth++;
12982                 ndr_print_WERROR(ndr, "result", r->out.result);
12983                 ndr->depth--;
12984         }
12985         ndr->depth--;
12986 }
12987
12988 static enum ndr_err_code ndr_push_netr_LogonGetTrustRid(struct ndr_push *ndr, int flags, const struct netr_LogonGetTrustRid *r)
12989 {
12990         if (flags & NDR_IN) {
12991                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
12992                 if (r->in.server_name) {
12993                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12994                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12995                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12996                         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));
12997                 }
12998                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_name));
12999                 if (r->in.domain_name) {
13000                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
13001                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13002                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
13003                         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));
13004                 }
13005         }
13006         if (flags & NDR_OUT) {
13007                 if (r->out.rid == NULL) {
13008                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13009                 }
13010                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.rid));
13011                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
13012         }
13013         return NDR_ERR_SUCCESS;
13014 }
13015
13016 static enum ndr_err_code ndr_pull_netr_LogonGetTrustRid(struct ndr_pull *ndr, int flags, struct netr_LogonGetTrustRid *r)
13017 {
13018         uint32_t _ptr_server_name;
13019         uint32_t _ptr_domain_name;
13020         TALLOC_CTX *_mem_save_server_name_0;
13021         TALLOC_CTX *_mem_save_domain_name_0;
13022         TALLOC_CTX *_mem_save_rid_0;
13023         if (flags & NDR_IN) {
13024                 ZERO_STRUCT(r->out);
13025
13026                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
13027                 if (_ptr_server_name) {
13028                         NDR_PULL_ALLOC(ndr, r->in.server_name);
13029                 } else {
13030                         r->in.server_name = NULL;
13031                 }
13032                 if (r->in.server_name) {
13033                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13034                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
13035                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
13036                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
13037                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
13038                                 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));
13039                         }
13040                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
13041                         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));
13042                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
13043                 }
13044                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
13045                 if (_ptr_domain_name) {
13046                         NDR_PULL_ALLOC(ndr, r->in.domain_name);
13047                 } else {
13048                         r->in.domain_name = NULL;
13049                 }
13050                 if (r->in.domain_name) {
13051                         _mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13052                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_name, 0);
13053                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domain_name));
13054                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domain_name));
13055                         if (ndr_get_array_length(ndr, &r->in.domain_name) > ndr_get_array_size(ndr, &r->in.domain_name)) {
13056                                 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));
13057                         }
13058                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t)));
13059                         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));
13060                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
13061                 }
13062                 NDR_PULL_ALLOC(ndr, r->out.rid);
13063                 ZERO_STRUCTP(r->out.rid);
13064         }
13065         if (flags & NDR_OUT) {
13066                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13067                         NDR_PULL_ALLOC(ndr, r->out.rid);
13068                 }
13069                 _mem_save_rid_0 = NDR_PULL_GET_MEM_CTX(ndr);
13070                 NDR_PULL_SET_MEM_CTX(ndr, r->out.rid, LIBNDR_FLAG_REF_ALLOC);
13071                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.rid));
13072                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rid_0, LIBNDR_FLAG_REF_ALLOC);
13073                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
13074         }
13075         return NDR_ERR_SUCCESS;
13076 }
13077
13078 _PUBLIC_ void ndr_print_netr_LogonGetTrustRid(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonGetTrustRid *r)
13079 {
13080         ndr_print_struct(ndr, name, "netr_LogonGetTrustRid");
13081         ndr->depth++;
13082         if (flags & NDR_SET_VALUES) {
13083                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13084         }
13085         if (flags & NDR_IN) {
13086                 ndr_print_struct(ndr, "in", "netr_LogonGetTrustRid");
13087                 ndr->depth++;
13088                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
13089                 ndr->depth++;
13090                 if (r->in.server_name) {
13091                         ndr_print_string(ndr, "server_name", r->in.server_name);
13092                 }
13093                 ndr->depth--;
13094                 ndr_print_ptr(ndr, "domain_name", r->in.domain_name);
13095                 ndr->depth++;
13096                 if (r->in.domain_name) {
13097                         ndr_print_string(ndr, "domain_name", r->in.domain_name);
13098                 }
13099                 ndr->depth--;
13100                 ndr->depth--;
13101         }
13102         if (flags & NDR_OUT) {
13103                 ndr_print_struct(ndr, "out", "netr_LogonGetTrustRid");
13104                 ndr->depth++;
13105                 ndr_print_ptr(ndr, "rid", r->out.rid);
13106                 ndr->depth++;
13107                 ndr_print_uint32(ndr, "rid", *r->out.rid);
13108                 ndr->depth--;
13109                 ndr_print_WERROR(ndr, "result", r->out.result);
13110                 ndr->depth--;
13111         }
13112         ndr->depth--;
13113 }
13114
13115 static enum ndr_err_code ndr_push_netr_NETRLOGONCOMPUTESERVERDIGEST(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONCOMPUTESERVERDIGEST *r)
13116 {
13117         if (flags & NDR_IN) {
13118         }
13119         if (flags & NDR_OUT) {
13120                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
13121         }
13122         return NDR_ERR_SUCCESS;
13123 }
13124
13125 static enum ndr_err_code ndr_pull_netr_NETRLOGONCOMPUTESERVERDIGEST(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONCOMPUTESERVERDIGEST *r)
13126 {
13127         if (flags & NDR_IN) {
13128         }
13129         if (flags & NDR_OUT) {
13130                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
13131         }
13132         return NDR_ERR_SUCCESS;
13133 }
13134
13135 _PUBLIC_ void ndr_print_netr_NETRLOGONCOMPUTESERVERDIGEST(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONCOMPUTESERVERDIGEST *r)
13136 {
13137         ndr_print_struct(ndr, name, "netr_NETRLOGONCOMPUTESERVERDIGEST");
13138         ndr->depth++;
13139         if (flags & NDR_SET_VALUES) {
13140                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13141         }
13142         if (flags & NDR_IN) {
13143                 ndr_print_struct(ndr, "in", "netr_NETRLOGONCOMPUTESERVERDIGEST");
13144                 ndr->depth++;
13145                 ndr->depth--;
13146         }
13147         if (flags & NDR_OUT) {
13148                 ndr_print_struct(ndr, "out", "netr_NETRLOGONCOMPUTESERVERDIGEST");
13149                 ndr->depth++;
13150                 ndr_print_WERROR(ndr, "result", r->out.result);
13151                 ndr->depth--;
13152         }
13153         ndr->depth--;
13154 }
13155
13156 static enum ndr_err_code ndr_push_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONCOMPUTECLIENTDIGEST *r)
13157 {
13158         if (flags & NDR_IN) {
13159         }
13160         if (flags & NDR_OUT) {
13161                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
13162         }
13163         return NDR_ERR_SUCCESS;
13164 }
13165
13166 static enum ndr_err_code ndr_pull_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONCOMPUTECLIENTDIGEST *r)
13167 {
13168         if (flags & NDR_IN) {
13169         }
13170         if (flags & NDR_OUT) {
13171                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
13172         }
13173         return NDR_ERR_SUCCESS;
13174 }
13175
13176 _PUBLIC_ void ndr_print_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONCOMPUTECLIENTDIGEST *r)
13177 {
13178         ndr_print_struct(ndr, name, "netr_NETRLOGONCOMPUTECLIENTDIGEST");
13179         ndr->depth++;
13180         if (flags & NDR_SET_VALUES) {
13181                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13182         }
13183         if (flags & NDR_IN) {
13184                 ndr_print_struct(ndr, "in", "netr_NETRLOGONCOMPUTECLIENTDIGEST");
13185                 ndr->depth++;
13186                 ndr->depth--;
13187         }
13188         if (flags & NDR_OUT) {
13189                 ndr_print_struct(ndr, "out", "netr_NETRLOGONCOMPUTECLIENTDIGEST");
13190                 ndr->depth++;
13191                 ndr_print_WERROR(ndr, "result", r->out.result);
13192                 ndr->depth--;
13193         }
13194         ndr->depth--;
13195 }
13196
13197 _PUBLIC_ enum ndr_err_code ndr_push_netr_ServerAuthenticate3(struct ndr_push *ndr, int flags, const struct netr_ServerAuthenticate3 *r)
13198 {
13199         if (flags & NDR_IN) {
13200                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
13201                 if (r->in.server_name) {
13202                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13203                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13204                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13205                         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));
13206                 }
13207                 if (r->in.account_name == NULL) {
13208                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13209                 }
13210                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
13211                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13212                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
13213                 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));
13214                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
13215                 if (r->in.computer_name == NULL) {
13216                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13217                 }
13218                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13219                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13220                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13221                 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));
13222                 if (r->in.credentials == NULL) {
13223                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13224                 }
13225                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
13226                 if (r->in.negotiate_flags == NULL) {
13227                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13228                 }
13229                 NDR_CHECK(ndr_push_netr_NegotiateFlags(ndr, NDR_SCALARS, *r->in.negotiate_flags));
13230         }
13231         if (flags & NDR_OUT) {
13232                 if (r->out.return_credentials == NULL) {
13233                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13234                 }
13235                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
13236                 if (r->out.negotiate_flags == NULL) {
13237                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13238                 }
13239                 NDR_CHECK(ndr_push_netr_NegotiateFlags(ndr, NDR_SCALARS, *r->out.negotiate_flags));
13240                 if (r->out.rid == NULL) {
13241                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13242                 }
13243                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.rid));
13244                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
13245         }
13246         return NDR_ERR_SUCCESS;
13247 }
13248
13249 _PUBLIC_ enum ndr_err_code ndr_pull_netr_ServerAuthenticate3(struct ndr_pull *ndr, int flags, struct netr_ServerAuthenticate3 *r)
13250 {
13251         uint32_t _ptr_server_name;
13252         TALLOC_CTX *_mem_save_server_name_0;
13253         TALLOC_CTX *_mem_save_credentials_0;
13254         TALLOC_CTX *_mem_save_return_credentials_0;
13255         TALLOC_CTX *_mem_save_negotiate_flags_0;
13256         TALLOC_CTX *_mem_save_rid_0;
13257         if (flags & NDR_IN) {
13258                 ZERO_STRUCT(r->out);
13259
13260                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
13261                 if (_ptr_server_name) {
13262                         NDR_PULL_ALLOC(ndr, r->in.server_name);
13263                 } else {
13264                         r->in.server_name = NULL;
13265                 }
13266                 if (r->in.server_name) {
13267                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13268                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
13269                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
13270                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
13271                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
13272                                 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));
13273                         }
13274                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
13275                         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));
13276                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
13277                 }
13278                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
13279                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
13280                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
13281                         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));
13282                 }
13283                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
13284                 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));
13285                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
13286                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
13287                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
13288                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
13289                         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));
13290                 }
13291                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
13292                 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));
13293                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13294                         NDR_PULL_ALLOC(ndr, r->in.credentials);
13295                 }
13296                 _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
13297                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credentials, LIBNDR_FLAG_REF_ALLOC);
13298                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
13299                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
13300                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13301                         NDR_PULL_ALLOC(ndr, r->in.negotiate_flags);
13302                 }
13303                 _mem_save_negotiate_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
13304                 NDR_PULL_SET_MEM_CTX(ndr, r->in.negotiate_flags, LIBNDR_FLAG_REF_ALLOC);
13305                 NDR_CHECK(ndr_pull_netr_NegotiateFlags(ndr, NDR_SCALARS, r->in.negotiate_flags));
13306                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_negotiate_flags_0, LIBNDR_FLAG_REF_ALLOC);
13307                 NDR_PULL_ALLOC(ndr, r->out.return_credentials);
13308                 ZERO_STRUCTP(r->out.return_credentials);
13309                 NDR_PULL_ALLOC(ndr, r->out.negotiate_flags);
13310                 *r->out.negotiate_flags = *r->in.negotiate_flags;
13311                 NDR_PULL_ALLOC(ndr, r->out.rid);
13312                 ZERO_STRUCTP(r->out.rid);
13313         }
13314         if (flags & NDR_OUT) {
13315                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13316                         NDR_PULL_ALLOC(ndr, r->out.return_credentials);
13317                 }
13318                 _mem_save_return_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
13319                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_credentials, LIBNDR_FLAG_REF_ALLOC);
13320                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
13321                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_credentials_0, LIBNDR_FLAG_REF_ALLOC);
13322                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13323                         NDR_PULL_ALLOC(ndr, r->out.negotiate_flags);
13324                 }
13325                 _mem_save_negotiate_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
13326                 NDR_PULL_SET_MEM_CTX(ndr, r->out.negotiate_flags, LIBNDR_FLAG_REF_ALLOC);
13327                 NDR_CHECK(ndr_pull_netr_NegotiateFlags(ndr, NDR_SCALARS, r->out.negotiate_flags));
13328                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_negotiate_flags_0, LIBNDR_FLAG_REF_ALLOC);
13329                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13330                         NDR_PULL_ALLOC(ndr, r->out.rid);
13331                 }
13332                 _mem_save_rid_0 = NDR_PULL_GET_MEM_CTX(ndr);
13333                 NDR_PULL_SET_MEM_CTX(ndr, r->out.rid, LIBNDR_FLAG_REF_ALLOC);
13334                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.rid));
13335                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rid_0, LIBNDR_FLAG_REF_ALLOC);
13336                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
13337         }
13338         return NDR_ERR_SUCCESS;
13339 }
13340
13341 _PUBLIC_ void ndr_print_netr_ServerAuthenticate3(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerAuthenticate3 *r)
13342 {
13343         ndr_print_struct(ndr, name, "netr_ServerAuthenticate3");
13344         ndr->depth++;
13345         if (flags & NDR_SET_VALUES) {
13346                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13347         }
13348         if (flags & NDR_IN) {
13349                 ndr_print_struct(ndr, "in", "netr_ServerAuthenticate3");
13350                 ndr->depth++;
13351                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
13352                 ndr->depth++;
13353                 if (r->in.server_name) {
13354                         ndr_print_string(ndr, "server_name", r->in.server_name);
13355                 }
13356                 ndr->depth--;
13357                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
13358                 ndr->depth++;
13359                 ndr_print_string(ndr, "account_name", r->in.account_name);
13360                 ndr->depth--;
13361                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
13362                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
13363                 ndr->depth++;
13364                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
13365                 ndr->depth--;
13366                 ndr_print_ptr(ndr, "credentials", r->in.credentials);
13367                 ndr->depth++;
13368                 ndr_print_netr_Credential(ndr, "credentials", r->in.credentials);
13369                 ndr->depth--;
13370                 ndr_print_ptr(ndr, "negotiate_flags", r->in.negotiate_flags);
13371                 ndr->depth++;
13372                 ndr_print_netr_NegotiateFlags(ndr, "negotiate_flags", *r->in.negotiate_flags);
13373                 ndr->depth--;
13374                 ndr->depth--;
13375         }
13376         if (flags & NDR_OUT) {
13377                 ndr_print_struct(ndr, "out", "netr_ServerAuthenticate3");
13378                 ndr->depth++;
13379                 ndr_print_ptr(ndr, "return_credentials", r->out.return_credentials);
13380                 ndr->depth++;
13381                 ndr_print_netr_Credential(ndr, "return_credentials", r->out.return_credentials);
13382                 ndr->depth--;
13383                 ndr_print_ptr(ndr, "negotiate_flags", r->out.negotiate_flags);
13384                 ndr->depth++;
13385                 ndr_print_netr_NegotiateFlags(ndr, "negotiate_flags", *r->out.negotiate_flags);
13386                 ndr->depth--;
13387                 ndr_print_ptr(ndr, "rid", r->out.rid);
13388                 ndr->depth++;
13389                 ndr_print_uint32(ndr, "rid", *r->out.rid);
13390                 ndr->depth--;
13391                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
13392                 ndr->depth--;
13393         }
13394         ndr->depth--;
13395 }
13396
13397 static enum ndr_err_code ndr_push_netr_DsRGetDCNameEx(struct ndr_push *ndr, int flags, const struct netr_DsRGetDCNameEx *r)
13398 {
13399         if (flags & NDR_IN) {
13400                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
13401                 if (r->in.server_unc) {
13402                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
13403                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13404                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
13405                         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));
13406                 }
13407                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_name));
13408                 if (r->in.domain_name) {
13409                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
13410                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13411                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
13412                         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));
13413                 }
13414                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_guid));
13415                 if (r->in.domain_guid) {
13416                         NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, r->in.domain_guid));
13417                 }
13418                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.site_name));
13419                 if (r->in.site_name) {
13420                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.site_name, CH_UTF16)));
13421                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13422                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.site_name, CH_UTF16)));
13423                         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));
13424                 }
13425                 NDR_CHECK(ndr_push_netr_DsRGetDCName_flags(ndr, NDR_SCALARS, r->in.flags));
13426         }
13427         if (flags & NDR_OUT) {
13428                 if (r->out.info == NULL) {
13429                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13430                 }
13431                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.info));
13432                 if (*r->out.info) {
13433                         NDR_CHECK(ndr_push_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
13434                 }
13435                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
13436         }
13437         return NDR_ERR_SUCCESS;
13438 }
13439
13440 static enum ndr_err_code ndr_pull_netr_DsRGetDCNameEx(struct ndr_pull *ndr, int flags, struct netr_DsRGetDCNameEx *r)
13441 {
13442         uint32_t _ptr_server_unc;
13443         uint32_t _ptr_domain_name;
13444         uint32_t _ptr_domain_guid;
13445         uint32_t _ptr_site_name;
13446         uint32_t _ptr_info;
13447         TALLOC_CTX *_mem_save_server_unc_0;
13448         TALLOC_CTX *_mem_save_domain_name_0;
13449         TALLOC_CTX *_mem_save_domain_guid_0;
13450         TALLOC_CTX *_mem_save_site_name_0;
13451         TALLOC_CTX *_mem_save_info_0;
13452         TALLOC_CTX *_mem_save_info_1;
13453         if (flags & NDR_IN) {
13454                 ZERO_STRUCT(r->out);
13455
13456                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
13457                 if (_ptr_server_unc) {
13458                         NDR_PULL_ALLOC(ndr, r->in.server_unc);
13459                 } else {
13460                         r->in.server_unc = NULL;
13461                 }
13462                 if (r->in.server_unc) {
13463                         _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
13464                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
13465                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
13466                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
13467                         if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
13468                                 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));
13469                         }
13470                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
13471                         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));
13472                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
13473                 }
13474                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
13475                 if (_ptr_domain_name) {
13476                         NDR_PULL_ALLOC(ndr, r->in.domain_name);
13477                 } else {
13478                         r->in.domain_name = NULL;
13479                 }
13480                 if (r->in.domain_name) {
13481                         _mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13482                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_name, 0);
13483                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domain_name));
13484                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domain_name));
13485                         if (ndr_get_array_length(ndr, &r->in.domain_name) > ndr_get_array_size(ndr, &r->in.domain_name)) {
13486                                 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));
13487                         }
13488                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t)));
13489                         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));
13490                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
13491                 }
13492                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_guid));
13493                 if (_ptr_domain_guid) {
13494                         NDR_PULL_ALLOC(ndr, r->in.domain_guid);
13495                 } else {
13496                         r->in.domain_guid = NULL;
13497                 }
13498                 if (r->in.domain_guid) {
13499                         _mem_save_domain_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
13500                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_guid, 0);
13501                         NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, r->in.domain_guid));
13502                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_guid_0, 0);
13503                 }
13504                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_name));
13505                 if (_ptr_site_name) {
13506                         NDR_PULL_ALLOC(ndr, r->in.site_name);
13507                 } else {
13508                         r->in.site_name = NULL;
13509                 }
13510                 if (r->in.site_name) {
13511                         _mem_save_site_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13512                         NDR_PULL_SET_MEM_CTX(ndr, r->in.site_name, 0);
13513                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.site_name));
13514                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.site_name));
13515                         if (ndr_get_array_length(ndr, &r->in.site_name) > ndr_get_array_size(ndr, &r->in.site_name)) {
13516                                 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));
13517                         }
13518                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.site_name), sizeof(uint16_t)));
13519                         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));
13520                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_name_0, 0);
13521                 }
13522                 NDR_CHECK(ndr_pull_netr_DsRGetDCName_flags(ndr, NDR_SCALARS, &r->in.flags));
13523                 NDR_PULL_ALLOC(ndr, r->out.info);
13524                 ZERO_STRUCTP(r->out.info);
13525         }
13526         if (flags & NDR_OUT) {
13527                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13528                         NDR_PULL_ALLOC(ndr, r->out.info);
13529                 }
13530                 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
13531                 NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
13532                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
13533                 if (_ptr_info) {
13534                         NDR_PULL_ALLOC(ndr, *r->out.info);
13535                 } else {
13536                         *r->out.info = NULL;
13537                 }
13538                 if (*r->out.info) {
13539                         _mem_save_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
13540                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.info, 0);
13541                         NDR_CHECK(ndr_pull_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
13542                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_1, 0);
13543                 }
13544                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
13545                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
13546         }
13547         return NDR_ERR_SUCCESS;
13548 }
13549
13550 _PUBLIC_ void ndr_print_netr_DsRGetDCNameEx(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetDCNameEx *r)
13551 {
13552         ndr_print_struct(ndr, name, "netr_DsRGetDCNameEx");
13553         ndr->depth++;
13554         if (flags & NDR_SET_VALUES) {
13555                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13556         }
13557         if (flags & NDR_IN) {
13558                 ndr_print_struct(ndr, "in", "netr_DsRGetDCNameEx");
13559                 ndr->depth++;
13560                 ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
13561                 ndr->depth++;
13562                 if (r->in.server_unc) {
13563                         ndr_print_string(ndr, "server_unc", r->in.server_unc);
13564                 }
13565                 ndr->depth--;
13566                 ndr_print_ptr(ndr, "domain_name", r->in.domain_name);
13567                 ndr->depth++;
13568                 if (r->in.domain_name) {
13569                         ndr_print_string(ndr, "domain_name", r->in.domain_name);
13570                 }
13571                 ndr->depth--;
13572                 ndr_print_ptr(ndr, "domain_guid", r->in.domain_guid);
13573                 ndr->depth++;
13574                 if (r->in.domain_guid) {
13575                         ndr_print_GUID(ndr, "domain_guid", r->in.domain_guid);
13576                 }
13577                 ndr->depth--;
13578                 ndr_print_ptr(ndr, "site_name", r->in.site_name);
13579                 ndr->depth++;
13580                 if (r->in.site_name) {
13581                         ndr_print_string(ndr, "site_name", r->in.site_name);
13582                 }
13583                 ndr->depth--;
13584                 ndr_print_netr_DsRGetDCName_flags(ndr, "flags", r->in.flags);
13585                 ndr->depth--;
13586         }
13587         if (flags & NDR_OUT) {
13588                 ndr_print_struct(ndr, "out", "netr_DsRGetDCNameEx");
13589                 ndr->depth++;
13590                 ndr_print_ptr(ndr, "info", r->out.info);
13591                 ndr->depth++;
13592                 ndr_print_ptr(ndr, "info", *r->out.info);
13593                 ndr->depth++;
13594                 if (*r->out.info) {
13595                         ndr_print_netr_DsRGetDCNameInfo(ndr, "info", *r->out.info);
13596                 }
13597                 ndr->depth--;
13598                 ndr->depth--;
13599                 ndr_print_WERROR(ndr, "result", r->out.result);
13600                 ndr->depth--;
13601         }
13602         ndr->depth--;
13603 }
13604
13605 static enum ndr_err_code ndr_push_netr_DsRGetSiteName(struct ndr_push *ndr, int flags, const struct netr_DsRGetSiteName *r)
13606 {
13607         if (flags & NDR_IN) {
13608                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
13609                 if (r->in.computer_name) {
13610                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13611                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13612                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13613                         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));
13614                 }
13615         }
13616         if (flags & NDR_OUT) {
13617                 if (r->out.site == NULL) {
13618                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13619                 }
13620                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.site));
13621                 if (*r->out.site) {
13622                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.site, CH_UTF16)));
13623                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13624                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.site, CH_UTF16)));
13625                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.site, ndr_charset_length(*r->out.site, CH_UTF16), sizeof(uint16_t), CH_UTF16));
13626                 }
13627                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
13628         }
13629         return NDR_ERR_SUCCESS;
13630 }
13631
13632 static enum ndr_err_code ndr_pull_netr_DsRGetSiteName(struct ndr_pull *ndr, int flags, struct netr_DsRGetSiteName *r)
13633 {
13634         uint32_t _ptr_computer_name;
13635         uint32_t _ptr_site;
13636         TALLOC_CTX *_mem_save_computer_name_0;
13637         TALLOC_CTX *_mem_save_site_0;
13638         TALLOC_CTX *_mem_save_site_1;
13639         if (flags & NDR_IN) {
13640                 ZERO_STRUCT(r->out);
13641
13642                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
13643                 if (_ptr_computer_name) {
13644                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
13645                 } else {
13646                         r->in.computer_name = NULL;
13647                 }
13648                 if (r->in.computer_name) {
13649                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13650                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
13651                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
13652                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
13653                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
13654                                 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));
13655                         }
13656                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
13657                         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));
13658                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
13659                 }
13660                 NDR_PULL_ALLOC(ndr, r->out.site);
13661                 ZERO_STRUCTP(r->out.site);
13662         }
13663         if (flags & NDR_OUT) {
13664                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13665                         NDR_PULL_ALLOC(ndr, r->out.site);
13666                 }
13667                 _mem_save_site_0 = NDR_PULL_GET_MEM_CTX(ndr);
13668                 NDR_PULL_SET_MEM_CTX(ndr, r->out.site, LIBNDR_FLAG_REF_ALLOC);
13669                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site));
13670                 if (_ptr_site) {
13671                         NDR_PULL_ALLOC(ndr, *r->out.site);
13672                 } else {
13673                         *r->out.site = NULL;
13674                 }
13675                 if (*r->out.site) {
13676                         _mem_save_site_1 = NDR_PULL_GET_MEM_CTX(ndr);
13677                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.site, 0);
13678                         NDR_CHECK(ndr_pull_array_size(ndr, r->out.site));
13679                         NDR_CHECK(ndr_pull_array_length(ndr, r->out.site));
13680                         if (ndr_get_array_length(ndr, r->out.site) > ndr_get_array_size(ndr, r->out.site)) {
13681                                 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));
13682                         }
13683                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.site), sizeof(uint16_t)));
13684                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.site, ndr_get_array_length(ndr, r->out.site), sizeof(uint16_t), CH_UTF16));
13685                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_1, 0);
13686                 }
13687                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_0, LIBNDR_FLAG_REF_ALLOC);
13688                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
13689         }
13690         return NDR_ERR_SUCCESS;
13691 }
13692
13693 _PUBLIC_ void ndr_print_netr_DsRGetSiteName(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetSiteName *r)
13694 {
13695         ndr_print_struct(ndr, name, "netr_DsRGetSiteName");
13696         ndr->depth++;
13697         if (flags & NDR_SET_VALUES) {
13698                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13699         }
13700         if (flags & NDR_IN) {
13701                 ndr_print_struct(ndr, "in", "netr_DsRGetSiteName");
13702                 ndr->depth++;
13703                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
13704                 ndr->depth++;
13705                 if (r->in.computer_name) {
13706                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
13707                 }
13708                 ndr->depth--;
13709                 ndr->depth--;
13710         }
13711         if (flags & NDR_OUT) {
13712                 ndr_print_struct(ndr, "out", "netr_DsRGetSiteName");
13713                 ndr->depth++;
13714                 ndr_print_ptr(ndr, "site", r->out.site);
13715                 ndr->depth++;
13716                 ndr_print_ptr(ndr, "site", *r->out.site);
13717                 ndr->depth++;
13718                 if (*r->out.site) {
13719                         ndr_print_string(ndr, "site", *r->out.site);
13720                 }
13721                 ndr->depth--;
13722                 ndr->depth--;
13723                 ndr_print_WERROR(ndr, "result", r->out.result);
13724                 ndr->depth--;
13725         }
13726         ndr->depth--;
13727 }
13728
13729 static enum ndr_err_code ndr_push_netr_LogonGetDomainInfo(struct ndr_push *ndr, int flags, const struct netr_LogonGetDomainInfo *r)
13730 {
13731         if (flags & NDR_IN) {
13732                 if (r->in.server_name == NULL) {
13733                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13734                 }
13735                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13736                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13737                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13738                 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));
13739                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
13740                 if (r->in.computer_name) {
13741                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13742                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13743                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13744                         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));
13745                 }
13746                 if (r->in.credential == NULL) {
13747                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13748                 }
13749                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
13750                 if (r->in.return_authenticator == NULL) {
13751                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13752                 }
13753                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
13754                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
13755                 if (r->in.query == NULL) {
13756                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13757                 }
13758                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.query, r->in.level));
13759                 NDR_CHECK(ndr_push_netr_WorkstationInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.query));
13760         }
13761         if (flags & NDR_OUT) {
13762                 if (r->out.return_authenticator == NULL) {
13763                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13764                 }
13765                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
13766                 if (r->out.info == NULL) {
13767                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13768                 }
13769                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
13770                 NDR_CHECK(ndr_push_netr_DomainInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
13771                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
13772         }
13773         return NDR_ERR_SUCCESS;
13774 }
13775
13776 static enum ndr_err_code ndr_pull_netr_LogonGetDomainInfo(struct ndr_pull *ndr, int flags, struct netr_LogonGetDomainInfo *r)
13777 {
13778         uint32_t _ptr_computer_name;
13779         TALLOC_CTX *_mem_save_computer_name_0;
13780         TALLOC_CTX *_mem_save_credential_0;
13781         TALLOC_CTX *_mem_save_return_authenticator_0;
13782         TALLOC_CTX *_mem_save_query_0;
13783         TALLOC_CTX *_mem_save_info_0;
13784         if (flags & NDR_IN) {
13785                 ZERO_STRUCT(r->out);
13786
13787                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
13788                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
13789                 if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
13790                         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));
13791                 }
13792                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
13793                 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));
13794                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
13795                 if (_ptr_computer_name) {
13796                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
13797                 } else {
13798                         r->in.computer_name = NULL;
13799                 }
13800                 if (r->in.computer_name) {
13801                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13802                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
13803                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
13804                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
13805                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
13806                                 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));
13807                         }
13808                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
13809                         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));
13810                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
13811                 }
13812                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13813                         NDR_PULL_ALLOC(ndr, r->in.credential);
13814                 }
13815                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
13816                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
13817                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
13818                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
13819                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13820                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
13821                 }
13822                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
13823                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
13824                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
13825                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
13826                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
13827                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13828                         NDR_PULL_ALLOC(ndr, r->in.query);
13829                 }
13830                 _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
13831                 NDR_PULL_SET_MEM_CTX(ndr, r->in.query, LIBNDR_FLAG_REF_ALLOC);
13832                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.query, r->in.level));
13833                 NDR_CHECK(ndr_pull_netr_WorkstationInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.query));
13834                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
13835                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
13836                 *r->out.return_authenticator = *r->in.return_authenticator;
13837                 NDR_PULL_ALLOC(ndr, r->out.info);
13838                 ZERO_STRUCTP(r->out.info);
13839         }
13840         if (flags & NDR_OUT) {
13841                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13842                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
13843                 }
13844                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
13845                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
13846                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
13847                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
13848                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13849                         NDR_PULL_ALLOC(ndr, r->out.info);
13850                 }
13851                 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
13852                 NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
13853                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
13854                 NDR_CHECK(ndr_pull_netr_DomainInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
13855                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
13856                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
13857         }
13858         return NDR_ERR_SUCCESS;
13859 }
13860
13861 _PUBLIC_ void ndr_print_netr_LogonGetDomainInfo(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonGetDomainInfo *r)
13862 {
13863         ndr_print_struct(ndr, name, "netr_LogonGetDomainInfo");
13864         ndr->depth++;
13865         if (flags & NDR_SET_VALUES) {
13866                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13867         }
13868         if (flags & NDR_IN) {
13869                 ndr_print_struct(ndr, "in", "netr_LogonGetDomainInfo");
13870                 ndr->depth++;
13871                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
13872                 ndr->depth++;
13873                 ndr_print_string(ndr, "server_name", r->in.server_name);
13874                 ndr->depth--;
13875                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
13876                 ndr->depth++;
13877                 if (r->in.computer_name) {
13878                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
13879                 }
13880                 ndr->depth--;
13881                 ndr_print_ptr(ndr, "credential", r->in.credential);
13882                 ndr->depth++;
13883                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
13884                 ndr->depth--;
13885                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
13886                 ndr->depth++;
13887                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
13888                 ndr->depth--;
13889                 ndr_print_uint32(ndr, "level", r->in.level);
13890                 ndr_print_ptr(ndr, "query", r->in.query);
13891                 ndr->depth++;
13892                 ndr_print_set_switch_value(ndr, r->in.query, r->in.level);
13893                 ndr_print_netr_WorkstationInfo(ndr, "query", r->in.query);
13894                 ndr->depth--;
13895                 ndr->depth--;
13896         }
13897         if (flags & NDR_OUT) {
13898                 ndr_print_struct(ndr, "out", "netr_LogonGetDomainInfo");
13899                 ndr->depth++;
13900                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
13901                 ndr->depth++;
13902                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
13903                 ndr->depth--;
13904                 ndr_print_ptr(ndr, "info", r->out.info);
13905                 ndr->depth++;
13906                 ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
13907                 ndr_print_netr_DomainInfo(ndr, "info", r->out.info);
13908                 ndr->depth--;
13909                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
13910                 ndr->depth--;
13911         }
13912         ndr->depth--;
13913 }
13914
13915 static enum ndr_err_code ndr_push_netr_ServerPasswordSet2(struct ndr_push *ndr, int flags, const struct netr_ServerPasswordSet2 *r)
13916 {
13917         if (flags & NDR_IN) {
13918                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
13919                 if (r->in.server_name) {
13920                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13921                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13922                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13923                         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));
13924                 }
13925                 if (r->in.account_name == NULL) {
13926                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13927                 }
13928                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
13929                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13930                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
13931                 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));
13932                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
13933                 if (r->in.computer_name == NULL) {
13934                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13935                 }
13936                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13937                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13938                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13939                 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));
13940                 if (r->in.credential == NULL) {
13941                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13942                 }
13943                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
13944                 if (r->in.new_password == NULL) {
13945                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13946                 }
13947                 NDR_CHECK(ndr_push_netr_CryptPassword(ndr, NDR_SCALARS, r->in.new_password));
13948         }
13949         if (flags & NDR_OUT) {
13950                 if (r->out.return_authenticator == NULL) {
13951                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13952                 }
13953                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
13954                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
13955         }
13956         return NDR_ERR_SUCCESS;
13957 }
13958
13959 static enum ndr_err_code ndr_pull_netr_ServerPasswordSet2(struct ndr_pull *ndr, int flags, struct netr_ServerPasswordSet2 *r)
13960 {
13961         uint32_t _ptr_server_name;
13962         TALLOC_CTX *_mem_save_server_name_0;
13963         TALLOC_CTX *_mem_save_credential_0;
13964         TALLOC_CTX *_mem_save_return_authenticator_0;
13965         TALLOC_CTX *_mem_save_new_password_0;
13966         if (flags & NDR_IN) {
13967                 ZERO_STRUCT(r->out);
13968
13969                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
13970                 if (_ptr_server_name) {
13971                         NDR_PULL_ALLOC(ndr, r->in.server_name);
13972                 } else {
13973                         r->in.server_name = NULL;
13974                 }
13975                 if (r->in.server_name) {
13976                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13977                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
13978                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
13979                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
13980                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
13981                                 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));
13982                         }
13983                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
13984                         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));
13985                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
13986                 }
13987                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
13988                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
13989                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
13990                         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));
13991                 }
13992                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
13993                 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));
13994                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
13995                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
13996                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
13997                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
13998                         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));
13999                 }
14000                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
14001                 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));
14002                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14003                         NDR_PULL_ALLOC(ndr, r->in.credential);
14004                 }
14005                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
14006                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
14007                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
14008                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
14009                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14010                         NDR_PULL_ALLOC(ndr, r->in.new_password);
14011                 }
14012                 _mem_save_new_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
14013                 NDR_PULL_SET_MEM_CTX(ndr, r->in.new_password, LIBNDR_FLAG_REF_ALLOC);
14014                 NDR_CHECK(ndr_pull_netr_CryptPassword(ndr, NDR_SCALARS, r->in.new_password));
14015                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_new_password_0, LIBNDR_FLAG_REF_ALLOC);
14016                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
14017                 ZERO_STRUCTP(r->out.return_authenticator);
14018         }
14019         if (flags & NDR_OUT) {
14020                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14021                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
14022                 }
14023                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
14024                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
14025                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
14026                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
14027                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
14028         }
14029         return NDR_ERR_SUCCESS;
14030 }
14031
14032 _PUBLIC_ void ndr_print_netr_ServerPasswordSet2(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerPasswordSet2 *r)
14033 {
14034         ndr_print_struct(ndr, name, "netr_ServerPasswordSet2");
14035         ndr->depth++;
14036         if (flags & NDR_SET_VALUES) {
14037                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
14038         }
14039         if (flags & NDR_IN) {
14040                 ndr_print_struct(ndr, "in", "netr_ServerPasswordSet2");
14041                 ndr->depth++;
14042                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
14043                 ndr->depth++;
14044                 if (r->in.server_name) {
14045                         ndr_print_string(ndr, "server_name", r->in.server_name);
14046                 }
14047                 ndr->depth--;
14048                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
14049                 ndr->depth++;
14050                 ndr_print_string(ndr, "account_name", r->in.account_name);
14051                 ndr->depth--;
14052                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
14053                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
14054                 ndr->depth++;
14055                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
14056                 ndr->depth--;
14057                 ndr_print_ptr(ndr, "credential", r->in.credential);
14058                 ndr->depth++;
14059                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
14060                 ndr->depth--;
14061                 ndr_print_ptr(ndr, "new_password", r->in.new_password);
14062                 ndr->depth++;
14063                 ndr_print_netr_CryptPassword(ndr, "new_password", r->in.new_password);
14064                 ndr->depth--;
14065                 ndr->depth--;
14066         }
14067         if (flags & NDR_OUT) {
14068                 ndr_print_struct(ndr, "out", "netr_ServerPasswordSet2");
14069                 ndr->depth++;
14070                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
14071                 ndr->depth++;
14072                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
14073                 ndr->depth--;
14074                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
14075                 ndr->depth--;
14076         }
14077         ndr->depth--;
14078 }
14079
14080 static enum ndr_err_code ndr_push_netr_ServerPasswordGet(struct ndr_push *ndr, int flags, const struct netr_ServerPasswordGet *r)
14081 {
14082         if (flags & NDR_IN) {
14083                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
14084                 if (r->in.server_name) {
14085                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14086                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14087                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14088                         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));
14089                 }
14090                 if (r->in.account_name == NULL) {
14091                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14092                 }
14093                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
14094                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14095                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
14096                 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));
14097                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
14098                 if (r->in.computer_name == NULL) {
14099                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14100                 }
14101                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
14102                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14103                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
14104                 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));
14105                 if (r->in.credential == NULL) {
14106                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14107                 }
14108                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
14109         }
14110         if (flags & NDR_OUT) {
14111                 if (r->out.return_authenticator == NULL) {
14112                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14113                 }
14114                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
14115                 if (r->out.password == NULL) {
14116                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14117                 }
14118                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, r->out.password));
14119                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
14120         }
14121         return NDR_ERR_SUCCESS;
14122 }
14123
14124 static enum ndr_err_code ndr_pull_netr_ServerPasswordGet(struct ndr_pull *ndr, int flags, struct netr_ServerPasswordGet *r)
14125 {
14126         uint32_t _ptr_server_name;
14127         TALLOC_CTX *_mem_save_server_name_0;
14128         TALLOC_CTX *_mem_save_credential_0;
14129         TALLOC_CTX *_mem_save_return_authenticator_0;
14130         TALLOC_CTX *_mem_save_password_0;
14131         if (flags & NDR_IN) {
14132                 ZERO_STRUCT(r->out);
14133
14134                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
14135                 if (_ptr_server_name) {
14136                         NDR_PULL_ALLOC(ndr, r->in.server_name);
14137                 } else {
14138                         r->in.server_name = NULL;
14139                 }
14140                 if (r->in.server_name) {
14141                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
14142                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
14143                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
14144                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
14145                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
14146                                 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));
14147                         }
14148                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
14149                         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));
14150                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
14151                 }
14152                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
14153                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
14154                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
14155                         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));
14156                 }
14157                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
14158                 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));
14159                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
14160                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
14161                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
14162                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
14163                         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));
14164                 }
14165                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
14166                 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));
14167                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14168                         NDR_PULL_ALLOC(ndr, r->in.credential);
14169                 }
14170                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
14171                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
14172                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
14173                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
14174                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
14175                 ZERO_STRUCTP(r->out.return_authenticator);
14176                 NDR_PULL_ALLOC(ndr, r->out.password);
14177                 ZERO_STRUCTP(r->out.password);
14178         }
14179         if (flags & NDR_OUT) {
14180                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14181                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
14182                 }
14183                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
14184                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
14185                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
14186                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
14187                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14188                         NDR_PULL_ALLOC(ndr, r->out.password);
14189                 }
14190                 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
14191                 NDR_PULL_SET_MEM_CTX(ndr, r->out.password, LIBNDR_FLAG_REF_ALLOC);
14192                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, r->out.password));
14193                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, LIBNDR_FLAG_REF_ALLOC);
14194                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
14195         }
14196         return NDR_ERR_SUCCESS;
14197 }
14198
14199 _PUBLIC_ void ndr_print_netr_ServerPasswordGet(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerPasswordGet *r)
14200 {
14201         ndr_print_struct(ndr, name, "netr_ServerPasswordGet");
14202         ndr->depth++;
14203         if (flags & NDR_SET_VALUES) {
14204                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
14205         }
14206         if (flags & NDR_IN) {
14207                 ndr_print_struct(ndr, "in", "netr_ServerPasswordGet");
14208                 ndr->depth++;
14209                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
14210                 ndr->depth++;
14211                 if (r->in.server_name) {
14212                         ndr_print_string(ndr, "server_name", r->in.server_name);
14213                 }
14214                 ndr->depth--;
14215                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
14216                 ndr->depth++;
14217                 ndr_print_string(ndr, "account_name", r->in.account_name);
14218                 ndr->depth--;
14219                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
14220                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
14221                 ndr->depth++;
14222                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
14223                 ndr->depth--;
14224                 ndr_print_ptr(ndr, "credential", r->in.credential);
14225                 ndr->depth++;
14226                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
14227                 ndr->depth--;
14228                 ndr->depth--;
14229         }
14230         if (flags & NDR_OUT) {
14231                 ndr_print_struct(ndr, "out", "netr_ServerPasswordGet");
14232                 ndr->depth++;
14233                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
14234                 ndr->depth++;
14235                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
14236                 ndr->depth--;
14237                 ndr_print_ptr(ndr, "password", r->out.password);
14238                 ndr->depth++;
14239                 ndr_print_samr_Password(ndr, "password", r->out.password);
14240                 ndr->depth--;
14241                 ndr_print_WERROR(ndr, "result", r->out.result);
14242                 ndr->depth--;
14243         }
14244         ndr->depth--;
14245 }
14246
14247 static enum ndr_err_code ndr_push_netr_NETRLOGONSENDTOSAM(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONSENDTOSAM *r)
14248 {
14249         if (flags & NDR_IN) {
14250         }
14251         if (flags & NDR_OUT) {
14252                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
14253         }
14254         return NDR_ERR_SUCCESS;
14255 }
14256
14257 static enum ndr_err_code ndr_pull_netr_NETRLOGONSENDTOSAM(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONSENDTOSAM *r)
14258 {
14259         if (flags & NDR_IN) {
14260         }
14261         if (flags & NDR_OUT) {
14262                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
14263         }
14264         return NDR_ERR_SUCCESS;
14265 }
14266
14267 _PUBLIC_ void ndr_print_netr_NETRLOGONSENDTOSAM(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONSENDTOSAM *r)
14268 {
14269         ndr_print_struct(ndr, name, "netr_NETRLOGONSENDTOSAM");
14270         ndr->depth++;
14271         if (flags & NDR_SET_VALUES) {
14272                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
14273         }
14274         if (flags & NDR_IN) {
14275                 ndr_print_struct(ndr, "in", "netr_NETRLOGONSENDTOSAM");
14276                 ndr->depth++;
14277                 ndr->depth--;
14278         }
14279         if (flags & NDR_OUT) {
14280                 ndr_print_struct(ndr, "out", "netr_NETRLOGONSENDTOSAM");
14281                 ndr->depth++;
14282                 ndr_print_WERROR(ndr, "result", r->out.result);
14283                 ndr->depth--;
14284         }
14285         ndr->depth--;
14286 }
14287
14288 static enum ndr_err_code ndr_push_netr_DsRAddressToSitenamesW(struct ndr_push *ndr, int flags, const struct netr_DsRAddressToSitenamesW *r)
14289 {
14290         uint32_t cntr_addresses_1;
14291         if (flags & NDR_IN) {
14292                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
14293                 if (r->in.server_name) {
14294                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14295                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14296                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14297                         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));
14298                 }
14299                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
14300                 if (r->in.addresses == NULL) {
14301                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14302                 }
14303                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
14304                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
14305                         NDR_CHECK(ndr_push_netr_DsRAddress(ndr, NDR_SCALARS, &r->in.addresses[cntr_addresses_1]));
14306                 }
14307                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
14308                         NDR_CHECK(ndr_push_netr_DsRAddress(ndr, NDR_BUFFERS, &r->in.addresses[cntr_addresses_1]));
14309                 }
14310         }
14311         if (flags & NDR_OUT) {
14312                 if (r->out.ctr == NULL) {
14313                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14314                 }
14315                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.ctr));
14316                 if (*r->out.ctr) {
14317                         NDR_CHECK(ndr_push_netr_DsRAddressToSitenamesWCtr(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.ctr));
14318                 }
14319                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
14320         }
14321         return NDR_ERR_SUCCESS;
14322 }
14323
14324 static enum ndr_err_code ndr_pull_netr_DsRAddressToSitenamesW(struct ndr_pull *ndr, int flags, struct netr_DsRAddressToSitenamesW *r)
14325 {
14326         uint32_t _ptr_server_name;
14327         uint32_t cntr_addresses_1;
14328         uint32_t _ptr_ctr;
14329         TALLOC_CTX *_mem_save_server_name_0;
14330         TALLOC_CTX *_mem_save_addresses_1;
14331         TALLOC_CTX *_mem_save_ctr_0;
14332         TALLOC_CTX *_mem_save_ctr_1;
14333         if (flags & NDR_IN) {
14334                 ZERO_STRUCT(r->out);
14335
14336                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
14337                 if (_ptr_server_name) {
14338                         NDR_PULL_ALLOC(ndr, r->in.server_name);
14339                 } else {
14340                         r->in.server_name = NULL;
14341                 }
14342                 if (r->in.server_name) {
14343                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
14344                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
14345                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
14346                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
14347                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
14348                                 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));
14349                         }
14350                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
14351                         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));
14352                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
14353                 }
14354                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.count));
14355                 if (r->in.count > 32000) {
14356                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
14357                 }
14358                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.addresses));
14359                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14360                         NDR_PULL_ALLOC_N(ndr, r->in.addresses, ndr_get_array_size(ndr, &r->in.addresses));
14361                 }
14362                 _mem_save_addresses_1 = NDR_PULL_GET_MEM_CTX(ndr);
14363                 NDR_PULL_SET_MEM_CTX(ndr, r->in.addresses, 0);
14364                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
14365                         NDR_CHECK(ndr_pull_netr_DsRAddress(ndr, NDR_SCALARS, &r->in.addresses[cntr_addresses_1]));
14366                 }
14367                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
14368                         NDR_CHECK(ndr_pull_netr_DsRAddress(ndr, NDR_BUFFERS, &r->in.addresses[cntr_addresses_1]));
14369                 }
14370                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_addresses_1, 0);
14371                 NDR_PULL_ALLOC(ndr, r->out.ctr);
14372                 ZERO_STRUCTP(r->out.ctr);
14373                 if (r->in.addresses) {
14374                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.addresses, r->in.count));
14375                 }
14376         }
14377         if (flags & NDR_OUT) {
14378                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14379                         NDR_PULL_ALLOC(ndr, r->out.ctr);
14380                 }
14381                 _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
14382                 NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
14383                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr));
14384                 if (_ptr_ctr) {
14385                         NDR_PULL_ALLOC(ndr, *r->out.ctr);
14386                 } else {
14387                         *r->out.ctr = NULL;
14388                 }
14389                 if (*r->out.ctr) {
14390                         _mem_save_ctr_1 = NDR_PULL_GET_MEM_CTX(ndr);
14391                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.ctr, 0);
14392                         NDR_CHECK(ndr_pull_netr_DsRAddressToSitenamesWCtr(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.ctr));
14393                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_1, 0);
14394                 }
14395                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
14396                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
14397         }
14398         return NDR_ERR_SUCCESS;
14399 }
14400
14401 _PUBLIC_ void ndr_print_netr_DsRAddressToSitenamesW(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRAddressToSitenamesW *r)
14402 {
14403         uint32_t cntr_addresses_1;
14404         ndr_print_struct(ndr, name, "netr_DsRAddressToSitenamesW");
14405         ndr->depth++;
14406         if (flags & NDR_SET_VALUES) {
14407                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
14408         }
14409         if (flags & NDR_IN) {
14410                 ndr_print_struct(ndr, "in", "netr_DsRAddressToSitenamesW");
14411                 ndr->depth++;
14412                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
14413                 ndr->depth++;
14414                 if (r->in.server_name) {
14415                         ndr_print_string(ndr, "server_name", r->in.server_name);
14416                 }
14417                 ndr->depth--;
14418                 ndr_print_uint32(ndr, "count", r->in.count);
14419                 ndr_print_ptr(ndr, "addresses", r->in.addresses);
14420                 ndr->depth++;
14421                 ndr->print(ndr, "%s: ARRAY(%d)", "addresses", (int)r->in.count);
14422                 ndr->depth++;
14423                 for (cntr_addresses_1=0;cntr_addresses_1<r->in.count;cntr_addresses_1++) {
14424                         char *idx_1=NULL;
14425                         if (asprintf(&idx_1, "[%d]", cntr_addresses_1) != -1) {
14426                                 ndr_print_netr_DsRAddress(ndr, "addresses", &r->in.addresses[cntr_addresses_1]);
14427                                 free(idx_1);
14428                         }
14429                 }
14430                 ndr->depth--;
14431                 ndr->depth--;
14432                 ndr->depth--;
14433         }
14434         if (flags & NDR_OUT) {
14435                 ndr_print_struct(ndr, "out", "netr_DsRAddressToSitenamesW");
14436                 ndr->depth++;
14437                 ndr_print_ptr(ndr, "ctr", r->out.ctr);
14438                 ndr->depth++;
14439                 ndr_print_ptr(ndr, "ctr", *r->out.ctr);
14440                 ndr->depth++;
14441                 if (*r->out.ctr) {
14442                         ndr_print_netr_DsRAddressToSitenamesWCtr(ndr, "ctr", *r->out.ctr);
14443                 }
14444                 ndr->depth--;
14445                 ndr->depth--;
14446                 ndr_print_WERROR(ndr, "result", r->out.result);
14447                 ndr->depth--;
14448         }
14449         ndr->depth--;
14450 }
14451
14452 static enum ndr_err_code ndr_push_netr_DsRGetDCNameEx2(struct ndr_push *ndr, int flags, const struct netr_DsRGetDCNameEx2 *r)
14453 {
14454         if (flags & NDR_IN) {
14455                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
14456                 if (r->in.server_unc) {
14457                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
14458                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14459                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
14460                         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));
14461                 }
14462                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.client_account));
14463                 if (r->in.client_account) {
14464                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.client_account, CH_UTF16)));
14465                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14466                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.client_account, CH_UTF16)));
14467                         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));
14468                 }
14469                 NDR_CHECK(ndr_push_samr_AcctFlags(ndr, NDR_SCALARS, r->in.mask));
14470                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_name));
14471                 if (r->in.domain_name) {
14472                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
14473                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14474                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
14475                         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));
14476                 }
14477                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_guid));
14478                 if (r->in.domain_guid) {
14479                         NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, r->in.domain_guid));
14480                 }
14481                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.site_name));
14482                 if (r->in.site_name) {
14483                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.site_name, CH_UTF16)));
14484                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14485                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.site_name, CH_UTF16)));
14486                         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));
14487                 }
14488                 NDR_CHECK(ndr_push_netr_DsRGetDCName_flags(ndr, NDR_SCALARS, r->in.flags));
14489         }
14490         if (flags & NDR_OUT) {
14491                 if (r->out.info == NULL) {
14492                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14493                 }
14494                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.info));
14495                 if (*r->out.info) {
14496                         NDR_CHECK(ndr_push_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
14497                 }
14498                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
14499         }
14500         return NDR_ERR_SUCCESS;
14501 }
14502
14503 static enum ndr_err_code ndr_pull_netr_DsRGetDCNameEx2(struct ndr_pull *ndr, int flags, struct netr_DsRGetDCNameEx2 *r)
14504 {
14505         uint32_t _ptr_server_unc;
14506         uint32_t _ptr_client_account;
14507         uint32_t _ptr_domain_name;
14508         uint32_t _ptr_domain_guid;
14509         uint32_t _ptr_site_name;
14510         uint32_t _ptr_info;
14511         TALLOC_CTX *_mem_save_server_unc_0;
14512         TALLOC_CTX *_mem_save_client_account_0;
14513         TALLOC_CTX *_mem_save_domain_name_0;
14514         TALLOC_CTX *_mem_save_domain_guid_0;
14515         TALLOC_CTX *_mem_save_site_name_0;
14516         TALLOC_CTX *_mem_save_info_0;
14517         TALLOC_CTX *_mem_save_info_1;
14518         if (flags & NDR_IN) {
14519                 ZERO_STRUCT(r->out);
14520
14521                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
14522                 if (_ptr_server_unc) {
14523                         NDR_PULL_ALLOC(ndr, r->in.server_unc);
14524                 } else {
14525                         r->in.server_unc = NULL;
14526                 }
14527                 if (r->in.server_unc) {
14528                         _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
14529                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
14530                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
14531                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
14532                         if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
14533                                 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));
14534                         }
14535                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
14536                         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));
14537                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
14538                 }
14539                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client_account));
14540                 if (_ptr_client_account) {
14541                         NDR_PULL_ALLOC(ndr, r->in.client_account);
14542                 } else {
14543                         r->in.client_account = NULL;
14544                 }
14545                 if (r->in.client_account) {
14546                         _mem_save_client_account_0 = NDR_PULL_GET_MEM_CTX(ndr);
14547                         NDR_PULL_SET_MEM_CTX(ndr, r->in.client_account, 0);
14548                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.client_account));
14549                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.client_account));
14550                         if (ndr_get_array_length(ndr, &r->in.client_account) > ndr_get_array_size(ndr, &r->in.client_account)) {
14551                                 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));
14552                         }
14553                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.client_account), sizeof(uint16_t)));
14554                         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));
14555                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_account_0, 0);
14556                 }
14557                 NDR_CHECK(ndr_pull_samr_AcctFlags(ndr, NDR_SCALARS, &r->in.mask));
14558                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
14559                 if (_ptr_domain_name) {
14560                         NDR_PULL_ALLOC(ndr, r->in.domain_name);
14561                 } else {
14562                         r->in.domain_name = NULL;
14563                 }
14564                 if (r->in.domain_name) {
14565                         _mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
14566                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_name, 0);
14567                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domain_name));
14568                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domain_name));
14569                         if (ndr_get_array_length(ndr, &r->in.domain_name) > ndr_get_array_size(ndr, &r->in.domain_name)) {
14570                                 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));
14571                         }
14572                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t)));
14573                         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));
14574                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
14575                 }
14576                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_guid));
14577                 if (_ptr_domain_guid) {
14578                         NDR_PULL_ALLOC(ndr, r->in.domain_guid);
14579                 } else {
14580                         r->in.domain_guid = NULL;
14581                 }
14582                 if (r->in.domain_guid) {
14583                         _mem_save_domain_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
14584                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_guid, 0);
14585                         NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, r->in.domain_guid));
14586                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_guid_0, 0);
14587                 }
14588                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_name));
14589                 if (_ptr_site_name) {
14590                         NDR_PULL_ALLOC(ndr, r->in.site_name);
14591                 } else {
14592                         r->in.site_name = NULL;
14593                 }
14594                 if (r->in.site_name) {
14595                         _mem_save_site_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
14596                         NDR_PULL_SET_MEM_CTX(ndr, r->in.site_name, 0);
14597                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.site_name));
14598                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.site_name));
14599                         if (ndr_get_array_length(ndr, &r->in.site_name) > ndr_get_array_size(ndr, &r->in.site_name)) {
14600                                 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));
14601                         }
14602                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.site_name), sizeof(uint16_t)));
14603                         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));
14604                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_name_0, 0);
14605                 }
14606                 NDR_CHECK(ndr_pull_netr_DsRGetDCName_flags(ndr, NDR_SCALARS, &r->in.flags));
14607                 NDR_PULL_ALLOC(ndr, r->out.info);
14608                 ZERO_STRUCTP(r->out.info);
14609         }
14610         if (flags & NDR_OUT) {
14611                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14612                         NDR_PULL_ALLOC(ndr, r->out.info);
14613                 }
14614                 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
14615                 NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
14616                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
14617                 if (_ptr_info) {
14618                         NDR_PULL_ALLOC(ndr, *r->out.info);
14619                 } else {
14620                         *r->out.info = NULL;
14621                 }
14622                 if (*r->out.info) {
14623                         _mem_save_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
14624                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.info, 0);
14625                         NDR_CHECK(ndr_pull_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
14626                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_1, 0);
14627                 }
14628                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
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_DsRGetDCNameEx2(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetDCNameEx2 *r)
14635 {
14636         ndr_print_struct(ndr, name, "netr_DsRGetDCNameEx2");
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_DsRGetDCNameEx2");
14643                 ndr->depth++;
14644                 ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
14645                 ndr->depth++;
14646                 if (r->in.server_unc) {
14647                         ndr_print_string(ndr, "server_unc", r->in.server_unc);
14648                 }
14649                 ndr->depth--;
14650                 ndr_print_ptr(ndr, "client_account", r->in.client_account);
14651                 ndr->depth++;
14652                 if (r->in.client_account) {
14653                         ndr_print_string(ndr, "client_account", r->in.client_account);
14654                 }
14655                 ndr->depth--;
14656                 ndr_print_samr_AcctFlags(ndr, "mask", r->in.mask);
14657                 ndr_print_ptr(ndr, "domain_name", r->in.domain_name);
14658                 ndr->depth++;
14659                 if (r->in.domain_name) {
14660                         ndr_print_string(ndr, "domain_name", r->in.domain_name);
14661                 }
14662                 ndr->depth--;
14663                 ndr_print_ptr(ndr, "domain_guid", r->in.domain_guid);
14664                 ndr->depth++;
14665                 if (r->in.domain_guid) {
14666                         ndr_print_GUID(ndr, "domain_guid", r->in.domain_guid);
14667                 }
14668                 ndr->depth--;
14669                 ndr_print_ptr(ndr, "site_name", r->in.site_name);
14670                 ndr->depth++;
14671                 if (r->in.site_name) {
14672                         ndr_print_string(ndr, "site_name", r->in.site_name);
14673                 }
14674                 ndr->depth--;
14675                 ndr_print_netr_DsRGetDCName_flags(ndr, "flags", r->in.flags);
14676                 ndr->depth--;
14677         }
14678         if (flags & NDR_OUT) {
14679                 ndr_print_struct(ndr, "out", "netr_DsRGetDCNameEx2");
14680                 ndr->depth++;
14681                 ndr_print_ptr(ndr, "info", r->out.info);
14682                 ndr->depth++;
14683                 ndr_print_ptr(ndr, "info", *r->out.info);
14684                 ndr->depth++;
14685                 if (*r->out.info) {
14686                         ndr_print_netr_DsRGetDCNameInfo(ndr, "info", *r->out.info);
14687                 }
14688                 ndr->depth--;
14689                 ndr->depth--;
14690                 ndr_print_WERROR(ndr, "result", r->out.result);
14691                 ndr->depth--;
14692         }
14693         ndr->depth--;
14694 }
14695
14696 static enum ndr_err_code ndr_push_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN *r)
14697 {
14698         if (flags & NDR_IN) {
14699         }
14700         if (flags & NDR_OUT) {
14701                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
14702         }
14703         return NDR_ERR_SUCCESS;
14704 }
14705
14706 static enum ndr_err_code ndr_pull_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN *r)
14707 {
14708         if (flags & NDR_IN) {
14709         }
14710         if (flags & NDR_OUT) {
14711                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
14712         }
14713         return NDR_ERR_SUCCESS;
14714 }
14715
14716 _PUBLIC_ void ndr_print_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN *r)
14717 {
14718         ndr_print_struct(ndr, name, "netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN");
14719         ndr->depth++;
14720         if (flags & NDR_SET_VALUES) {
14721                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
14722         }
14723         if (flags & NDR_IN) {
14724                 ndr_print_struct(ndr, "in", "netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN");
14725                 ndr->depth++;
14726                 ndr->depth--;
14727         }
14728         if (flags & NDR_OUT) {
14729                 ndr_print_struct(ndr, "out", "netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN");
14730                 ndr->depth++;
14731                 ndr_print_WERROR(ndr, "result", r->out.result);
14732                 ndr->depth--;
14733         }
14734         ndr->depth--;
14735 }
14736
14737 static enum ndr_err_code ndr_push_netr_NetrEnumerateTrustedDomainsEx(struct ndr_push *ndr, int flags, const struct netr_NetrEnumerateTrustedDomainsEx *r)
14738 {
14739         if (flags & NDR_IN) {
14740                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
14741                 if (r->in.server_name) {
14742                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14743                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14744                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14745                         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));
14746                 }
14747         }
14748         if (flags & NDR_OUT) {
14749                 if (r->out.dom_trust_list == NULL) {
14750                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14751                 }
14752                 NDR_CHECK(ndr_push_netr_DomainTrustList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.dom_trust_list));
14753                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
14754         }
14755         return NDR_ERR_SUCCESS;
14756 }
14757
14758 static enum ndr_err_code ndr_pull_netr_NetrEnumerateTrustedDomainsEx(struct ndr_pull *ndr, int flags, struct netr_NetrEnumerateTrustedDomainsEx *r)
14759 {
14760         uint32_t _ptr_server_name;
14761         TALLOC_CTX *_mem_save_server_name_0;
14762         TALLOC_CTX *_mem_save_dom_trust_list_0;
14763         if (flags & NDR_IN) {
14764                 ZERO_STRUCT(r->out);
14765
14766                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
14767                 if (_ptr_server_name) {
14768                         NDR_PULL_ALLOC(ndr, r->in.server_name);
14769                 } else {
14770                         r->in.server_name = NULL;
14771                 }
14772                 if (r->in.server_name) {
14773                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
14774                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
14775                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
14776                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
14777                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
14778                                 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));
14779                         }
14780                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
14781                         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));
14782                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
14783                 }
14784                 NDR_PULL_ALLOC(ndr, r->out.dom_trust_list);
14785                 ZERO_STRUCTP(r->out.dom_trust_list);
14786         }
14787         if (flags & NDR_OUT) {
14788                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14789                         NDR_PULL_ALLOC(ndr, r->out.dom_trust_list);
14790                 }
14791                 _mem_save_dom_trust_list_0 = NDR_PULL_GET_MEM_CTX(ndr);
14792                 NDR_PULL_SET_MEM_CTX(ndr, r->out.dom_trust_list, LIBNDR_FLAG_REF_ALLOC);
14793                 NDR_CHECK(ndr_pull_netr_DomainTrustList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.dom_trust_list));
14794                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dom_trust_list_0, LIBNDR_FLAG_REF_ALLOC);
14795                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
14796         }
14797         return NDR_ERR_SUCCESS;
14798 }
14799
14800 _PUBLIC_ void ndr_print_netr_NetrEnumerateTrustedDomainsEx(struct ndr_print *ndr, const char *name, int flags, const struct netr_NetrEnumerateTrustedDomainsEx *r)
14801 {
14802         ndr_print_struct(ndr, name, "netr_NetrEnumerateTrustedDomainsEx");
14803         ndr->depth++;
14804         if (flags & NDR_SET_VALUES) {
14805                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
14806         }
14807         if (flags & NDR_IN) {
14808                 ndr_print_struct(ndr, "in", "netr_NetrEnumerateTrustedDomainsEx");
14809                 ndr->depth++;
14810                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
14811                 ndr->depth++;
14812                 if (r->in.server_name) {
14813                         ndr_print_string(ndr, "server_name", r->in.server_name);
14814                 }
14815                 ndr->depth--;
14816                 ndr->depth--;
14817         }
14818         if (flags & NDR_OUT) {
14819                 ndr_print_struct(ndr, "out", "netr_NetrEnumerateTrustedDomainsEx");
14820                 ndr->depth++;
14821                 ndr_print_ptr(ndr, "dom_trust_list", r->out.dom_trust_list);
14822                 ndr->depth++;
14823                 ndr_print_netr_DomainTrustList(ndr, "dom_trust_list", r->out.dom_trust_list);
14824                 ndr->depth--;
14825                 ndr_print_WERROR(ndr, "result", r->out.result);
14826                 ndr->depth--;
14827         }
14828         ndr->depth--;
14829 }
14830
14831 static enum ndr_err_code ndr_push_netr_DsRAddressToSitenamesExW(struct ndr_push *ndr, int flags, const struct netr_DsRAddressToSitenamesExW *r)
14832 {
14833         uint32_t cntr_addresses_1;
14834         if (flags & NDR_IN) {
14835                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
14836                 if (r->in.server_name) {
14837                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14838                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14839                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14840                         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));
14841                 }
14842                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
14843                 if (r->in.addresses == NULL) {
14844                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14845                 }
14846                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
14847                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
14848                         NDR_CHECK(ndr_push_netr_DsRAddress(ndr, NDR_SCALARS, &r->in.addresses[cntr_addresses_1]));
14849                 }
14850                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
14851                         NDR_CHECK(ndr_push_netr_DsRAddress(ndr, NDR_BUFFERS, &r->in.addresses[cntr_addresses_1]));
14852                 }
14853         }
14854         if (flags & NDR_OUT) {
14855                 if (r->out.ctr == NULL) {
14856                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14857                 }
14858                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.ctr));
14859                 if (*r->out.ctr) {
14860                         NDR_CHECK(ndr_push_netr_DsRAddressToSitenamesExWCtr(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.ctr));
14861                 }
14862                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
14863         }
14864         return NDR_ERR_SUCCESS;
14865 }
14866
14867 static enum ndr_err_code ndr_pull_netr_DsRAddressToSitenamesExW(struct ndr_pull *ndr, int flags, struct netr_DsRAddressToSitenamesExW *r)
14868 {
14869         uint32_t _ptr_server_name;
14870         uint32_t cntr_addresses_1;
14871         uint32_t _ptr_ctr;
14872         TALLOC_CTX *_mem_save_server_name_0;
14873         TALLOC_CTX *_mem_save_addresses_1;
14874         TALLOC_CTX *_mem_save_ctr_0;
14875         TALLOC_CTX *_mem_save_ctr_1;
14876         if (flags & NDR_IN) {
14877                 ZERO_STRUCT(r->out);
14878
14879                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
14880                 if (_ptr_server_name) {
14881                         NDR_PULL_ALLOC(ndr, r->in.server_name);
14882                 } else {
14883                         r->in.server_name = NULL;
14884                 }
14885                 if (r->in.server_name) {
14886                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
14887                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
14888                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
14889                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
14890                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
14891                                 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));
14892                         }
14893                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
14894                         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));
14895                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
14896                 }
14897                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.count));
14898                 if (r->in.count > 32000) {
14899                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
14900                 }
14901                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.addresses));
14902                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14903                         NDR_PULL_ALLOC_N(ndr, r->in.addresses, ndr_get_array_size(ndr, &r->in.addresses));
14904                 }
14905                 _mem_save_addresses_1 = NDR_PULL_GET_MEM_CTX(ndr);
14906                 NDR_PULL_SET_MEM_CTX(ndr, r->in.addresses, 0);
14907                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
14908                         NDR_CHECK(ndr_pull_netr_DsRAddress(ndr, NDR_SCALARS, &r->in.addresses[cntr_addresses_1]));
14909                 }
14910                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
14911                         NDR_CHECK(ndr_pull_netr_DsRAddress(ndr, NDR_BUFFERS, &r->in.addresses[cntr_addresses_1]));
14912                 }
14913                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_addresses_1, 0);
14914                 NDR_PULL_ALLOC(ndr, r->out.ctr);
14915                 ZERO_STRUCTP(r->out.ctr);
14916                 if (r->in.addresses) {
14917                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.addresses, r->in.count));
14918                 }
14919         }
14920         if (flags & NDR_OUT) {
14921                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14922                         NDR_PULL_ALLOC(ndr, r->out.ctr);
14923                 }
14924                 _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
14925                 NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
14926                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr));
14927                 if (_ptr_ctr) {
14928                         NDR_PULL_ALLOC(ndr, *r->out.ctr);
14929                 } else {
14930                         *r->out.ctr = NULL;
14931                 }
14932                 if (*r->out.ctr) {
14933                         _mem_save_ctr_1 = NDR_PULL_GET_MEM_CTX(ndr);
14934                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.ctr, 0);
14935                         NDR_CHECK(ndr_pull_netr_DsRAddressToSitenamesExWCtr(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.ctr));
14936                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_1, 0);
14937                 }
14938                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
14939                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
14940         }
14941         return NDR_ERR_SUCCESS;
14942 }
14943
14944 _PUBLIC_ void ndr_print_netr_DsRAddressToSitenamesExW(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRAddressToSitenamesExW *r)
14945 {
14946         uint32_t cntr_addresses_1;
14947         ndr_print_struct(ndr, name, "netr_DsRAddressToSitenamesExW");
14948         ndr->depth++;
14949         if (flags & NDR_SET_VALUES) {
14950                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
14951         }
14952         if (flags & NDR_IN) {
14953                 ndr_print_struct(ndr, "in", "netr_DsRAddressToSitenamesExW");
14954                 ndr->depth++;
14955                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
14956                 ndr->depth++;
14957                 if (r->in.server_name) {
14958                         ndr_print_string(ndr, "server_name", r->in.server_name);
14959                 }
14960                 ndr->depth--;
14961                 ndr_print_uint32(ndr, "count", r->in.count);
14962                 ndr_print_ptr(ndr, "addresses", r->in.addresses);
14963                 ndr->depth++;
14964                 ndr->print(ndr, "%s: ARRAY(%d)", "addresses", (int)r->in.count);
14965                 ndr->depth++;
14966                 for (cntr_addresses_1=0;cntr_addresses_1<r->in.count;cntr_addresses_1++) {
14967                         char *idx_1=NULL;
14968                         if (asprintf(&idx_1, "[%d]", cntr_addresses_1) != -1) {
14969                                 ndr_print_netr_DsRAddress(ndr, "addresses", &r->in.addresses[cntr_addresses_1]);
14970                                 free(idx_1);
14971                         }
14972                 }
14973                 ndr->depth--;
14974                 ndr->depth--;
14975                 ndr->depth--;
14976         }
14977         if (flags & NDR_OUT) {
14978                 ndr_print_struct(ndr, "out", "netr_DsRAddressToSitenamesExW");
14979                 ndr->depth++;
14980                 ndr_print_ptr(ndr, "ctr", r->out.ctr);
14981                 ndr->depth++;
14982                 ndr_print_ptr(ndr, "ctr", *r->out.ctr);
14983                 ndr->depth++;
14984                 if (*r->out.ctr) {
14985                         ndr_print_netr_DsRAddressToSitenamesExWCtr(ndr, "ctr", *r->out.ctr);
14986                 }
14987                 ndr->depth--;
14988                 ndr->depth--;
14989                 ndr_print_WERROR(ndr, "result", r->out.result);
14990                 ndr->depth--;
14991         }
14992         ndr->depth--;
14993 }
14994
14995 static enum ndr_err_code ndr_push_netr_DsrGetDcSiteCoverageW(struct ndr_push *ndr, int flags, const struct netr_DsrGetDcSiteCoverageW *r)
14996 {
14997         if (flags & NDR_IN) {
14998                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
14999                 if (r->in.server_name) {
15000                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15001                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15002                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15003                         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));
15004                 }
15005         }
15006         if (flags & NDR_OUT) {
15007                 if (r->out.ctr == NULL) {
15008                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15009                 }
15010                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.ctr));
15011                 if (*r->out.ctr) {
15012                         NDR_CHECK(ndr_push_DcSitesCtr(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.ctr));
15013                 }
15014                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
15015         }
15016         return NDR_ERR_SUCCESS;
15017 }
15018
15019 static enum ndr_err_code ndr_pull_netr_DsrGetDcSiteCoverageW(struct ndr_pull *ndr, int flags, struct netr_DsrGetDcSiteCoverageW *r)
15020 {
15021         uint32_t _ptr_server_name;
15022         uint32_t _ptr_ctr;
15023         TALLOC_CTX *_mem_save_server_name_0;
15024         TALLOC_CTX *_mem_save_ctr_0;
15025         TALLOC_CTX *_mem_save_ctr_1;
15026         if (flags & NDR_IN) {
15027                 ZERO_STRUCT(r->out);
15028
15029                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
15030                 if (_ptr_server_name) {
15031                         NDR_PULL_ALLOC(ndr, r->in.server_name);
15032                 } else {
15033                         r->in.server_name = NULL;
15034                 }
15035                 if (r->in.server_name) {
15036                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
15037                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
15038                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
15039                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
15040                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
15041                                 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));
15042                         }
15043                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
15044                         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));
15045                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
15046                 }
15047                 NDR_PULL_ALLOC(ndr, r->out.ctr);
15048                 ZERO_STRUCTP(r->out.ctr);
15049         }
15050         if (flags & NDR_OUT) {
15051                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15052                         NDR_PULL_ALLOC(ndr, r->out.ctr);
15053                 }
15054                 _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
15055                 NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
15056                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr));
15057                 if (_ptr_ctr) {
15058                         NDR_PULL_ALLOC(ndr, *r->out.ctr);
15059                 } else {
15060                         *r->out.ctr = NULL;
15061                 }
15062                 if (*r->out.ctr) {
15063                         _mem_save_ctr_1 = NDR_PULL_GET_MEM_CTX(ndr);
15064                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.ctr, 0);
15065                         NDR_CHECK(ndr_pull_DcSitesCtr(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.ctr));
15066                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_1, 0);
15067                 }
15068                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
15069                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
15070         }
15071         return NDR_ERR_SUCCESS;
15072 }
15073
15074 _PUBLIC_ void ndr_print_netr_DsrGetDcSiteCoverageW(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsrGetDcSiteCoverageW *r)
15075 {
15076         ndr_print_struct(ndr, name, "netr_DsrGetDcSiteCoverageW");
15077         ndr->depth++;
15078         if (flags & NDR_SET_VALUES) {
15079                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
15080         }
15081         if (flags & NDR_IN) {
15082                 ndr_print_struct(ndr, "in", "netr_DsrGetDcSiteCoverageW");
15083                 ndr->depth++;
15084                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
15085                 ndr->depth++;
15086                 if (r->in.server_name) {
15087                         ndr_print_string(ndr, "server_name", r->in.server_name);
15088                 }
15089                 ndr->depth--;
15090                 ndr->depth--;
15091         }
15092         if (flags & NDR_OUT) {
15093                 ndr_print_struct(ndr, "out", "netr_DsrGetDcSiteCoverageW");
15094                 ndr->depth++;
15095                 ndr_print_ptr(ndr, "ctr", r->out.ctr);
15096                 ndr->depth++;
15097                 ndr_print_ptr(ndr, "ctr", *r->out.ctr);
15098                 ndr->depth++;
15099                 if (*r->out.ctr) {
15100                         ndr_print_DcSitesCtr(ndr, "ctr", *r->out.ctr);
15101                 }
15102                 ndr->depth--;
15103                 ndr->depth--;
15104                 ndr_print_WERROR(ndr, "result", r->out.result);
15105                 ndr->depth--;
15106         }
15107         ndr->depth--;
15108 }
15109
15110 static enum ndr_err_code ndr_push_netr_LogonSamLogonEx(struct ndr_push *ndr, int flags, const struct netr_LogonSamLogonEx *r)
15111 {
15112         if (flags & NDR_IN) {
15113                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
15114                 if (r->in.server_name) {
15115                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15116                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15117                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15118                         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));
15119                 }
15120                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
15121                 if (r->in.computer_name) {
15122                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
15123                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15124                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
15125                         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));
15126                 }
15127                 NDR_CHECK(ndr_push_netr_LogonInfoClass(ndr, NDR_SCALARS, r->in.logon_level));
15128                 if (r->in.logon == NULL) {
15129                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15130                 }
15131                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.logon, r->in.logon_level));
15132                 NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
15133                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.validation_level));
15134                 if (r->in.flags == NULL) {
15135                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15136                 }
15137                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.flags));
15138         }
15139         if (flags & NDR_OUT) {
15140                 if (r->out.validation == NULL) {
15141                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15142                 }
15143                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.validation, r->in.validation_level));
15144                 NDR_CHECK(ndr_push_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
15145                 if (r->out.authoritative == NULL) {
15146                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15147                 }
15148                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->out.authoritative));
15149                 if (r->out.flags == NULL) {
15150                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15151                 }
15152                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.flags));
15153                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
15154         }
15155         return NDR_ERR_SUCCESS;
15156 }
15157
15158 static enum ndr_err_code ndr_pull_netr_LogonSamLogonEx(struct ndr_pull *ndr, int flags, struct netr_LogonSamLogonEx *r)
15159 {
15160         uint32_t _ptr_server_name;
15161         uint32_t _ptr_computer_name;
15162         TALLOC_CTX *_mem_save_server_name_0;
15163         TALLOC_CTX *_mem_save_computer_name_0;
15164         TALLOC_CTX *_mem_save_logon_0;
15165         TALLOC_CTX *_mem_save_validation_0;
15166         TALLOC_CTX *_mem_save_authoritative_0;
15167         TALLOC_CTX *_mem_save_flags_0;
15168         if (flags & NDR_IN) {
15169                 ZERO_STRUCT(r->out);
15170
15171                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
15172                 if (_ptr_server_name) {
15173                         NDR_PULL_ALLOC(ndr, r->in.server_name);
15174                 } else {
15175                         r->in.server_name = NULL;
15176                 }
15177                 if (r->in.server_name) {
15178                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
15179                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
15180                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
15181                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
15182                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
15183                                 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));
15184                         }
15185                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
15186                         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));
15187                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
15188                 }
15189                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
15190                 if (_ptr_computer_name) {
15191                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
15192                 } else {
15193                         r->in.computer_name = NULL;
15194                 }
15195                 if (r->in.computer_name) {
15196                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
15197                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
15198                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
15199                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
15200                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
15201                                 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));
15202                         }
15203                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
15204                         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));
15205                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
15206                 }
15207                 NDR_CHECK(ndr_pull_netr_LogonInfoClass(ndr, NDR_SCALARS, &r->in.logon_level));
15208                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15209                         NDR_PULL_ALLOC(ndr, r->in.logon);
15210                 }
15211                 _mem_save_logon_0 = NDR_PULL_GET_MEM_CTX(ndr);
15212                 NDR_PULL_SET_MEM_CTX(ndr, r->in.logon, LIBNDR_FLAG_REF_ALLOC);
15213                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.logon, r->in.logon_level));
15214                 NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
15215                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_0, LIBNDR_FLAG_REF_ALLOC);
15216                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.validation_level));
15217                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15218                         NDR_PULL_ALLOC(ndr, r->in.flags);
15219                 }
15220                 _mem_save_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
15221                 NDR_PULL_SET_MEM_CTX(ndr, r->in.flags, LIBNDR_FLAG_REF_ALLOC);
15222                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.flags));
15223                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_flags_0, LIBNDR_FLAG_REF_ALLOC);
15224                 NDR_PULL_ALLOC(ndr, r->out.validation);
15225                 ZERO_STRUCTP(r->out.validation);
15226                 NDR_PULL_ALLOC(ndr, r->out.authoritative);
15227                 ZERO_STRUCTP(r->out.authoritative);
15228                 NDR_PULL_ALLOC(ndr, r->out.flags);
15229                 *r->out.flags = *r->in.flags;
15230         }
15231         if (flags & NDR_OUT) {
15232                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15233                         NDR_PULL_ALLOC(ndr, r->out.validation);
15234                 }
15235                 _mem_save_validation_0 = NDR_PULL_GET_MEM_CTX(ndr);
15236                 NDR_PULL_SET_MEM_CTX(ndr, r->out.validation, LIBNDR_FLAG_REF_ALLOC);
15237                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.validation, r->in.validation_level));
15238                 NDR_CHECK(ndr_pull_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
15239                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_validation_0, LIBNDR_FLAG_REF_ALLOC);
15240                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15241                         NDR_PULL_ALLOC(ndr, r->out.authoritative);
15242                 }
15243                 _mem_save_authoritative_0 = NDR_PULL_GET_MEM_CTX(ndr);
15244                 NDR_PULL_SET_MEM_CTX(ndr, r->out.authoritative, LIBNDR_FLAG_REF_ALLOC);
15245                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->out.authoritative));
15246                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_authoritative_0, LIBNDR_FLAG_REF_ALLOC);
15247                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15248                         NDR_PULL_ALLOC(ndr, r->out.flags);
15249                 }
15250                 _mem_save_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
15251                 NDR_PULL_SET_MEM_CTX(ndr, r->out.flags, LIBNDR_FLAG_REF_ALLOC);
15252                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.flags));
15253                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_flags_0, LIBNDR_FLAG_REF_ALLOC);
15254                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
15255         }
15256         return NDR_ERR_SUCCESS;
15257 }
15258
15259 _PUBLIC_ void ndr_print_netr_LogonSamLogonEx(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogonEx *r)
15260 {
15261         ndr_print_struct(ndr, name, "netr_LogonSamLogonEx");
15262         ndr->depth++;
15263         if (flags & NDR_SET_VALUES) {
15264                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
15265         }
15266         if (flags & NDR_IN) {
15267                 ndr_print_struct(ndr, "in", "netr_LogonSamLogonEx");
15268                 ndr->depth++;
15269                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
15270                 ndr->depth++;
15271                 if (r->in.server_name) {
15272                         ndr_print_string(ndr, "server_name", r->in.server_name);
15273                 }
15274                 ndr->depth--;
15275                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
15276                 ndr->depth++;
15277                 if (r->in.computer_name) {
15278                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
15279                 }
15280                 ndr->depth--;
15281                 ndr_print_netr_LogonInfoClass(ndr, "logon_level", r->in.logon_level);
15282                 ndr_print_ptr(ndr, "logon", r->in.logon);
15283                 ndr->depth++;
15284                 ndr_print_set_switch_value(ndr, r->in.logon, r->in.logon_level);
15285                 ndr_print_netr_LogonLevel(ndr, "logon", r->in.logon);
15286                 ndr->depth--;
15287                 ndr_print_uint16(ndr, "validation_level", r->in.validation_level);
15288                 ndr_print_ptr(ndr, "flags", r->in.flags);
15289                 ndr->depth++;
15290                 ndr_print_uint32(ndr, "flags", *r->in.flags);
15291                 ndr->depth--;
15292                 ndr->depth--;
15293         }
15294         if (flags & NDR_OUT) {
15295                 ndr_print_struct(ndr, "out", "netr_LogonSamLogonEx");
15296                 ndr->depth++;
15297                 ndr_print_ptr(ndr, "validation", r->out.validation);
15298                 ndr->depth++;
15299                 ndr_print_set_switch_value(ndr, r->out.validation, r->in.validation_level);
15300                 ndr_print_netr_Validation(ndr, "validation", r->out.validation);
15301                 ndr->depth--;
15302                 ndr_print_ptr(ndr, "authoritative", r->out.authoritative);
15303                 ndr->depth++;
15304                 ndr_print_uint8(ndr, "authoritative", *r->out.authoritative);
15305                 ndr->depth--;
15306                 ndr_print_ptr(ndr, "flags", r->out.flags);
15307                 ndr->depth++;
15308                 ndr_print_uint32(ndr, "flags", *r->out.flags);
15309                 ndr->depth--;
15310                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
15311                 ndr->depth--;
15312         }
15313         ndr->depth--;
15314 }
15315
15316 static enum ndr_err_code ndr_push_netr_DsrEnumerateDomainTrusts(struct ndr_push *ndr, int flags, const struct netr_DsrEnumerateDomainTrusts *r)
15317 {
15318         if (flags & NDR_IN) {
15319                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
15320                 if (r->in.server_name) {
15321                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15322                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15323                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15324                         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));
15325                 }
15326                 NDR_CHECK(ndr_push_netr_TrustFlags(ndr, NDR_SCALARS, r->in.trust_flags));
15327         }
15328         if (flags & NDR_OUT) {
15329                 if (r->out.trusts == NULL) {
15330                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15331                 }
15332                 NDR_CHECK(ndr_push_netr_DomainTrustList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trusts));
15333                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
15334         }
15335         return NDR_ERR_SUCCESS;
15336 }
15337
15338 static enum ndr_err_code ndr_pull_netr_DsrEnumerateDomainTrusts(struct ndr_pull *ndr, int flags, struct netr_DsrEnumerateDomainTrusts *r)
15339 {
15340         uint32_t _ptr_server_name;
15341         TALLOC_CTX *_mem_save_server_name_0;
15342         TALLOC_CTX *_mem_save_trusts_0;
15343         if (flags & NDR_IN) {
15344                 ZERO_STRUCT(r->out);
15345
15346                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
15347                 if (_ptr_server_name) {
15348                         NDR_PULL_ALLOC(ndr, r->in.server_name);
15349                 } else {
15350                         r->in.server_name = NULL;
15351                 }
15352                 if (r->in.server_name) {
15353                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
15354                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
15355                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
15356                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
15357                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
15358                                 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));
15359                         }
15360                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
15361                         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));
15362                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
15363                 }
15364                 NDR_CHECK(ndr_pull_netr_TrustFlags(ndr, NDR_SCALARS, &r->in.trust_flags));
15365                 NDR_PULL_ALLOC(ndr, r->out.trusts);
15366                 ZERO_STRUCTP(r->out.trusts);
15367         }
15368         if (flags & NDR_OUT) {
15369                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15370                         NDR_PULL_ALLOC(ndr, r->out.trusts);
15371                 }
15372                 _mem_save_trusts_0 = NDR_PULL_GET_MEM_CTX(ndr);
15373                 NDR_PULL_SET_MEM_CTX(ndr, r->out.trusts, LIBNDR_FLAG_REF_ALLOC);
15374                 NDR_CHECK(ndr_pull_netr_DomainTrustList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trusts));
15375                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusts_0, LIBNDR_FLAG_REF_ALLOC);
15376                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
15377         }
15378         return NDR_ERR_SUCCESS;
15379 }
15380
15381 _PUBLIC_ void ndr_print_netr_DsrEnumerateDomainTrusts(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsrEnumerateDomainTrusts *r)
15382 {
15383         ndr_print_struct(ndr, name, "netr_DsrEnumerateDomainTrusts");
15384         ndr->depth++;
15385         if (flags & NDR_SET_VALUES) {
15386                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
15387         }
15388         if (flags & NDR_IN) {
15389                 ndr_print_struct(ndr, "in", "netr_DsrEnumerateDomainTrusts");
15390                 ndr->depth++;
15391                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
15392                 ndr->depth++;
15393                 if (r->in.server_name) {
15394                         ndr_print_string(ndr, "server_name", r->in.server_name);
15395                 }
15396                 ndr->depth--;
15397                 ndr_print_netr_TrustFlags(ndr, "trust_flags", r->in.trust_flags);
15398                 ndr->depth--;
15399         }
15400         if (flags & NDR_OUT) {
15401                 ndr_print_struct(ndr, "out", "netr_DsrEnumerateDomainTrusts");
15402                 ndr->depth++;
15403                 ndr_print_ptr(ndr, "trusts", r->out.trusts);
15404                 ndr->depth++;
15405                 ndr_print_netr_DomainTrustList(ndr, "trusts", r->out.trusts);
15406                 ndr->depth--;
15407                 ndr_print_WERROR(ndr, "result", r->out.result);
15408                 ndr->depth--;
15409         }
15410         ndr->depth--;
15411 }
15412
15413 static enum ndr_err_code ndr_push_netr_DsrDeregisterDNSHostRecords(struct ndr_push *ndr, int flags, const struct netr_DsrDeregisterDNSHostRecords *r)
15414 {
15415         if (flags & NDR_IN) {
15416                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
15417                 if (r->in.server_name) {
15418                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15419                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15420                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15421                         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));
15422                 }
15423                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain));
15424                 if (r->in.domain) {
15425                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain, CH_UTF16)));
15426                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15427                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain, CH_UTF16)));
15428                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.domain, ndr_charset_length(r->in.domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
15429                 }
15430                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_guid));
15431                 if (r->in.domain_guid) {
15432                         NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, r->in.domain_guid));
15433                 }
15434                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dsa_guid));
15435                 if (r->in.dsa_guid) {
15436                         NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, r->in.dsa_guid));
15437                 }
15438                 if (r->in.dns_host == NULL) {
15439                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15440                 }
15441                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dns_host, CH_UTF16)));
15442                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15443                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dns_host, CH_UTF16)));
15444                 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));
15445         }
15446         if (flags & NDR_OUT) {
15447                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
15448         }
15449         return NDR_ERR_SUCCESS;
15450 }
15451
15452 static enum ndr_err_code ndr_pull_netr_DsrDeregisterDNSHostRecords(struct ndr_pull *ndr, int flags, struct netr_DsrDeregisterDNSHostRecords *r)
15453 {
15454         uint32_t _ptr_server_name;
15455         uint32_t _ptr_domain;
15456         uint32_t _ptr_domain_guid;
15457         uint32_t _ptr_dsa_guid;
15458         TALLOC_CTX *_mem_save_server_name_0;
15459         TALLOC_CTX *_mem_save_domain_0;
15460         TALLOC_CTX *_mem_save_domain_guid_0;
15461         TALLOC_CTX *_mem_save_dsa_guid_0;
15462         if (flags & NDR_IN) {
15463                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
15464                 if (_ptr_server_name) {
15465                         NDR_PULL_ALLOC(ndr, r->in.server_name);
15466                 } else {
15467                         r->in.server_name = NULL;
15468                 }
15469                 if (r->in.server_name) {
15470                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
15471                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
15472                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
15473                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
15474                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
15475                                 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));
15476                         }
15477                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
15478                         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));
15479                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
15480                 }
15481                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
15482                 if (_ptr_domain) {
15483                         NDR_PULL_ALLOC(ndr, r->in.domain);
15484                 } else {
15485                         r->in.domain = NULL;
15486                 }
15487                 if (r->in.domain) {
15488                         _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
15489                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain, 0);
15490                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domain));
15491                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domain));
15492                         if (ndr_get_array_length(ndr, &r->in.domain) > ndr_get_array_size(ndr, &r->in.domain)) {
15493                                 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));
15494                         }
15495                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domain), sizeof(uint16_t)));
15496                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.domain, ndr_get_array_length(ndr, &r->in.domain), sizeof(uint16_t), CH_UTF16));
15497                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
15498                 }
15499                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_guid));
15500                 if (_ptr_domain_guid) {
15501                         NDR_PULL_ALLOC(ndr, r->in.domain_guid);
15502                 } else {
15503                         r->in.domain_guid = NULL;
15504                 }
15505                 if (r->in.domain_guid) {
15506                         _mem_save_domain_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
15507                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_guid, 0);
15508                         NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, r->in.domain_guid));
15509                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_guid_0, 0);
15510                 }
15511                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dsa_guid));
15512                 if (_ptr_dsa_guid) {
15513                         NDR_PULL_ALLOC(ndr, r->in.dsa_guid);
15514                 } else {
15515                         r->in.dsa_guid = NULL;
15516                 }
15517                 if (r->in.dsa_guid) {
15518                         _mem_save_dsa_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
15519                         NDR_PULL_SET_MEM_CTX(ndr, r->in.dsa_guid, 0);
15520                         NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, r->in.dsa_guid));
15521                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dsa_guid_0, 0);
15522                 }
15523                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dns_host));
15524                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dns_host));
15525                 if (ndr_get_array_length(ndr, &r->in.dns_host) > ndr_get_array_size(ndr, &r->in.dns_host)) {
15526                         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));
15527                 }
15528                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dns_host), sizeof(uint16_t)));
15529                 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));
15530         }
15531         if (flags & NDR_OUT) {
15532                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
15533         }
15534         return NDR_ERR_SUCCESS;
15535 }
15536
15537 _PUBLIC_ void ndr_print_netr_DsrDeregisterDNSHostRecords(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsrDeregisterDNSHostRecords *r)
15538 {
15539         ndr_print_struct(ndr, name, "netr_DsrDeregisterDNSHostRecords");
15540         ndr->depth++;
15541         if (flags & NDR_SET_VALUES) {
15542                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
15543         }
15544         if (flags & NDR_IN) {
15545                 ndr_print_struct(ndr, "in", "netr_DsrDeregisterDNSHostRecords");
15546                 ndr->depth++;
15547                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
15548                 ndr->depth++;
15549                 if (r->in.server_name) {
15550                         ndr_print_string(ndr, "server_name", r->in.server_name);
15551                 }
15552                 ndr->depth--;
15553                 ndr_print_ptr(ndr, "domain", r->in.domain);
15554                 ndr->depth++;
15555                 if (r->in.domain) {
15556                         ndr_print_string(ndr, "domain", r->in.domain);
15557                 }
15558                 ndr->depth--;
15559                 ndr_print_ptr(ndr, "domain_guid", r->in.domain_guid);
15560                 ndr->depth++;
15561                 if (r->in.domain_guid) {
15562                         ndr_print_GUID(ndr, "domain_guid", r->in.domain_guid);
15563                 }
15564                 ndr->depth--;
15565                 ndr_print_ptr(ndr, "dsa_guid", r->in.dsa_guid);
15566                 ndr->depth++;
15567                 if (r->in.dsa_guid) {
15568                         ndr_print_GUID(ndr, "dsa_guid", r->in.dsa_guid);
15569                 }
15570                 ndr->depth--;
15571                 ndr_print_ptr(ndr, "dns_host", r->in.dns_host);
15572                 ndr->depth++;
15573                 ndr_print_string(ndr, "dns_host", r->in.dns_host);
15574                 ndr->depth--;
15575                 ndr->depth--;
15576         }
15577         if (flags & NDR_OUT) {
15578                 ndr_print_struct(ndr, "out", "netr_DsrDeregisterDNSHostRecords");
15579                 ndr->depth++;
15580                 ndr_print_WERROR(ndr, "result", r->out.result);
15581                 ndr->depth--;
15582         }
15583         ndr->depth--;
15584 }
15585
15586 static enum ndr_err_code ndr_push_netr_ServerTrustPasswordsGet(struct ndr_push *ndr, int flags, const struct netr_ServerTrustPasswordsGet *r)
15587 {
15588         if (flags & NDR_IN) {
15589                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
15590                 if (r->in.server_name) {
15591                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15592                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15593                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15594                         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));
15595                 }
15596                 if (r->in.account_name == NULL) {
15597                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15598                 }
15599                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
15600                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15601                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
15602                 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));
15603                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
15604                 if (r->in.computer_name == NULL) {
15605                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15606                 }
15607                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
15608                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15609                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
15610                 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));
15611                 if (r->in.credential == NULL) {
15612                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15613                 }
15614                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
15615         }
15616         if (flags & NDR_OUT) {
15617                 if (r->out.return_authenticator == NULL) {
15618                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15619                 }
15620                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
15621                 if (r->out.password == NULL) {
15622                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15623                 }
15624                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, r->out.password));
15625                 if (r->out.password2 == NULL) {
15626                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15627                 }
15628                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, r->out.password2));
15629                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
15630         }
15631         return NDR_ERR_SUCCESS;
15632 }
15633
15634 static enum ndr_err_code ndr_pull_netr_ServerTrustPasswordsGet(struct ndr_pull *ndr, int flags, struct netr_ServerTrustPasswordsGet *r)
15635 {
15636         uint32_t _ptr_server_name;
15637         TALLOC_CTX *_mem_save_server_name_0;
15638         TALLOC_CTX *_mem_save_credential_0;
15639         TALLOC_CTX *_mem_save_return_authenticator_0;
15640         TALLOC_CTX *_mem_save_password_0;
15641         TALLOC_CTX *_mem_save_password2_0;
15642         if (flags & NDR_IN) {
15643                 ZERO_STRUCT(r->out);
15644
15645                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
15646                 if (_ptr_server_name) {
15647                         NDR_PULL_ALLOC(ndr, r->in.server_name);
15648                 } else {
15649                         r->in.server_name = NULL;
15650                 }
15651                 if (r->in.server_name) {
15652                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
15653                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
15654                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
15655                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
15656                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
15657                                 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));
15658                         }
15659                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
15660                         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));
15661                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
15662                 }
15663                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
15664                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
15665                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
15666                         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));
15667                 }
15668                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
15669                 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));
15670                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
15671                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
15672                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
15673                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
15674                         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));
15675                 }
15676                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
15677                 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));
15678                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15679                         NDR_PULL_ALLOC(ndr, r->in.credential);
15680                 }
15681                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
15682                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
15683                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
15684                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
15685                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
15686                 ZERO_STRUCTP(r->out.return_authenticator);
15687                 NDR_PULL_ALLOC(ndr, r->out.password);
15688                 ZERO_STRUCTP(r->out.password);
15689                 NDR_PULL_ALLOC(ndr, r->out.password2);
15690                 ZERO_STRUCTP(r->out.password2);
15691         }
15692         if (flags & NDR_OUT) {
15693                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15694                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
15695                 }
15696                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
15697                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
15698                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
15699                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
15700                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15701                         NDR_PULL_ALLOC(ndr, r->out.password);
15702                 }
15703                 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
15704                 NDR_PULL_SET_MEM_CTX(ndr, r->out.password, LIBNDR_FLAG_REF_ALLOC);
15705                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, r->out.password));
15706                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, LIBNDR_FLAG_REF_ALLOC);
15707                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15708                         NDR_PULL_ALLOC(ndr, r->out.password2);
15709                 }
15710                 _mem_save_password2_0 = NDR_PULL_GET_MEM_CTX(ndr);
15711                 NDR_PULL_SET_MEM_CTX(ndr, r->out.password2, LIBNDR_FLAG_REF_ALLOC);
15712                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, r->out.password2));
15713                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password2_0, LIBNDR_FLAG_REF_ALLOC);
15714                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
15715         }
15716         return NDR_ERR_SUCCESS;
15717 }
15718
15719 _PUBLIC_ void ndr_print_netr_ServerTrustPasswordsGet(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerTrustPasswordsGet *r)
15720 {
15721         ndr_print_struct(ndr, name, "netr_ServerTrustPasswordsGet");
15722         ndr->depth++;
15723         if (flags & NDR_SET_VALUES) {
15724                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
15725         }
15726         if (flags & NDR_IN) {
15727                 ndr_print_struct(ndr, "in", "netr_ServerTrustPasswordsGet");
15728                 ndr->depth++;
15729                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
15730                 ndr->depth++;
15731                 if (r->in.server_name) {
15732                         ndr_print_string(ndr, "server_name", r->in.server_name);
15733                 }
15734                 ndr->depth--;
15735                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
15736                 ndr->depth++;
15737                 ndr_print_string(ndr, "account_name", r->in.account_name);
15738                 ndr->depth--;
15739                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
15740                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
15741                 ndr->depth++;
15742                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
15743                 ndr->depth--;
15744                 ndr_print_ptr(ndr, "credential", r->in.credential);
15745                 ndr->depth++;
15746                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
15747                 ndr->depth--;
15748                 ndr->depth--;
15749         }
15750         if (flags & NDR_OUT) {
15751                 ndr_print_struct(ndr, "out", "netr_ServerTrustPasswordsGet");
15752                 ndr->depth++;
15753                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
15754                 ndr->depth++;
15755                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
15756                 ndr->depth--;
15757                 ndr_print_ptr(ndr, "password", r->out.password);
15758                 ndr->depth++;
15759                 ndr_print_samr_Password(ndr, "password", r->out.password);
15760                 ndr->depth--;
15761                 ndr_print_ptr(ndr, "password2", r->out.password2);
15762                 ndr->depth++;
15763                 ndr_print_samr_Password(ndr, "password2", r->out.password2);
15764                 ndr->depth--;
15765                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
15766                 ndr->depth--;
15767         }
15768         ndr->depth--;
15769 }
15770
15771 static enum ndr_err_code ndr_push_netr_DsRGetForestTrustInformation(struct ndr_push *ndr, int flags, const struct netr_DsRGetForestTrustInformation *r)
15772 {
15773         if (flags & NDR_IN) {
15774                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
15775                 if (r->in.server_name) {
15776                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15777                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15778                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15779                         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));
15780                 }
15781                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.trusted_domain_name));
15782                 if (r->in.trusted_domain_name) {
15783                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.trusted_domain_name, CH_UTF16)));
15784                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15785                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.trusted_domain_name, CH_UTF16)));
15786                         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));
15787                 }
15788                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
15789         }
15790         if (flags & NDR_OUT) {
15791                 if (r->out.forest_trust_info == NULL) {
15792                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15793                 }
15794                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.forest_trust_info));
15795                 if (*r->out.forest_trust_info) {
15796                         NDR_CHECK(ndr_push_lsa_ForestTrustInformation(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.forest_trust_info));
15797                 }
15798                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
15799         }
15800         return NDR_ERR_SUCCESS;
15801 }
15802
15803 static enum ndr_err_code ndr_pull_netr_DsRGetForestTrustInformation(struct ndr_pull *ndr, int flags, struct netr_DsRGetForestTrustInformation *r)
15804 {
15805         uint32_t _ptr_server_name;
15806         uint32_t _ptr_trusted_domain_name;
15807         uint32_t _ptr_forest_trust_info;
15808         TALLOC_CTX *_mem_save_server_name_0;
15809         TALLOC_CTX *_mem_save_trusted_domain_name_0;
15810         TALLOC_CTX *_mem_save_forest_trust_info_0;
15811         TALLOC_CTX *_mem_save_forest_trust_info_1;
15812         if (flags & NDR_IN) {
15813                 ZERO_STRUCT(r->out);
15814
15815                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
15816                 if (_ptr_server_name) {
15817                         NDR_PULL_ALLOC(ndr, r->in.server_name);
15818                 } else {
15819                         r->in.server_name = NULL;
15820                 }
15821                 if (r->in.server_name) {
15822                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
15823                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
15824                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
15825                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
15826                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
15827                                 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));
15828                         }
15829                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
15830                         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));
15831                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
15832                 }
15833                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_trusted_domain_name));
15834                 if (_ptr_trusted_domain_name) {
15835                         NDR_PULL_ALLOC(ndr, r->in.trusted_domain_name);
15836                 } else {
15837                         r->in.trusted_domain_name = NULL;
15838                 }
15839                 if (r->in.trusted_domain_name) {
15840                         _mem_save_trusted_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
15841                         NDR_PULL_SET_MEM_CTX(ndr, r->in.trusted_domain_name, 0);
15842                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.trusted_domain_name));
15843                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.trusted_domain_name));
15844                         if (ndr_get_array_length(ndr, &r->in.trusted_domain_name) > ndr_get_array_size(ndr, &r->in.trusted_domain_name)) {
15845                                 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));
15846                         }
15847                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.trusted_domain_name), sizeof(uint16_t)));
15848                         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));
15849                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusted_domain_name_0, 0);
15850                 }
15851                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
15852                 NDR_PULL_ALLOC(ndr, r->out.forest_trust_info);
15853                 ZERO_STRUCTP(r->out.forest_trust_info);
15854         }
15855         if (flags & NDR_OUT) {
15856                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15857                         NDR_PULL_ALLOC(ndr, r->out.forest_trust_info);
15858                 }
15859                 _mem_save_forest_trust_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
15860                 NDR_PULL_SET_MEM_CTX(ndr, r->out.forest_trust_info, LIBNDR_FLAG_REF_ALLOC);
15861                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_forest_trust_info));
15862                 if (_ptr_forest_trust_info) {
15863                         NDR_PULL_ALLOC(ndr, *r->out.forest_trust_info);
15864                 } else {
15865                         *r->out.forest_trust_info = NULL;
15866                 }
15867                 if (*r->out.forest_trust_info) {
15868                         _mem_save_forest_trust_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
15869                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.forest_trust_info, 0);
15870                         NDR_CHECK(ndr_pull_lsa_ForestTrustInformation(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.forest_trust_info));
15871                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_forest_trust_info_1, 0);
15872                 }
15873                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_forest_trust_info_0, LIBNDR_FLAG_REF_ALLOC);
15874                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
15875         }
15876         return NDR_ERR_SUCCESS;
15877 }
15878
15879 _PUBLIC_ void ndr_print_netr_DsRGetForestTrustInformation(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetForestTrustInformation *r)
15880 {
15881         ndr_print_struct(ndr, name, "netr_DsRGetForestTrustInformation");
15882         ndr->depth++;
15883         if (flags & NDR_SET_VALUES) {
15884                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
15885         }
15886         if (flags & NDR_IN) {
15887                 ndr_print_struct(ndr, "in", "netr_DsRGetForestTrustInformation");
15888                 ndr->depth++;
15889                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
15890                 ndr->depth++;
15891                 if (r->in.server_name) {
15892                         ndr_print_string(ndr, "server_name", r->in.server_name);
15893                 }
15894                 ndr->depth--;
15895                 ndr_print_ptr(ndr, "trusted_domain_name", r->in.trusted_domain_name);
15896                 ndr->depth++;
15897                 if (r->in.trusted_domain_name) {
15898                         ndr_print_string(ndr, "trusted_domain_name", r->in.trusted_domain_name);
15899                 }
15900                 ndr->depth--;
15901                 ndr_print_uint32(ndr, "flags", r->in.flags);
15902                 ndr->depth--;
15903         }
15904         if (flags & NDR_OUT) {
15905                 ndr_print_struct(ndr, "out", "netr_DsRGetForestTrustInformation");
15906                 ndr->depth++;
15907                 ndr_print_ptr(ndr, "forest_trust_info", r->out.forest_trust_info);
15908                 ndr->depth++;
15909                 ndr_print_ptr(ndr, "forest_trust_info", *r->out.forest_trust_info);
15910                 ndr->depth++;
15911                 if (*r->out.forest_trust_info) {
15912                         ndr_print_lsa_ForestTrustInformation(ndr, "forest_trust_info", *r->out.forest_trust_info);
15913                 }
15914                 ndr->depth--;
15915                 ndr->depth--;
15916                 ndr_print_WERROR(ndr, "result", r->out.result);
15917                 ndr->depth--;
15918         }
15919         ndr->depth--;
15920 }
15921
15922 static enum ndr_err_code ndr_push_netr_GetForestTrustInformation(struct ndr_push *ndr, int flags, const struct netr_GetForestTrustInformation *r)
15923 {
15924         if (flags & NDR_IN) {
15925                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
15926                 if (r->in.server_name) {
15927                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15928                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15929                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15930                         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));
15931                 }
15932                 if (r->in.trusted_domain_name == NULL) {
15933                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15934                 }
15935                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.trusted_domain_name, CH_UTF16)));
15936                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15937                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.trusted_domain_name, CH_UTF16)));
15938                 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));
15939                 if (r->in.credential == NULL) {
15940                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15941                 }
15942                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
15943                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
15944         }
15945         if (flags & NDR_OUT) {
15946                 if (r->out.return_authenticator == NULL) {
15947                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15948                 }
15949                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
15950                 if (r->out.forest_trust_info == NULL) {
15951                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15952                 }
15953                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.forest_trust_info));
15954                 if (*r->out.forest_trust_info) {
15955                         NDR_CHECK(ndr_push_lsa_ForestTrustInformation(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.forest_trust_info));
15956                 }
15957                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
15958         }
15959         return NDR_ERR_SUCCESS;
15960 }
15961
15962 static enum ndr_err_code ndr_pull_netr_GetForestTrustInformation(struct ndr_pull *ndr, int flags, struct netr_GetForestTrustInformation *r)
15963 {
15964         uint32_t _ptr_server_name;
15965         uint32_t _ptr_forest_trust_info;
15966         TALLOC_CTX *_mem_save_server_name_0;
15967         TALLOC_CTX *_mem_save_credential_0;
15968         TALLOC_CTX *_mem_save_return_authenticator_0;
15969         TALLOC_CTX *_mem_save_forest_trust_info_0;
15970         TALLOC_CTX *_mem_save_forest_trust_info_1;
15971         if (flags & NDR_IN) {
15972                 ZERO_STRUCT(r->out);
15973
15974                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
15975                 if (_ptr_server_name) {
15976                         NDR_PULL_ALLOC(ndr, r->in.server_name);
15977                 } else {
15978                         r->in.server_name = NULL;
15979                 }
15980                 if (r->in.server_name) {
15981                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
15982                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
15983                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
15984                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
15985                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
15986                                 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));
15987                         }
15988                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
15989                         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));
15990                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
15991                 }
15992                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.trusted_domain_name));
15993                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.trusted_domain_name));
15994                 if (ndr_get_array_length(ndr, &r->in.trusted_domain_name) > ndr_get_array_size(ndr, &r->in.trusted_domain_name)) {
15995                         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));
15996                 }
15997                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.trusted_domain_name), sizeof(uint16_t)));
15998                 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));
15999                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16000                         NDR_PULL_ALLOC(ndr, r->in.credential);
16001                 }
16002                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
16003                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
16004                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
16005                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
16006                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
16007                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
16008                 ZERO_STRUCTP(r->out.return_authenticator);
16009                 NDR_PULL_ALLOC(ndr, r->out.forest_trust_info);
16010                 ZERO_STRUCTP(r->out.forest_trust_info);
16011         }
16012         if (flags & NDR_OUT) {
16013                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16014                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
16015                 }
16016                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
16017                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
16018                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
16019                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
16020                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16021                         NDR_PULL_ALLOC(ndr, r->out.forest_trust_info);
16022                 }
16023                 _mem_save_forest_trust_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
16024                 NDR_PULL_SET_MEM_CTX(ndr, r->out.forest_trust_info, LIBNDR_FLAG_REF_ALLOC);
16025                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_forest_trust_info));
16026                 if (_ptr_forest_trust_info) {
16027                         NDR_PULL_ALLOC(ndr, *r->out.forest_trust_info);
16028                 } else {
16029                         *r->out.forest_trust_info = NULL;
16030                 }
16031                 if (*r->out.forest_trust_info) {
16032                         _mem_save_forest_trust_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
16033                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.forest_trust_info, 0);
16034                         NDR_CHECK(ndr_pull_lsa_ForestTrustInformation(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.forest_trust_info));
16035                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_forest_trust_info_1, 0);
16036                 }
16037                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_forest_trust_info_0, LIBNDR_FLAG_REF_ALLOC);
16038                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
16039         }
16040         return NDR_ERR_SUCCESS;
16041 }
16042
16043 _PUBLIC_ void ndr_print_netr_GetForestTrustInformation(struct ndr_print *ndr, const char *name, int flags, const struct netr_GetForestTrustInformation *r)
16044 {
16045         ndr_print_struct(ndr, name, "netr_GetForestTrustInformation");
16046         ndr->depth++;
16047         if (flags & NDR_SET_VALUES) {
16048                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
16049         }
16050         if (flags & NDR_IN) {
16051                 ndr_print_struct(ndr, "in", "netr_GetForestTrustInformation");
16052                 ndr->depth++;
16053                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
16054                 ndr->depth++;
16055                 if (r->in.server_name) {
16056                         ndr_print_string(ndr, "server_name", r->in.server_name);
16057                 }
16058                 ndr->depth--;
16059                 ndr_print_ptr(ndr, "trusted_domain_name", r->in.trusted_domain_name);
16060                 ndr->depth++;
16061                 ndr_print_string(ndr, "trusted_domain_name", r->in.trusted_domain_name);
16062                 ndr->depth--;
16063                 ndr_print_ptr(ndr, "credential", r->in.credential);
16064                 ndr->depth++;
16065                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
16066                 ndr->depth--;
16067                 ndr_print_uint32(ndr, "flags", r->in.flags);
16068                 ndr->depth--;
16069         }
16070         if (flags & NDR_OUT) {
16071                 ndr_print_struct(ndr, "out", "netr_GetForestTrustInformation");
16072                 ndr->depth++;
16073                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
16074                 ndr->depth++;
16075                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
16076                 ndr->depth--;
16077                 ndr_print_ptr(ndr, "forest_trust_info", r->out.forest_trust_info);
16078                 ndr->depth++;
16079                 ndr_print_ptr(ndr, "forest_trust_info", *r->out.forest_trust_info);
16080                 ndr->depth++;
16081                 if (*r->out.forest_trust_info) {
16082                         ndr_print_lsa_ForestTrustInformation(ndr, "forest_trust_info", *r->out.forest_trust_info);
16083                 }
16084                 ndr->depth--;
16085                 ndr->depth--;
16086                 ndr_print_WERROR(ndr, "result", r->out.result);
16087                 ndr->depth--;
16088         }
16089         ndr->depth--;
16090 }
16091
16092 static enum ndr_err_code ndr_push_netr_LogonSamLogonWithFlags(struct ndr_push *ndr, int flags, const struct netr_LogonSamLogonWithFlags *r)
16093 {
16094         if (flags & NDR_IN) {
16095                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
16096                 if (r->in.server_name) {
16097                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
16098                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
16099                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
16100                         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));
16101                 }
16102                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
16103                 if (r->in.computer_name) {
16104                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
16105                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
16106                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
16107                         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));
16108                 }
16109                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.credential));
16110                 if (r->in.credential) {
16111                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
16112                 }
16113                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.return_authenticator));
16114                 if (r->in.return_authenticator) {
16115                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
16116                 }
16117                 NDR_CHECK(ndr_push_netr_LogonInfoClass(ndr, NDR_SCALARS, r->in.logon_level));
16118                 if (r->in.logon == NULL) {
16119                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16120                 }
16121                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.logon, r->in.logon_level));
16122                 NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
16123                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.validation_level));
16124                 if (r->in.flags == NULL) {
16125                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16126                 }
16127                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.flags));
16128         }
16129         if (flags & NDR_OUT) {
16130                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.return_authenticator));
16131                 if (r->out.return_authenticator) {
16132                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
16133                 }
16134                 if (r->out.validation == NULL) {
16135                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16136                 }
16137                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.validation, r->in.validation_level));
16138                 NDR_CHECK(ndr_push_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
16139                 if (r->out.authoritative == NULL) {
16140                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16141                 }
16142                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->out.authoritative));
16143                 if (r->out.flags == NULL) {
16144                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16145                 }
16146                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.flags));
16147                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
16148         }
16149         return NDR_ERR_SUCCESS;
16150 }
16151
16152 static enum ndr_err_code ndr_pull_netr_LogonSamLogonWithFlags(struct ndr_pull *ndr, int flags, struct netr_LogonSamLogonWithFlags *r)
16153 {
16154         uint32_t _ptr_server_name;
16155         uint32_t _ptr_computer_name;
16156         uint32_t _ptr_credential;
16157         uint32_t _ptr_return_authenticator;
16158         TALLOC_CTX *_mem_save_server_name_0;
16159         TALLOC_CTX *_mem_save_computer_name_0;
16160         TALLOC_CTX *_mem_save_credential_0;
16161         TALLOC_CTX *_mem_save_return_authenticator_0;
16162         TALLOC_CTX *_mem_save_logon_0;
16163         TALLOC_CTX *_mem_save_validation_0;
16164         TALLOC_CTX *_mem_save_authoritative_0;
16165         TALLOC_CTX *_mem_save_flags_0;
16166         if (flags & NDR_IN) {
16167                 ZERO_STRUCT(r->out);
16168
16169                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
16170                 if (_ptr_server_name) {
16171                         NDR_PULL_ALLOC(ndr, r->in.server_name);
16172                 } else {
16173                         r->in.server_name = NULL;
16174                 }
16175                 if (r->in.server_name) {
16176                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
16177                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
16178                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
16179                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
16180                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
16181                                 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));
16182                         }
16183                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
16184                         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));
16185                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
16186                 }
16187                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
16188                 if (_ptr_computer_name) {
16189                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
16190                 } else {
16191                         r->in.computer_name = NULL;
16192                 }
16193                 if (r->in.computer_name) {
16194                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
16195                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
16196                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
16197                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
16198                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
16199                                 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));
16200                         }
16201                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
16202                         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));
16203                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
16204                 }
16205                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_credential));
16206                 if (_ptr_credential) {
16207                         NDR_PULL_ALLOC(ndr, r->in.credential);
16208                 } else {
16209                         r->in.credential = NULL;
16210                 }
16211                 if (r->in.credential) {
16212                         _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
16213                         NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, 0);
16214                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
16215                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, 0);
16216                 }
16217                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
16218                 if (_ptr_return_authenticator) {
16219                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
16220                 } else {
16221                         r->in.return_authenticator = NULL;
16222                 }
16223                 if (r->in.return_authenticator) {
16224                         _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
16225                         NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, 0);
16226                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
16227                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
16228                 }
16229                 NDR_CHECK(ndr_pull_netr_LogonInfoClass(ndr, NDR_SCALARS, &r->in.logon_level));
16230                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16231                         NDR_PULL_ALLOC(ndr, r->in.logon);
16232                 }
16233                 _mem_save_logon_0 = NDR_PULL_GET_MEM_CTX(ndr);
16234                 NDR_PULL_SET_MEM_CTX(ndr, r->in.logon, LIBNDR_FLAG_REF_ALLOC);
16235                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.logon, r->in.logon_level));
16236                 NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
16237                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_0, LIBNDR_FLAG_REF_ALLOC);
16238                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.validation_level));
16239                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16240                         NDR_PULL_ALLOC(ndr, r->in.flags);
16241                 }
16242                 _mem_save_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
16243                 NDR_PULL_SET_MEM_CTX(ndr, r->in.flags, LIBNDR_FLAG_REF_ALLOC);
16244                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.flags));
16245                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_flags_0, LIBNDR_FLAG_REF_ALLOC);
16246                 NDR_PULL_ALLOC(ndr, r->out.validation);
16247                 ZERO_STRUCTP(r->out.validation);
16248                 NDR_PULL_ALLOC(ndr, r->out.authoritative);
16249                 ZERO_STRUCTP(r->out.authoritative);
16250                 NDR_PULL_ALLOC(ndr, r->out.flags);
16251                 *r->out.flags = *r->in.flags;
16252         }
16253         if (flags & NDR_OUT) {
16254                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
16255                 if (_ptr_return_authenticator) {
16256                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
16257                 } else {
16258                         r->out.return_authenticator = NULL;
16259                 }
16260                 if (r->out.return_authenticator) {
16261                         _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
16262                         NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, 0);
16263                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
16264                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
16265                 }
16266                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16267                         NDR_PULL_ALLOC(ndr, r->out.validation);
16268                 }
16269                 _mem_save_validation_0 = NDR_PULL_GET_MEM_CTX(ndr);
16270                 NDR_PULL_SET_MEM_CTX(ndr, r->out.validation, LIBNDR_FLAG_REF_ALLOC);
16271                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.validation, r->in.validation_level));
16272                 NDR_CHECK(ndr_pull_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
16273                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_validation_0, LIBNDR_FLAG_REF_ALLOC);
16274                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16275                         NDR_PULL_ALLOC(ndr, r->out.authoritative);
16276                 }
16277                 _mem_save_authoritative_0 = NDR_PULL_GET_MEM_CTX(ndr);
16278                 NDR_PULL_SET_MEM_CTX(ndr, r->out.authoritative, LIBNDR_FLAG_REF_ALLOC);
16279                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->out.authoritative));
16280                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_authoritative_0, LIBNDR_FLAG_REF_ALLOC);
16281                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16282                         NDR_PULL_ALLOC(ndr, r->out.flags);
16283                 }
16284                 _mem_save_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
16285                 NDR_PULL_SET_MEM_CTX(ndr, r->out.flags, LIBNDR_FLAG_REF_ALLOC);
16286                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.flags));
16287                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_flags_0, LIBNDR_FLAG_REF_ALLOC);
16288                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
16289         }
16290         return NDR_ERR_SUCCESS;
16291 }
16292
16293 _PUBLIC_ void ndr_print_netr_LogonSamLogonWithFlags(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogonWithFlags *r)
16294 {
16295         ndr_print_struct(ndr, name, "netr_LogonSamLogonWithFlags");
16296         ndr->depth++;
16297         if (flags & NDR_SET_VALUES) {
16298                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
16299         }
16300         if (flags & NDR_IN) {
16301                 ndr_print_struct(ndr, "in", "netr_LogonSamLogonWithFlags");
16302                 ndr->depth++;
16303                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
16304                 ndr->depth++;
16305                 if (r->in.server_name) {
16306                         ndr_print_string(ndr, "server_name", r->in.server_name);
16307                 }
16308                 ndr->depth--;
16309                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
16310                 ndr->depth++;
16311                 if (r->in.computer_name) {
16312                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
16313                 }
16314                 ndr->depth--;
16315                 ndr_print_ptr(ndr, "credential", r->in.credential);
16316                 ndr->depth++;
16317                 if (r->in.credential) {
16318                         ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
16319                 }
16320                 ndr->depth--;
16321                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
16322                 ndr->depth++;
16323                 if (r->in.return_authenticator) {
16324                         ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
16325                 }
16326                 ndr->depth--;
16327                 ndr_print_netr_LogonInfoClass(ndr, "logon_level", r->in.logon_level);
16328                 ndr_print_ptr(ndr, "logon", r->in.logon);
16329                 ndr->depth++;
16330                 ndr_print_set_switch_value(ndr, r->in.logon, r->in.logon_level);
16331                 ndr_print_netr_LogonLevel(ndr, "logon", r->in.logon);
16332                 ndr->depth--;
16333                 ndr_print_uint16(ndr, "validation_level", r->in.validation_level);
16334                 ndr_print_ptr(ndr, "flags", r->in.flags);
16335                 ndr->depth++;
16336                 ndr_print_uint32(ndr, "flags", *r->in.flags);
16337                 ndr->depth--;
16338                 ndr->depth--;
16339         }
16340         if (flags & NDR_OUT) {
16341                 ndr_print_struct(ndr, "out", "netr_LogonSamLogonWithFlags");
16342                 ndr->depth++;
16343                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
16344                 ndr->depth++;
16345                 if (r->out.return_authenticator) {
16346                         ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
16347                 }
16348                 ndr->depth--;
16349                 ndr_print_ptr(ndr, "validation", r->out.validation);
16350                 ndr->depth++;
16351                 ndr_print_set_switch_value(ndr, r->out.validation, r->in.validation_level);
16352                 ndr_print_netr_Validation(ndr, "validation", r->out.validation);
16353                 ndr->depth--;
16354                 ndr_print_ptr(ndr, "authoritative", r->out.authoritative);
16355                 ndr->depth++;
16356                 ndr_print_uint8(ndr, "authoritative", *r->out.authoritative);
16357                 ndr->depth--;
16358                 ndr_print_ptr(ndr, "flags", r->out.flags);
16359                 ndr->depth++;
16360                 ndr_print_uint32(ndr, "flags", *r->out.flags);
16361                 ndr->depth--;
16362                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
16363                 ndr->depth--;
16364         }
16365         ndr->depth--;
16366 }
16367
16368 static enum ndr_err_code ndr_push_netr_ServerGetTrustInfo(struct ndr_push *ndr, int flags, const struct netr_ServerGetTrustInfo *r)
16369 {
16370         if (flags & NDR_IN) {
16371                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
16372                 if (r->in.server_name) {
16373                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
16374                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
16375                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
16376                         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));
16377                 }
16378                 if (r->in.account_name == NULL) {
16379                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16380                 }
16381                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
16382                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
16383                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
16384                 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));
16385                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
16386                 if (r->in.computer_name == NULL) {
16387                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16388                 }
16389                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
16390                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
16391                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
16392                 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));
16393                 if (r->in.credential == NULL) {
16394                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16395                 }
16396                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
16397         }
16398         if (flags & NDR_OUT) {
16399                 if (r->out.return_authenticator == NULL) {
16400                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16401                 }
16402                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
16403                 if (r->out.new_owf_password == NULL) {
16404                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16405                 }
16406                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, r->out.new_owf_password));
16407                 if (r->out.old_owf_password == NULL) {
16408                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16409                 }
16410                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, r->out.old_owf_password));
16411                 if (r->out.trust_info == NULL) {
16412                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16413                 }
16414                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.trust_info));
16415                 if (*r->out.trust_info) {
16416                         NDR_CHECK(ndr_push_netr_TrustInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.trust_info));
16417                 }
16418                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
16419         }
16420         return NDR_ERR_SUCCESS;
16421 }
16422
16423 static enum ndr_err_code ndr_pull_netr_ServerGetTrustInfo(struct ndr_pull *ndr, int flags, struct netr_ServerGetTrustInfo *r)
16424 {
16425         uint32_t _ptr_server_name;
16426         uint32_t _ptr_trust_info;
16427         TALLOC_CTX *_mem_save_server_name_0;
16428         TALLOC_CTX *_mem_save_credential_0;
16429         TALLOC_CTX *_mem_save_return_authenticator_0;
16430         TALLOC_CTX *_mem_save_new_owf_password_0;
16431         TALLOC_CTX *_mem_save_old_owf_password_0;
16432         TALLOC_CTX *_mem_save_trust_info_0;
16433         TALLOC_CTX *_mem_save_trust_info_1;
16434         if (flags & NDR_IN) {
16435                 ZERO_STRUCT(r->out);
16436
16437                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
16438                 if (_ptr_server_name) {
16439                         NDR_PULL_ALLOC(ndr, r->in.server_name);
16440                 } else {
16441                         r->in.server_name = NULL;
16442                 }
16443                 if (r->in.server_name) {
16444                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
16445                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
16446                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
16447                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
16448                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
16449                                 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));
16450                         }
16451                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
16452                         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));
16453                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
16454                 }
16455                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
16456                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
16457                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
16458                         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));
16459                 }
16460                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
16461                 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));
16462                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
16463                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
16464                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
16465                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
16466                         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));
16467                 }
16468                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
16469                 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));
16470                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16471                         NDR_PULL_ALLOC(ndr, r->in.credential);
16472                 }
16473                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
16474                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
16475                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
16476                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
16477                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
16478                 ZERO_STRUCTP(r->out.return_authenticator);
16479                 NDR_PULL_ALLOC(ndr, r->out.new_owf_password);
16480                 ZERO_STRUCTP(r->out.new_owf_password);
16481                 NDR_PULL_ALLOC(ndr, r->out.old_owf_password);
16482                 ZERO_STRUCTP(r->out.old_owf_password);
16483                 NDR_PULL_ALLOC(ndr, r->out.trust_info);
16484                 ZERO_STRUCTP(r->out.trust_info);
16485         }
16486         if (flags & NDR_OUT) {
16487                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16488                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
16489                 }
16490                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
16491                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
16492                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
16493                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
16494                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16495                         NDR_PULL_ALLOC(ndr, r->out.new_owf_password);
16496                 }
16497                 _mem_save_new_owf_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
16498                 NDR_PULL_SET_MEM_CTX(ndr, r->out.new_owf_password, LIBNDR_FLAG_REF_ALLOC);
16499                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, r->out.new_owf_password));
16500                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_new_owf_password_0, LIBNDR_FLAG_REF_ALLOC);
16501                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16502                         NDR_PULL_ALLOC(ndr, r->out.old_owf_password);
16503                 }
16504                 _mem_save_old_owf_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
16505                 NDR_PULL_SET_MEM_CTX(ndr, r->out.old_owf_password, LIBNDR_FLAG_REF_ALLOC);
16506                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, r->out.old_owf_password));
16507                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_old_owf_password_0, LIBNDR_FLAG_REF_ALLOC);
16508                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16509                         NDR_PULL_ALLOC(ndr, r->out.trust_info);
16510                 }
16511                 _mem_save_trust_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
16512                 NDR_PULL_SET_MEM_CTX(ndr, r->out.trust_info, LIBNDR_FLAG_REF_ALLOC);
16513                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_trust_info));
16514                 if (_ptr_trust_info) {
16515                         NDR_PULL_ALLOC(ndr, *r->out.trust_info);
16516                 } else {
16517                         *r->out.trust_info = NULL;
16518                 }
16519                 if (*r->out.trust_info) {
16520                         _mem_save_trust_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
16521                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.trust_info, 0);
16522                         NDR_CHECK(ndr_pull_netr_TrustInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.trust_info));
16523                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trust_info_1, 0);
16524                 }
16525                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trust_info_0, LIBNDR_FLAG_REF_ALLOC);
16526                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
16527         }
16528         return NDR_ERR_SUCCESS;
16529 }
16530
16531 _PUBLIC_ void ndr_print_netr_ServerGetTrustInfo(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerGetTrustInfo *r)
16532 {
16533         ndr_print_struct(ndr, name, "netr_ServerGetTrustInfo");
16534         ndr->depth++;
16535         if (flags & NDR_SET_VALUES) {
16536                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
16537         }
16538         if (flags & NDR_IN) {
16539                 ndr_print_struct(ndr, "in", "netr_ServerGetTrustInfo");
16540                 ndr->depth++;
16541                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
16542                 ndr->depth++;
16543                 if (r->in.server_name) {
16544                         ndr_print_string(ndr, "server_name", r->in.server_name);
16545                 }
16546                 ndr->depth--;
16547                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
16548                 ndr->depth++;
16549                 ndr_print_string(ndr, "account_name", r->in.account_name);
16550                 ndr->depth--;
16551                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
16552                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
16553                 ndr->depth++;
16554                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
16555                 ndr->depth--;
16556                 ndr_print_ptr(ndr, "credential", r->in.credential);
16557                 ndr->depth++;
16558                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
16559                 ndr->depth--;
16560                 ndr->depth--;
16561         }
16562         if (flags & NDR_OUT) {
16563                 ndr_print_struct(ndr, "out", "netr_ServerGetTrustInfo");
16564                 ndr->depth++;
16565                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
16566                 ndr->depth++;
16567                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
16568                 ndr->depth--;
16569                 ndr_print_ptr(ndr, "new_owf_password", r->out.new_owf_password);
16570                 ndr->depth++;
16571                 ndr_print_samr_Password(ndr, "new_owf_password", r->out.new_owf_password);
16572                 ndr->depth--;
16573                 ndr_print_ptr(ndr, "old_owf_password", r->out.old_owf_password);
16574                 ndr->depth++;
16575                 ndr_print_samr_Password(ndr, "old_owf_password", r->out.old_owf_password);
16576                 ndr->depth--;
16577                 ndr_print_ptr(ndr, "trust_info", r->out.trust_info);
16578                 ndr->depth++;
16579                 ndr_print_ptr(ndr, "trust_info", *r->out.trust_info);
16580                 ndr->depth++;
16581                 if (*r->out.trust_info) {
16582                         ndr_print_netr_TrustInfo(ndr, "trust_info", *r->out.trust_info);
16583                 }
16584                 ndr->depth--;
16585                 ndr->depth--;
16586                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
16587                 ndr->depth--;
16588         }
16589         ndr->depth--;
16590 }
16591
16592 static const struct ndr_interface_call netlogon_calls[] = {
16593         {
16594                 "netr_LogonUasLogon",
16595                 sizeof(struct netr_LogonUasLogon),
16596                 (ndr_push_flags_fn_t) ndr_push_netr_LogonUasLogon,
16597                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonUasLogon,
16598                 (ndr_print_function_t) ndr_print_netr_LogonUasLogon,
16599                 false,
16600         },
16601         {
16602                 "netr_LogonUasLogoff",
16603                 sizeof(struct netr_LogonUasLogoff),
16604                 (ndr_push_flags_fn_t) ndr_push_netr_LogonUasLogoff,
16605                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonUasLogoff,
16606                 (ndr_print_function_t) ndr_print_netr_LogonUasLogoff,
16607                 false,
16608         },
16609         {
16610                 "netr_LogonSamLogon",
16611                 sizeof(struct netr_LogonSamLogon),
16612                 (ndr_push_flags_fn_t) ndr_push_netr_LogonSamLogon,
16613                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonSamLogon,
16614                 (ndr_print_function_t) ndr_print_netr_LogonSamLogon,
16615                 false,
16616         },
16617         {
16618                 "netr_LogonSamLogoff",
16619                 sizeof(struct netr_LogonSamLogoff),
16620                 (ndr_push_flags_fn_t) ndr_push_netr_LogonSamLogoff,
16621                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonSamLogoff,
16622                 (ndr_print_function_t) ndr_print_netr_LogonSamLogoff,
16623                 false,
16624         },
16625         {
16626                 "netr_ServerReqChallenge",
16627                 sizeof(struct netr_ServerReqChallenge),
16628                 (ndr_push_flags_fn_t) ndr_push_netr_ServerReqChallenge,
16629                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerReqChallenge,
16630                 (ndr_print_function_t) ndr_print_netr_ServerReqChallenge,
16631                 false,
16632         },
16633         {
16634                 "netr_ServerAuthenticate",
16635                 sizeof(struct netr_ServerAuthenticate),
16636                 (ndr_push_flags_fn_t) ndr_push_netr_ServerAuthenticate,
16637                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerAuthenticate,
16638                 (ndr_print_function_t) ndr_print_netr_ServerAuthenticate,
16639                 false,
16640         },
16641         {
16642                 "netr_ServerPasswordSet",
16643                 sizeof(struct netr_ServerPasswordSet),
16644                 (ndr_push_flags_fn_t) ndr_push_netr_ServerPasswordSet,
16645                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerPasswordSet,
16646                 (ndr_print_function_t) ndr_print_netr_ServerPasswordSet,
16647                 false,
16648         },
16649         {
16650                 "netr_DatabaseDeltas",
16651                 sizeof(struct netr_DatabaseDeltas),
16652                 (ndr_push_flags_fn_t) ndr_push_netr_DatabaseDeltas,
16653                 (ndr_pull_flags_fn_t) ndr_pull_netr_DatabaseDeltas,
16654                 (ndr_print_function_t) ndr_print_netr_DatabaseDeltas,
16655                 false,
16656         },
16657         {
16658                 "netr_DatabaseSync",
16659                 sizeof(struct netr_DatabaseSync),
16660                 (ndr_push_flags_fn_t) ndr_push_netr_DatabaseSync,
16661                 (ndr_pull_flags_fn_t) ndr_pull_netr_DatabaseSync,
16662                 (ndr_print_function_t) ndr_print_netr_DatabaseSync,
16663                 false,
16664         },
16665         {
16666                 "netr_AccountDeltas",
16667                 sizeof(struct netr_AccountDeltas),
16668                 (ndr_push_flags_fn_t) ndr_push_netr_AccountDeltas,
16669                 (ndr_pull_flags_fn_t) ndr_pull_netr_AccountDeltas,
16670                 (ndr_print_function_t) ndr_print_netr_AccountDeltas,
16671                 false,
16672         },
16673         {
16674                 "netr_AccountSync",
16675                 sizeof(struct netr_AccountSync),
16676                 (ndr_push_flags_fn_t) ndr_push_netr_AccountSync,
16677                 (ndr_pull_flags_fn_t) ndr_pull_netr_AccountSync,
16678                 (ndr_print_function_t) ndr_print_netr_AccountSync,
16679                 false,
16680         },
16681         {
16682                 "netr_GetDcName",
16683                 sizeof(struct netr_GetDcName),
16684                 (ndr_push_flags_fn_t) ndr_push_netr_GetDcName,
16685                 (ndr_pull_flags_fn_t) ndr_pull_netr_GetDcName,
16686                 (ndr_print_function_t) ndr_print_netr_GetDcName,
16687                 false,
16688         },
16689         {
16690                 "netr_LogonControl",
16691                 sizeof(struct netr_LogonControl),
16692                 (ndr_push_flags_fn_t) ndr_push_netr_LogonControl,
16693                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonControl,
16694                 (ndr_print_function_t) ndr_print_netr_LogonControl,
16695                 false,
16696         },
16697         {
16698                 "netr_GetAnyDCName",
16699                 sizeof(struct netr_GetAnyDCName),
16700                 (ndr_push_flags_fn_t) ndr_push_netr_GetAnyDCName,
16701                 (ndr_pull_flags_fn_t) ndr_pull_netr_GetAnyDCName,
16702                 (ndr_print_function_t) ndr_print_netr_GetAnyDCName,
16703                 false,
16704         },
16705         {
16706                 "netr_LogonControl2",
16707                 sizeof(struct netr_LogonControl2),
16708                 (ndr_push_flags_fn_t) ndr_push_netr_LogonControl2,
16709                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonControl2,
16710                 (ndr_print_function_t) ndr_print_netr_LogonControl2,
16711                 false,
16712         },
16713         {
16714                 "netr_ServerAuthenticate2",
16715                 sizeof(struct netr_ServerAuthenticate2),
16716                 (ndr_push_flags_fn_t) ndr_push_netr_ServerAuthenticate2,
16717                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerAuthenticate2,
16718                 (ndr_print_function_t) ndr_print_netr_ServerAuthenticate2,
16719                 false,
16720         },
16721         {
16722                 "netr_DatabaseSync2",
16723                 sizeof(struct netr_DatabaseSync2),
16724                 (ndr_push_flags_fn_t) ndr_push_netr_DatabaseSync2,
16725                 (ndr_pull_flags_fn_t) ndr_pull_netr_DatabaseSync2,
16726                 (ndr_print_function_t) ndr_print_netr_DatabaseSync2,
16727                 false,
16728         },
16729         {
16730                 "netr_DatabaseRedo",
16731                 sizeof(struct netr_DatabaseRedo),
16732                 (ndr_push_flags_fn_t) ndr_push_netr_DatabaseRedo,
16733                 (ndr_pull_flags_fn_t) ndr_pull_netr_DatabaseRedo,
16734                 (ndr_print_function_t) ndr_print_netr_DatabaseRedo,
16735                 false,
16736         },
16737         {
16738                 "netr_LogonControl2Ex",
16739                 sizeof(struct netr_LogonControl2Ex),
16740                 (ndr_push_flags_fn_t) ndr_push_netr_LogonControl2Ex,
16741                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonControl2Ex,
16742                 (ndr_print_function_t) ndr_print_netr_LogonControl2Ex,
16743                 false,
16744         },
16745         {
16746                 "netr_NetrEnumerateTrustedDomains",
16747                 sizeof(struct netr_NetrEnumerateTrustedDomains),
16748                 (ndr_push_flags_fn_t) ndr_push_netr_NetrEnumerateTrustedDomains,
16749                 (ndr_pull_flags_fn_t) ndr_pull_netr_NetrEnumerateTrustedDomains,
16750                 (ndr_print_function_t) ndr_print_netr_NetrEnumerateTrustedDomains,
16751                 false,
16752         },
16753         {
16754                 "netr_DsRGetDCName",
16755                 sizeof(struct netr_DsRGetDCName),
16756                 (ndr_push_flags_fn_t) ndr_push_netr_DsRGetDCName,
16757                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRGetDCName,
16758                 (ndr_print_function_t) ndr_print_netr_DsRGetDCName,
16759                 false,
16760         },
16761         {
16762                 "netr_LogonGetCapabilities",
16763                 sizeof(struct netr_LogonGetCapabilities),
16764                 (ndr_push_flags_fn_t) ndr_push_netr_LogonGetCapabilities,
16765                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonGetCapabilities,
16766                 (ndr_print_function_t) ndr_print_netr_LogonGetCapabilities,
16767                 false,
16768         },
16769         {
16770                 "netr_NETRLOGONSETSERVICEBITS",
16771                 sizeof(struct netr_NETRLOGONSETSERVICEBITS),
16772                 (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONSETSERVICEBITS,
16773                 (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONSETSERVICEBITS,
16774                 (ndr_print_function_t) ndr_print_netr_NETRLOGONSETSERVICEBITS,
16775                 false,
16776         },
16777         {
16778                 "netr_LogonGetTrustRid",
16779                 sizeof(struct netr_LogonGetTrustRid),
16780                 (ndr_push_flags_fn_t) ndr_push_netr_LogonGetTrustRid,
16781                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonGetTrustRid,
16782                 (ndr_print_function_t) ndr_print_netr_LogonGetTrustRid,
16783                 false,
16784         },
16785         {
16786                 "netr_NETRLOGONCOMPUTESERVERDIGEST",
16787                 sizeof(struct netr_NETRLOGONCOMPUTESERVERDIGEST),
16788                 (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONCOMPUTESERVERDIGEST,
16789                 (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONCOMPUTESERVERDIGEST,
16790                 (ndr_print_function_t) ndr_print_netr_NETRLOGONCOMPUTESERVERDIGEST,
16791                 false,
16792         },
16793         {
16794                 "netr_NETRLOGONCOMPUTECLIENTDIGEST",
16795                 sizeof(struct netr_NETRLOGONCOMPUTECLIENTDIGEST),
16796                 (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONCOMPUTECLIENTDIGEST,
16797                 (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONCOMPUTECLIENTDIGEST,
16798                 (ndr_print_function_t) ndr_print_netr_NETRLOGONCOMPUTECLIENTDIGEST,
16799                 false,
16800         },
16801         {
16802                 "netr_ServerAuthenticate3",
16803                 sizeof(struct netr_ServerAuthenticate3),
16804                 (ndr_push_flags_fn_t) ndr_push_netr_ServerAuthenticate3,
16805                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerAuthenticate3,
16806                 (ndr_print_function_t) ndr_print_netr_ServerAuthenticate3,
16807                 false,
16808         },
16809         {
16810                 "netr_DsRGetDCNameEx",
16811                 sizeof(struct netr_DsRGetDCNameEx),
16812                 (ndr_push_flags_fn_t) ndr_push_netr_DsRGetDCNameEx,
16813                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRGetDCNameEx,
16814                 (ndr_print_function_t) ndr_print_netr_DsRGetDCNameEx,
16815                 false,
16816         },
16817         {
16818                 "netr_DsRGetSiteName",
16819                 sizeof(struct netr_DsRGetSiteName),
16820                 (ndr_push_flags_fn_t) ndr_push_netr_DsRGetSiteName,
16821                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRGetSiteName,
16822                 (ndr_print_function_t) ndr_print_netr_DsRGetSiteName,
16823                 false,
16824         },
16825         {
16826                 "netr_LogonGetDomainInfo",
16827                 sizeof(struct netr_LogonGetDomainInfo),
16828                 (ndr_push_flags_fn_t) ndr_push_netr_LogonGetDomainInfo,
16829                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonGetDomainInfo,
16830                 (ndr_print_function_t) ndr_print_netr_LogonGetDomainInfo,
16831                 false,
16832         },
16833         {
16834                 "netr_ServerPasswordSet2",
16835                 sizeof(struct netr_ServerPasswordSet2),
16836                 (ndr_push_flags_fn_t) ndr_push_netr_ServerPasswordSet2,
16837                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerPasswordSet2,
16838                 (ndr_print_function_t) ndr_print_netr_ServerPasswordSet2,
16839                 false,
16840         },
16841         {
16842                 "netr_ServerPasswordGet",
16843                 sizeof(struct netr_ServerPasswordGet),
16844                 (ndr_push_flags_fn_t) ndr_push_netr_ServerPasswordGet,
16845                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerPasswordGet,
16846                 (ndr_print_function_t) ndr_print_netr_ServerPasswordGet,
16847                 false,
16848         },
16849         {
16850                 "netr_NETRLOGONSENDTOSAM",
16851                 sizeof(struct netr_NETRLOGONSENDTOSAM),
16852                 (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONSENDTOSAM,
16853                 (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONSENDTOSAM,
16854                 (ndr_print_function_t) ndr_print_netr_NETRLOGONSENDTOSAM,
16855                 false,
16856         },
16857         {
16858                 "netr_DsRAddressToSitenamesW",
16859                 sizeof(struct netr_DsRAddressToSitenamesW),
16860                 (ndr_push_flags_fn_t) ndr_push_netr_DsRAddressToSitenamesW,
16861                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRAddressToSitenamesW,
16862                 (ndr_print_function_t) ndr_print_netr_DsRAddressToSitenamesW,
16863                 false,
16864         },
16865         {
16866                 "netr_DsRGetDCNameEx2",
16867                 sizeof(struct netr_DsRGetDCNameEx2),
16868                 (ndr_push_flags_fn_t) ndr_push_netr_DsRGetDCNameEx2,
16869                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRGetDCNameEx2,
16870                 (ndr_print_function_t) ndr_print_netr_DsRGetDCNameEx2,
16871                 false,
16872         },
16873         {
16874                 "netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN",
16875                 sizeof(struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN),
16876                 (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN,
16877                 (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN,
16878                 (ndr_print_function_t) ndr_print_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN,
16879                 false,
16880         },
16881         {
16882                 "netr_NetrEnumerateTrustedDomainsEx",
16883                 sizeof(struct netr_NetrEnumerateTrustedDomainsEx),
16884                 (ndr_push_flags_fn_t) ndr_push_netr_NetrEnumerateTrustedDomainsEx,
16885                 (ndr_pull_flags_fn_t) ndr_pull_netr_NetrEnumerateTrustedDomainsEx,
16886                 (ndr_print_function_t) ndr_print_netr_NetrEnumerateTrustedDomainsEx,
16887                 false,
16888         },
16889         {
16890                 "netr_DsRAddressToSitenamesExW",
16891                 sizeof(struct netr_DsRAddressToSitenamesExW),
16892                 (ndr_push_flags_fn_t) ndr_push_netr_DsRAddressToSitenamesExW,
16893                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRAddressToSitenamesExW,
16894                 (ndr_print_function_t) ndr_print_netr_DsRAddressToSitenamesExW,
16895                 false,
16896         },
16897         {
16898                 "netr_DsrGetDcSiteCoverageW",
16899                 sizeof(struct netr_DsrGetDcSiteCoverageW),
16900                 (ndr_push_flags_fn_t) ndr_push_netr_DsrGetDcSiteCoverageW,
16901                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsrGetDcSiteCoverageW,
16902                 (ndr_print_function_t) ndr_print_netr_DsrGetDcSiteCoverageW,
16903                 false,
16904         },
16905         {
16906                 "netr_LogonSamLogonEx",
16907                 sizeof(struct netr_LogonSamLogonEx),
16908                 (ndr_push_flags_fn_t) ndr_push_netr_LogonSamLogonEx,
16909                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonSamLogonEx,
16910                 (ndr_print_function_t) ndr_print_netr_LogonSamLogonEx,
16911                 false,
16912         },
16913         {
16914                 "netr_DsrEnumerateDomainTrusts",
16915                 sizeof(struct netr_DsrEnumerateDomainTrusts),
16916                 (ndr_push_flags_fn_t) ndr_push_netr_DsrEnumerateDomainTrusts,
16917                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsrEnumerateDomainTrusts,
16918                 (ndr_print_function_t) ndr_print_netr_DsrEnumerateDomainTrusts,
16919                 false,
16920         },
16921         {
16922                 "netr_DsrDeregisterDNSHostRecords",
16923                 sizeof(struct netr_DsrDeregisterDNSHostRecords),
16924                 (ndr_push_flags_fn_t) ndr_push_netr_DsrDeregisterDNSHostRecords,
16925                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsrDeregisterDNSHostRecords,
16926                 (ndr_print_function_t) ndr_print_netr_DsrDeregisterDNSHostRecords,
16927                 false,
16928         },
16929         {
16930                 "netr_ServerTrustPasswordsGet",
16931                 sizeof(struct netr_ServerTrustPasswordsGet),
16932                 (ndr_push_flags_fn_t) ndr_push_netr_ServerTrustPasswordsGet,
16933                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerTrustPasswordsGet,
16934                 (ndr_print_function_t) ndr_print_netr_ServerTrustPasswordsGet,
16935                 false,
16936         },
16937         {
16938                 "netr_DsRGetForestTrustInformation",
16939                 sizeof(struct netr_DsRGetForestTrustInformation),
16940                 (ndr_push_flags_fn_t) ndr_push_netr_DsRGetForestTrustInformation,
16941                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRGetForestTrustInformation,
16942                 (ndr_print_function_t) ndr_print_netr_DsRGetForestTrustInformation,
16943                 false,
16944         },
16945         {
16946                 "netr_GetForestTrustInformation",
16947                 sizeof(struct netr_GetForestTrustInformation),
16948                 (ndr_push_flags_fn_t) ndr_push_netr_GetForestTrustInformation,
16949                 (ndr_pull_flags_fn_t) ndr_pull_netr_GetForestTrustInformation,
16950                 (ndr_print_function_t) ndr_print_netr_GetForestTrustInformation,
16951                 false,
16952         },
16953         {
16954                 "netr_LogonSamLogonWithFlags",
16955                 sizeof(struct netr_LogonSamLogonWithFlags),
16956                 (ndr_push_flags_fn_t) ndr_push_netr_LogonSamLogonWithFlags,
16957                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonSamLogonWithFlags,
16958                 (ndr_print_function_t) ndr_print_netr_LogonSamLogonWithFlags,
16959                 false,
16960         },
16961         {
16962                 "netr_ServerGetTrustInfo",
16963                 sizeof(struct netr_ServerGetTrustInfo),
16964                 (ndr_push_flags_fn_t) ndr_push_netr_ServerGetTrustInfo,
16965                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerGetTrustInfo,
16966                 (ndr_print_function_t) ndr_print_netr_ServerGetTrustInfo,
16967                 false,
16968         },
16969         { NULL, 0, NULL, NULL, NULL, false }
16970 };
16971
16972 static const char * const netlogon_endpoint_strings[] = {
16973         "ncacn_np:[\\pipe\\netlogon]", 
16974         "ncacn_ip_tcp:", 
16975         "ncalrpc:", 
16976 };
16977
16978 static const struct ndr_interface_string_array netlogon_endpoints = {
16979         .count  = 3,
16980         .names  = netlogon_endpoint_strings
16981 };
16982
16983 static const char * const netlogon_authservice_strings[] = {
16984         "host", 
16985 };
16986
16987 static const struct ndr_interface_string_array netlogon_authservices = {
16988         .count  = 1,
16989         .names  = netlogon_authservice_strings
16990 };
16991
16992
16993 const struct ndr_interface_table ndr_table_netlogon = {
16994         .name           = "netlogon",
16995         .syntax_id      = {
16996                 {0x12345678,0x1234,0xabcd,{0xef,0x00},{0x01,0x23,0x45,0x67,0xcf,0xfb}},
16997                 NDR_NETLOGON_VERSION
16998         },
16999         .helpstring     = NDR_NETLOGON_HELPSTRING,
17000         .num_calls      = 47,
17001         .calls          = netlogon_calls,
17002         .endpoints      = &netlogon_endpoints,
17003         .authservices   = &netlogon_authservices
17004 };
17005