netlogon: document some more MSVC flags.
[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_AUTHENTICATED_RPC_LSASS", NETLOGON_NEG_AUTHENTICATED_RPC_LSASS, r);
6512         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETLOGON_NEG_AUTHENTICATED_RPC", NETLOGON_NEG_AUTHENTICATED_RPC, r);
6513         ndr->depth--;
6514 }
6515
6516 static enum ndr_err_code ndr_push_SyncStateEnum(struct ndr_push *ndr, int ndr_flags, enum SyncStateEnum r)
6517 {
6518         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
6519         return NDR_ERR_SUCCESS;
6520 }
6521
6522 static enum ndr_err_code ndr_pull_SyncStateEnum(struct ndr_pull *ndr, int ndr_flags, enum SyncStateEnum *r)
6523 {
6524         uint16_t v;
6525         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
6526         *r = v;
6527         return NDR_ERR_SUCCESS;
6528 }
6529
6530 _PUBLIC_ void ndr_print_SyncStateEnum(struct ndr_print *ndr, const char *name, enum SyncStateEnum r)
6531 {
6532         const char *val = NULL;
6533
6534         switch (r) {
6535                 case SYNCSTATE_NORMAL_STATE: val = "SYNCSTATE_NORMAL_STATE"; break;
6536                 case SYNCSTATE_DOMAIN_STATE: val = "SYNCSTATE_DOMAIN_STATE"; break;
6537                 case SYNCSTATE_GROUP_STATE: val = "SYNCSTATE_GROUP_STATE"; break;
6538                 case SYNCSTATE_UAS_BUILT_IN_GROUP_STATE: val = "SYNCSTATE_UAS_BUILT_IN_GROUP_STATE"; break;
6539                 case SYNCSTATE_USER_STATE: val = "SYNCSTATE_USER_STATE"; break;
6540                 case SYNCSTATE_GROUP_MEMBER_STATE: val = "SYNCSTATE_GROUP_MEMBER_STATE"; break;
6541                 case SYNCSTATE_ALIAS_STATE: val = "SYNCSTATE_ALIAS_STATE"; break;
6542                 case SYNCSTATE_ALIAS_MEMBER_STATE: val = "SYNCSTATE_ALIAS_MEMBER_STATE"; break;
6543                 case SYNCSTATE_SAM_DONE_STATE: val = "SYNCSTATE_SAM_DONE_STATE"; break;
6544         }
6545         ndr_print_enum(ndr, name, "ENUM", val, r);
6546 }
6547
6548 static enum ndr_err_code ndr_push_netr_ChangeLogFlags(struct ndr_push *ndr, int ndr_flags, uint16_t r)
6549 {
6550         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
6551         return NDR_ERR_SUCCESS;
6552 }
6553
6554 static enum ndr_err_code ndr_pull_netr_ChangeLogFlags(struct ndr_pull *ndr, int ndr_flags, uint16_t *r)
6555 {
6556         uint16_t v;
6557         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
6558         *r = v;
6559         return NDR_ERR_SUCCESS;
6560 }
6561
6562 _PUBLIC_ void ndr_print_netr_ChangeLogFlags(struct ndr_print *ndr, const char *name, uint16_t r)
6563 {
6564         ndr_print_uint16(ndr, name, r);
6565         ndr->depth++;
6566         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_CHANGELOG_IMMEDIATE_REPL_REQUIRED", NETR_CHANGELOG_IMMEDIATE_REPL_REQUIRED, r);
6567         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_CHANGELOG_CHANGED_PASSWORD", NETR_CHANGELOG_CHANGED_PASSWORD, r);
6568         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_CHANGELOG_SID_INCLUDED", NETR_CHANGELOG_SID_INCLUDED, r);
6569         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_CHANGELOG_NAME_INCLUDED", NETR_CHANGELOG_NAME_INCLUDED, r);
6570         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_CHANGELOG_FIRST_PROMOTION_OBJ", NETR_CHANGELOG_FIRST_PROMOTION_OBJ, r);
6571         ndr->depth--;
6572 }
6573
6574 static enum ndr_err_code ndr_push_netr_ChangeLogObject(struct ndr_push *ndr, int ndr_flags, const union netr_ChangeLogObject *r)
6575 {
6576         if (ndr_flags & NDR_SCALARS) {
6577                 int level = ndr_push_get_switch_value(ndr, r);
6578                 switch (level) {
6579                         case NETR_CHANGELOG_SID_INCLUDED: {
6580                                 NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, &r->object_sid));
6581                         break; }
6582
6583                         case NETR_CHANGELOG_NAME_INCLUDED: {
6584                                 {
6585                                         uint32_t _flags_save_string = ndr->flags;
6586                                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
6587                                         NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->object_name));
6588                                         ndr->flags = _flags_save_string;
6589                                 }
6590                         break; }
6591
6592                         default: {
6593                         break; }
6594
6595                 }
6596         }
6597         if (ndr_flags & NDR_BUFFERS) {
6598                 int level = ndr_push_get_switch_value(ndr, r);
6599                 switch (level) {
6600                         case NETR_CHANGELOG_SID_INCLUDED:
6601                         break;
6602
6603                         case NETR_CHANGELOG_NAME_INCLUDED:
6604                         break;
6605
6606                         default:
6607                         break;
6608
6609                 }
6610         }
6611         return NDR_ERR_SUCCESS;
6612 }
6613
6614 static enum ndr_err_code ndr_pull_netr_ChangeLogObject(struct ndr_pull *ndr, int ndr_flags, union netr_ChangeLogObject *r)
6615 {
6616         int level;
6617         level = ndr_pull_get_switch_value(ndr, r);
6618         if (ndr_flags & NDR_SCALARS) {
6619                 switch (level) {
6620                         case NETR_CHANGELOG_SID_INCLUDED: {
6621                                 NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, &r->object_sid));
6622                         break; }
6623
6624                         case NETR_CHANGELOG_NAME_INCLUDED: {
6625                                 {
6626                                         uint32_t _flags_save_string = ndr->flags;
6627                                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
6628                                         NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->object_name));
6629                                         ndr->flags = _flags_save_string;
6630                                 }
6631                         break; }
6632
6633                         default: {
6634                         break; }
6635
6636                 }
6637         }
6638         if (ndr_flags & NDR_BUFFERS) {
6639                 switch (level) {
6640                         case NETR_CHANGELOG_SID_INCLUDED:
6641                         break;
6642
6643                         case NETR_CHANGELOG_NAME_INCLUDED:
6644                         break;
6645
6646                         default:
6647                         break;
6648
6649                 }
6650         }
6651         return NDR_ERR_SUCCESS;
6652 }
6653
6654 _PUBLIC_ void ndr_print_netr_ChangeLogObject(struct ndr_print *ndr, const char *name, const union netr_ChangeLogObject *r)
6655 {
6656         int level;
6657         level = ndr_print_get_switch_value(ndr, r);
6658         ndr_print_union(ndr, name, level, "netr_ChangeLogObject");
6659         switch (level) {
6660                 case NETR_CHANGELOG_SID_INCLUDED:
6661                         ndr_print_dom_sid(ndr, "object_sid", &r->object_sid);
6662                 break;
6663
6664                 case NETR_CHANGELOG_NAME_INCLUDED:
6665                         ndr_print_string(ndr, "object_name", r->object_name);
6666                 break;
6667
6668                 default:
6669                 break;
6670
6671         }
6672 }
6673
6674 _PUBLIC_ enum ndr_err_code ndr_push_netr_ChangeLogEntry(struct ndr_push *ndr, int ndr_flags, const struct netr_ChangeLogEntry *r)
6675 {
6676         if (ndr_flags & NDR_SCALARS) {
6677                 NDR_CHECK(ndr_push_align(ndr, 4));
6678                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->serial_number1));
6679                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->serial_number2));
6680                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->object_rid));
6681                 NDR_CHECK(ndr_push_netr_ChangeLogFlags(ndr, NDR_SCALARS, r->flags));
6682                 NDR_CHECK(ndr_push_netr_SamDatabaseID8Bit(ndr, NDR_SCALARS, r->db_index));
6683                 NDR_CHECK(ndr_push_netr_DeltaEnum8Bit(ndr, NDR_SCALARS, r->delta_type));
6684                 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->object, r->flags & (NETR_CHANGELOG_SID_INCLUDED | NETR_CHANGELOG_NAME_INCLUDED)));
6685                 NDR_CHECK(ndr_push_netr_ChangeLogObject(ndr, NDR_SCALARS, &r->object));
6686         }
6687         if (ndr_flags & NDR_BUFFERS) {
6688                 NDR_CHECK(ndr_push_netr_ChangeLogObject(ndr, NDR_BUFFERS, &r->object));
6689         }
6690         return NDR_ERR_SUCCESS;
6691 }
6692
6693 _PUBLIC_ enum ndr_err_code ndr_pull_netr_ChangeLogEntry(struct ndr_pull *ndr, int ndr_flags, struct netr_ChangeLogEntry *r)
6694 {
6695         if (ndr_flags & NDR_SCALARS) {
6696                 NDR_CHECK(ndr_pull_align(ndr, 4));
6697                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->serial_number1));
6698                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->serial_number2));
6699                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->object_rid));
6700                 NDR_CHECK(ndr_pull_netr_ChangeLogFlags(ndr, NDR_SCALARS, &r->flags));
6701                 NDR_CHECK(ndr_pull_netr_SamDatabaseID8Bit(ndr, NDR_SCALARS, &r->db_index));
6702                 NDR_CHECK(ndr_pull_netr_DeltaEnum8Bit(ndr, NDR_SCALARS, &r->delta_type));
6703                 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->object, r->flags & (NETR_CHANGELOG_SID_INCLUDED | NETR_CHANGELOG_NAME_INCLUDED)));
6704                 NDR_CHECK(ndr_pull_netr_ChangeLogObject(ndr, NDR_SCALARS, &r->object));
6705         }
6706         if (ndr_flags & NDR_BUFFERS) {
6707                 NDR_CHECK(ndr_pull_netr_ChangeLogObject(ndr, NDR_BUFFERS, &r->object));
6708         }
6709         return NDR_ERR_SUCCESS;
6710 }
6711
6712 _PUBLIC_ void ndr_print_netr_ChangeLogEntry(struct ndr_print *ndr, const char *name, const struct netr_ChangeLogEntry *r)
6713 {
6714         ndr_print_struct(ndr, name, "netr_ChangeLogEntry");
6715         ndr->depth++;
6716         ndr_print_uint32(ndr, "serial_number1", r->serial_number1);
6717         ndr_print_uint32(ndr, "serial_number2", r->serial_number2);
6718         ndr_print_uint32(ndr, "object_rid", r->object_rid);
6719         ndr_print_netr_ChangeLogFlags(ndr, "flags", r->flags);
6720         ndr_print_netr_SamDatabaseID8Bit(ndr, "db_index", r->db_index);
6721         ndr_print_netr_DeltaEnum8Bit(ndr, "delta_type", r->delta_type);
6722         ndr_print_set_switch_value(ndr, &r->object, r->flags & (NETR_CHANGELOG_SID_INCLUDED | NETR_CHANGELOG_NAME_INCLUDED));
6723         ndr_print_netr_ChangeLogObject(ndr, "object", &r->object);
6724         ndr->depth--;
6725 }
6726
6727 _PUBLIC_ size_t ndr_size_netr_ChangeLogEntry(const struct netr_ChangeLogEntry *r, struct smb_iconv_convenience *ic, int flags)
6728 {
6729         return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_netr_ChangeLogEntry, ic);
6730 }
6731
6732 static enum ndr_err_code ndr_push_netr_Blob(struct ndr_push *ndr, int ndr_flags, const struct netr_Blob *r)
6733 {
6734         if (ndr_flags & NDR_SCALARS) {
6735                 NDR_CHECK(ndr_push_align(ndr, 4));
6736                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
6737                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
6738         }
6739         if (ndr_flags & NDR_BUFFERS) {
6740                 if (r->data) {
6741                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
6742                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, r->length));
6743                 }
6744         }
6745         return NDR_ERR_SUCCESS;
6746 }
6747
6748 static enum ndr_err_code ndr_pull_netr_Blob(struct ndr_pull *ndr, int ndr_flags, struct netr_Blob *r)
6749 {
6750         uint32_t _ptr_data;
6751         TALLOC_CTX *_mem_save_data_0;
6752         if (ndr_flags & NDR_SCALARS) {
6753                 NDR_CHECK(ndr_pull_align(ndr, 4));
6754                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
6755                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
6756                 if (_ptr_data) {
6757                         NDR_PULL_ALLOC(ndr, r->data);
6758                 } else {
6759                         r->data = NULL;
6760                 }
6761         }
6762         if (ndr_flags & NDR_BUFFERS) {
6763                 if (r->data) {
6764                         _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
6765                         NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
6766                         NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
6767                         NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
6768                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, ndr_get_array_size(ndr, &r->data)));
6769                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
6770                 }
6771                 if (r->data) {
6772                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->length));
6773                 }
6774         }
6775         return NDR_ERR_SUCCESS;
6776 }
6777
6778 _PUBLIC_ void ndr_print_netr_Blob(struct ndr_print *ndr, const char *name, const struct netr_Blob *r)
6779 {
6780         ndr_print_struct(ndr, name, "netr_Blob");
6781         ndr->depth++;
6782         ndr_print_uint32(ndr, "length", r->length);
6783         ndr_print_ptr(ndr, "data", r->data);
6784         ndr->depth++;
6785         if (r->data) {
6786                 ndr_print_array_uint8(ndr, "data", r->data, r->length);
6787         }
6788         ndr->depth--;
6789         ndr->depth--;
6790 }
6791
6792 static enum ndr_err_code ndr_push_netr_DsRGetDCName_flags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
6793 {
6794         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
6795         return NDR_ERR_SUCCESS;
6796 }
6797
6798 static enum ndr_err_code ndr_pull_netr_DsRGetDCName_flags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
6799 {
6800         uint32_t v;
6801         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
6802         *r = v;
6803         return NDR_ERR_SUCCESS;
6804 }
6805
6806 _PUBLIC_ void ndr_print_netr_DsRGetDCName_flags(struct ndr_print *ndr, const char *name, uint32_t r)
6807 {
6808         ndr_print_uint32(ndr, name, r);
6809         ndr->depth++;
6810         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_FORCE_REDISCOVERY", DS_FORCE_REDISCOVERY, r);
6811         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_DIRECTORY_SERVICE_REQUIRED", DS_DIRECTORY_SERVICE_REQUIRED, r);
6812         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_DIRECTORY_SERVICE_PREFERRED", DS_DIRECTORY_SERVICE_PREFERRED, r);
6813         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_GC_SERVER_REQUIRED", DS_GC_SERVER_REQUIRED, r);
6814         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_PDC_REQUIRED", DS_PDC_REQUIRED, r);
6815         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_BACKGROUND_ONLY", DS_BACKGROUND_ONLY, r);
6816         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_IP_REQUIRED", DS_IP_REQUIRED, r);
6817         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_KDC_REQUIRED", DS_KDC_REQUIRED, r);
6818         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_TIMESERV_REQUIRED", DS_TIMESERV_REQUIRED, r);
6819         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_WRITABLE_REQUIRED", DS_WRITABLE_REQUIRED, r);
6820         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_GOOD_TIMESERV_PREFERRED", DS_GOOD_TIMESERV_PREFERRED, r);
6821         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_AVOID_SELF", DS_AVOID_SELF, r);
6822         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_ONLY_LDAP_NEEDED", DS_ONLY_LDAP_NEEDED, r);
6823         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_IS_FLAT_NAME", DS_IS_FLAT_NAME, r);
6824         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_IS_DNS_NAME", DS_IS_DNS_NAME, r);
6825         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_TRY_NEXTCLOSEST_SITE", DS_TRY_NEXTCLOSEST_SITE, r);
6826         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_DIRECTORY_SERVICE_6_REQUIRED", DS_DIRECTORY_SERVICE_6_REQUIRED, r);
6827         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_RETURN_DNS_NAME", DS_RETURN_DNS_NAME, r);
6828         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_RETURN_FLAT_NAME", DS_RETURN_FLAT_NAME, r);
6829         ndr->depth--;
6830 }
6831
6832 static enum ndr_err_code ndr_push_netr_DsRGetDCNameInfo_AddressType(struct ndr_push *ndr, int ndr_flags, enum netr_DsRGetDCNameInfo_AddressType r)
6833 {
6834         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
6835         return NDR_ERR_SUCCESS;
6836 }
6837
6838 static enum ndr_err_code ndr_pull_netr_DsRGetDCNameInfo_AddressType(struct ndr_pull *ndr, int ndr_flags, enum netr_DsRGetDCNameInfo_AddressType *r)
6839 {
6840         uint32_t v;
6841         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
6842         *r = v;
6843         return NDR_ERR_SUCCESS;
6844 }
6845
6846 _PUBLIC_ void ndr_print_netr_DsRGetDCNameInfo_AddressType(struct ndr_print *ndr, const char *name, enum netr_DsRGetDCNameInfo_AddressType r)
6847 {
6848         const char *val = NULL;
6849
6850         switch (r) {
6851                 case DS_ADDRESS_TYPE_INET: val = "DS_ADDRESS_TYPE_INET"; break;
6852                 case DS_ADDRESS_TYPE_NETBIOS: val = "DS_ADDRESS_TYPE_NETBIOS"; break;
6853         }
6854         ndr_print_enum(ndr, name, "ENUM", val, r);
6855 }
6856
6857 static enum ndr_err_code ndr_push_netr_DsR_DcFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
6858 {
6859         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
6860         return NDR_ERR_SUCCESS;
6861 }
6862
6863 static enum ndr_err_code ndr_pull_netr_DsR_DcFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
6864 {
6865         uint32_t v;
6866         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
6867         *r = v;
6868         return NDR_ERR_SUCCESS;
6869 }
6870
6871 _PUBLIC_ void ndr_print_netr_DsR_DcFlags(struct ndr_print *ndr, const char *name, uint32_t r)
6872 {
6873         ndr_print_uint32(ndr, name, r);
6874         ndr->depth++;
6875         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_PDC", DS_SERVER_PDC, r);
6876         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_GC", DS_SERVER_GC, r);
6877         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_LDAP", DS_SERVER_LDAP, r);
6878         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_DS", DS_SERVER_DS, r);
6879         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_KDC", DS_SERVER_KDC, r);
6880         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_TIMESERV", DS_SERVER_TIMESERV, r);
6881         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_CLOSEST", DS_SERVER_CLOSEST, r);
6882         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_WRITABLE", DS_SERVER_WRITABLE, r);
6883         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_GOOD_TIMESERV", DS_SERVER_GOOD_TIMESERV, r);
6884         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_NDNC", DS_SERVER_NDNC, r);
6885         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_SELECT_SECRET_DOMAIN_6", DS_SERVER_SELECT_SECRET_DOMAIN_6, r);
6886         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_SERVER_FULL_SECRET_DOMAIN_6", DS_SERVER_FULL_SECRET_DOMAIN_6, r);
6887         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_DNS_CONTROLLER", DS_DNS_CONTROLLER, r);
6888         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_DNS_DOMAIN", DS_DNS_DOMAIN, r);
6889         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "DS_DNS_FOREST", DS_DNS_FOREST, r);
6890         ndr->depth--;
6891 }
6892
6893 _PUBLIC_ enum ndr_err_code ndr_push_netr_DsRGetDCNameInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_DsRGetDCNameInfo *r)
6894 {
6895         if (ndr_flags & NDR_SCALARS) {
6896                 NDR_CHECK(ndr_push_align(ndr, 4));
6897                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dc_unc));
6898                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dc_address));
6899                 NDR_CHECK(ndr_push_netr_DsRGetDCNameInfo_AddressType(ndr, NDR_SCALARS, r->dc_address_type));
6900                 NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->domain_guid));
6901                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain_name));
6902                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->forest_name));
6903                 NDR_CHECK(ndr_push_netr_DsR_DcFlags(ndr, NDR_SCALARS, r->dc_flags));
6904                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dc_site_name));
6905                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->client_site_name));
6906         }
6907         if (ndr_flags & NDR_BUFFERS) {
6908                 if (r->dc_unc) {
6909                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_unc, CH_UTF16)));
6910                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6911                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_unc, CH_UTF16)));
6912                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dc_unc, ndr_charset_length(r->dc_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6913                 }
6914                 if (r->dc_address) {
6915                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_address, CH_UTF16)));
6916                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6917                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_address, CH_UTF16)));
6918                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dc_address, ndr_charset_length(r->dc_address, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6919                 }
6920                 if (r->domain_name) {
6921                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain_name, CH_UTF16)));
6922                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6923                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->domain_name, CH_UTF16)));
6924                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->domain_name, ndr_charset_length(r->domain_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6925                 }
6926                 if (r->forest_name) {
6927                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->forest_name, CH_UTF16)));
6928                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6929                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->forest_name, CH_UTF16)));
6930                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->forest_name, ndr_charset_length(r->forest_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
6931                 }
6932                 if (r->dc_site_name) {
6933                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_site_name, CH_UTF16)));
6934                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6935                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dc_site_name, CH_UTF16)));
6936                         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));
6937                 }
6938                 if (r->client_site_name) {
6939                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client_site_name, CH_UTF16)));
6940                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
6941                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->client_site_name, CH_UTF16)));
6942                         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));
6943                 }
6944         }
6945         return NDR_ERR_SUCCESS;
6946 }
6947
6948 _PUBLIC_ enum ndr_err_code ndr_pull_netr_DsRGetDCNameInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_DsRGetDCNameInfo *r)
6949 {
6950         uint32_t _ptr_dc_unc;
6951         TALLOC_CTX *_mem_save_dc_unc_0;
6952         uint32_t _ptr_dc_address;
6953         TALLOC_CTX *_mem_save_dc_address_0;
6954         uint32_t _ptr_domain_name;
6955         TALLOC_CTX *_mem_save_domain_name_0;
6956         uint32_t _ptr_forest_name;
6957         TALLOC_CTX *_mem_save_forest_name_0;
6958         uint32_t _ptr_dc_site_name;
6959         TALLOC_CTX *_mem_save_dc_site_name_0;
6960         uint32_t _ptr_client_site_name;
6961         TALLOC_CTX *_mem_save_client_site_name_0;
6962         if (ndr_flags & NDR_SCALARS) {
6963                 NDR_CHECK(ndr_pull_align(ndr, 4));
6964                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dc_unc));
6965                 if (_ptr_dc_unc) {
6966                         NDR_PULL_ALLOC(ndr, r->dc_unc);
6967                 } else {
6968                         r->dc_unc = NULL;
6969                 }
6970                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dc_address));
6971                 if (_ptr_dc_address) {
6972                         NDR_PULL_ALLOC(ndr, r->dc_address);
6973                 } else {
6974                         r->dc_address = NULL;
6975                 }
6976                 NDR_CHECK(ndr_pull_netr_DsRGetDCNameInfo_AddressType(ndr, NDR_SCALARS, &r->dc_address_type));
6977                 NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->domain_guid));
6978                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
6979                 if (_ptr_domain_name) {
6980                         NDR_PULL_ALLOC(ndr, r->domain_name);
6981                 } else {
6982                         r->domain_name = NULL;
6983                 }
6984                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_forest_name));
6985                 if (_ptr_forest_name) {
6986                         NDR_PULL_ALLOC(ndr, r->forest_name);
6987                 } else {
6988                         r->forest_name = NULL;
6989                 }
6990                 NDR_CHECK(ndr_pull_netr_DsR_DcFlags(ndr, NDR_SCALARS, &r->dc_flags));
6991                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dc_site_name));
6992                 if (_ptr_dc_site_name) {
6993                         NDR_PULL_ALLOC(ndr, r->dc_site_name);
6994                 } else {
6995                         r->dc_site_name = NULL;
6996                 }
6997                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client_site_name));
6998                 if (_ptr_client_site_name) {
6999                         NDR_PULL_ALLOC(ndr, r->client_site_name);
7000                 } else {
7001                         r->client_site_name = NULL;
7002                 }
7003         }
7004         if (ndr_flags & NDR_BUFFERS) {
7005                 if (r->dc_unc) {
7006                         _mem_save_dc_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
7007                         NDR_PULL_SET_MEM_CTX(ndr, r->dc_unc, 0);
7008                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dc_unc));
7009                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dc_unc));
7010                         if (ndr_get_array_length(ndr, &r->dc_unc) > ndr_get_array_size(ndr, &r->dc_unc)) {
7011                                 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));
7012                         }
7013                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dc_unc), sizeof(uint16_t)));
7014                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dc_unc, ndr_get_array_length(ndr, &r->dc_unc), sizeof(uint16_t), CH_UTF16));
7015                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dc_unc_0, 0);
7016                 }
7017                 if (r->dc_address) {
7018                         _mem_save_dc_address_0 = NDR_PULL_GET_MEM_CTX(ndr);
7019                         NDR_PULL_SET_MEM_CTX(ndr, r->dc_address, 0);
7020                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dc_address));
7021                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dc_address));
7022                         if (ndr_get_array_length(ndr, &r->dc_address) > ndr_get_array_size(ndr, &r->dc_address)) {
7023                                 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));
7024                         }
7025                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dc_address), sizeof(uint16_t)));
7026                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dc_address, ndr_get_array_length(ndr, &r->dc_address), sizeof(uint16_t), CH_UTF16));
7027                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dc_address_0, 0);
7028                 }
7029                 if (r->domain_name) {
7030                         _mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
7031                         NDR_PULL_SET_MEM_CTX(ndr, r->domain_name, 0);
7032                         NDR_CHECK(ndr_pull_array_size(ndr, &r->domain_name));
7033                         NDR_CHECK(ndr_pull_array_length(ndr, &r->domain_name));
7034                         if (ndr_get_array_length(ndr, &r->domain_name) > ndr_get_array_size(ndr, &r->domain_name)) {
7035                                 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));
7036                         }
7037                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->domain_name), sizeof(uint16_t)));
7038                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->domain_name, ndr_get_array_length(ndr, &r->domain_name), sizeof(uint16_t), CH_UTF16));
7039                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
7040                 }
7041                 if (r->forest_name) {
7042                         _mem_save_forest_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
7043                         NDR_PULL_SET_MEM_CTX(ndr, r->forest_name, 0);
7044                         NDR_CHECK(ndr_pull_array_size(ndr, &r->forest_name));
7045                         NDR_CHECK(ndr_pull_array_length(ndr, &r->forest_name));
7046                         if (ndr_get_array_length(ndr, &r->forest_name) > ndr_get_array_size(ndr, &r->forest_name)) {
7047                                 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));
7048                         }
7049                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->forest_name), sizeof(uint16_t)));
7050                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->forest_name, ndr_get_array_length(ndr, &r->forest_name), sizeof(uint16_t), CH_UTF16));
7051                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_forest_name_0, 0);
7052                 }
7053                 if (r->dc_site_name) {
7054                         _mem_save_dc_site_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
7055                         NDR_PULL_SET_MEM_CTX(ndr, r->dc_site_name, 0);
7056                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dc_site_name));
7057                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dc_site_name));
7058                         if (ndr_get_array_length(ndr, &r->dc_site_name) > ndr_get_array_size(ndr, &r->dc_site_name)) {
7059                                 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));
7060                         }
7061                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dc_site_name), sizeof(uint16_t)));
7062                         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));
7063                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dc_site_name_0, 0);
7064                 }
7065                 if (r->client_site_name) {
7066                         _mem_save_client_site_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
7067                         NDR_PULL_SET_MEM_CTX(ndr, r->client_site_name, 0);
7068                         NDR_CHECK(ndr_pull_array_size(ndr, &r->client_site_name));
7069                         NDR_CHECK(ndr_pull_array_length(ndr, &r->client_site_name));
7070                         if (ndr_get_array_length(ndr, &r->client_site_name) > ndr_get_array_size(ndr, &r->client_site_name)) {
7071                                 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));
7072                         }
7073                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client_site_name), sizeof(uint16_t)));
7074                         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));
7075                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_site_name_0, 0);
7076                 }
7077         }
7078         return NDR_ERR_SUCCESS;
7079 }
7080
7081 _PUBLIC_ void ndr_print_netr_DsRGetDCNameInfo(struct ndr_print *ndr, const char *name, const struct netr_DsRGetDCNameInfo *r)
7082 {
7083         ndr_print_struct(ndr, name, "netr_DsRGetDCNameInfo");
7084         ndr->depth++;
7085         ndr_print_ptr(ndr, "dc_unc", r->dc_unc);
7086         ndr->depth++;
7087         if (r->dc_unc) {
7088                 ndr_print_string(ndr, "dc_unc", r->dc_unc);
7089         }
7090         ndr->depth--;
7091         ndr_print_ptr(ndr, "dc_address", r->dc_address);
7092         ndr->depth++;
7093         if (r->dc_address) {
7094                 ndr_print_string(ndr, "dc_address", r->dc_address);
7095         }
7096         ndr->depth--;
7097         ndr_print_netr_DsRGetDCNameInfo_AddressType(ndr, "dc_address_type", r->dc_address_type);
7098         ndr_print_GUID(ndr, "domain_guid", &r->domain_guid);
7099         ndr_print_ptr(ndr, "domain_name", r->domain_name);
7100         ndr->depth++;
7101         if (r->domain_name) {
7102                 ndr_print_string(ndr, "domain_name", r->domain_name);
7103         }
7104         ndr->depth--;
7105         ndr_print_ptr(ndr, "forest_name", r->forest_name);
7106         ndr->depth++;
7107         if (r->forest_name) {
7108                 ndr_print_string(ndr, "forest_name", r->forest_name);
7109         }
7110         ndr->depth--;
7111         ndr_print_netr_DsR_DcFlags(ndr, "dc_flags", r->dc_flags);
7112         ndr_print_ptr(ndr, "dc_site_name", r->dc_site_name);
7113         ndr->depth++;
7114         if (r->dc_site_name) {
7115                 ndr_print_string(ndr, "dc_site_name", r->dc_site_name);
7116         }
7117         ndr->depth--;
7118         ndr_print_ptr(ndr, "client_site_name", r->client_site_name);
7119         ndr->depth++;
7120         if (r->client_site_name) {
7121                 ndr_print_string(ndr, "client_site_name", r->client_site_name);
7122         }
7123         ndr->depth--;
7124         ndr->depth--;
7125 }
7126
7127 static enum ndr_err_code ndr_push_netr_Capabilities(struct ndr_push *ndr, int ndr_flags, const union netr_Capabilities *r)
7128 {
7129         if (ndr_flags & NDR_SCALARS) {
7130                 int level = ndr_push_get_switch_value(ndr, r);
7131                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
7132                 switch (level) {
7133                         case 1: {
7134                                 NDR_CHECK(ndr_push_netr_NegotiateFlags(ndr, NDR_SCALARS, r->server_capabilities));
7135                         break; }
7136
7137                         default:
7138                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
7139                 }
7140         }
7141         if (ndr_flags & NDR_BUFFERS) {
7142                 int level = ndr_push_get_switch_value(ndr, r);
7143                 switch (level) {
7144                         case 1:
7145                         break;
7146
7147                         default:
7148                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
7149                 }
7150         }
7151         return NDR_ERR_SUCCESS;
7152 }
7153
7154 static enum ndr_err_code ndr_pull_netr_Capabilities(struct ndr_pull *ndr, int ndr_flags, union netr_Capabilities *r)
7155 {
7156         int level;
7157         uint32_t _level;
7158         level = ndr_pull_get_switch_value(ndr, r);
7159         if (ndr_flags & NDR_SCALARS) {
7160                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
7161                 if (_level != level) {
7162                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
7163                 }
7164                 switch (level) {
7165                         case 1: {
7166                                 NDR_CHECK(ndr_pull_netr_NegotiateFlags(ndr, NDR_SCALARS, &r->server_capabilities));
7167                         break; }
7168
7169                         default:
7170                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
7171                 }
7172         }
7173         if (ndr_flags & NDR_BUFFERS) {
7174                 switch (level) {
7175                         case 1:
7176                         break;
7177
7178                         default:
7179                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
7180                 }
7181         }
7182         return NDR_ERR_SUCCESS;
7183 }
7184
7185 _PUBLIC_ void ndr_print_netr_Capabilities(struct ndr_print *ndr, const char *name, const union netr_Capabilities *r)
7186 {
7187         int level;
7188         level = ndr_print_get_switch_value(ndr, r);
7189         ndr_print_union(ndr, name, level, "netr_Capabilities");
7190         switch (level) {
7191                 case 1:
7192                         ndr_print_netr_NegotiateFlags(ndr, "server_capabilities", r->server_capabilities);
7193                 break;
7194
7195                 default:
7196                         ndr_print_bad_level(ndr, name, level);
7197         }
7198 }
7199
7200 static enum ndr_err_code ndr_push_netr_TrustFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
7201 {
7202         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
7203         return NDR_ERR_SUCCESS;
7204 }
7205
7206 static enum ndr_err_code ndr_pull_netr_TrustFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
7207 {
7208         uint32_t v;
7209         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
7210         *r = v;
7211         return NDR_ERR_SUCCESS;
7212 }
7213
7214 _PUBLIC_ void ndr_print_netr_TrustFlags(struct ndr_print *ndr, const char *name, uint32_t r)
7215 {
7216         ndr_print_uint32(ndr, name, r);
7217         ndr->depth++;
7218         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_IN_FOREST", NETR_TRUST_FLAG_IN_FOREST, r);
7219         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_OUTBOUND", NETR_TRUST_FLAG_OUTBOUND, r);
7220         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_TREEROOT", NETR_TRUST_FLAG_TREEROOT, r);
7221         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_PRIMARY", NETR_TRUST_FLAG_PRIMARY, r);
7222         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_NATIVE", NETR_TRUST_FLAG_NATIVE, r);
7223         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_INBOUND", NETR_TRUST_FLAG_INBOUND, r);
7224         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_MIT_KRB5", NETR_TRUST_FLAG_MIT_KRB5, r);
7225         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_FLAG_AES", NETR_TRUST_FLAG_AES, r);
7226         ndr->depth--;
7227 }
7228
7229 static enum ndr_err_code ndr_push_netr_WorkstationFlags(struct ndr_push *ndr, int ndr_flags, uint32_t r)
7230 {
7231         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
7232         return NDR_ERR_SUCCESS;
7233 }
7234
7235 static enum ndr_err_code ndr_pull_netr_WorkstationFlags(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
7236 {
7237         uint32_t v;
7238         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
7239         *r = v;
7240         return NDR_ERR_SUCCESS;
7241 }
7242
7243 _PUBLIC_ void ndr_print_netr_WorkstationFlags(struct ndr_print *ndr, const char *name, uint32_t r)
7244 {
7245         ndr_print_uint32(ndr, name, r);
7246         ndr->depth++;
7247         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_WS_FLAG_HANDLES_INBOUND_TRUSTS", NETR_WS_FLAG_HANDLES_INBOUND_TRUSTS, r);
7248         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_WS_FLAG_HANDLES_SPN_UPDATE", NETR_WS_FLAG_HANDLES_SPN_UPDATE, r);
7249         ndr->depth--;
7250 }
7251
7252 static enum ndr_err_code ndr_push_netr_SuiteMask(struct ndr_push *ndr, int ndr_flags, uint16_t r)
7253 {
7254         NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r));
7255         return NDR_ERR_SUCCESS;
7256 }
7257
7258 static enum ndr_err_code ndr_pull_netr_SuiteMask(struct ndr_pull *ndr, int ndr_flags, uint16_t *r)
7259 {
7260         uint16_t v;
7261         NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &v));
7262         *r = v;
7263         return NDR_ERR_SUCCESS;
7264 }
7265
7266 _PUBLIC_ void ndr_print_netr_SuiteMask(struct ndr_print *ndr, const char *name, uint16_t r)
7267 {
7268         ndr_print_uint16(ndr, name, r);
7269         ndr->depth++;
7270         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_BACKOFFICE", NETR_VER_SUITE_BACKOFFICE, r);
7271         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_BLADE", NETR_VER_SUITE_BLADE, r);
7272         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_COMPUTE_SERVER", NETR_VER_SUITE_COMPUTE_SERVER, r);
7273         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_DATACENTER", NETR_VER_SUITE_DATACENTER, r);
7274         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_ENTERPRISE", NETR_VER_SUITE_ENTERPRISE, r);
7275         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_EMBEDDEDNT", NETR_VER_SUITE_EMBEDDEDNT, r);
7276         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_PERSONAL", NETR_VER_SUITE_PERSONAL, r);
7277         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_SINGLEUSERTS", NETR_VER_SUITE_SINGLEUSERTS, r);
7278         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_SMALLBUSINESS", NETR_VER_SUITE_SMALLBUSINESS, r);
7279         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_SMALLBUSINESS_RESTRICTED", NETR_VER_SUITE_SMALLBUSINESS_RESTRICTED, r);
7280         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_STORAGE_SERVER", NETR_VER_SUITE_STORAGE_SERVER, r);
7281         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_TERMINAL", NETR_VER_SUITE_TERMINAL, r);
7282         ndr_print_bitmap_flag(ndr, sizeof(uint16_t), "NETR_VER_SUITE_WH_SERVER", NETR_VER_SUITE_WH_SERVER, r);
7283         ndr->depth--;
7284 }
7285
7286 static enum ndr_err_code ndr_push_netr_ProductType(struct ndr_push *ndr, int ndr_flags, uint8_t r)
7287 {
7288         NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r));
7289         return NDR_ERR_SUCCESS;
7290 }
7291
7292 static enum ndr_err_code ndr_pull_netr_ProductType(struct ndr_pull *ndr, int ndr_flags, uint8_t *r)
7293 {
7294         uint8_t v;
7295         NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &v));
7296         *r = v;
7297         return NDR_ERR_SUCCESS;
7298 }
7299
7300 _PUBLIC_ void ndr_print_netr_ProductType(struct ndr_print *ndr, const char *name, uint8_t r)
7301 {
7302         ndr_print_uint8(ndr, name, r);
7303         ndr->depth++;
7304         ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "NETR_VER_NT_DOMAIN_CONTROLLER", NETR_VER_NT_DOMAIN_CONTROLLER, r);
7305         ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "NETR_VER_NT_SERVER", NETR_VER_NT_SERVER, r);
7306         ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "NETR_VER_NT_WORKSTATION", NETR_VER_NT_WORKSTATION, r);
7307         ndr->depth--;
7308 }
7309
7310 static enum ndr_err_code ndr_push_netr_LsaPolicyInformation(struct ndr_push *ndr, int ndr_flags, const struct netr_LsaPolicyInformation *r)
7311 {
7312         if (ndr_flags & NDR_SCALARS) {
7313                 NDR_CHECK(ndr_push_align(ndr, 4));
7314                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->policy_size));
7315                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->policy));
7316         }
7317         if (ndr_flags & NDR_BUFFERS) {
7318                 if (r->policy) {
7319                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->policy_size));
7320                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->policy, r->policy_size));
7321                 }
7322         }
7323         return NDR_ERR_SUCCESS;
7324 }
7325
7326 static enum ndr_err_code ndr_pull_netr_LsaPolicyInformation(struct ndr_pull *ndr, int ndr_flags, struct netr_LsaPolicyInformation *r)
7327 {
7328         uint32_t _ptr_policy;
7329         TALLOC_CTX *_mem_save_policy_0;
7330         if (ndr_flags & NDR_SCALARS) {
7331                 NDR_CHECK(ndr_pull_align(ndr, 4));
7332                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->policy_size));
7333                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_policy));
7334                 if (_ptr_policy) {
7335                         NDR_PULL_ALLOC(ndr, r->policy);
7336                 } else {
7337                         r->policy = NULL;
7338                 }
7339         }
7340         if (ndr_flags & NDR_BUFFERS) {
7341                 if (r->policy) {
7342                         _mem_save_policy_0 = NDR_PULL_GET_MEM_CTX(ndr);
7343                         NDR_PULL_SET_MEM_CTX(ndr, r->policy, 0);
7344                         NDR_CHECK(ndr_pull_array_size(ndr, &r->policy));
7345                         NDR_PULL_ALLOC_N(ndr, r->policy, ndr_get_array_size(ndr, &r->policy));
7346                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->policy, ndr_get_array_size(ndr, &r->policy)));
7347                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_policy_0, 0);
7348                 }
7349                 if (r->policy) {
7350                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->policy, r->policy_size));
7351                 }
7352         }
7353         return NDR_ERR_SUCCESS;
7354 }
7355
7356 _PUBLIC_ void ndr_print_netr_LsaPolicyInformation(struct ndr_print *ndr, const char *name, const struct netr_LsaPolicyInformation *r)
7357 {
7358         ndr_print_struct(ndr, name, "netr_LsaPolicyInformation");
7359         ndr->depth++;
7360         ndr_print_uint32(ndr, "policy_size", r->policy_size);
7361         ndr_print_ptr(ndr, "policy", r->policy);
7362         ndr->depth++;
7363         if (r->policy) {
7364                 ndr_print_array_uint8(ndr, "policy", r->policy, r->policy_size);
7365         }
7366         ndr->depth--;
7367         ndr->depth--;
7368 }
7369
7370 static enum ndr_err_code ndr_push_netr_OsVersionInfoEx(struct ndr_push *ndr, int ndr_flags, const struct netr_OsVersionInfoEx *r)
7371 {
7372         if (ndr_flags & NDR_SCALARS) {
7373                 NDR_CHECK(ndr_push_align(ndr, 4));
7374                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 284));
7375                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->MajorVersion));
7376                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->MinorVersion));
7377                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->BuildNumber));
7378                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->PlatformId));
7379                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->CSDVersion, 128, sizeof(uint16_t), CH_UTF16));
7380                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->ServicePackMajor));
7381                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->ServicePackMinor));
7382                 NDR_CHECK(ndr_push_netr_SuiteMask(ndr, NDR_SCALARS, r->SuiteMask));
7383                 NDR_CHECK(ndr_push_netr_ProductType(ndr, NDR_SCALARS, r->ProductType));
7384                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->Reserved));
7385         }
7386         if (ndr_flags & NDR_BUFFERS) {
7387         }
7388         return NDR_ERR_SUCCESS;
7389 }
7390
7391 static enum ndr_err_code ndr_pull_netr_OsVersionInfoEx(struct ndr_pull *ndr, int ndr_flags, struct netr_OsVersionInfoEx *r)
7392 {
7393         if (ndr_flags & NDR_SCALARS) {
7394                 NDR_CHECK(ndr_pull_align(ndr, 4));
7395                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->OSVersionInfoSize));
7396                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->MajorVersion));
7397                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->MinorVersion));
7398                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->BuildNumber));
7399                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->PlatformId));
7400                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->CSDVersion, 128, sizeof(uint16_t), CH_UTF16));
7401                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->ServicePackMajor));
7402                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->ServicePackMinor));
7403                 NDR_CHECK(ndr_pull_netr_SuiteMask(ndr, NDR_SCALARS, &r->SuiteMask));
7404                 NDR_CHECK(ndr_pull_netr_ProductType(ndr, NDR_SCALARS, &r->ProductType));
7405                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->Reserved));
7406         }
7407         if (ndr_flags & NDR_BUFFERS) {
7408         }
7409         return NDR_ERR_SUCCESS;
7410 }
7411
7412 _PUBLIC_ void ndr_print_netr_OsVersionInfoEx(struct ndr_print *ndr, const char *name, const struct netr_OsVersionInfoEx *r)
7413 {
7414         ndr_print_struct(ndr, name, "netr_OsVersionInfoEx");
7415         ndr->depth++;
7416         ndr_print_uint32(ndr, "OSVersionInfoSize", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?284:r->OSVersionInfoSize);
7417         ndr_print_uint32(ndr, "MajorVersion", r->MajorVersion);
7418         ndr_print_uint32(ndr, "MinorVersion", r->MinorVersion);
7419         ndr_print_uint32(ndr, "BuildNumber", r->BuildNumber);
7420         ndr_print_uint32(ndr, "PlatformId", r->PlatformId);
7421         ndr_print_string(ndr, "CSDVersion", r->CSDVersion);
7422         ndr_print_uint16(ndr, "ServicePackMajor", r->ServicePackMajor);
7423         ndr_print_uint16(ndr, "ServicePackMinor", r->ServicePackMinor);
7424         ndr_print_netr_SuiteMask(ndr, "SuiteMask", r->SuiteMask);
7425         ndr_print_netr_ProductType(ndr, "ProductType", r->ProductType);
7426         ndr_print_uint8(ndr, "Reserved", r->Reserved);
7427         ndr->depth--;
7428 }
7429
7430 static enum ndr_err_code ndr_push_netr_OsVersion(struct ndr_push *ndr, int ndr_flags, const struct netr_OsVersion *r)
7431 {
7432         if (ndr_flags & NDR_SCALARS) {
7433                 NDR_CHECK(ndr_push_align(ndr, 4));
7434                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 142));
7435                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7436                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 142));
7437                 NDR_CHECK(ndr_push_netr_OsVersionInfoEx(ndr, NDR_SCALARS, &r->os));
7438         }
7439         if (ndr_flags & NDR_BUFFERS) {
7440         }
7441         return NDR_ERR_SUCCESS;
7442 }
7443
7444 static enum ndr_err_code ndr_pull_netr_OsVersion(struct ndr_pull *ndr, int ndr_flags, struct netr_OsVersion *r)
7445 {
7446         if (ndr_flags & NDR_SCALARS) {
7447                 NDR_CHECK(ndr_pull_align(ndr, 4));
7448                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
7449                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy));
7450                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
7451                 NDR_CHECK(ndr_pull_netr_OsVersionInfoEx(ndr, NDR_SCALARS, &r->os));
7452         }
7453         if (ndr_flags & NDR_BUFFERS) {
7454         }
7455         return NDR_ERR_SUCCESS;
7456 }
7457
7458 _PUBLIC_ void ndr_print_netr_OsVersion(struct ndr_print *ndr, const char *name, const struct netr_OsVersion *r)
7459 {
7460         ndr_print_struct(ndr, name, "netr_OsVersion");
7461         ndr->depth++;
7462         ndr_print_uint32(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?142:r->length);
7463         ndr_print_uint32(ndr, "dummy", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->dummy);
7464         ndr_print_uint32(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?142:r->size);
7465         ndr_print_netr_OsVersionInfoEx(ndr, "os", &r->os);
7466         ndr->depth--;
7467 }
7468
7469 static enum ndr_err_code ndr_push_netr_OsVersionContainer(struct ndr_push *ndr, int ndr_flags, const struct netr_OsVersionContainer *r)
7470 {
7471         if (ndr_flags & NDR_SCALARS) {
7472                 NDR_CHECK(ndr_push_align(ndr, 4));
7473                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->os == NULL?0:284));
7474                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->os == NULL?0:284));
7475                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->os));
7476         }
7477         if (ndr_flags & NDR_BUFFERS) {
7478                 if (r->os) {
7479                         NDR_CHECK(ndr_push_netr_OsVersion(ndr, NDR_SCALARS, r->os));
7480                 }
7481         }
7482         return NDR_ERR_SUCCESS;
7483 }
7484
7485 static enum ndr_err_code ndr_pull_netr_OsVersionContainer(struct ndr_pull *ndr, int ndr_flags, struct netr_OsVersionContainer *r)
7486 {
7487         uint32_t _ptr_os;
7488         TALLOC_CTX *_mem_save_os_0;
7489         if (ndr_flags & NDR_SCALARS) {
7490                 NDR_CHECK(ndr_pull_align(ndr, 4));
7491                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
7492                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
7493                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_os));
7494                 if (_ptr_os) {
7495                         NDR_PULL_ALLOC(ndr, r->os);
7496                 } else {
7497                         r->os = NULL;
7498                 }
7499         }
7500         if (ndr_flags & NDR_BUFFERS) {
7501                 if (r->os) {
7502                         _mem_save_os_0 = NDR_PULL_GET_MEM_CTX(ndr);
7503                         NDR_PULL_SET_MEM_CTX(ndr, r->os, 0);
7504                         NDR_CHECK(ndr_pull_netr_OsVersion(ndr, NDR_SCALARS, r->os));
7505                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_os_0, 0);
7506                 }
7507         }
7508         return NDR_ERR_SUCCESS;
7509 }
7510
7511 _PUBLIC_ void ndr_print_netr_OsVersionContainer(struct ndr_print *ndr, const char *name, const struct netr_OsVersionContainer *r)
7512 {
7513         ndr_print_struct(ndr, name, "netr_OsVersionContainer");
7514         ndr->depth++;
7515         ndr_print_uint16(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->os == NULL?0:284:r->length);
7516         ndr_print_uint16(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->os == NULL?0:284:r->size);
7517         ndr_print_ptr(ndr, "os", r->os);
7518         ndr->depth++;
7519         if (r->os) {
7520                 ndr_print_netr_OsVersion(ndr, "os", r->os);
7521         }
7522         ndr->depth--;
7523         ndr->depth--;
7524 }
7525
7526 static enum ndr_err_code ndr_push_netr_WorkstationInformation(struct ndr_push *ndr, int ndr_flags, const struct netr_WorkstationInformation *r)
7527 {
7528         if (ndr_flags & NDR_SCALARS) {
7529                 NDR_CHECK(ndr_push_align(ndr, 4));
7530                 NDR_CHECK(ndr_push_netr_LsaPolicyInformation(ndr, NDR_SCALARS, &r->lsa_policy));
7531                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dns_hostname));
7532                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sitename));
7533                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dummy1));
7534                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dummy2));
7535                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dummy3));
7536                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dummy4));
7537                 NDR_CHECK(ndr_push_netr_OsVersionContainer(ndr, NDR_SCALARS, &r->os_version));
7538                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->os_name));
7539                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string3));
7540                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string4));
7541                 NDR_CHECK(ndr_push_netr_WorkstationFlags(ndr, NDR_SCALARS, r->workstation_flags));
7542                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long2));
7543                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long3));
7544                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long4));
7545         }
7546         if (ndr_flags & NDR_BUFFERS) {
7547                 NDR_CHECK(ndr_push_netr_LsaPolicyInformation(ndr, NDR_BUFFERS, &r->lsa_policy));
7548                 if (r->dns_hostname) {
7549                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_hostname, CH_UTF16)));
7550                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7551                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_hostname, CH_UTF16)));
7552                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dns_hostname, ndr_charset_length(r->dns_hostname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
7553                 }
7554                 if (r->sitename) {
7555                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->sitename, CH_UTF16)));
7556                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7557                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->sitename, CH_UTF16)));
7558                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->sitename, ndr_charset_length(r->sitename, CH_UTF16), sizeof(uint16_t), CH_UTF16));
7559                 }
7560                 if (r->dummy1) {
7561                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy1, CH_UTF16)));
7562                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7563                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy1, CH_UTF16)));
7564                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dummy1, ndr_charset_length(r->dummy1, CH_UTF16), sizeof(uint16_t), CH_UTF16));
7565                 }
7566                 if (r->dummy2) {
7567                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy2, CH_UTF16)));
7568                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7569                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy2, CH_UTF16)));
7570                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dummy2, ndr_charset_length(r->dummy2, CH_UTF16), sizeof(uint16_t), CH_UTF16));
7571                 }
7572                 if (r->dummy3) {
7573                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy3, CH_UTF16)));
7574                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7575                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy3, CH_UTF16)));
7576                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dummy3, ndr_charset_length(r->dummy3, CH_UTF16), sizeof(uint16_t), CH_UTF16));
7577                 }
7578                 if (r->dummy4) {
7579                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy4, CH_UTF16)));
7580                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7581                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dummy4, CH_UTF16)));
7582                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dummy4, ndr_charset_length(r->dummy4, CH_UTF16), sizeof(uint16_t), CH_UTF16));
7583                 }
7584                 NDR_CHECK(ndr_push_netr_OsVersionContainer(ndr, NDR_BUFFERS, &r->os_version));
7585                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->os_name));
7586                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string3));
7587                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string4));
7588         }
7589         return NDR_ERR_SUCCESS;
7590 }
7591
7592 static enum ndr_err_code ndr_pull_netr_WorkstationInformation(struct ndr_pull *ndr, int ndr_flags, struct netr_WorkstationInformation *r)
7593 {
7594         uint32_t _ptr_dns_hostname;
7595         TALLOC_CTX *_mem_save_dns_hostname_0;
7596         uint32_t _ptr_sitename;
7597         TALLOC_CTX *_mem_save_sitename_0;
7598         uint32_t _ptr_dummy1;
7599         TALLOC_CTX *_mem_save_dummy1_0;
7600         uint32_t _ptr_dummy2;
7601         TALLOC_CTX *_mem_save_dummy2_0;
7602         uint32_t _ptr_dummy3;
7603         TALLOC_CTX *_mem_save_dummy3_0;
7604         uint32_t _ptr_dummy4;
7605         TALLOC_CTX *_mem_save_dummy4_0;
7606         if (ndr_flags & NDR_SCALARS) {
7607                 NDR_CHECK(ndr_pull_align(ndr, 4));
7608                 NDR_CHECK(ndr_pull_netr_LsaPolicyInformation(ndr, NDR_SCALARS, &r->lsa_policy));
7609                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dns_hostname));
7610                 if (_ptr_dns_hostname) {
7611                         NDR_PULL_ALLOC(ndr, r->dns_hostname);
7612                 } else {
7613                         r->dns_hostname = NULL;
7614                 }
7615                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sitename));
7616                 if (_ptr_sitename) {
7617                         NDR_PULL_ALLOC(ndr, r->sitename);
7618                 } else {
7619                         r->sitename = NULL;
7620                 }
7621                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dummy1));
7622                 if (_ptr_dummy1) {
7623                         NDR_PULL_ALLOC(ndr, r->dummy1);
7624                 } else {
7625                         r->dummy1 = NULL;
7626                 }
7627                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dummy2));
7628                 if (_ptr_dummy2) {
7629                         NDR_PULL_ALLOC(ndr, r->dummy2);
7630                 } else {
7631                         r->dummy2 = NULL;
7632                 }
7633                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dummy3));
7634                 if (_ptr_dummy3) {
7635                         NDR_PULL_ALLOC(ndr, r->dummy3);
7636                 } else {
7637                         r->dummy3 = NULL;
7638                 }
7639                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dummy4));
7640                 if (_ptr_dummy4) {
7641                         NDR_PULL_ALLOC(ndr, r->dummy4);
7642                 } else {
7643                         r->dummy4 = NULL;
7644                 }
7645                 NDR_CHECK(ndr_pull_netr_OsVersionContainer(ndr, NDR_SCALARS, &r->os_version));
7646                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->os_name));
7647                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string3));
7648                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string4));
7649                 NDR_CHECK(ndr_pull_netr_WorkstationFlags(ndr, NDR_SCALARS, &r->workstation_flags));
7650                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long2));
7651                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long3));
7652                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long4));
7653         }
7654         if (ndr_flags & NDR_BUFFERS) {
7655                 NDR_CHECK(ndr_pull_netr_LsaPolicyInformation(ndr, NDR_BUFFERS, &r->lsa_policy));
7656                 if (r->dns_hostname) {
7657                         _mem_save_dns_hostname_0 = NDR_PULL_GET_MEM_CTX(ndr);
7658                         NDR_PULL_SET_MEM_CTX(ndr, r->dns_hostname, 0);
7659                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dns_hostname));
7660                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dns_hostname));
7661                         if (ndr_get_array_length(ndr, &r->dns_hostname) > ndr_get_array_size(ndr, &r->dns_hostname)) {
7662                                 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));
7663                         }
7664                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dns_hostname), sizeof(uint16_t)));
7665                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dns_hostname, ndr_get_array_length(ndr, &r->dns_hostname), sizeof(uint16_t), CH_UTF16));
7666                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dns_hostname_0, 0);
7667                 }
7668                 if (r->sitename) {
7669                         _mem_save_sitename_0 = NDR_PULL_GET_MEM_CTX(ndr);
7670                         NDR_PULL_SET_MEM_CTX(ndr, r->sitename, 0);
7671                         NDR_CHECK(ndr_pull_array_size(ndr, &r->sitename));
7672                         NDR_CHECK(ndr_pull_array_length(ndr, &r->sitename));
7673                         if (ndr_get_array_length(ndr, &r->sitename) > ndr_get_array_size(ndr, &r->sitename)) {
7674                                 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));
7675                         }
7676                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->sitename), sizeof(uint16_t)));
7677                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->sitename, ndr_get_array_length(ndr, &r->sitename), sizeof(uint16_t), CH_UTF16));
7678                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sitename_0, 0);
7679                 }
7680                 if (r->dummy1) {
7681                         _mem_save_dummy1_0 = NDR_PULL_GET_MEM_CTX(ndr);
7682                         NDR_PULL_SET_MEM_CTX(ndr, r->dummy1, 0);
7683                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dummy1));
7684                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dummy1));
7685                         if (ndr_get_array_length(ndr, &r->dummy1) > ndr_get_array_size(ndr, &r->dummy1)) {
7686                                 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));
7687                         }
7688                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dummy1), sizeof(uint16_t)));
7689                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dummy1, ndr_get_array_length(ndr, &r->dummy1), sizeof(uint16_t), CH_UTF16));
7690                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dummy1_0, 0);
7691                 }
7692                 if (r->dummy2) {
7693                         _mem_save_dummy2_0 = NDR_PULL_GET_MEM_CTX(ndr);
7694                         NDR_PULL_SET_MEM_CTX(ndr, r->dummy2, 0);
7695                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dummy2));
7696                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dummy2));
7697                         if (ndr_get_array_length(ndr, &r->dummy2) > ndr_get_array_size(ndr, &r->dummy2)) {
7698                                 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));
7699                         }
7700                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dummy2), sizeof(uint16_t)));
7701                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dummy2, ndr_get_array_length(ndr, &r->dummy2), sizeof(uint16_t), CH_UTF16));
7702                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dummy2_0, 0);
7703                 }
7704                 if (r->dummy3) {
7705                         _mem_save_dummy3_0 = NDR_PULL_GET_MEM_CTX(ndr);
7706                         NDR_PULL_SET_MEM_CTX(ndr, r->dummy3, 0);
7707                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dummy3));
7708                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dummy3));
7709                         if (ndr_get_array_length(ndr, &r->dummy3) > ndr_get_array_size(ndr, &r->dummy3)) {
7710                                 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));
7711                         }
7712                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dummy3), sizeof(uint16_t)));
7713                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dummy3, ndr_get_array_length(ndr, &r->dummy3), sizeof(uint16_t), CH_UTF16));
7714                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dummy3_0, 0);
7715                 }
7716                 if (r->dummy4) {
7717                         _mem_save_dummy4_0 = NDR_PULL_GET_MEM_CTX(ndr);
7718                         NDR_PULL_SET_MEM_CTX(ndr, r->dummy4, 0);
7719                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dummy4));
7720                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dummy4));
7721                         if (ndr_get_array_length(ndr, &r->dummy4) > ndr_get_array_size(ndr, &r->dummy4)) {
7722                                 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));
7723                         }
7724                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dummy4), sizeof(uint16_t)));
7725                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dummy4, ndr_get_array_length(ndr, &r->dummy4), sizeof(uint16_t), CH_UTF16));
7726                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dummy4_0, 0);
7727                 }
7728                 NDR_CHECK(ndr_pull_netr_OsVersionContainer(ndr, NDR_BUFFERS, &r->os_version));
7729                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->os_name));
7730                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string3));
7731                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string4));
7732         }
7733         return NDR_ERR_SUCCESS;
7734 }
7735
7736 _PUBLIC_ void ndr_print_netr_WorkstationInformation(struct ndr_print *ndr, const char *name, const struct netr_WorkstationInformation *r)
7737 {
7738         ndr_print_struct(ndr, name, "netr_WorkstationInformation");
7739         ndr->depth++;
7740         ndr_print_netr_LsaPolicyInformation(ndr, "lsa_policy", &r->lsa_policy);
7741         ndr_print_ptr(ndr, "dns_hostname", r->dns_hostname);
7742         ndr->depth++;
7743         if (r->dns_hostname) {
7744                 ndr_print_string(ndr, "dns_hostname", r->dns_hostname);
7745         }
7746         ndr->depth--;
7747         ndr_print_ptr(ndr, "sitename", r->sitename);
7748         ndr->depth++;
7749         if (r->sitename) {
7750                 ndr_print_string(ndr, "sitename", r->sitename);
7751         }
7752         ndr->depth--;
7753         ndr_print_ptr(ndr, "dummy1", r->dummy1);
7754         ndr->depth++;
7755         if (r->dummy1) {
7756                 ndr_print_string(ndr, "dummy1", r->dummy1);
7757         }
7758         ndr->depth--;
7759         ndr_print_ptr(ndr, "dummy2", r->dummy2);
7760         ndr->depth++;
7761         if (r->dummy2) {
7762                 ndr_print_string(ndr, "dummy2", r->dummy2);
7763         }
7764         ndr->depth--;
7765         ndr_print_ptr(ndr, "dummy3", r->dummy3);
7766         ndr->depth++;
7767         if (r->dummy3) {
7768                 ndr_print_string(ndr, "dummy3", r->dummy3);
7769         }
7770         ndr->depth--;
7771         ndr_print_ptr(ndr, "dummy4", r->dummy4);
7772         ndr->depth++;
7773         if (r->dummy4) {
7774                 ndr_print_string(ndr, "dummy4", r->dummy4);
7775         }
7776         ndr->depth--;
7777         ndr_print_netr_OsVersionContainer(ndr, "os_version", &r->os_version);
7778         ndr_print_lsa_String(ndr, "os_name", &r->os_name);
7779         ndr_print_lsa_String(ndr, "dummy_string3", &r->dummy_string3);
7780         ndr_print_lsa_String(ndr, "dummy_string4", &r->dummy_string4);
7781         ndr_print_netr_WorkstationFlags(ndr, "workstation_flags", r->workstation_flags);
7782         ndr_print_uint32(ndr, "dummy_long2", r->dummy_long2);
7783         ndr_print_uint32(ndr, "dummy_long3", r->dummy_long3);
7784         ndr_print_uint32(ndr, "dummy_long4", r->dummy_long4);
7785         ndr->depth--;
7786 }
7787
7788 static enum ndr_err_code ndr_push_netr_WorkstationInfo(struct ndr_push *ndr, int ndr_flags, const union netr_WorkstationInfo *r)
7789 {
7790         if (ndr_flags & NDR_SCALARS) {
7791                 int level = ndr_push_get_switch_value(ndr, r);
7792                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
7793                 switch (level) {
7794                         case 1: {
7795                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->workstation_info));
7796                         break; }
7797
7798                         case 2: {
7799                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->lsa_policy_info));
7800                         break; }
7801
7802                         default:
7803                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
7804                 }
7805         }
7806         if (ndr_flags & NDR_BUFFERS) {
7807                 int level = ndr_push_get_switch_value(ndr, r);
7808                 switch (level) {
7809                         case 1:
7810                                 if (r->workstation_info) {
7811                                         NDR_CHECK(ndr_push_netr_WorkstationInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->workstation_info));
7812                                 }
7813                         break;
7814
7815                         case 2:
7816                                 if (r->lsa_policy_info) {
7817                                         NDR_CHECK(ndr_push_netr_WorkstationInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->lsa_policy_info));
7818                                 }
7819                         break;
7820
7821                         default:
7822                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
7823                 }
7824         }
7825         return NDR_ERR_SUCCESS;
7826 }
7827
7828 static enum ndr_err_code ndr_pull_netr_WorkstationInfo(struct ndr_pull *ndr, int ndr_flags, union netr_WorkstationInfo *r)
7829 {
7830         int level;
7831         uint32_t _level;
7832         TALLOC_CTX *_mem_save_workstation_info_0;
7833         TALLOC_CTX *_mem_save_lsa_policy_info_0;
7834         level = ndr_pull_get_switch_value(ndr, r);
7835         if (ndr_flags & NDR_SCALARS) {
7836                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
7837                 if (_level != level) {
7838                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
7839                 }
7840                 switch (level) {
7841                         case 1: {
7842                                 uint32_t _ptr_workstation_info;
7843                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_workstation_info));
7844                                 if (_ptr_workstation_info) {
7845                                         NDR_PULL_ALLOC(ndr, r->workstation_info);
7846                                 } else {
7847                                         r->workstation_info = NULL;
7848                                 }
7849                         break; }
7850
7851                         case 2: {
7852                                 uint32_t _ptr_lsa_policy_info;
7853                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_lsa_policy_info));
7854                                 if (_ptr_lsa_policy_info) {
7855                                         NDR_PULL_ALLOC(ndr, r->lsa_policy_info);
7856                                 } else {
7857                                         r->lsa_policy_info = NULL;
7858                                 }
7859                         break; }
7860
7861                         default:
7862                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
7863                 }
7864         }
7865         if (ndr_flags & NDR_BUFFERS) {
7866                 switch (level) {
7867                         case 1:
7868                                 if (r->workstation_info) {
7869                                         _mem_save_workstation_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
7870                                         NDR_PULL_SET_MEM_CTX(ndr, r->workstation_info, 0);
7871                                         NDR_CHECK(ndr_pull_netr_WorkstationInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->workstation_info));
7872                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_workstation_info_0, 0);
7873                                 }
7874                         break;
7875
7876                         case 2:
7877                                 if (r->lsa_policy_info) {
7878                                         _mem_save_lsa_policy_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
7879                                         NDR_PULL_SET_MEM_CTX(ndr, r->lsa_policy_info, 0);
7880                                         NDR_CHECK(ndr_pull_netr_WorkstationInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->lsa_policy_info));
7881                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lsa_policy_info_0, 0);
7882                                 }
7883                         break;
7884
7885                         default:
7886                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
7887                 }
7888         }
7889         return NDR_ERR_SUCCESS;
7890 }
7891
7892 _PUBLIC_ void ndr_print_netr_WorkstationInfo(struct ndr_print *ndr, const char *name, const union netr_WorkstationInfo *r)
7893 {
7894         int level;
7895         level = ndr_print_get_switch_value(ndr, r);
7896         ndr_print_union(ndr, name, level, "netr_WorkstationInfo");
7897         switch (level) {
7898                 case 1:
7899                         ndr_print_ptr(ndr, "workstation_info", r->workstation_info);
7900                         ndr->depth++;
7901                         if (r->workstation_info) {
7902                                 ndr_print_netr_WorkstationInformation(ndr, "workstation_info", r->workstation_info);
7903                         }
7904                         ndr->depth--;
7905                 break;
7906
7907                 case 2:
7908                         ndr_print_ptr(ndr, "lsa_policy_info", r->lsa_policy_info);
7909                         ndr->depth++;
7910                         if (r->lsa_policy_info) {
7911                                 ndr_print_netr_WorkstationInformation(ndr, "lsa_policy_info", r->lsa_policy_info);
7912                         }
7913                         ndr->depth--;
7914                 break;
7915
7916                 default:
7917                         ndr_print_bad_level(ndr, name, level);
7918         }
7919 }
7920
7921 static enum ndr_err_code ndr_push_netr_trust_extension(struct ndr_push *ndr, int ndr_flags, const struct netr_trust_extension *r)
7922 {
7923         if (ndr_flags & NDR_SCALARS) {
7924                 NDR_CHECK(ndr_push_align(ndr, 4));
7925                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 8));
7926                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
7927                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 8));
7928                 NDR_CHECK(ndr_push_netr_TrustFlags(ndr, NDR_SCALARS, r->flags));
7929                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->parent_index));
7930                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->trust_type));
7931                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->trust_attributes));
7932         }
7933         if (ndr_flags & NDR_BUFFERS) {
7934         }
7935         return NDR_ERR_SUCCESS;
7936 }
7937
7938 static enum ndr_err_code ndr_pull_netr_trust_extension(struct ndr_pull *ndr, int ndr_flags, struct netr_trust_extension *r)
7939 {
7940         if (ndr_flags & NDR_SCALARS) {
7941                 NDR_CHECK(ndr_pull_align(ndr, 4));
7942                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
7943                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy));
7944                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
7945                 NDR_CHECK(ndr_pull_netr_TrustFlags(ndr, NDR_SCALARS, &r->flags));
7946                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->parent_index));
7947                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->trust_type));
7948                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->trust_attributes));
7949         }
7950         if (ndr_flags & NDR_BUFFERS) {
7951         }
7952         return NDR_ERR_SUCCESS;
7953 }
7954
7955 _PUBLIC_ void ndr_print_netr_trust_extension(struct ndr_print *ndr, const char *name, const struct netr_trust_extension *r)
7956 {
7957         ndr_print_struct(ndr, name, "netr_trust_extension");
7958         ndr->depth++;
7959         ndr_print_uint32(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?8:r->length);
7960         ndr_print_uint32(ndr, "dummy", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->dummy);
7961         ndr_print_uint32(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?8:r->size);
7962         ndr_print_netr_TrustFlags(ndr, "flags", r->flags);
7963         ndr_print_uint32(ndr, "parent_index", r->parent_index);
7964         ndr_print_uint32(ndr, "trust_type", r->trust_type);
7965         ndr_print_uint32(ndr, "trust_attributes", r->trust_attributes);
7966         ndr->depth--;
7967 }
7968
7969 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)
7970 {
7971         if (ndr_flags & NDR_SCALARS) {
7972                 NDR_CHECK(ndr_push_align(ndr, 4));
7973                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
7974                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->length));
7975                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->info));
7976         }
7977         if (ndr_flags & NDR_BUFFERS) {
7978                 if (r->info) {
7979                         NDR_CHECK(ndr_push_netr_trust_extension(ndr, NDR_SCALARS, r->info));
7980                 }
7981         }
7982         return NDR_ERR_SUCCESS;
7983 }
7984
7985 static enum ndr_err_code ndr_pull_netr_trust_extension_container(struct ndr_pull *ndr, int ndr_flags, struct netr_trust_extension_container *r)
7986 {
7987         uint32_t _ptr_info;
7988         TALLOC_CTX *_mem_save_info_0;
7989         if (ndr_flags & NDR_SCALARS) {
7990                 NDR_CHECK(ndr_pull_align(ndr, 4));
7991                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->length));
7992                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->size));
7993                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
7994                 if (_ptr_info) {
7995                         NDR_PULL_ALLOC(ndr, r->info);
7996                 } else {
7997                         r->info = NULL;
7998                 }
7999         }
8000         if (ndr_flags & NDR_BUFFERS) {
8001                 if (r->info) {
8002                         _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
8003                         NDR_PULL_SET_MEM_CTX(ndr, r->info, 0);
8004                         NDR_CHECK(ndr_pull_netr_trust_extension(ndr, NDR_SCALARS, r->info));
8005                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
8006                 }
8007         }
8008         return NDR_ERR_SUCCESS;
8009 }
8010
8011 _PUBLIC_ void ndr_print_netr_trust_extension_container(struct ndr_print *ndr, const char *name, const struct netr_trust_extension_container *r)
8012 {
8013         ndr_print_struct(ndr, name, "netr_trust_extension_container");
8014         ndr->depth++;
8015         ndr_print_uint16(ndr, "length", r->length);
8016         ndr_print_uint16(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?r->length:r->size);
8017         ndr_print_ptr(ndr, "info", r->info);
8018         ndr->depth++;
8019         if (r->info) {
8020                 ndr_print_netr_trust_extension(ndr, "info", r->info);
8021         }
8022         ndr->depth--;
8023         ndr->depth--;
8024 }
8025
8026 static enum ndr_err_code ndr_push_netr_OneDomainInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_OneDomainInfo *r)
8027 {
8028         if (ndr_flags & NDR_SCALARS) {
8029                 NDR_CHECK(ndr_push_align(ndr, 4));
8030                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->domainname));
8031                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dns_domainname));
8032                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dns_forestname));
8033                 NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->domain_guid));
8034                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain_sid));
8035                 NDR_CHECK(ndr_push_netr_trust_extension_container(ndr, NDR_SCALARS, &r->trust_extension));
8036                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string2));
8037                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string3));
8038                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string4));
8039                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long1));
8040                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long2));
8041                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long3));
8042                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long4));
8043         }
8044         if (ndr_flags & NDR_BUFFERS) {
8045                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->domainname));
8046                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dns_domainname));
8047                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dns_forestname));
8048                 if (r->domain_sid) {
8049                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_sid));
8050                 }
8051                 NDR_CHECK(ndr_push_netr_trust_extension_container(ndr, NDR_BUFFERS, &r->trust_extension));
8052                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string2));
8053                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string3));
8054                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string4));
8055         }
8056         return NDR_ERR_SUCCESS;
8057 }
8058
8059 static enum ndr_err_code ndr_pull_netr_OneDomainInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_OneDomainInfo *r)
8060 {
8061         uint32_t _ptr_domain_sid;
8062         TALLOC_CTX *_mem_save_domain_sid_0;
8063         if (ndr_flags & NDR_SCALARS) {
8064                 NDR_CHECK(ndr_pull_align(ndr, 4));
8065                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->domainname));
8066                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dns_domainname));
8067                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dns_forestname));
8068                 NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->domain_guid));
8069                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_sid));
8070                 if (_ptr_domain_sid) {
8071                         NDR_PULL_ALLOC(ndr, r->domain_sid);
8072                 } else {
8073                         r->domain_sid = NULL;
8074                 }
8075                 NDR_CHECK(ndr_pull_netr_trust_extension_container(ndr, NDR_SCALARS, &r->trust_extension));
8076                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string2));
8077                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string3));
8078                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string4));
8079                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long1));
8080                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long2));
8081                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long3));
8082                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long4));
8083         }
8084         if (ndr_flags & NDR_BUFFERS) {
8085                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->domainname));
8086                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dns_domainname));
8087                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dns_forestname));
8088                 if (r->domain_sid) {
8089                         _mem_save_domain_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
8090                         NDR_PULL_SET_MEM_CTX(ndr, r->domain_sid, 0);
8091                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_sid));
8092                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_sid_0, 0);
8093                 }
8094                 NDR_CHECK(ndr_pull_netr_trust_extension_container(ndr, NDR_BUFFERS, &r->trust_extension));
8095                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string2));
8096                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string3));
8097                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string4));
8098         }
8099         return NDR_ERR_SUCCESS;
8100 }
8101
8102 _PUBLIC_ void ndr_print_netr_OneDomainInfo(struct ndr_print *ndr, const char *name, const struct netr_OneDomainInfo *r)
8103 {
8104         ndr_print_struct(ndr, name, "netr_OneDomainInfo");
8105         ndr->depth++;
8106         ndr_print_lsa_String(ndr, "domainname", &r->domainname);
8107         ndr_print_lsa_String(ndr, "dns_domainname", &r->dns_domainname);
8108         ndr_print_lsa_String(ndr, "dns_forestname", &r->dns_forestname);
8109         ndr_print_GUID(ndr, "domain_guid", &r->domain_guid);
8110         ndr_print_ptr(ndr, "domain_sid", r->domain_sid);
8111         ndr->depth++;
8112         if (r->domain_sid) {
8113                 ndr_print_dom_sid2(ndr, "domain_sid", r->domain_sid);
8114         }
8115         ndr->depth--;
8116         ndr_print_netr_trust_extension_container(ndr, "trust_extension", &r->trust_extension);
8117         ndr_print_lsa_String(ndr, "dummy_string2", &r->dummy_string2);
8118         ndr_print_lsa_String(ndr, "dummy_string3", &r->dummy_string3);
8119         ndr_print_lsa_String(ndr, "dummy_string4", &r->dummy_string4);
8120         ndr_print_uint32(ndr, "dummy_long1", r->dummy_long1);
8121         ndr_print_uint32(ndr, "dummy_long2", r->dummy_long2);
8122         ndr_print_uint32(ndr, "dummy_long3", r->dummy_long3);
8123         ndr_print_uint32(ndr, "dummy_long4", r->dummy_long4);
8124         ndr->depth--;
8125 }
8126
8127 static enum ndr_err_code ndr_push_netr_DomainInformation(struct ndr_push *ndr, int ndr_flags, const struct netr_DomainInformation *r)
8128 {
8129         uint32_t cntr_trusted_domains_1;
8130         if (ndr_flags & NDR_SCALARS) {
8131                 NDR_CHECK(ndr_push_align(ndr, 4));
8132                 NDR_CHECK(ndr_push_netr_OneDomainInfo(ndr, NDR_SCALARS, &r->primary_domain));
8133                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->trusted_domain_count));
8134                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->trusted_domains));
8135                 NDR_CHECK(ndr_push_netr_LsaPolicyInformation(ndr, NDR_SCALARS, &r->lsa_policy));
8136                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dns_hostname));
8137                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string2));
8138                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string3));
8139                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->dummy_string4));
8140                 NDR_CHECK(ndr_push_netr_WorkstationFlags(ndr, NDR_SCALARS, r->workstation_flags));
8141                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->supported_enc_types));
8142                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long3));
8143                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->dummy_long4));
8144         }
8145         if (ndr_flags & NDR_BUFFERS) {
8146                 NDR_CHECK(ndr_push_netr_OneDomainInfo(ndr, NDR_BUFFERS, &r->primary_domain));
8147                 if (r->trusted_domains) {
8148                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->trusted_domain_count));
8149                         for (cntr_trusted_domains_1 = 0; cntr_trusted_domains_1 < r->trusted_domain_count; cntr_trusted_domains_1++) {
8150                                 NDR_CHECK(ndr_push_netr_OneDomainInfo(ndr, NDR_SCALARS, &r->trusted_domains[cntr_trusted_domains_1]));
8151                         }
8152                         for (cntr_trusted_domains_1 = 0; cntr_trusted_domains_1 < r->trusted_domain_count; cntr_trusted_domains_1++) {
8153                                 NDR_CHECK(ndr_push_netr_OneDomainInfo(ndr, NDR_BUFFERS, &r->trusted_domains[cntr_trusted_domains_1]));
8154                         }
8155                 }
8156                 NDR_CHECK(ndr_push_netr_LsaPolicyInformation(ndr, NDR_BUFFERS, &r->lsa_policy));
8157                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dns_hostname));
8158                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string2));
8159                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string3));
8160                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string4));
8161         }
8162         return NDR_ERR_SUCCESS;
8163 }
8164
8165 static enum ndr_err_code ndr_pull_netr_DomainInformation(struct ndr_pull *ndr, int ndr_flags, struct netr_DomainInformation *r)
8166 {
8167         uint32_t _ptr_trusted_domains;
8168         uint32_t cntr_trusted_domains_1;
8169         TALLOC_CTX *_mem_save_trusted_domains_0;
8170         TALLOC_CTX *_mem_save_trusted_domains_1;
8171         if (ndr_flags & NDR_SCALARS) {
8172                 NDR_CHECK(ndr_pull_align(ndr, 4));
8173                 NDR_CHECK(ndr_pull_netr_OneDomainInfo(ndr, NDR_SCALARS, &r->primary_domain));
8174                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->trusted_domain_count));
8175                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_trusted_domains));
8176                 if (_ptr_trusted_domains) {
8177                         NDR_PULL_ALLOC(ndr, r->trusted_domains);
8178                 } else {
8179                         r->trusted_domains = NULL;
8180                 }
8181                 NDR_CHECK(ndr_pull_netr_LsaPolicyInformation(ndr, NDR_SCALARS, &r->lsa_policy));
8182                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dns_hostname));
8183                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string2));
8184                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string3));
8185                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->dummy_string4));
8186                 NDR_CHECK(ndr_pull_netr_WorkstationFlags(ndr, NDR_SCALARS, &r->workstation_flags));
8187                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->supported_enc_types));
8188                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long3));
8189                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->dummy_long4));
8190         }
8191         if (ndr_flags & NDR_BUFFERS) {
8192                 NDR_CHECK(ndr_pull_netr_OneDomainInfo(ndr, NDR_BUFFERS, &r->primary_domain));
8193                 if (r->trusted_domains) {
8194                         _mem_save_trusted_domains_0 = NDR_PULL_GET_MEM_CTX(ndr);
8195                         NDR_PULL_SET_MEM_CTX(ndr, r->trusted_domains, 0);
8196                         NDR_CHECK(ndr_pull_array_size(ndr, &r->trusted_domains));
8197                         NDR_PULL_ALLOC_N(ndr, r->trusted_domains, ndr_get_array_size(ndr, &r->trusted_domains));
8198                         _mem_save_trusted_domains_1 = NDR_PULL_GET_MEM_CTX(ndr);
8199                         NDR_PULL_SET_MEM_CTX(ndr, r->trusted_domains, 0);
8200                         for (cntr_trusted_domains_1 = 0; cntr_trusted_domains_1 < r->trusted_domain_count; cntr_trusted_domains_1++) {
8201                                 NDR_CHECK(ndr_pull_netr_OneDomainInfo(ndr, NDR_SCALARS, &r->trusted_domains[cntr_trusted_domains_1]));
8202                         }
8203                         for (cntr_trusted_domains_1 = 0; cntr_trusted_domains_1 < r->trusted_domain_count; cntr_trusted_domains_1++) {
8204                                 NDR_CHECK(ndr_pull_netr_OneDomainInfo(ndr, NDR_BUFFERS, &r->trusted_domains[cntr_trusted_domains_1]));
8205                         }
8206                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusted_domains_1, 0);
8207                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusted_domains_0, 0);
8208                 }
8209                 NDR_CHECK(ndr_pull_netr_LsaPolicyInformation(ndr, NDR_BUFFERS, &r->lsa_policy));
8210                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dns_hostname));
8211                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string2));
8212                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string3));
8213                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->dummy_string4));
8214                 if (r->trusted_domains) {
8215                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->trusted_domains, r->trusted_domain_count));
8216                 }
8217         }
8218         return NDR_ERR_SUCCESS;
8219 }
8220
8221 _PUBLIC_ void ndr_print_netr_DomainInformation(struct ndr_print *ndr, const char *name, const struct netr_DomainInformation *r)
8222 {
8223         uint32_t cntr_trusted_domains_1;
8224         ndr_print_struct(ndr, name, "netr_DomainInformation");
8225         ndr->depth++;
8226         ndr_print_netr_OneDomainInfo(ndr, "primary_domain", &r->primary_domain);
8227         ndr_print_uint32(ndr, "trusted_domain_count", r->trusted_domain_count);
8228         ndr_print_ptr(ndr, "trusted_domains", r->trusted_domains);
8229         ndr->depth++;
8230         if (r->trusted_domains) {
8231                 ndr->print(ndr, "%s: ARRAY(%d)", "trusted_domains", (int)r->trusted_domain_count);
8232                 ndr->depth++;
8233                 for (cntr_trusted_domains_1=0;cntr_trusted_domains_1<r->trusted_domain_count;cntr_trusted_domains_1++) {
8234                         char *idx_1=NULL;
8235                         if (asprintf(&idx_1, "[%d]", cntr_trusted_domains_1) != -1) {
8236                                 ndr_print_netr_OneDomainInfo(ndr, "trusted_domains", &r->trusted_domains[cntr_trusted_domains_1]);
8237                                 free(idx_1);
8238                         }
8239                 }
8240                 ndr->depth--;
8241         }
8242         ndr->depth--;
8243         ndr_print_netr_LsaPolicyInformation(ndr, "lsa_policy", &r->lsa_policy);
8244         ndr_print_lsa_String(ndr, "dns_hostname", &r->dns_hostname);
8245         ndr_print_lsa_String(ndr, "dummy_string2", &r->dummy_string2);
8246         ndr_print_lsa_String(ndr, "dummy_string3", &r->dummy_string3);
8247         ndr_print_lsa_String(ndr, "dummy_string4", &r->dummy_string4);
8248         ndr_print_netr_WorkstationFlags(ndr, "workstation_flags", r->workstation_flags);
8249         ndr_print_uint32(ndr, "supported_enc_types", r->supported_enc_types);
8250         ndr_print_uint32(ndr, "dummy_long3", r->dummy_long3);
8251         ndr_print_uint32(ndr, "dummy_long4", r->dummy_long4);
8252         ndr->depth--;
8253 }
8254
8255 static enum ndr_err_code ndr_push_netr_DomainInfo(struct ndr_push *ndr, int ndr_flags, const union netr_DomainInfo *r)
8256 {
8257         if (ndr_flags & NDR_SCALARS) {
8258                 int level = ndr_push_get_switch_value(ndr, r);
8259                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
8260                 switch (level) {
8261                         case 1: {
8262                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->domain_info));
8263                         break; }
8264
8265                         case 2: {
8266                                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->lsa_policy_info));
8267                         break; }
8268
8269                         default:
8270                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
8271                 }
8272         }
8273         if (ndr_flags & NDR_BUFFERS) {
8274                 int level = ndr_push_get_switch_value(ndr, r);
8275                 switch (level) {
8276                         case 1:
8277                                 if (r->domain_info) {
8278                                         NDR_CHECK(ndr_push_netr_DomainInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_info));
8279                                 }
8280                         break;
8281
8282                         case 2:
8283                                 if (r->lsa_policy_info) {
8284                                         NDR_CHECK(ndr_push_netr_LsaPolicyInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->lsa_policy_info));
8285                                 }
8286                         break;
8287
8288                         default:
8289                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
8290                 }
8291         }
8292         return NDR_ERR_SUCCESS;
8293 }
8294
8295 static enum ndr_err_code ndr_pull_netr_DomainInfo(struct ndr_pull *ndr, int ndr_flags, union netr_DomainInfo *r)
8296 {
8297         int level;
8298         uint32_t _level;
8299         TALLOC_CTX *_mem_save_domain_info_0;
8300         TALLOC_CTX *_mem_save_lsa_policy_info_0;
8301         level = ndr_pull_get_switch_value(ndr, r);
8302         if (ndr_flags & NDR_SCALARS) {
8303                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
8304                 if (_level != level) {
8305                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
8306                 }
8307                 switch (level) {
8308                         case 1: {
8309                                 uint32_t _ptr_domain_info;
8310                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_info));
8311                                 if (_ptr_domain_info) {
8312                                         NDR_PULL_ALLOC(ndr, r->domain_info);
8313                                 } else {
8314                                         r->domain_info = NULL;
8315                                 }
8316                         break; }
8317
8318                         case 2: {
8319                                 uint32_t _ptr_lsa_policy_info;
8320                                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_lsa_policy_info));
8321                                 if (_ptr_lsa_policy_info) {
8322                                         NDR_PULL_ALLOC(ndr, r->lsa_policy_info);
8323                                 } else {
8324                                         r->lsa_policy_info = NULL;
8325                                 }
8326                         break; }
8327
8328                         default:
8329                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
8330                 }
8331         }
8332         if (ndr_flags & NDR_BUFFERS) {
8333                 switch (level) {
8334                         case 1:
8335                                 if (r->domain_info) {
8336                                         _mem_save_domain_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
8337                                         NDR_PULL_SET_MEM_CTX(ndr, r->domain_info, 0);
8338                                         NDR_CHECK(ndr_pull_netr_DomainInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->domain_info));
8339                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_info_0, 0);
8340                                 }
8341                         break;
8342
8343                         case 2:
8344                                 if (r->lsa_policy_info) {
8345                                         _mem_save_lsa_policy_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
8346                                         NDR_PULL_SET_MEM_CTX(ndr, r->lsa_policy_info, 0);
8347                                         NDR_CHECK(ndr_pull_netr_LsaPolicyInformation(ndr, NDR_SCALARS|NDR_BUFFERS, r->lsa_policy_info));
8348                                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_lsa_policy_info_0, 0);
8349                                 }
8350                         break;
8351
8352                         default:
8353                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
8354                 }
8355         }
8356         return NDR_ERR_SUCCESS;
8357 }
8358
8359 _PUBLIC_ void ndr_print_netr_DomainInfo(struct ndr_print *ndr, const char *name, const union netr_DomainInfo *r)
8360 {
8361         int level;
8362         level = ndr_print_get_switch_value(ndr, r);
8363         ndr_print_union(ndr, name, level, "netr_DomainInfo");
8364         switch (level) {
8365                 case 1:
8366                         ndr_print_ptr(ndr, "domain_info", r->domain_info);
8367                         ndr->depth++;
8368                         if (r->domain_info) {
8369                                 ndr_print_netr_DomainInformation(ndr, "domain_info", r->domain_info);
8370                         }
8371                         ndr->depth--;
8372                 break;
8373
8374                 case 2:
8375                         ndr_print_ptr(ndr, "lsa_policy_info", r->lsa_policy_info);
8376                         ndr->depth++;
8377                         if (r->lsa_policy_info) {
8378                                 ndr_print_netr_LsaPolicyInformation(ndr, "lsa_policy_info", r->lsa_policy_info);
8379                         }
8380                         ndr->depth--;
8381                 break;
8382
8383                 default:
8384                         ndr_print_bad_level(ndr, name, level);
8385         }
8386 }
8387
8388 static enum ndr_err_code ndr_push_netr_CryptPassword(struct ndr_push *ndr, int ndr_flags, const struct netr_CryptPassword *r)
8389 {
8390         {
8391                 uint32_t _flags_save_STRUCT = ndr->flags;
8392                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
8393                 if (ndr_flags & NDR_SCALARS) {
8394                         NDR_CHECK(ndr_push_align(ndr, 4));
8395                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->data, 512));
8396                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->length));
8397                 }
8398                 if (ndr_flags & NDR_BUFFERS) {
8399                 }
8400                 ndr->flags = _flags_save_STRUCT;
8401         }
8402         return NDR_ERR_SUCCESS;
8403 }
8404
8405 static enum ndr_err_code ndr_pull_netr_CryptPassword(struct ndr_pull *ndr, int ndr_flags, struct netr_CryptPassword *r)
8406 {
8407         {
8408                 uint32_t _flags_save_STRUCT = ndr->flags;
8409                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
8410                 if (ndr_flags & NDR_SCALARS) {
8411                         NDR_CHECK(ndr_pull_align(ndr, 4));
8412                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->data, 512));
8413                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
8414                 }
8415                 if (ndr_flags & NDR_BUFFERS) {
8416                 }
8417                 ndr->flags = _flags_save_STRUCT;
8418         }
8419         return NDR_ERR_SUCCESS;
8420 }
8421
8422 _PUBLIC_ void ndr_print_netr_CryptPassword(struct ndr_print *ndr, const char *name, const struct netr_CryptPassword *r)
8423 {
8424         ndr_print_struct(ndr, name, "netr_CryptPassword");
8425         {
8426                 uint32_t _flags_save_STRUCT = ndr->flags;
8427                 ndr_set_flags(&ndr->flags, LIBNDR_PRINT_ARRAY_HEX);
8428                 ndr->depth++;
8429                 ndr_print_array_uint8(ndr, "data", r->data, 512);
8430                 ndr_print_uint32(ndr, "length", r->length);
8431                 ndr->depth--;
8432                 ndr->flags = _flags_save_STRUCT;
8433         }
8434 }
8435
8436 static enum ndr_err_code ndr_push_netr_DsRAddressToSitenamesWCtr(struct ndr_push *ndr, int ndr_flags, const struct netr_DsRAddressToSitenamesWCtr *r)
8437 {
8438         uint32_t cntr_sitename_1;
8439         if (ndr_flags & NDR_SCALARS) {
8440                 NDR_CHECK(ndr_push_align(ndr, 4));
8441                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
8442                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sitename));
8443         }
8444         if (ndr_flags & NDR_BUFFERS) {
8445                 if (r->sitename) {
8446                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
8447                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
8448                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->sitename[cntr_sitename_1]));
8449                         }
8450                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
8451                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->sitename[cntr_sitename_1]));
8452                         }
8453                 }
8454         }
8455         return NDR_ERR_SUCCESS;
8456 }
8457
8458 static enum ndr_err_code ndr_pull_netr_DsRAddressToSitenamesWCtr(struct ndr_pull *ndr, int ndr_flags, struct netr_DsRAddressToSitenamesWCtr *r)
8459 {
8460         uint32_t _ptr_sitename;
8461         uint32_t cntr_sitename_1;
8462         TALLOC_CTX *_mem_save_sitename_0;
8463         TALLOC_CTX *_mem_save_sitename_1;
8464         if (ndr_flags & NDR_SCALARS) {
8465                 NDR_CHECK(ndr_pull_align(ndr, 4));
8466                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
8467                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sitename));
8468                 if (_ptr_sitename) {
8469                         NDR_PULL_ALLOC(ndr, r->sitename);
8470                 } else {
8471                         r->sitename = NULL;
8472                 }
8473         }
8474         if (ndr_flags & NDR_BUFFERS) {
8475                 if (r->sitename) {
8476                         _mem_save_sitename_0 = NDR_PULL_GET_MEM_CTX(ndr);
8477                         NDR_PULL_SET_MEM_CTX(ndr, r->sitename, 0);
8478                         NDR_CHECK(ndr_pull_array_size(ndr, &r->sitename));
8479                         NDR_PULL_ALLOC_N(ndr, r->sitename, ndr_get_array_size(ndr, &r->sitename));
8480                         _mem_save_sitename_1 = NDR_PULL_GET_MEM_CTX(ndr);
8481                         NDR_PULL_SET_MEM_CTX(ndr, r->sitename, 0);
8482                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
8483                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->sitename[cntr_sitename_1]));
8484                         }
8485                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
8486                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->sitename[cntr_sitename_1]));
8487                         }
8488                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sitename_1, 0);
8489                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sitename_0, 0);
8490                 }
8491                 if (r->sitename) {
8492                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sitename, r->count));
8493                 }
8494         }
8495         return NDR_ERR_SUCCESS;
8496 }
8497
8498 _PUBLIC_ void ndr_print_netr_DsRAddressToSitenamesWCtr(struct ndr_print *ndr, const char *name, const struct netr_DsRAddressToSitenamesWCtr *r)
8499 {
8500         uint32_t cntr_sitename_1;
8501         ndr_print_struct(ndr, name, "netr_DsRAddressToSitenamesWCtr");
8502         ndr->depth++;
8503         ndr_print_uint32(ndr, "count", r->count);
8504         ndr_print_ptr(ndr, "sitename", r->sitename);
8505         ndr->depth++;
8506         if (r->sitename) {
8507                 ndr->print(ndr, "%s: ARRAY(%d)", "sitename", (int)r->count);
8508                 ndr->depth++;
8509                 for (cntr_sitename_1=0;cntr_sitename_1<r->count;cntr_sitename_1++) {
8510                         char *idx_1=NULL;
8511                         if (asprintf(&idx_1, "[%d]", cntr_sitename_1) != -1) {
8512                                 ndr_print_lsa_String(ndr, "sitename", &r->sitename[cntr_sitename_1]);
8513                                 free(idx_1);
8514                         }
8515                 }
8516                 ndr->depth--;
8517         }
8518         ndr->depth--;
8519         ndr->depth--;
8520 }
8521
8522 static enum ndr_err_code ndr_push_netr_DsRAddress(struct ndr_push *ndr, int ndr_flags, const struct netr_DsRAddress *r)
8523 {
8524         if (ndr_flags & NDR_SCALARS) {
8525                 NDR_CHECK(ndr_push_align(ndr, 4));
8526                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->buffer));
8527                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
8528         }
8529         if (ndr_flags & NDR_BUFFERS) {
8530                 if (r->buffer) {
8531                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size));
8532                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->buffer, r->size));
8533                 }
8534         }
8535         return NDR_ERR_SUCCESS;
8536 }
8537
8538 static enum ndr_err_code ndr_pull_netr_DsRAddress(struct ndr_pull *ndr, int ndr_flags, struct netr_DsRAddress *r)
8539 {
8540         uint32_t _ptr_buffer;
8541         TALLOC_CTX *_mem_save_buffer_0;
8542         if (ndr_flags & NDR_SCALARS) {
8543                 NDR_CHECK(ndr_pull_align(ndr, 4));
8544                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_buffer));
8545                 if (_ptr_buffer) {
8546                         NDR_PULL_ALLOC(ndr, r->buffer);
8547                 } else {
8548                         r->buffer = NULL;
8549                 }
8550                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size));
8551         }
8552         if (ndr_flags & NDR_BUFFERS) {
8553                 if (r->buffer) {
8554                         _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
8555                         NDR_PULL_SET_MEM_CTX(ndr, r->buffer, 0);
8556                         NDR_CHECK(ndr_pull_array_size(ndr, &r->buffer));
8557                         NDR_PULL_ALLOC_N(ndr, r->buffer, ndr_get_array_size(ndr, &r->buffer));
8558                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->buffer, ndr_get_array_size(ndr, &r->buffer)));
8559                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
8560                 }
8561                 if (r->buffer) {
8562                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->buffer, r->size));
8563                 }
8564         }
8565         return NDR_ERR_SUCCESS;
8566 }
8567
8568 _PUBLIC_ void ndr_print_netr_DsRAddress(struct ndr_print *ndr, const char *name, const struct netr_DsRAddress *r)
8569 {
8570         ndr_print_struct(ndr, name, "netr_DsRAddress");
8571         ndr->depth++;
8572         ndr_print_ptr(ndr, "buffer", r->buffer);
8573         ndr->depth++;
8574         if (r->buffer) {
8575                 ndr_print_array_uint8(ndr, "buffer", r->buffer, r->size);
8576         }
8577         ndr->depth--;
8578         ndr_print_uint32(ndr, "size", r->size);
8579         ndr->depth--;
8580 }
8581
8582 static enum ndr_err_code ndr_push_netr_TrustType(struct ndr_push *ndr, int ndr_flags, enum netr_TrustType r)
8583 {
8584         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
8585         return NDR_ERR_SUCCESS;
8586 }
8587
8588 static enum ndr_err_code ndr_pull_netr_TrustType(struct ndr_pull *ndr, int ndr_flags, enum netr_TrustType *r)
8589 {
8590         uint32_t v;
8591         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
8592         *r = v;
8593         return NDR_ERR_SUCCESS;
8594 }
8595
8596 _PUBLIC_ void ndr_print_netr_TrustType(struct ndr_print *ndr, const char *name, enum netr_TrustType r)
8597 {
8598         const char *val = NULL;
8599
8600         switch (r) {
8601                 case NETR_TRUST_TYPE_DOWNLEVEL: val = "NETR_TRUST_TYPE_DOWNLEVEL"; break;
8602                 case NETR_TRUST_TYPE_UPLEVEL: val = "NETR_TRUST_TYPE_UPLEVEL"; break;
8603                 case NETR_TRUST_TYPE_MIT: val = "NETR_TRUST_TYPE_MIT"; break;
8604                 case NETR_TRUST_TYPE_DCE: val = "NETR_TRUST_TYPE_DCE"; break;
8605         }
8606         ndr_print_enum(ndr, name, "ENUM", val, r);
8607 }
8608
8609 static enum ndr_err_code ndr_push_netr_TrustAttributes(struct ndr_push *ndr, int ndr_flags, uint32_t r)
8610 {
8611         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
8612         return NDR_ERR_SUCCESS;
8613 }
8614
8615 static enum ndr_err_code ndr_pull_netr_TrustAttributes(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
8616 {
8617         uint32_t v;
8618         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
8619         *r = v;
8620         return NDR_ERR_SUCCESS;
8621 }
8622
8623 _PUBLIC_ void ndr_print_netr_TrustAttributes(struct ndr_print *ndr, const char *name, uint32_t r)
8624 {
8625         ndr_print_uint32(ndr, name, r);
8626         ndr->depth++;
8627         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_NON_TRANSITIVE", NETR_TRUST_ATTRIBUTE_NON_TRANSITIVE, r);
8628         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_UPLEVEL_ONLY", NETR_TRUST_ATTRIBUTE_UPLEVEL_ONLY, r);
8629         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_QUARANTINED_DOMAIN", NETR_TRUST_ATTRIBUTE_QUARANTINED_DOMAIN, r);
8630         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_FOREST_TRANSITIVE", NETR_TRUST_ATTRIBUTE_FOREST_TRANSITIVE, r);
8631         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_CROSS_ORGANIZATION", NETR_TRUST_ATTRIBUTE_CROSS_ORGANIZATION, r);
8632         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_WITHIN_FOREST", NETR_TRUST_ATTRIBUTE_WITHIN_FOREST, r);
8633         ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "NETR_TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL", NETR_TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL, r);
8634         ndr->depth--;
8635 }
8636
8637 static enum ndr_err_code ndr_push_netr_DomainTrust(struct ndr_push *ndr, int ndr_flags, const struct netr_DomainTrust *r)
8638 {
8639         if (ndr_flags & NDR_SCALARS) {
8640                 NDR_CHECK(ndr_push_align(ndr, 4));
8641                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->netbios_name));
8642                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->dns_name));
8643                 NDR_CHECK(ndr_push_netr_TrustFlags(ndr, NDR_SCALARS, r->trust_flags));
8644                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->parent_index));
8645                 NDR_CHECK(ndr_push_netr_TrustType(ndr, NDR_SCALARS, r->trust_type));
8646                 NDR_CHECK(ndr_push_netr_TrustAttributes(ndr, NDR_SCALARS, r->trust_attributes));
8647                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sid));
8648                 NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->guid));
8649         }
8650         if (ndr_flags & NDR_BUFFERS) {
8651                 if (r->netbios_name) {
8652                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->netbios_name, CH_UTF16)));
8653                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
8654                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->netbios_name, CH_UTF16)));
8655                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->netbios_name, ndr_charset_length(r->netbios_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
8656                 }
8657                 if (r->dns_name) {
8658                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_name, CH_UTF16)));
8659                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
8660                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->dns_name, CH_UTF16)));
8661                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->dns_name, ndr_charset_length(r->dns_name, CH_UTF16), sizeof(uint16_t), CH_UTF16));
8662                 }
8663                 if (r->sid) {
8664                         NDR_CHECK(ndr_push_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
8665                 }
8666         }
8667         return NDR_ERR_SUCCESS;
8668 }
8669
8670 static enum ndr_err_code ndr_pull_netr_DomainTrust(struct ndr_pull *ndr, int ndr_flags, struct netr_DomainTrust *r)
8671 {
8672         uint32_t _ptr_netbios_name;
8673         TALLOC_CTX *_mem_save_netbios_name_0;
8674         uint32_t _ptr_dns_name;
8675         TALLOC_CTX *_mem_save_dns_name_0;
8676         uint32_t _ptr_sid;
8677         TALLOC_CTX *_mem_save_sid_0;
8678         if (ndr_flags & NDR_SCALARS) {
8679                 NDR_CHECK(ndr_pull_align(ndr, 4));
8680                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_netbios_name));
8681                 if (_ptr_netbios_name) {
8682                         NDR_PULL_ALLOC(ndr, r->netbios_name);
8683                 } else {
8684                         r->netbios_name = NULL;
8685                 }
8686                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dns_name));
8687                 if (_ptr_dns_name) {
8688                         NDR_PULL_ALLOC(ndr, r->dns_name);
8689                 } else {
8690                         r->dns_name = NULL;
8691                 }
8692                 NDR_CHECK(ndr_pull_netr_TrustFlags(ndr, NDR_SCALARS, &r->trust_flags));
8693                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->parent_index));
8694                 NDR_CHECK(ndr_pull_netr_TrustType(ndr, NDR_SCALARS, &r->trust_type));
8695                 NDR_CHECK(ndr_pull_netr_TrustAttributes(ndr, NDR_SCALARS, &r->trust_attributes));
8696                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sid));
8697                 if (_ptr_sid) {
8698                         NDR_PULL_ALLOC(ndr, r->sid);
8699                 } else {
8700                         r->sid = NULL;
8701                 }
8702                 NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->guid));
8703         }
8704         if (ndr_flags & NDR_BUFFERS) {
8705                 if (r->netbios_name) {
8706                         _mem_save_netbios_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
8707                         NDR_PULL_SET_MEM_CTX(ndr, r->netbios_name, 0);
8708                         NDR_CHECK(ndr_pull_array_size(ndr, &r->netbios_name));
8709                         NDR_CHECK(ndr_pull_array_length(ndr, &r->netbios_name));
8710                         if (ndr_get_array_length(ndr, &r->netbios_name) > ndr_get_array_size(ndr, &r->netbios_name)) {
8711                                 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));
8712                         }
8713                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->netbios_name), sizeof(uint16_t)));
8714                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->netbios_name, ndr_get_array_length(ndr, &r->netbios_name), sizeof(uint16_t), CH_UTF16));
8715                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_netbios_name_0, 0);
8716                 }
8717                 if (r->dns_name) {
8718                         _mem_save_dns_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
8719                         NDR_PULL_SET_MEM_CTX(ndr, r->dns_name, 0);
8720                         NDR_CHECK(ndr_pull_array_size(ndr, &r->dns_name));
8721                         NDR_CHECK(ndr_pull_array_length(ndr, &r->dns_name));
8722                         if (ndr_get_array_length(ndr, &r->dns_name) > ndr_get_array_size(ndr, &r->dns_name)) {
8723                                 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));
8724                         }
8725                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->dns_name), sizeof(uint16_t)));
8726                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->dns_name, ndr_get_array_length(ndr, &r->dns_name), sizeof(uint16_t), CH_UTF16));
8727                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dns_name_0, 0);
8728                 }
8729                 if (r->sid) {
8730                         _mem_save_sid_0 = NDR_PULL_GET_MEM_CTX(ndr);
8731                         NDR_PULL_SET_MEM_CTX(ndr, r->sid, 0);
8732                         NDR_CHECK(ndr_pull_dom_sid2(ndr, NDR_SCALARS|NDR_BUFFERS, r->sid));
8733                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sid_0, 0);
8734                 }
8735         }
8736         return NDR_ERR_SUCCESS;
8737 }
8738
8739 _PUBLIC_ void ndr_print_netr_DomainTrust(struct ndr_print *ndr, const char *name, const struct netr_DomainTrust *r)
8740 {
8741         ndr_print_struct(ndr, name, "netr_DomainTrust");
8742         ndr->depth++;
8743         ndr_print_ptr(ndr, "netbios_name", r->netbios_name);
8744         ndr->depth++;
8745         if (r->netbios_name) {
8746                 ndr_print_string(ndr, "netbios_name", r->netbios_name);
8747         }
8748         ndr->depth--;
8749         ndr_print_ptr(ndr, "dns_name", r->dns_name);
8750         ndr->depth++;
8751         if (r->dns_name) {
8752                 ndr_print_string(ndr, "dns_name", r->dns_name);
8753         }
8754         ndr->depth--;
8755         ndr_print_netr_TrustFlags(ndr, "trust_flags", r->trust_flags);
8756         ndr_print_uint32(ndr, "parent_index", r->parent_index);
8757         ndr_print_netr_TrustType(ndr, "trust_type", r->trust_type);
8758         ndr_print_netr_TrustAttributes(ndr, "trust_attributes", r->trust_attributes);
8759         ndr_print_ptr(ndr, "sid", r->sid);
8760         ndr->depth++;
8761         if (r->sid) {
8762                 ndr_print_dom_sid2(ndr, "sid", r->sid);
8763         }
8764         ndr->depth--;
8765         ndr_print_GUID(ndr, "guid", &r->guid);
8766         ndr->depth--;
8767 }
8768
8769 static enum ndr_err_code ndr_push_netr_DomainTrustList(struct ndr_push *ndr, int ndr_flags, const struct netr_DomainTrustList *r)
8770 {
8771         uint32_t cntr_array_1;
8772         if (ndr_flags & NDR_SCALARS) {
8773                 NDR_CHECK(ndr_push_align(ndr, 4));
8774                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
8775                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->array));
8776         }
8777         if (ndr_flags & NDR_BUFFERS) {
8778                 if (r->array) {
8779                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
8780                         for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
8781                                 NDR_CHECK(ndr_push_netr_DomainTrust(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
8782                         }
8783                         for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
8784                                 NDR_CHECK(ndr_push_netr_DomainTrust(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
8785                         }
8786                 }
8787         }
8788         return NDR_ERR_SUCCESS;
8789 }
8790
8791 static enum ndr_err_code ndr_pull_netr_DomainTrustList(struct ndr_pull *ndr, int ndr_flags, struct netr_DomainTrustList *r)
8792 {
8793         uint32_t _ptr_array;
8794         uint32_t cntr_array_1;
8795         TALLOC_CTX *_mem_save_array_0;
8796         TALLOC_CTX *_mem_save_array_1;
8797         if (ndr_flags & NDR_SCALARS) {
8798                 NDR_CHECK(ndr_pull_align(ndr, 4));
8799                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
8800                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_array));
8801                 if (_ptr_array) {
8802                         NDR_PULL_ALLOC(ndr, r->array);
8803                 } else {
8804                         r->array = NULL;
8805                 }
8806         }
8807         if (ndr_flags & NDR_BUFFERS) {
8808                 if (r->array) {
8809                         _mem_save_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
8810                         NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
8811                         NDR_CHECK(ndr_pull_array_size(ndr, &r->array));
8812                         NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
8813                         _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
8814                         NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
8815                         for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
8816                                 NDR_CHECK(ndr_pull_netr_DomainTrust(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
8817                         }
8818                         for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
8819                                 NDR_CHECK(ndr_pull_netr_DomainTrust(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
8820                         }
8821                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
8822                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_0, 0);
8823                 }
8824                 if (r->array) {
8825                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->array, r->count));
8826                 }
8827         }
8828         return NDR_ERR_SUCCESS;
8829 }
8830
8831 _PUBLIC_ void ndr_print_netr_DomainTrustList(struct ndr_print *ndr, const char *name, const struct netr_DomainTrustList *r)
8832 {
8833         uint32_t cntr_array_1;
8834         ndr_print_struct(ndr, name, "netr_DomainTrustList");
8835         ndr->depth++;
8836         ndr_print_uint32(ndr, "count", r->count);
8837         ndr_print_ptr(ndr, "array", r->array);
8838         ndr->depth++;
8839         if (r->array) {
8840                 ndr->print(ndr, "%s: ARRAY(%d)", "array", (int)r->count);
8841                 ndr->depth++;
8842                 for (cntr_array_1=0;cntr_array_1<r->count;cntr_array_1++) {
8843                         char *idx_1=NULL;
8844                         if (asprintf(&idx_1, "[%d]", cntr_array_1) != -1) {
8845                                 ndr_print_netr_DomainTrust(ndr, "array", &r->array[cntr_array_1]);
8846                                 free(idx_1);
8847                         }
8848                 }
8849                 ndr->depth--;
8850         }
8851         ndr->depth--;
8852         ndr->depth--;
8853 }
8854
8855 static enum ndr_err_code ndr_push_netr_DsRAddressToSitenamesExWCtr(struct ndr_push *ndr, int ndr_flags, const struct netr_DsRAddressToSitenamesExWCtr *r)
8856 {
8857         uint32_t cntr_sitename_1;
8858         uint32_t cntr_subnetname_1;
8859         if (ndr_flags & NDR_SCALARS) {
8860                 NDR_CHECK(ndr_push_align(ndr, 4));
8861                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
8862                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sitename));
8863                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->subnetname));
8864         }
8865         if (ndr_flags & NDR_BUFFERS) {
8866                 if (r->sitename) {
8867                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
8868                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
8869                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->sitename[cntr_sitename_1]));
8870                         }
8871                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
8872                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->sitename[cntr_sitename_1]));
8873                         }
8874                 }
8875                 if (r->subnetname) {
8876                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
8877                         for (cntr_subnetname_1 = 0; cntr_subnetname_1 < r->count; cntr_subnetname_1++) {
8878                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->subnetname[cntr_subnetname_1]));
8879                         }
8880                         for (cntr_subnetname_1 = 0; cntr_subnetname_1 < r->count; cntr_subnetname_1++) {
8881                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->subnetname[cntr_subnetname_1]));
8882                         }
8883                 }
8884         }
8885         return NDR_ERR_SUCCESS;
8886 }
8887
8888 static enum ndr_err_code ndr_pull_netr_DsRAddressToSitenamesExWCtr(struct ndr_pull *ndr, int ndr_flags, struct netr_DsRAddressToSitenamesExWCtr *r)
8889 {
8890         uint32_t _ptr_sitename;
8891         uint32_t cntr_sitename_1;
8892         TALLOC_CTX *_mem_save_sitename_0;
8893         TALLOC_CTX *_mem_save_sitename_1;
8894         uint32_t _ptr_subnetname;
8895         uint32_t cntr_subnetname_1;
8896         TALLOC_CTX *_mem_save_subnetname_0;
8897         TALLOC_CTX *_mem_save_subnetname_1;
8898         if (ndr_flags & NDR_SCALARS) {
8899                 NDR_CHECK(ndr_pull_align(ndr, 4));
8900                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
8901                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sitename));
8902                 if (_ptr_sitename) {
8903                         NDR_PULL_ALLOC(ndr, r->sitename);
8904                 } else {
8905                         r->sitename = NULL;
8906                 }
8907                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_subnetname));
8908                 if (_ptr_subnetname) {
8909                         NDR_PULL_ALLOC(ndr, r->subnetname);
8910                 } else {
8911                         r->subnetname = NULL;
8912                 }
8913         }
8914         if (ndr_flags & NDR_BUFFERS) {
8915                 if (r->sitename) {
8916                         _mem_save_sitename_0 = NDR_PULL_GET_MEM_CTX(ndr);
8917                         NDR_PULL_SET_MEM_CTX(ndr, r->sitename, 0);
8918                         NDR_CHECK(ndr_pull_array_size(ndr, &r->sitename));
8919                         NDR_PULL_ALLOC_N(ndr, r->sitename, ndr_get_array_size(ndr, &r->sitename));
8920                         _mem_save_sitename_1 = NDR_PULL_GET_MEM_CTX(ndr);
8921                         NDR_PULL_SET_MEM_CTX(ndr, r->sitename, 0);
8922                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
8923                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->sitename[cntr_sitename_1]));
8924                         }
8925                         for (cntr_sitename_1 = 0; cntr_sitename_1 < r->count; cntr_sitename_1++) {
8926                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->sitename[cntr_sitename_1]));
8927                         }
8928                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sitename_1, 0);
8929                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sitename_0, 0);
8930                 }
8931                 if (r->subnetname) {
8932                         _mem_save_subnetname_0 = NDR_PULL_GET_MEM_CTX(ndr);
8933                         NDR_PULL_SET_MEM_CTX(ndr, r->subnetname, 0);
8934                         NDR_CHECK(ndr_pull_array_size(ndr, &r->subnetname));
8935                         NDR_PULL_ALLOC_N(ndr, r->subnetname, ndr_get_array_size(ndr, &r->subnetname));
8936                         _mem_save_subnetname_1 = NDR_PULL_GET_MEM_CTX(ndr);
8937                         NDR_PULL_SET_MEM_CTX(ndr, r->subnetname, 0);
8938                         for (cntr_subnetname_1 = 0; cntr_subnetname_1 < r->count; cntr_subnetname_1++) {
8939                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->subnetname[cntr_subnetname_1]));
8940                         }
8941                         for (cntr_subnetname_1 = 0; cntr_subnetname_1 < r->count; cntr_subnetname_1++) {
8942                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->subnetname[cntr_subnetname_1]));
8943                         }
8944                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_subnetname_1, 0);
8945                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_subnetname_0, 0);
8946                 }
8947                 if (r->sitename) {
8948                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sitename, r->count));
8949                 }
8950                 if (r->subnetname) {
8951                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->subnetname, r->count));
8952                 }
8953         }
8954         return NDR_ERR_SUCCESS;
8955 }
8956
8957 _PUBLIC_ void ndr_print_netr_DsRAddressToSitenamesExWCtr(struct ndr_print *ndr, const char *name, const struct netr_DsRAddressToSitenamesExWCtr *r)
8958 {
8959         uint32_t cntr_sitename_1;
8960         uint32_t cntr_subnetname_1;
8961         ndr_print_struct(ndr, name, "netr_DsRAddressToSitenamesExWCtr");
8962         ndr->depth++;
8963         ndr_print_uint32(ndr, "count", r->count);
8964         ndr_print_ptr(ndr, "sitename", r->sitename);
8965         ndr->depth++;
8966         if (r->sitename) {
8967                 ndr->print(ndr, "%s: ARRAY(%d)", "sitename", (int)r->count);
8968                 ndr->depth++;
8969                 for (cntr_sitename_1=0;cntr_sitename_1<r->count;cntr_sitename_1++) {
8970                         char *idx_1=NULL;
8971                         if (asprintf(&idx_1, "[%d]", cntr_sitename_1) != -1) {
8972                                 ndr_print_lsa_String(ndr, "sitename", &r->sitename[cntr_sitename_1]);
8973                                 free(idx_1);
8974                         }
8975                 }
8976                 ndr->depth--;
8977         }
8978         ndr->depth--;
8979         ndr_print_ptr(ndr, "subnetname", r->subnetname);
8980         ndr->depth++;
8981         if (r->subnetname) {
8982                 ndr->print(ndr, "%s: ARRAY(%d)", "subnetname", (int)r->count);
8983                 ndr->depth++;
8984                 for (cntr_subnetname_1=0;cntr_subnetname_1<r->count;cntr_subnetname_1++) {
8985                         char *idx_1=NULL;
8986                         if (asprintf(&idx_1, "[%d]", cntr_subnetname_1) != -1) {
8987                                 ndr_print_lsa_String(ndr, "subnetname", &r->subnetname[cntr_subnetname_1]);
8988                                 free(idx_1);
8989                         }
8990                 }
8991                 ndr->depth--;
8992         }
8993         ndr->depth--;
8994         ndr->depth--;
8995 }
8996
8997 static enum ndr_err_code ndr_push_DcSitesCtr(struct ndr_push *ndr, int ndr_flags, const struct DcSitesCtr *r)
8998 {
8999         uint32_t cntr_sites_1;
9000         if (ndr_flags & NDR_SCALARS) {
9001                 NDR_CHECK(ndr_push_align(ndr, 4));
9002                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_sites));
9003                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sites));
9004         }
9005         if (ndr_flags & NDR_BUFFERS) {
9006                 if (r->sites) {
9007                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->num_sites));
9008                         for (cntr_sites_1 = 0; cntr_sites_1 < r->num_sites; cntr_sites_1++) {
9009                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->sites[cntr_sites_1]));
9010                         }
9011                         for (cntr_sites_1 = 0; cntr_sites_1 < r->num_sites; cntr_sites_1++) {
9012                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->sites[cntr_sites_1]));
9013                         }
9014                 }
9015         }
9016         return NDR_ERR_SUCCESS;
9017 }
9018
9019 static enum ndr_err_code ndr_pull_DcSitesCtr(struct ndr_pull *ndr, int ndr_flags, struct DcSitesCtr *r)
9020 {
9021         uint32_t _ptr_sites;
9022         uint32_t cntr_sites_1;
9023         TALLOC_CTX *_mem_save_sites_0;
9024         TALLOC_CTX *_mem_save_sites_1;
9025         if (ndr_flags & NDR_SCALARS) {
9026                 NDR_CHECK(ndr_pull_align(ndr, 4));
9027                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->num_sites));
9028                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sites));
9029                 if (_ptr_sites) {
9030                         NDR_PULL_ALLOC(ndr, r->sites);
9031                 } else {
9032                         r->sites = NULL;
9033                 }
9034         }
9035         if (ndr_flags & NDR_BUFFERS) {
9036                 if (r->sites) {
9037                         _mem_save_sites_0 = NDR_PULL_GET_MEM_CTX(ndr);
9038                         NDR_PULL_SET_MEM_CTX(ndr, r->sites, 0);
9039                         NDR_CHECK(ndr_pull_array_size(ndr, &r->sites));
9040                         NDR_PULL_ALLOC_N(ndr, r->sites, ndr_get_array_size(ndr, &r->sites));
9041                         _mem_save_sites_1 = NDR_PULL_GET_MEM_CTX(ndr);
9042                         NDR_PULL_SET_MEM_CTX(ndr, r->sites, 0);
9043                         for (cntr_sites_1 = 0; cntr_sites_1 < r->num_sites; cntr_sites_1++) {
9044                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->sites[cntr_sites_1]));
9045                         }
9046                         for (cntr_sites_1 = 0; cntr_sites_1 < r->num_sites; cntr_sites_1++) {
9047                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->sites[cntr_sites_1]));
9048                         }
9049                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sites_1, 0);
9050                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sites_0, 0);
9051                 }
9052                 if (r->sites) {
9053                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->sites, r->num_sites));
9054                 }
9055         }
9056         return NDR_ERR_SUCCESS;
9057 }
9058
9059 _PUBLIC_ void ndr_print_DcSitesCtr(struct ndr_print *ndr, const char *name, const struct DcSitesCtr *r)
9060 {
9061         uint32_t cntr_sites_1;
9062         ndr_print_struct(ndr, name, "DcSitesCtr");
9063         ndr->depth++;
9064         ndr_print_uint32(ndr, "num_sites", r->num_sites);
9065         ndr_print_ptr(ndr, "sites", r->sites);
9066         ndr->depth++;
9067         if (r->sites) {
9068                 ndr->print(ndr, "%s: ARRAY(%d)", "sites", (int)r->num_sites);
9069                 ndr->depth++;
9070                 for (cntr_sites_1=0;cntr_sites_1<r->num_sites;cntr_sites_1++) {
9071                         char *idx_1=NULL;
9072                         if (asprintf(&idx_1, "[%d]", cntr_sites_1) != -1) {
9073                                 ndr_print_lsa_String(ndr, "sites", &r->sites[cntr_sites_1]);
9074                                 free(idx_1);
9075                         }
9076                 }
9077                 ndr->depth--;
9078         }
9079         ndr->depth--;
9080         ndr->depth--;
9081 }
9082
9083 static enum ndr_err_code ndr_push_netr_TrustInfo(struct ndr_push *ndr, int ndr_flags, const struct netr_TrustInfo *r)
9084 {
9085         uint32_t cntr_data_1;
9086         uint32_t cntr_entries_1;
9087         if (ndr_flags & NDR_SCALARS) {
9088                 NDR_CHECK(ndr_push_align(ndr, 4));
9089                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
9090                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->data));
9091                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->entry_count));
9092                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->entries));
9093         }
9094         if (ndr_flags & NDR_BUFFERS) {
9095                 if (r->data) {
9096                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
9097                         for (cntr_data_1 = 0; cntr_data_1 < r->count; cntr_data_1++) {
9098                                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->data[cntr_data_1]));
9099                         }
9100                 }
9101                 if (r->entries) {
9102                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count));
9103                         for (cntr_entries_1 = 0; cntr_entries_1 < r->count; cntr_entries_1++) {
9104                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS, &r->entries[cntr_entries_1]));
9105                         }
9106                         for (cntr_entries_1 = 0; cntr_entries_1 < r->count; cntr_entries_1++) {
9107                                 NDR_CHECK(ndr_push_lsa_String(ndr, NDR_BUFFERS, &r->entries[cntr_entries_1]));
9108                         }
9109                 }
9110         }
9111         return NDR_ERR_SUCCESS;
9112 }
9113
9114 static enum ndr_err_code ndr_pull_netr_TrustInfo(struct ndr_pull *ndr, int ndr_flags, struct netr_TrustInfo *r)
9115 {
9116         uint32_t _ptr_data;
9117         uint32_t cntr_data_1;
9118         TALLOC_CTX *_mem_save_data_0;
9119         TALLOC_CTX *_mem_save_data_1;
9120         uint32_t _ptr_entries;
9121         uint32_t cntr_entries_1;
9122         TALLOC_CTX *_mem_save_entries_0;
9123         TALLOC_CTX *_mem_save_entries_1;
9124         if (ndr_flags & NDR_SCALARS) {
9125                 NDR_CHECK(ndr_pull_align(ndr, 4));
9126                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->count));
9127                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
9128                 if (_ptr_data) {
9129                         NDR_PULL_ALLOC(ndr, r->data);
9130                 } else {
9131                         r->data = NULL;
9132                 }
9133                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->entry_count));
9134                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_entries));
9135                 if (_ptr_entries) {
9136                         NDR_PULL_ALLOC(ndr, r->entries);
9137                 } else {
9138                         r->entries = NULL;
9139                 }
9140         }
9141         if (ndr_flags & NDR_BUFFERS) {
9142                 if (r->data) {
9143                         _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
9144                         NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
9145                         NDR_CHECK(ndr_pull_array_size(ndr, &r->data));
9146                         NDR_PULL_ALLOC_N(ndr, r->data, ndr_get_array_size(ndr, &r->data));
9147                         _mem_save_data_1 = NDR_PULL_GET_MEM_CTX(ndr);
9148                         NDR_PULL_SET_MEM_CTX(ndr, r->data, 0);
9149                         for (cntr_data_1 = 0; cntr_data_1 < r->count; cntr_data_1++) {
9150                                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->data[cntr_data_1]));
9151                         }
9152                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_1, 0);
9153                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
9154                 }
9155                 if (r->entries) {
9156                         _mem_save_entries_0 = NDR_PULL_GET_MEM_CTX(ndr);
9157                         NDR_PULL_SET_MEM_CTX(ndr, r->entries, 0);
9158                         NDR_CHECK(ndr_pull_array_size(ndr, &r->entries));
9159                         NDR_PULL_ALLOC_N(ndr, r->entries, ndr_get_array_size(ndr, &r->entries));
9160                         _mem_save_entries_1 = NDR_PULL_GET_MEM_CTX(ndr);
9161                         NDR_PULL_SET_MEM_CTX(ndr, r->entries, 0);
9162                         for (cntr_entries_1 = 0; cntr_entries_1 < r->count; cntr_entries_1++) {
9163                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS, &r->entries[cntr_entries_1]));
9164                         }
9165                         for (cntr_entries_1 = 0; cntr_entries_1 < r->count; cntr_entries_1++) {
9166                                 NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_BUFFERS, &r->entries[cntr_entries_1]));
9167                         }
9168                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_entries_1, 0);
9169                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_entries_0, 0);
9170                 }
9171                 if (r->data) {
9172                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->data, r->count));
9173                 }
9174                 if (r->entries) {
9175                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->entries, r->count));
9176                 }
9177         }
9178         return NDR_ERR_SUCCESS;
9179 }
9180
9181 _PUBLIC_ void ndr_print_netr_TrustInfo(struct ndr_print *ndr, const char *name, const struct netr_TrustInfo *r)
9182 {
9183         uint32_t cntr_data_1;
9184         uint32_t cntr_entries_1;
9185         ndr_print_struct(ndr, name, "netr_TrustInfo");
9186         ndr->depth++;
9187         ndr_print_uint32(ndr, "count", r->count);
9188         ndr_print_ptr(ndr, "data", r->data);
9189         ndr->depth++;
9190         if (r->data) {
9191                 ndr->print(ndr, "%s: ARRAY(%d)", "data", (int)r->count);
9192                 ndr->depth++;
9193                 for (cntr_data_1=0;cntr_data_1<r->count;cntr_data_1++) {
9194                         char *idx_1=NULL;
9195                         if (asprintf(&idx_1, "[%d]", cntr_data_1) != -1) {
9196                                 ndr_print_uint32(ndr, "data", r->data[cntr_data_1]);
9197                                 free(idx_1);
9198                         }
9199                 }
9200                 ndr->depth--;
9201         }
9202         ndr->depth--;
9203         ndr_print_uint32(ndr, "entry_count", r->entry_count);
9204         ndr_print_ptr(ndr, "entries", r->entries);
9205         ndr->depth++;
9206         if (r->entries) {
9207                 ndr->print(ndr, "%s: ARRAY(%d)", "entries", (int)r->count);
9208                 ndr->depth++;
9209                 for (cntr_entries_1=0;cntr_entries_1<r->count;cntr_entries_1++) {
9210                         char *idx_1=NULL;
9211                         if (asprintf(&idx_1, "[%d]", cntr_entries_1) != -1) {
9212                                 ndr_print_lsa_String(ndr, "entries", &r->entries[cntr_entries_1]);
9213                                 free(idx_1);
9214                         }
9215                 }
9216                 ndr->depth--;
9217         }
9218         ndr->depth--;
9219         ndr->depth--;
9220 }
9221
9222 static enum ndr_err_code ndr_push_netr_LogonUasLogon(struct ndr_push *ndr, int flags, const struct netr_LogonUasLogon *r)
9223 {
9224         if (flags & NDR_IN) {
9225                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
9226                 if (r->in.server_name) {
9227                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9228                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9229                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9230                         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));
9231                 }
9232                 if (r->in.account_name == NULL) {
9233                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9234                 }
9235                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
9236                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9237                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
9238                 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));
9239                 if (r->in.workstation == NULL) {
9240                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9241                 }
9242                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.workstation, CH_UTF16)));
9243                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9244                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.workstation, CH_UTF16)));
9245                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.workstation, ndr_charset_length(r->in.workstation, CH_UTF16), sizeof(uint16_t), CH_UTF16));
9246         }
9247         if (flags & NDR_OUT) {
9248                 if (r->out.info == NULL) {
9249                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9250                 }
9251                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.info));
9252                 if (*r->out.info) {
9253                         NDR_CHECK(ndr_push_netr_UasInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
9254                 }
9255                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
9256         }
9257         return NDR_ERR_SUCCESS;
9258 }
9259
9260 static enum ndr_err_code ndr_pull_netr_LogonUasLogon(struct ndr_pull *ndr, int flags, struct netr_LogonUasLogon *r)
9261 {
9262         uint32_t _ptr_server_name;
9263         uint32_t _ptr_info;
9264         TALLOC_CTX *_mem_save_server_name_0;
9265         TALLOC_CTX *_mem_save_info_0;
9266         TALLOC_CTX *_mem_save_info_1;
9267         if (flags & NDR_IN) {
9268                 ZERO_STRUCT(r->out);
9269
9270                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
9271                 if (_ptr_server_name) {
9272                         NDR_PULL_ALLOC(ndr, r->in.server_name);
9273                 } else {
9274                         r->in.server_name = NULL;
9275                 }
9276                 if (r->in.server_name) {
9277                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
9278                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
9279                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
9280                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
9281                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
9282                                 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));
9283                         }
9284                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
9285                         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));
9286                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
9287                 }
9288                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
9289                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
9290                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
9291                         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));
9292                 }
9293                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
9294                 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));
9295                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.workstation));
9296                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.workstation));
9297                 if (ndr_get_array_length(ndr, &r->in.workstation) > ndr_get_array_size(ndr, &r->in.workstation)) {
9298                         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));
9299                 }
9300                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.workstation), sizeof(uint16_t)));
9301                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.workstation, ndr_get_array_length(ndr, &r->in.workstation), sizeof(uint16_t), CH_UTF16));
9302                 NDR_PULL_ALLOC(ndr, r->out.info);
9303                 ZERO_STRUCTP(r->out.info);
9304         }
9305         if (flags & NDR_OUT) {
9306                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9307                         NDR_PULL_ALLOC(ndr, r->out.info);
9308                 }
9309                 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
9310                 NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
9311                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
9312                 if (_ptr_info) {
9313                         NDR_PULL_ALLOC(ndr, *r->out.info);
9314                 } else {
9315                         *r->out.info = NULL;
9316                 }
9317                 if (*r->out.info) {
9318                         _mem_save_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
9319                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.info, 0);
9320                         NDR_CHECK(ndr_pull_netr_UasInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
9321                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_1, 0);
9322                 }
9323                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
9324                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
9325         }
9326         return NDR_ERR_SUCCESS;
9327 }
9328
9329 _PUBLIC_ void ndr_print_netr_LogonUasLogon(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonUasLogon *r)
9330 {
9331         ndr_print_struct(ndr, name, "netr_LogonUasLogon");
9332         ndr->depth++;
9333         if (flags & NDR_SET_VALUES) {
9334                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
9335         }
9336         if (flags & NDR_IN) {
9337                 ndr_print_struct(ndr, "in", "netr_LogonUasLogon");
9338                 ndr->depth++;
9339                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
9340                 ndr->depth++;
9341                 if (r->in.server_name) {
9342                         ndr_print_string(ndr, "server_name", r->in.server_name);
9343                 }
9344                 ndr->depth--;
9345                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
9346                 ndr->depth++;
9347                 ndr_print_string(ndr, "account_name", r->in.account_name);
9348                 ndr->depth--;
9349                 ndr_print_ptr(ndr, "workstation", r->in.workstation);
9350                 ndr->depth++;
9351                 ndr_print_string(ndr, "workstation", r->in.workstation);
9352                 ndr->depth--;
9353                 ndr->depth--;
9354         }
9355         if (flags & NDR_OUT) {
9356                 ndr_print_struct(ndr, "out", "netr_LogonUasLogon");
9357                 ndr->depth++;
9358                 ndr_print_ptr(ndr, "info", r->out.info);
9359                 ndr->depth++;
9360                 ndr_print_ptr(ndr, "info", *r->out.info);
9361                 ndr->depth++;
9362                 if (*r->out.info) {
9363                         ndr_print_netr_UasInfo(ndr, "info", *r->out.info);
9364                 }
9365                 ndr->depth--;
9366                 ndr->depth--;
9367                 ndr_print_WERROR(ndr, "result", r->out.result);
9368                 ndr->depth--;
9369         }
9370         ndr->depth--;
9371 }
9372
9373 static enum ndr_err_code ndr_push_netr_LogonUasLogoff(struct ndr_push *ndr, int flags, const struct netr_LogonUasLogoff *r)
9374 {
9375         if (flags & NDR_IN) {
9376                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
9377                 if (r->in.server_name) {
9378                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9379                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9380                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9381                         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));
9382                 }
9383                 if (r->in.account_name == NULL) {
9384                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9385                 }
9386                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
9387                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9388                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
9389                 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));
9390                 if (r->in.workstation == NULL) {
9391                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9392                 }
9393                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.workstation, CH_UTF16)));
9394                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9395                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.workstation, CH_UTF16)));
9396                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.workstation, ndr_charset_length(r->in.workstation, CH_UTF16), sizeof(uint16_t), CH_UTF16));
9397         }
9398         if (flags & NDR_OUT) {
9399                 if (r->out.info == NULL) {
9400                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9401                 }
9402                 NDR_CHECK(ndr_push_netr_UasLogoffInfo(ndr, NDR_SCALARS, r->out.info));
9403                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
9404         }
9405         return NDR_ERR_SUCCESS;
9406 }
9407
9408 static enum ndr_err_code ndr_pull_netr_LogonUasLogoff(struct ndr_pull *ndr, int flags, struct netr_LogonUasLogoff *r)
9409 {
9410         uint32_t _ptr_server_name;
9411         TALLOC_CTX *_mem_save_server_name_0;
9412         TALLOC_CTX *_mem_save_info_0;
9413         if (flags & NDR_IN) {
9414                 ZERO_STRUCT(r->out);
9415
9416                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
9417                 if (_ptr_server_name) {
9418                         NDR_PULL_ALLOC(ndr, r->in.server_name);
9419                 } else {
9420                         r->in.server_name = NULL;
9421                 }
9422                 if (r->in.server_name) {
9423                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
9424                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
9425                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
9426                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
9427                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
9428                                 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));
9429                         }
9430                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
9431                         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));
9432                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
9433                 }
9434                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
9435                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
9436                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
9437                         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));
9438                 }
9439                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
9440                 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));
9441                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.workstation));
9442                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.workstation));
9443                 if (ndr_get_array_length(ndr, &r->in.workstation) > ndr_get_array_size(ndr, &r->in.workstation)) {
9444                         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));
9445                 }
9446                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.workstation), sizeof(uint16_t)));
9447                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.workstation, ndr_get_array_length(ndr, &r->in.workstation), sizeof(uint16_t), CH_UTF16));
9448                 NDR_PULL_ALLOC(ndr, r->out.info);
9449                 ZERO_STRUCTP(r->out.info);
9450         }
9451         if (flags & NDR_OUT) {
9452                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9453                         NDR_PULL_ALLOC(ndr, r->out.info);
9454                 }
9455                 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
9456                 NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
9457                 NDR_CHECK(ndr_pull_netr_UasLogoffInfo(ndr, NDR_SCALARS, r->out.info));
9458                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
9459                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
9460         }
9461         return NDR_ERR_SUCCESS;
9462 }
9463
9464 _PUBLIC_ void ndr_print_netr_LogonUasLogoff(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonUasLogoff *r)
9465 {
9466         ndr_print_struct(ndr, name, "netr_LogonUasLogoff");
9467         ndr->depth++;
9468         if (flags & NDR_SET_VALUES) {
9469                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
9470         }
9471         if (flags & NDR_IN) {
9472                 ndr_print_struct(ndr, "in", "netr_LogonUasLogoff");
9473                 ndr->depth++;
9474                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
9475                 ndr->depth++;
9476                 if (r->in.server_name) {
9477                         ndr_print_string(ndr, "server_name", r->in.server_name);
9478                 }
9479                 ndr->depth--;
9480                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
9481                 ndr->depth++;
9482                 ndr_print_string(ndr, "account_name", r->in.account_name);
9483                 ndr->depth--;
9484                 ndr_print_ptr(ndr, "workstation", r->in.workstation);
9485                 ndr->depth++;
9486                 ndr_print_string(ndr, "workstation", r->in.workstation);
9487                 ndr->depth--;
9488                 ndr->depth--;
9489         }
9490         if (flags & NDR_OUT) {
9491                 ndr_print_struct(ndr, "out", "netr_LogonUasLogoff");
9492                 ndr->depth++;
9493                 ndr_print_ptr(ndr, "info", r->out.info);
9494                 ndr->depth++;
9495                 ndr_print_netr_UasLogoffInfo(ndr, "info", r->out.info);
9496                 ndr->depth--;
9497                 ndr_print_WERROR(ndr, "result", r->out.result);
9498                 ndr->depth--;
9499         }
9500         ndr->depth--;
9501 }
9502
9503 static enum ndr_err_code ndr_push_netr_LogonSamLogon(struct ndr_push *ndr, int flags, const struct netr_LogonSamLogon *r)
9504 {
9505         if (flags & NDR_IN) {
9506                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
9507                 if (r->in.server_name) {
9508                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9509                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9510                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9511                         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));
9512                 }
9513                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
9514                 if (r->in.computer_name) {
9515                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
9516                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9517                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
9518                         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));
9519                 }
9520                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.credential));
9521                 if (r->in.credential) {
9522                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
9523                 }
9524                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.return_authenticator));
9525                 if (r->in.return_authenticator) {
9526                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
9527                 }
9528                 NDR_CHECK(ndr_push_netr_LogonInfoClass(ndr, NDR_SCALARS, r->in.logon_level));
9529                 if (r->in.logon == NULL) {
9530                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9531                 }
9532                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.logon, r->in.logon_level));
9533                 NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
9534                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.validation_level));
9535         }
9536         if (flags & NDR_OUT) {
9537                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.return_authenticator));
9538                 if (r->out.return_authenticator) {
9539                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
9540                 }
9541                 if (r->out.validation == NULL) {
9542                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9543                 }
9544                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.validation, r->in.validation_level));
9545                 NDR_CHECK(ndr_push_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
9546                 if (r->out.authoritative == NULL) {
9547                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9548                 }
9549                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->out.authoritative));
9550                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
9551         }
9552         return NDR_ERR_SUCCESS;
9553 }
9554
9555 static enum ndr_err_code ndr_pull_netr_LogonSamLogon(struct ndr_pull *ndr, int flags, struct netr_LogonSamLogon *r)
9556 {
9557         uint32_t _ptr_server_name;
9558         uint32_t _ptr_computer_name;
9559         uint32_t _ptr_credential;
9560         uint32_t _ptr_return_authenticator;
9561         TALLOC_CTX *_mem_save_server_name_0;
9562         TALLOC_CTX *_mem_save_computer_name_0;
9563         TALLOC_CTX *_mem_save_credential_0;
9564         TALLOC_CTX *_mem_save_return_authenticator_0;
9565         TALLOC_CTX *_mem_save_logon_0;
9566         TALLOC_CTX *_mem_save_validation_0;
9567         TALLOC_CTX *_mem_save_authoritative_0;
9568         if (flags & NDR_IN) {
9569                 ZERO_STRUCT(r->out);
9570
9571                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
9572                 if (_ptr_server_name) {
9573                         NDR_PULL_ALLOC(ndr, r->in.server_name);
9574                 } else {
9575                         r->in.server_name = NULL;
9576                 }
9577                 if (r->in.server_name) {
9578                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
9579                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
9580                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
9581                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
9582                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
9583                                 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));
9584                         }
9585                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
9586                         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));
9587                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
9588                 }
9589                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
9590                 if (_ptr_computer_name) {
9591                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
9592                 } else {
9593                         r->in.computer_name = NULL;
9594                 }
9595                 if (r->in.computer_name) {
9596                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
9597                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
9598                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
9599                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
9600                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
9601                                 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));
9602                         }
9603                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
9604                         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));
9605                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
9606                 }
9607                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_credential));
9608                 if (_ptr_credential) {
9609                         NDR_PULL_ALLOC(ndr, r->in.credential);
9610                 } else {
9611                         r->in.credential = NULL;
9612                 }
9613                 if (r->in.credential) {
9614                         _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
9615                         NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, 0);
9616                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
9617                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, 0);
9618                 }
9619                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
9620                 if (_ptr_return_authenticator) {
9621                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
9622                 } else {
9623                         r->in.return_authenticator = NULL;
9624                 }
9625                 if (r->in.return_authenticator) {
9626                         _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
9627                         NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, 0);
9628                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
9629                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
9630                 }
9631                 NDR_CHECK(ndr_pull_netr_LogonInfoClass(ndr, NDR_SCALARS, &r->in.logon_level));
9632                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9633                         NDR_PULL_ALLOC(ndr, r->in.logon);
9634                 }
9635                 _mem_save_logon_0 = NDR_PULL_GET_MEM_CTX(ndr);
9636                 NDR_PULL_SET_MEM_CTX(ndr, r->in.logon, LIBNDR_FLAG_REF_ALLOC);
9637                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.logon, r->in.logon_level));
9638                 NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
9639                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_0, LIBNDR_FLAG_REF_ALLOC);
9640                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.validation_level));
9641                 NDR_PULL_ALLOC(ndr, r->out.validation);
9642                 ZERO_STRUCTP(r->out.validation);
9643                 NDR_PULL_ALLOC(ndr, r->out.authoritative);
9644                 ZERO_STRUCTP(r->out.authoritative);
9645         }
9646         if (flags & NDR_OUT) {
9647                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
9648                 if (_ptr_return_authenticator) {
9649                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
9650                 } else {
9651                         r->out.return_authenticator = NULL;
9652                 }
9653                 if (r->out.return_authenticator) {
9654                         _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
9655                         NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, 0);
9656                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
9657                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
9658                 }
9659                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9660                         NDR_PULL_ALLOC(ndr, r->out.validation);
9661                 }
9662                 _mem_save_validation_0 = NDR_PULL_GET_MEM_CTX(ndr);
9663                 NDR_PULL_SET_MEM_CTX(ndr, r->out.validation, LIBNDR_FLAG_REF_ALLOC);
9664                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.validation, r->in.validation_level));
9665                 NDR_CHECK(ndr_pull_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
9666                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_validation_0, LIBNDR_FLAG_REF_ALLOC);
9667                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
9668                         NDR_PULL_ALLOC(ndr, r->out.authoritative);
9669                 }
9670                 _mem_save_authoritative_0 = NDR_PULL_GET_MEM_CTX(ndr);
9671                 NDR_PULL_SET_MEM_CTX(ndr, r->out.authoritative, LIBNDR_FLAG_REF_ALLOC);
9672                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->out.authoritative));
9673                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_authoritative_0, LIBNDR_FLAG_REF_ALLOC);
9674                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
9675         }
9676         return NDR_ERR_SUCCESS;
9677 }
9678
9679 _PUBLIC_ void ndr_print_netr_LogonSamLogon(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogon *r)
9680 {
9681         ndr_print_struct(ndr, name, "netr_LogonSamLogon");
9682         ndr->depth++;
9683         if (flags & NDR_SET_VALUES) {
9684                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
9685         }
9686         if (flags & NDR_IN) {
9687                 ndr_print_struct(ndr, "in", "netr_LogonSamLogon");
9688                 ndr->depth++;
9689                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
9690                 ndr->depth++;
9691                 if (r->in.server_name) {
9692                         ndr_print_string(ndr, "server_name", r->in.server_name);
9693                 }
9694                 ndr->depth--;
9695                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
9696                 ndr->depth++;
9697                 if (r->in.computer_name) {
9698                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
9699                 }
9700                 ndr->depth--;
9701                 ndr_print_ptr(ndr, "credential", r->in.credential);
9702                 ndr->depth++;
9703                 if (r->in.credential) {
9704                         ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
9705                 }
9706                 ndr->depth--;
9707                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
9708                 ndr->depth++;
9709                 if (r->in.return_authenticator) {
9710                         ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
9711                 }
9712                 ndr->depth--;
9713                 ndr_print_netr_LogonInfoClass(ndr, "logon_level", r->in.logon_level);
9714                 ndr_print_ptr(ndr, "logon", r->in.logon);
9715                 ndr->depth++;
9716                 ndr_print_set_switch_value(ndr, r->in.logon, r->in.logon_level);
9717                 ndr_print_netr_LogonLevel(ndr, "logon", r->in.logon);
9718                 ndr->depth--;
9719                 ndr_print_uint16(ndr, "validation_level", r->in.validation_level);
9720                 ndr->depth--;
9721         }
9722         if (flags & NDR_OUT) {
9723                 ndr_print_struct(ndr, "out", "netr_LogonSamLogon");
9724                 ndr->depth++;
9725                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
9726                 ndr->depth++;
9727                 if (r->out.return_authenticator) {
9728                         ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
9729                 }
9730                 ndr->depth--;
9731                 ndr_print_ptr(ndr, "validation", r->out.validation);
9732                 ndr->depth++;
9733                 ndr_print_set_switch_value(ndr, r->out.validation, r->in.validation_level);
9734                 ndr_print_netr_Validation(ndr, "validation", r->out.validation);
9735                 ndr->depth--;
9736                 ndr_print_ptr(ndr, "authoritative", r->out.authoritative);
9737                 ndr->depth++;
9738                 ndr_print_uint8(ndr, "authoritative", *r->out.authoritative);
9739                 ndr->depth--;
9740                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
9741                 ndr->depth--;
9742         }
9743         ndr->depth--;
9744 }
9745
9746 static enum ndr_err_code ndr_push_netr_LogonSamLogoff(struct ndr_push *ndr, int flags, const struct netr_LogonSamLogoff *r)
9747 {
9748         if (flags & NDR_IN) {
9749                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
9750                 if (r->in.server_name) {
9751                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9752                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9753                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9754                         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));
9755                 }
9756                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
9757                 if (r->in.computer_name) {
9758                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
9759                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9760                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
9761                         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));
9762                 }
9763                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.credential));
9764                 if (r->in.credential) {
9765                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
9766                 }
9767                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.return_authenticator));
9768                 if (r->in.return_authenticator) {
9769                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
9770                 }
9771                 NDR_CHECK(ndr_push_netr_LogonInfoClass(ndr, NDR_SCALARS, r->in.logon_level));
9772                 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
9773                 NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
9774         }
9775         if (flags & NDR_OUT) {
9776                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.return_authenticator));
9777                 if (r->out.return_authenticator) {
9778                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
9779                 }
9780                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
9781         }
9782         return NDR_ERR_SUCCESS;
9783 }
9784
9785 static enum ndr_err_code ndr_pull_netr_LogonSamLogoff(struct ndr_pull *ndr, int flags, struct netr_LogonSamLogoff *r)
9786 {
9787         uint32_t _ptr_server_name;
9788         uint32_t _ptr_computer_name;
9789         uint32_t _ptr_credential;
9790         uint32_t _ptr_return_authenticator;
9791         TALLOC_CTX *_mem_save_server_name_0;
9792         TALLOC_CTX *_mem_save_computer_name_0;
9793         TALLOC_CTX *_mem_save_credential_0;
9794         TALLOC_CTX *_mem_save_return_authenticator_0;
9795         if (flags & NDR_IN) {
9796                 ZERO_STRUCT(r->out);
9797
9798                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
9799                 if (_ptr_server_name) {
9800                         NDR_PULL_ALLOC(ndr, r->in.server_name);
9801                 } else {
9802                         r->in.server_name = NULL;
9803                 }
9804                 if (r->in.server_name) {
9805                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
9806                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
9807                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
9808                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
9809                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
9810                                 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));
9811                         }
9812                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
9813                         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));
9814                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
9815                 }
9816                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
9817                 if (_ptr_computer_name) {
9818                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
9819                 } else {
9820                         r->in.computer_name = NULL;
9821                 }
9822                 if (r->in.computer_name) {
9823                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
9824                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
9825                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
9826                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
9827                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
9828                                 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));
9829                         }
9830                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
9831                         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));
9832                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
9833                 }
9834                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_credential));
9835                 if (_ptr_credential) {
9836                         NDR_PULL_ALLOC(ndr, r->in.credential);
9837                 } else {
9838                         r->in.credential = NULL;
9839                 }
9840                 if (r->in.credential) {
9841                         _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
9842                         NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, 0);
9843                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
9844                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, 0);
9845                 }
9846                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
9847                 if (_ptr_return_authenticator) {
9848                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
9849                 } else {
9850                         r->in.return_authenticator = NULL;
9851                 }
9852                 if (r->in.return_authenticator) {
9853                         _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
9854                         NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, 0);
9855                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
9856                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
9857                 }
9858                 NDR_CHECK(ndr_pull_netr_LogonInfoClass(ndr, NDR_SCALARS, &r->in.logon_level));
9859                 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->in.logon, r->in.logon_level));
9860                 NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.logon));
9861         }
9862         if (flags & NDR_OUT) {
9863                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
9864                 if (_ptr_return_authenticator) {
9865                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
9866                 } else {
9867                         r->out.return_authenticator = NULL;
9868                 }
9869                 if (r->out.return_authenticator) {
9870                         _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
9871                         NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, 0);
9872                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
9873                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
9874                 }
9875                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
9876         }
9877         return NDR_ERR_SUCCESS;
9878 }
9879
9880 _PUBLIC_ void ndr_print_netr_LogonSamLogoff(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogoff *r)
9881 {
9882         ndr_print_struct(ndr, name, "netr_LogonSamLogoff");
9883         ndr->depth++;
9884         if (flags & NDR_SET_VALUES) {
9885                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
9886         }
9887         if (flags & NDR_IN) {
9888                 ndr_print_struct(ndr, "in", "netr_LogonSamLogoff");
9889                 ndr->depth++;
9890                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
9891                 ndr->depth++;
9892                 if (r->in.server_name) {
9893                         ndr_print_string(ndr, "server_name", r->in.server_name);
9894                 }
9895                 ndr->depth--;
9896                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
9897                 ndr->depth++;
9898                 if (r->in.computer_name) {
9899                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
9900                 }
9901                 ndr->depth--;
9902                 ndr_print_ptr(ndr, "credential", r->in.credential);
9903                 ndr->depth++;
9904                 if (r->in.credential) {
9905                         ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
9906                 }
9907                 ndr->depth--;
9908                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
9909                 ndr->depth++;
9910                 if (r->in.return_authenticator) {
9911                         ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
9912                 }
9913                 ndr->depth--;
9914                 ndr_print_netr_LogonInfoClass(ndr, "logon_level", r->in.logon_level);
9915                 ndr_print_set_switch_value(ndr, &r->in.logon, r->in.logon_level);
9916                 ndr_print_netr_LogonLevel(ndr, "logon", &r->in.logon);
9917                 ndr->depth--;
9918         }
9919         if (flags & NDR_OUT) {
9920                 ndr_print_struct(ndr, "out", "netr_LogonSamLogoff");
9921                 ndr->depth++;
9922                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
9923                 ndr->depth++;
9924                 if (r->out.return_authenticator) {
9925                         ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
9926                 }
9927                 ndr->depth--;
9928                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
9929                 ndr->depth--;
9930         }
9931         ndr->depth--;
9932 }
9933
9934 _PUBLIC_ enum ndr_err_code ndr_push_netr_ServerReqChallenge(struct ndr_push *ndr, int flags, const struct netr_ServerReqChallenge *r)
9935 {
9936         if (flags & NDR_IN) {
9937                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
9938                 if (r->in.server_name) {
9939                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9940                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9941                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
9942                         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));
9943                 }
9944                 if (r->in.computer_name == NULL) {
9945                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9946                 }
9947                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
9948                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
9949                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
9950                 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));
9951                 if (r->in.credentials == NULL) {
9952                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9953                 }
9954                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
9955         }
9956         if (flags & NDR_OUT) {
9957                 if (r->out.return_credentials == NULL) {
9958                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
9959                 }
9960                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
9961                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
9962         }
9963         return NDR_ERR_SUCCESS;
9964 }
9965
9966 _PUBLIC_ enum ndr_err_code ndr_pull_netr_ServerReqChallenge(struct ndr_pull *ndr, int flags, struct netr_ServerReqChallenge *r)
9967 {
9968         uint32_t _ptr_server_name;
9969         TALLOC_CTX *_mem_save_server_name_0;
9970         TALLOC_CTX *_mem_save_credentials_0;
9971         TALLOC_CTX *_mem_save_return_credentials_0;
9972         if (flags & NDR_IN) {
9973                 ZERO_STRUCT(r->out);
9974
9975                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
9976                 if (_ptr_server_name) {
9977                         NDR_PULL_ALLOC(ndr, r->in.server_name);
9978                 } else {
9979                         r->in.server_name = NULL;
9980                 }
9981                 if (r->in.server_name) {
9982                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
9983                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
9984                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
9985                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
9986                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
9987                                 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));
9988                         }
9989                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
9990                         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));
9991                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
9992                 }
9993                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
9994                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
9995                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
9996                         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));
9997                 }
9998                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
9999                 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));
10000                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10001                         NDR_PULL_ALLOC(ndr, r->in.credentials);
10002                 }
10003                 _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
10004                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credentials, LIBNDR_FLAG_REF_ALLOC);
10005                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
10006                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
10007                 NDR_PULL_ALLOC(ndr, r->out.return_credentials);
10008                 ZERO_STRUCTP(r->out.return_credentials);
10009         }
10010         if (flags & NDR_OUT) {
10011                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10012                         NDR_PULL_ALLOC(ndr, r->out.return_credentials);
10013                 }
10014                 _mem_save_return_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
10015                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_credentials, LIBNDR_FLAG_REF_ALLOC);
10016                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
10017                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_credentials_0, LIBNDR_FLAG_REF_ALLOC);
10018                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
10019         }
10020         return NDR_ERR_SUCCESS;
10021 }
10022
10023 _PUBLIC_ void ndr_print_netr_ServerReqChallenge(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerReqChallenge *r)
10024 {
10025         ndr_print_struct(ndr, name, "netr_ServerReqChallenge");
10026         ndr->depth++;
10027         if (flags & NDR_SET_VALUES) {
10028                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
10029         }
10030         if (flags & NDR_IN) {
10031                 ndr_print_struct(ndr, "in", "netr_ServerReqChallenge");
10032                 ndr->depth++;
10033                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
10034                 ndr->depth++;
10035                 if (r->in.server_name) {
10036                         ndr_print_string(ndr, "server_name", r->in.server_name);
10037                 }
10038                 ndr->depth--;
10039                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
10040                 ndr->depth++;
10041                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
10042                 ndr->depth--;
10043                 ndr_print_ptr(ndr, "credentials", r->in.credentials);
10044                 ndr->depth++;
10045                 ndr_print_netr_Credential(ndr, "credentials", r->in.credentials);
10046                 ndr->depth--;
10047                 ndr->depth--;
10048         }
10049         if (flags & NDR_OUT) {
10050                 ndr_print_struct(ndr, "out", "netr_ServerReqChallenge");
10051                 ndr->depth++;
10052                 ndr_print_ptr(ndr, "return_credentials", r->out.return_credentials);
10053                 ndr->depth++;
10054                 ndr_print_netr_Credential(ndr, "return_credentials", r->out.return_credentials);
10055                 ndr->depth--;
10056                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
10057                 ndr->depth--;
10058         }
10059         ndr->depth--;
10060 }
10061
10062 static enum ndr_err_code ndr_push_netr_ServerAuthenticate(struct ndr_push *ndr, int flags, const struct netr_ServerAuthenticate *r)
10063 {
10064         if (flags & NDR_IN) {
10065                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
10066                 if (r->in.server_name) {
10067                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
10068                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10069                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
10070                         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));
10071                 }
10072                 if (r->in.account_name == NULL) {
10073                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10074                 }
10075                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
10076                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10077                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
10078                 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));
10079                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
10080                 if (r->in.computer_name == NULL) {
10081                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10082                 }
10083                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
10084                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10085                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
10086                 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));
10087                 if (r->in.credentials == NULL) {
10088                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10089                 }
10090                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
10091         }
10092         if (flags & NDR_OUT) {
10093                 if (r->out.return_credentials == NULL) {
10094                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10095                 }
10096                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
10097                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
10098         }
10099         return NDR_ERR_SUCCESS;
10100 }
10101
10102 static enum ndr_err_code ndr_pull_netr_ServerAuthenticate(struct ndr_pull *ndr, int flags, struct netr_ServerAuthenticate *r)
10103 {
10104         uint32_t _ptr_server_name;
10105         TALLOC_CTX *_mem_save_server_name_0;
10106         TALLOC_CTX *_mem_save_credentials_0;
10107         TALLOC_CTX *_mem_save_return_credentials_0;
10108         if (flags & NDR_IN) {
10109                 ZERO_STRUCT(r->out);
10110
10111                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
10112                 if (_ptr_server_name) {
10113                         NDR_PULL_ALLOC(ndr, r->in.server_name);
10114                 } else {
10115                         r->in.server_name = NULL;
10116                 }
10117                 if (r->in.server_name) {
10118                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
10119                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
10120                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
10121                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
10122                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
10123                                 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));
10124                         }
10125                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
10126                         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));
10127                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
10128                 }
10129                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
10130                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
10131                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
10132                         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));
10133                 }
10134                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
10135                 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));
10136                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
10137                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
10138                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
10139                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
10140                         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));
10141                 }
10142                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
10143                 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));
10144                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10145                         NDR_PULL_ALLOC(ndr, r->in.credentials);
10146                 }
10147                 _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
10148                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credentials, LIBNDR_FLAG_REF_ALLOC);
10149                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
10150                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
10151                 NDR_PULL_ALLOC(ndr, r->out.return_credentials);
10152                 ZERO_STRUCTP(r->out.return_credentials);
10153         }
10154         if (flags & NDR_OUT) {
10155                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10156                         NDR_PULL_ALLOC(ndr, r->out.return_credentials);
10157                 }
10158                 _mem_save_return_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
10159                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_credentials, LIBNDR_FLAG_REF_ALLOC);
10160                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
10161                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_credentials_0, LIBNDR_FLAG_REF_ALLOC);
10162                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
10163         }
10164         return NDR_ERR_SUCCESS;
10165 }
10166
10167 _PUBLIC_ void ndr_print_netr_ServerAuthenticate(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerAuthenticate *r)
10168 {
10169         ndr_print_struct(ndr, name, "netr_ServerAuthenticate");
10170         ndr->depth++;
10171         if (flags & NDR_SET_VALUES) {
10172                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
10173         }
10174         if (flags & NDR_IN) {
10175                 ndr_print_struct(ndr, "in", "netr_ServerAuthenticate");
10176                 ndr->depth++;
10177                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
10178                 ndr->depth++;
10179                 if (r->in.server_name) {
10180                         ndr_print_string(ndr, "server_name", r->in.server_name);
10181                 }
10182                 ndr->depth--;
10183                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
10184                 ndr->depth++;
10185                 ndr_print_string(ndr, "account_name", r->in.account_name);
10186                 ndr->depth--;
10187                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
10188                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
10189                 ndr->depth++;
10190                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
10191                 ndr->depth--;
10192                 ndr_print_ptr(ndr, "credentials", r->in.credentials);
10193                 ndr->depth++;
10194                 ndr_print_netr_Credential(ndr, "credentials", r->in.credentials);
10195                 ndr->depth--;
10196                 ndr->depth--;
10197         }
10198         if (flags & NDR_OUT) {
10199                 ndr_print_struct(ndr, "out", "netr_ServerAuthenticate");
10200                 ndr->depth++;
10201                 ndr_print_ptr(ndr, "return_credentials", r->out.return_credentials);
10202                 ndr->depth++;
10203                 ndr_print_netr_Credential(ndr, "return_credentials", r->out.return_credentials);
10204                 ndr->depth--;
10205                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
10206                 ndr->depth--;
10207         }
10208         ndr->depth--;
10209 }
10210
10211 static enum ndr_err_code ndr_push_netr_ServerPasswordSet(struct ndr_push *ndr, int flags, const struct netr_ServerPasswordSet *r)
10212 {
10213         if (flags & NDR_IN) {
10214                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
10215                 if (r->in.server_name) {
10216                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
10217                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10218                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
10219                         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));
10220                 }
10221                 if (r->in.account_name == NULL) {
10222                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10223                 }
10224                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
10225                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10226                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
10227                 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));
10228                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
10229                 if (r->in.computer_name == NULL) {
10230                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10231                 }
10232                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
10233                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10234                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
10235                 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));
10236                 if (r->in.credential == NULL) {
10237                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10238                 }
10239                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
10240                 if (r->in.new_password == NULL) {
10241                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10242                 }
10243                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, r->in.new_password));
10244         }
10245         if (flags & NDR_OUT) {
10246                 if (r->out.return_authenticator == NULL) {
10247                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10248                 }
10249                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10250                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
10251         }
10252         return NDR_ERR_SUCCESS;
10253 }
10254
10255 static enum ndr_err_code ndr_pull_netr_ServerPasswordSet(struct ndr_pull *ndr, int flags, struct netr_ServerPasswordSet *r)
10256 {
10257         uint32_t _ptr_server_name;
10258         TALLOC_CTX *_mem_save_server_name_0;
10259         TALLOC_CTX *_mem_save_credential_0;
10260         TALLOC_CTX *_mem_save_return_authenticator_0;
10261         TALLOC_CTX *_mem_save_new_password_0;
10262         if (flags & NDR_IN) {
10263                 ZERO_STRUCT(r->out);
10264
10265                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
10266                 if (_ptr_server_name) {
10267                         NDR_PULL_ALLOC(ndr, r->in.server_name);
10268                 } else {
10269                         r->in.server_name = NULL;
10270                 }
10271                 if (r->in.server_name) {
10272                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
10273                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
10274                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
10275                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
10276                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
10277                                 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));
10278                         }
10279                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
10280                         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));
10281                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
10282                 }
10283                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
10284                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
10285                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
10286                         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));
10287                 }
10288                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
10289                 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));
10290                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
10291                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
10292                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
10293                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
10294                         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));
10295                 }
10296                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
10297                 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));
10298                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10299                         NDR_PULL_ALLOC(ndr, r->in.credential);
10300                 }
10301                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
10302                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
10303                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
10304                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
10305                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10306                         NDR_PULL_ALLOC(ndr, r->in.new_password);
10307                 }
10308                 _mem_save_new_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
10309                 NDR_PULL_SET_MEM_CTX(ndr, r->in.new_password, LIBNDR_FLAG_REF_ALLOC);
10310                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, r->in.new_password));
10311                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_new_password_0, LIBNDR_FLAG_REF_ALLOC);
10312                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10313                 ZERO_STRUCTP(r->out.return_authenticator);
10314         }
10315         if (flags & NDR_OUT) {
10316                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10317                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10318                 }
10319                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
10320                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
10321                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10322                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
10323                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
10324         }
10325         return NDR_ERR_SUCCESS;
10326 }
10327
10328 _PUBLIC_ void ndr_print_netr_ServerPasswordSet(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerPasswordSet *r)
10329 {
10330         ndr_print_struct(ndr, name, "netr_ServerPasswordSet");
10331         ndr->depth++;
10332         if (flags & NDR_SET_VALUES) {
10333                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
10334         }
10335         if (flags & NDR_IN) {
10336                 ndr_print_struct(ndr, "in", "netr_ServerPasswordSet");
10337                 ndr->depth++;
10338                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
10339                 ndr->depth++;
10340                 if (r->in.server_name) {
10341                         ndr_print_string(ndr, "server_name", r->in.server_name);
10342                 }
10343                 ndr->depth--;
10344                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
10345                 ndr->depth++;
10346                 ndr_print_string(ndr, "account_name", r->in.account_name);
10347                 ndr->depth--;
10348                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
10349                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
10350                 ndr->depth++;
10351                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
10352                 ndr->depth--;
10353                 ndr_print_ptr(ndr, "credential", r->in.credential);
10354                 ndr->depth++;
10355                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
10356                 ndr->depth--;
10357                 ndr_print_ptr(ndr, "new_password", r->in.new_password);
10358                 ndr->depth++;
10359                 ndr_print_samr_Password(ndr, "new_password", r->in.new_password);
10360                 ndr->depth--;
10361                 ndr->depth--;
10362         }
10363         if (flags & NDR_OUT) {
10364                 ndr_print_struct(ndr, "out", "netr_ServerPasswordSet");
10365                 ndr->depth++;
10366                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
10367                 ndr->depth++;
10368                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
10369                 ndr->depth--;
10370                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
10371                 ndr->depth--;
10372         }
10373         ndr->depth--;
10374 }
10375
10376 static enum ndr_err_code ndr_push_netr_DatabaseDeltas(struct ndr_push *ndr, int flags, const struct netr_DatabaseDeltas *r)
10377 {
10378         if (flags & NDR_IN) {
10379                 if (r->in.logon_server == NULL) {
10380                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10381                 }
10382                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10383                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10384                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10385                 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));
10386                 if (r->in.computername == NULL) {
10387                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10388                 }
10389                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
10390                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10391                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
10392                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
10393                 if (r->in.credential == NULL) {
10394                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10395                 }
10396                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
10397                 if (r->in.return_authenticator == NULL) {
10398                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10399                 }
10400                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
10401                 NDR_CHECK(ndr_push_netr_SamDatabaseID(ndr, NDR_SCALARS, r->in.database_id));
10402                 if (r->in.sequence_num == NULL) {
10403                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10404                 }
10405                 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, *r->in.sequence_num));
10406                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.preferredmaximumlength));
10407         }
10408         if (flags & NDR_OUT) {
10409                 if (r->out.return_authenticator == NULL) {
10410                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10411                 }
10412                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10413                 if (r->out.sequence_num == NULL) {
10414                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10415                 }
10416                 NDR_CHECK(ndr_push_udlong(ndr, NDR_SCALARS, *r->out.sequence_num));
10417                 if (r->out.delta_enum_array == NULL) {
10418                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10419                 }
10420                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.delta_enum_array));
10421                 if (*r->out.delta_enum_array) {
10422                         NDR_CHECK(ndr_push_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
10423                 }
10424                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
10425         }
10426         return NDR_ERR_SUCCESS;
10427 }
10428
10429 static enum ndr_err_code ndr_pull_netr_DatabaseDeltas(struct ndr_pull *ndr, int flags, struct netr_DatabaseDeltas *r)
10430 {
10431         uint32_t _ptr_delta_enum_array;
10432         TALLOC_CTX *_mem_save_credential_0;
10433         TALLOC_CTX *_mem_save_return_authenticator_0;
10434         TALLOC_CTX *_mem_save_sequence_num_0;
10435         TALLOC_CTX *_mem_save_delta_enum_array_0;
10436         TALLOC_CTX *_mem_save_delta_enum_array_1;
10437         if (flags & NDR_IN) {
10438                 ZERO_STRUCT(r->out);
10439
10440                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
10441                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
10442                 if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
10443                         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));
10444                 }
10445                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
10446                 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));
10447                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
10448                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
10449                 if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
10450                         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));
10451                 }
10452                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
10453                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
10454                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10455                         NDR_PULL_ALLOC(ndr, r->in.credential);
10456                 }
10457                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
10458                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
10459                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
10460                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
10461                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10462                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
10463                 }
10464                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
10465                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
10466                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
10467                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
10468                 NDR_CHECK(ndr_pull_netr_SamDatabaseID(ndr, NDR_SCALARS, &r->in.database_id));
10469                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10470                         NDR_PULL_ALLOC(ndr, r->in.sequence_num);
10471                 }
10472                 _mem_save_sequence_num_0 = NDR_PULL_GET_MEM_CTX(ndr);
10473                 NDR_PULL_SET_MEM_CTX(ndr, r->in.sequence_num, LIBNDR_FLAG_REF_ALLOC);
10474                 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, r->in.sequence_num));
10475                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sequence_num_0, LIBNDR_FLAG_REF_ALLOC);
10476                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.preferredmaximumlength));
10477                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10478                 *r->out.return_authenticator = *r->in.return_authenticator;
10479                 NDR_PULL_ALLOC(ndr, r->out.sequence_num);
10480                 *r->out.sequence_num = *r->in.sequence_num;
10481                 NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
10482                 ZERO_STRUCTP(r->out.delta_enum_array);
10483         }
10484         if (flags & NDR_OUT) {
10485                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10486                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10487                 }
10488                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
10489                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
10490                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10491                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
10492                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10493                         NDR_PULL_ALLOC(ndr, r->out.sequence_num);
10494                 }
10495                 _mem_save_sequence_num_0 = NDR_PULL_GET_MEM_CTX(ndr);
10496                 NDR_PULL_SET_MEM_CTX(ndr, r->out.sequence_num, LIBNDR_FLAG_REF_ALLOC);
10497                 NDR_CHECK(ndr_pull_udlong(ndr, NDR_SCALARS, r->out.sequence_num));
10498                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sequence_num_0, LIBNDR_FLAG_REF_ALLOC);
10499                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10500                         NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
10501                 }
10502                 _mem_save_delta_enum_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
10503                 NDR_PULL_SET_MEM_CTX(ndr, r->out.delta_enum_array, LIBNDR_FLAG_REF_ALLOC);
10504                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delta_enum_array));
10505                 if (_ptr_delta_enum_array) {
10506                         NDR_PULL_ALLOC(ndr, *r->out.delta_enum_array);
10507                 } else {
10508                         *r->out.delta_enum_array = NULL;
10509                 }
10510                 if (*r->out.delta_enum_array) {
10511                         _mem_save_delta_enum_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
10512                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.delta_enum_array, 0);
10513                         NDR_CHECK(ndr_pull_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
10514                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_1, 0);
10515                 }
10516                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_0, LIBNDR_FLAG_REF_ALLOC);
10517                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
10518         }
10519         return NDR_ERR_SUCCESS;
10520 }
10521
10522 _PUBLIC_ void ndr_print_netr_DatabaseDeltas(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseDeltas *r)
10523 {
10524         ndr_print_struct(ndr, name, "netr_DatabaseDeltas");
10525         ndr->depth++;
10526         if (flags & NDR_SET_VALUES) {
10527                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
10528         }
10529         if (flags & NDR_IN) {
10530                 ndr_print_struct(ndr, "in", "netr_DatabaseDeltas");
10531                 ndr->depth++;
10532                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
10533                 ndr->depth++;
10534                 ndr_print_string(ndr, "logon_server", r->in.logon_server);
10535                 ndr->depth--;
10536                 ndr_print_ptr(ndr, "computername", r->in.computername);
10537                 ndr->depth++;
10538                 ndr_print_string(ndr, "computername", r->in.computername);
10539                 ndr->depth--;
10540                 ndr_print_ptr(ndr, "credential", r->in.credential);
10541                 ndr->depth++;
10542                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
10543                 ndr->depth--;
10544                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
10545                 ndr->depth++;
10546                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
10547                 ndr->depth--;
10548                 ndr_print_netr_SamDatabaseID(ndr, "database_id", r->in.database_id);
10549                 ndr_print_ptr(ndr, "sequence_num", r->in.sequence_num);
10550                 ndr->depth++;
10551                 ndr_print_udlong(ndr, "sequence_num", *r->in.sequence_num);
10552                 ndr->depth--;
10553                 ndr_print_uint32(ndr, "preferredmaximumlength", r->in.preferredmaximumlength);
10554                 ndr->depth--;
10555         }
10556         if (flags & NDR_OUT) {
10557                 ndr_print_struct(ndr, "out", "netr_DatabaseDeltas");
10558                 ndr->depth++;
10559                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
10560                 ndr->depth++;
10561                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
10562                 ndr->depth--;
10563                 ndr_print_ptr(ndr, "sequence_num", r->out.sequence_num);
10564                 ndr->depth++;
10565                 ndr_print_udlong(ndr, "sequence_num", *r->out.sequence_num);
10566                 ndr->depth--;
10567                 ndr_print_ptr(ndr, "delta_enum_array", r->out.delta_enum_array);
10568                 ndr->depth++;
10569                 ndr_print_ptr(ndr, "delta_enum_array", *r->out.delta_enum_array);
10570                 ndr->depth++;
10571                 if (*r->out.delta_enum_array) {
10572                         ndr_print_netr_DELTA_ENUM_ARRAY(ndr, "delta_enum_array", *r->out.delta_enum_array);
10573                 }
10574                 ndr->depth--;
10575                 ndr->depth--;
10576                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
10577                 ndr->depth--;
10578         }
10579         ndr->depth--;
10580 }
10581
10582 static enum ndr_err_code ndr_push_netr_DatabaseSync(struct ndr_push *ndr, int flags, const struct netr_DatabaseSync *r)
10583 {
10584         if (flags & NDR_IN) {
10585                 if (r->in.logon_server == NULL) {
10586                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10587                 }
10588                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10589                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10590                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10591                 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));
10592                 if (r->in.computername == NULL) {
10593                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10594                 }
10595                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
10596                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10597                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
10598                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
10599                 if (r->in.credential == NULL) {
10600                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10601                 }
10602                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
10603                 if (r->in.return_authenticator == NULL) {
10604                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10605                 }
10606                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
10607                 NDR_CHECK(ndr_push_netr_SamDatabaseID(ndr, NDR_SCALARS, r->in.database_id));
10608                 if (r->in.sync_context == NULL) {
10609                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10610                 }
10611                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.sync_context));
10612                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.preferredmaximumlength));
10613         }
10614         if (flags & NDR_OUT) {
10615                 if (r->out.return_authenticator == NULL) {
10616                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10617                 }
10618                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10619                 if (r->out.sync_context == NULL) {
10620                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10621                 }
10622                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.sync_context));
10623                 if (r->out.delta_enum_array == NULL) {
10624                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10625                 }
10626                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.delta_enum_array));
10627                 if (*r->out.delta_enum_array) {
10628                         NDR_CHECK(ndr_push_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
10629                 }
10630                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
10631         }
10632         return NDR_ERR_SUCCESS;
10633 }
10634
10635 static enum ndr_err_code ndr_pull_netr_DatabaseSync(struct ndr_pull *ndr, int flags, struct netr_DatabaseSync *r)
10636 {
10637         uint32_t _ptr_delta_enum_array;
10638         TALLOC_CTX *_mem_save_credential_0;
10639         TALLOC_CTX *_mem_save_return_authenticator_0;
10640         TALLOC_CTX *_mem_save_sync_context_0;
10641         TALLOC_CTX *_mem_save_delta_enum_array_0;
10642         TALLOC_CTX *_mem_save_delta_enum_array_1;
10643         if (flags & NDR_IN) {
10644                 ZERO_STRUCT(r->out);
10645
10646                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
10647                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
10648                 if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
10649                         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));
10650                 }
10651                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
10652                 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));
10653                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
10654                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
10655                 if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
10656                         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));
10657                 }
10658                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
10659                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
10660                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10661                         NDR_PULL_ALLOC(ndr, r->in.credential);
10662                 }
10663                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
10664                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
10665                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
10666                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
10667                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10668                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
10669                 }
10670                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
10671                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
10672                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
10673                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
10674                 NDR_CHECK(ndr_pull_netr_SamDatabaseID(ndr, NDR_SCALARS, &r->in.database_id));
10675                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10676                         NDR_PULL_ALLOC(ndr, r->in.sync_context);
10677                 }
10678                 _mem_save_sync_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
10679                 NDR_PULL_SET_MEM_CTX(ndr, r->in.sync_context, LIBNDR_FLAG_REF_ALLOC);
10680                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.sync_context));
10681                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sync_context_0, LIBNDR_FLAG_REF_ALLOC);
10682                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.preferredmaximumlength));
10683                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10684                 *r->out.return_authenticator = *r->in.return_authenticator;
10685                 NDR_PULL_ALLOC(ndr, r->out.sync_context);
10686                 *r->out.sync_context = *r->in.sync_context;
10687                 NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
10688                 ZERO_STRUCTP(r->out.delta_enum_array);
10689         }
10690         if (flags & NDR_OUT) {
10691                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10692                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10693                 }
10694                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
10695                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
10696                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10697                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
10698                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10699                         NDR_PULL_ALLOC(ndr, r->out.sync_context);
10700                 }
10701                 _mem_save_sync_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
10702                 NDR_PULL_SET_MEM_CTX(ndr, r->out.sync_context, LIBNDR_FLAG_REF_ALLOC);
10703                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.sync_context));
10704                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sync_context_0, LIBNDR_FLAG_REF_ALLOC);
10705                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10706                         NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
10707                 }
10708                 _mem_save_delta_enum_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
10709                 NDR_PULL_SET_MEM_CTX(ndr, r->out.delta_enum_array, LIBNDR_FLAG_REF_ALLOC);
10710                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delta_enum_array));
10711                 if (_ptr_delta_enum_array) {
10712                         NDR_PULL_ALLOC(ndr, *r->out.delta_enum_array);
10713                 } else {
10714                         *r->out.delta_enum_array = NULL;
10715                 }
10716                 if (*r->out.delta_enum_array) {
10717                         _mem_save_delta_enum_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
10718                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.delta_enum_array, 0);
10719                         NDR_CHECK(ndr_pull_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
10720                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_1, 0);
10721                 }
10722                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_0, LIBNDR_FLAG_REF_ALLOC);
10723                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
10724         }
10725         return NDR_ERR_SUCCESS;
10726 }
10727
10728 _PUBLIC_ void ndr_print_netr_DatabaseSync(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseSync *r)
10729 {
10730         ndr_print_struct(ndr, name, "netr_DatabaseSync");
10731         ndr->depth++;
10732         if (flags & NDR_SET_VALUES) {
10733                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
10734         }
10735         if (flags & NDR_IN) {
10736                 ndr_print_struct(ndr, "in", "netr_DatabaseSync");
10737                 ndr->depth++;
10738                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
10739                 ndr->depth++;
10740                 ndr_print_string(ndr, "logon_server", r->in.logon_server);
10741                 ndr->depth--;
10742                 ndr_print_ptr(ndr, "computername", r->in.computername);
10743                 ndr->depth++;
10744                 ndr_print_string(ndr, "computername", r->in.computername);
10745                 ndr->depth--;
10746                 ndr_print_ptr(ndr, "credential", r->in.credential);
10747                 ndr->depth++;
10748                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
10749                 ndr->depth--;
10750                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
10751                 ndr->depth++;
10752                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
10753                 ndr->depth--;
10754                 ndr_print_netr_SamDatabaseID(ndr, "database_id", r->in.database_id);
10755                 ndr_print_ptr(ndr, "sync_context", r->in.sync_context);
10756                 ndr->depth++;
10757                 ndr_print_uint32(ndr, "sync_context", *r->in.sync_context);
10758                 ndr->depth--;
10759                 ndr_print_uint32(ndr, "preferredmaximumlength", r->in.preferredmaximumlength);
10760                 ndr->depth--;
10761         }
10762         if (flags & NDR_OUT) {
10763                 ndr_print_struct(ndr, "out", "netr_DatabaseSync");
10764                 ndr->depth++;
10765                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
10766                 ndr->depth++;
10767                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
10768                 ndr->depth--;
10769                 ndr_print_ptr(ndr, "sync_context", r->out.sync_context);
10770                 ndr->depth++;
10771                 ndr_print_uint32(ndr, "sync_context", *r->out.sync_context);
10772                 ndr->depth--;
10773                 ndr_print_ptr(ndr, "delta_enum_array", r->out.delta_enum_array);
10774                 ndr->depth++;
10775                 ndr_print_ptr(ndr, "delta_enum_array", *r->out.delta_enum_array);
10776                 ndr->depth++;
10777                 if (*r->out.delta_enum_array) {
10778                         ndr_print_netr_DELTA_ENUM_ARRAY(ndr, "delta_enum_array", *r->out.delta_enum_array);
10779                 }
10780                 ndr->depth--;
10781                 ndr->depth--;
10782                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
10783                 ndr->depth--;
10784         }
10785         ndr->depth--;
10786 }
10787
10788 static enum ndr_err_code ndr_push_netr_AccountDeltas(struct ndr_push *ndr, int flags, const struct netr_AccountDeltas *r)
10789 {
10790         if (flags & NDR_IN) {
10791                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
10792                 if (r->in.logon_server) {
10793                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10794                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10795                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
10796                         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));
10797                 }
10798                 if (r->in.computername == NULL) {
10799                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10800                 }
10801                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
10802                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
10803                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
10804                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
10805                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
10806                 if (r->in.return_authenticator == NULL) {
10807                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10808                 }
10809                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
10810                 NDR_CHECK(ndr_push_netr_UAS_INFO_0(ndr, NDR_SCALARS, &r->in.uas));
10811                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
10812                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
10813                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffersize));
10814         }
10815         if (flags & NDR_OUT) {
10816                 if (r->out.return_authenticator == NULL) {
10817                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10818                 }
10819                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10820                 if (r->out.buffer == NULL) {
10821                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10822                 }
10823                 {
10824                         struct ndr_push *_ndr_buffer;
10825                         NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_buffer, 4, -1));
10826                         NDR_CHECK(ndr_push_netr_AccountBuffer(_ndr_buffer, NDR_SCALARS, r->out.buffer));
10827                         NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_buffer, 4, -1));
10828                 }
10829                 if (r->out.count_returned == NULL) {
10830                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10831                 }
10832                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count_returned));
10833                 if (r->out.total_entries == NULL) {
10834                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10835                 }
10836                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.total_entries));
10837                 if (r->out.recordid == NULL) {
10838                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
10839                 }
10840                 NDR_CHECK(ndr_push_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->out.recordid));
10841                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
10842         }
10843         return NDR_ERR_SUCCESS;
10844 }
10845
10846 static enum ndr_err_code ndr_pull_netr_AccountDeltas(struct ndr_pull *ndr, int flags, struct netr_AccountDeltas *r)
10847 {
10848         uint32_t _ptr_logon_server;
10849         TALLOC_CTX *_mem_save_logon_server_0;
10850         TALLOC_CTX *_mem_save_return_authenticator_0;
10851         TALLOC_CTX *_mem_save_buffer_0;
10852         TALLOC_CTX *_mem_save_count_returned_0;
10853         TALLOC_CTX *_mem_save_total_entries_0;
10854         TALLOC_CTX *_mem_save_recordid_0;
10855         if (flags & NDR_IN) {
10856                 ZERO_STRUCT(r->out);
10857
10858                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
10859                 if (_ptr_logon_server) {
10860                         NDR_PULL_ALLOC(ndr, r->in.logon_server);
10861                 } else {
10862                         r->in.logon_server = NULL;
10863                 }
10864                 if (r->in.logon_server) {
10865                         _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
10866                         NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
10867                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
10868                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
10869                         if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
10870                                 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));
10871                         }
10872                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
10873                         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));
10874                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
10875                 }
10876                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
10877                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
10878                 if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
10879                         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));
10880                 }
10881                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
10882                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
10883                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
10884                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10885                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
10886                 }
10887                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
10888                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
10889                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
10890                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
10891                 NDR_CHECK(ndr_pull_netr_UAS_INFO_0(ndr, NDR_SCALARS, &r->in.uas));
10892                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.count));
10893                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
10894                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffersize));
10895                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10896                 *r->out.return_authenticator = *r->in.return_authenticator;
10897                 NDR_PULL_ALLOC(ndr, r->out.buffer);
10898                 ZERO_STRUCTP(r->out.buffer);
10899                 NDR_PULL_ALLOC(ndr, r->out.count_returned);
10900                 ZERO_STRUCTP(r->out.count_returned);
10901                 NDR_PULL_ALLOC(ndr, r->out.total_entries);
10902                 ZERO_STRUCTP(r->out.total_entries);
10903                 NDR_PULL_ALLOC(ndr, r->out.recordid);
10904                 ZERO_STRUCTP(r->out.recordid);
10905         }
10906         if (flags & NDR_OUT) {
10907                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10908                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
10909                 }
10910                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
10911                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
10912                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
10913                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
10914                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10915                         NDR_PULL_ALLOC(ndr, r->out.buffer);
10916                 }
10917                 _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
10918                 NDR_PULL_SET_MEM_CTX(ndr, r->out.buffer, LIBNDR_FLAG_REF_ALLOC);
10919                 {
10920                         struct ndr_pull *_ndr_buffer;
10921                         NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_buffer, 4, -1));
10922                         NDR_CHECK(ndr_pull_netr_AccountBuffer(_ndr_buffer, NDR_SCALARS, r->out.buffer));
10923                         NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_buffer, 4, -1));
10924                 }
10925                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, LIBNDR_FLAG_REF_ALLOC);
10926                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10927                         NDR_PULL_ALLOC(ndr, r->out.count_returned);
10928                 }
10929                 _mem_save_count_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
10930                 NDR_PULL_SET_MEM_CTX(ndr, r->out.count_returned, LIBNDR_FLAG_REF_ALLOC);
10931                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count_returned));
10932                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_returned_0, LIBNDR_FLAG_REF_ALLOC);
10933                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10934                         NDR_PULL_ALLOC(ndr, r->out.total_entries);
10935                 }
10936                 _mem_save_total_entries_0 = NDR_PULL_GET_MEM_CTX(ndr);
10937                 NDR_PULL_SET_MEM_CTX(ndr, r->out.total_entries, LIBNDR_FLAG_REF_ALLOC);
10938                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.total_entries));
10939                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_total_entries_0, LIBNDR_FLAG_REF_ALLOC);
10940                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
10941                         NDR_PULL_ALLOC(ndr, r->out.recordid);
10942                 }
10943                 _mem_save_recordid_0 = NDR_PULL_GET_MEM_CTX(ndr);
10944                 NDR_PULL_SET_MEM_CTX(ndr, r->out.recordid, LIBNDR_FLAG_REF_ALLOC);
10945                 NDR_CHECK(ndr_pull_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->out.recordid));
10946                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_recordid_0, LIBNDR_FLAG_REF_ALLOC);
10947                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
10948         }
10949         return NDR_ERR_SUCCESS;
10950 }
10951
10952 _PUBLIC_ void ndr_print_netr_AccountDeltas(struct ndr_print *ndr, const char *name, int flags, const struct netr_AccountDeltas *r)
10953 {
10954         ndr_print_struct(ndr, name, "netr_AccountDeltas");
10955         ndr->depth++;
10956         if (flags & NDR_SET_VALUES) {
10957                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
10958         }
10959         if (flags & NDR_IN) {
10960                 ndr_print_struct(ndr, "in", "netr_AccountDeltas");
10961                 ndr->depth++;
10962                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
10963                 ndr->depth++;
10964                 if (r->in.logon_server) {
10965                         ndr_print_string(ndr, "logon_server", r->in.logon_server);
10966                 }
10967                 ndr->depth--;
10968                 ndr_print_ptr(ndr, "computername", r->in.computername);
10969                 ndr->depth++;
10970                 ndr_print_string(ndr, "computername", r->in.computername);
10971                 ndr->depth--;
10972                 ndr_print_netr_Authenticator(ndr, "credential", &r->in.credential);
10973                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
10974                 ndr->depth++;
10975                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
10976                 ndr->depth--;
10977                 ndr_print_netr_UAS_INFO_0(ndr, "uas", &r->in.uas);
10978                 ndr_print_uint32(ndr, "count", r->in.count);
10979                 ndr_print_uint32(ndr, "level", r->in.level);
10980                 ndr_print_uint32(ndr, "buffersize", r->in.buffersize);
10981                 ndr->depth--;
10982         }
10983         if (flags & NDR_OUT) {
10984                 ndr_print_struct(ndr, "out", "netr_AccountDeltas");
10985                 ndr->depth++;
10986                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
10987                 ndr->depth++;
10988                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
10989                 ndr->depth--;
10990                 ndr_print_ptr(ndr, "buffer", r->out.buffer);
10991                 ndr->depth++;
10992                 ndr_print_netr_AccountBuffer(ndr, "buffer", r->out.buffer);
10993                 ndr->depth--;
10994                 ndr_print_ptr(ndr, "count_returned", r->out.count_returned);
10995                 ndr->depth++;
10996                 ndr_print_uint32(ndr, "count_returned", *r->out.count_returned);
10997                 ndr->depth--;
10998                 ndr_print_ptr(ndr, "total_entries", r->out.total_entries);
10999                 ndr->depth++;
11000                 ndr_print_uint32(ndr, "total_entries", *r->out.total_entries);
11001                 ndr->depth--;
11002                 ndr_print_ptr(ndr, "recordid", r->out.recordid);
11003                 ndr->depth++;
11004                 ndr_print_netr_UAS_INFO_0(ndr, "recordid", r->out.recordid);
11005                 ndr->depth--;
11006                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
11007                 ndr->depth--;
11008         }
11009         ndr->depth--;
11010 }
11011
11012 static enum ndr_err_code ndr_push_netr_AccountSync(struct ndr_push *ndr, int flags, const struct netr_AccountSync *r)
11013 {
11014         if (flags & NDR_IN) {
11015                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
11016                 if (r->in.logon_server) {
11017                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11018                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11019                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11020                         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));
11021                 }
11022                 if (r->in.computername == NULL) {
11023                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11024                 }
11025                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
11026                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11027                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
11028                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11029                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
11030                 if (r->in.return_authenticator == NULL) {
11031                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11032                 }
11033                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
11034                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.reference));
11035                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
11036                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buffersize));
11037                 if (r->in.recordid == NULL) {
11038                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11039                 }
11040                 NDR_CHECK(ndr_push_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->in.recordid));
11041         }
11042         if (flags & NDR_OUT) {
11043                 if (r->out.return_authenticator == NULL) {
11044                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11045                 }
11046                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
11047                 if (r->out.buffer == NULL) {
11048                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11049                 }
11050                 {
11051                         struct ndr_push *_ndr_buffer;
11052                         NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_buffer, 4, -1));
11053                         NDR_CHECK(ndr_push_netr_AccountBuffer(_ndr_buffer, NDR_SCALARS, r->out.buffer));
11054                         NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_buffer, 4, -1));
11055                 }
11056                 if (r->out.count_returned == NULL) {
11057                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11058                 }
11059                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.count_returned));
11060                 if (r->out.total_entries == NULL) {
11061                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11062                 }
11063                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.total_entries));
11064                 if (r->out.next_reference == NULL) {
11065                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11066                 }
11067                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.next_reference));
11068                 if (r->out.recordid == NULL) {
11069                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11070                 }
11071                 NDR_CHECK(ndr_push_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->out.recordid));
11072                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
11073         }
11074         return NDR_ERR_SUCCESS;
11075 }
11076
11077 static enum ndr_err_code ndr_pull_netr_AccountSync(struct ndr_pull *ndr, int flags, struct netr_AccountSync *r)
11078 {
11079         uint32_t _ptr_logon_server;
11080         TALLOC_CTX *_mem_save_logon_server_0;
11081         TALLOC_CTX *_mem_save_return_authenticator_0;
11082         TALLOC_CTX *_mem_save_buffer_0;
11083         TALLOC_CTX *_mem_save_count_returned_0;
11084         TALLOC_CTX *_mem_save_total_entries_0;
11085         TALLOC_CTX *_mem_save_next_reference_0;
11086         TALLOC_CTX *_mem_save_recordid_0;
11087         if (flags & NDR_IN) {
11088                 ZERO_STRUCT(r->out);
11089
11090                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
11091                 if (_ptr_logon_server) {
11092                         NDR_PULL_ALLOC(ndr, r->in.logon_server);
11093                 } else {
11094                         r->in.logon_server = NULL;
11095                 }
11096                 if (r->in.logon_server) {
11097                         _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
11098                         NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
11099                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
11100                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
11101                         if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
11102                                 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));
11103                         }
11104                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
11105                         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));
11106                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
11107                 }
11108                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
11109                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
11110                 if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
11111                         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));
11112                 }
11113                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
11114                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
11115                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, &r->in.credential));
11116                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11117                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
11118                 }
11119                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
11120                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
11121                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
11122                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
11123                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.reference));
11124                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
11125                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buffersize));
11126                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11127                         NDR_PULL_ALLOC(ndr, r->in.recordid);
11128                 }
11129                 _mem_save_recordid_0 = NDR_PULL_GET_MEM_CTX(ndr);
11130                 NDR_PULL_SET_MEM_CTX(ndr, r->in.recordid, LIBNDR_FLAG_REF_ALLOC);
11131                 NDR_CHECK(ndr_pull_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->in.recordid));
11132                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_recordid_0, LIBNDR_FLAG_REF_ALLOC);
11133                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
11134                 *r->out.return_authenticator = *r->in.return_authenticator;
11135                 NDR_PULL_ALLOC(ndr, r->out.buffer);
11136                 ZERO_STRUCTP(r->out.buffer);
11137                 NDR_PULL_ALLOC(ndr, r->out.count_returned);
11138                 ZERO_STRUCTP(r->out.count_returned);
11139                 NDR_PULL_ALLOC(ndr, r->out.total_entries);
11140                 ZERO_STRUCTP(r->out.total_entries);
11141                 NDR_PULL_ALLOC(ndr, r->out.next_reference);
11142                 ZERO_STRUCTP(r->out.next_reference);
11143                 NDR_PULL_ALLOC(ndr, r->out.recordid);
11144                 *r->out.recordid = *r->in.recordid;
11145         }
11146         if (flags & NDR_OUT) {
11147                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11148                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
11149                 }
11150                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
11151                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
11152                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
11153                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
11154                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11155                         NDR_PULL_ALLOC(ndr, r->out.buffer);
11156                 }
11157                 _mem_save_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
11158                 NDR_PULL_SET_MEM_CTX(ndr, r->out.buffer, LIBNDR_FLAG_REF_ALLOC);
11159                 {
11160                         struct ndr_pull *_ndr_buffer;
11161                         NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_buffer, 4, -1));
11162                         NDR_CHECK(ndr_pull_netr_AccountBuffer(_ndr_buffer, NDR_SCALARS, r->out.buffer));
11163                         NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_buffer, 4, -1));
11164                 }
11165                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, LIBNDR_FLAG_REF_ALLOC);
11166                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11167                         NDR_PULL_ALLOC(ndr, r->out.count_returned);
11168                 }
11169                 _mem_save_count_returned_0 = NDR_PULL_GET_MEM_CTX(ndr);
11170                 NDR_PULL_SET_MEM_CTX(ndr, r->out.count_returned, LIBNDR_FLAG_REF_ALLOC);
11171                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.count_returned));
11172                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_count_returned_0, LIBNDR_FLAG_REF_ALLOC);
11173                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11174                         NDR_PULL_ALLOC(ndr, r->out.total_entries);
11175                 }
11176                 _mem_save_total_entries_0 = NDR_PULL_GET_MEM_CTX(ndr);
11177                 NDR_PULL_SET_MEM_CTX(ndr, r->out.total_entries, LIBNDR_FLAG_REF_ALLOC);
11178                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.total_entries));
11179                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_total_entries_0, LIBNDR_FLAG_REF_ALLOC);
11180                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11181                         NDR_PULL_ALLOC(ndr, r->out.next_reference);
11182                 }
11183                 _mem_save_next_reference_0 = NDR_PULL_GET_MEM_CTX(ndr);
11184                 NDR_PULL_SET_MEM_CTX(ndr, r->out.next_reference, LIBNDR_FLAG_REF_ALLOC);
11185                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.next_reference));
11186                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_next_reference_0, LIBNDR_FLAG_REF_ALLOC);
11187                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11188                         NDR_PULL_ALLOC(ndr, r->out.recordid);
11189                 }
11190                 _mem_save_recordid_0 = NDR_PULL_GET_MEM_CTX(ndr);
11191                 NDR_PULL_SET_MEM_CTX(ndr, r->out.recordid, LIBNDR_FLAG_REF_ALLOC);
11192                 NDR_CHECK(ndr_pull_netr_UAS_INFO_0(ndr, NDR_SCALARS, r->out.recordid));
11193                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_recordid_0, LIBNDR_FLAG_REF_ALLOC);
11194                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
11195         }
11196         return NDR_ERR_SUCCESS;
11197 }
11198
11199 _PUBLIC_ void ndr_print_netr_AccountSync(struct ndr_print *ndr, const char *name, int flags, const struct netr_AccountSync *r)
11200 {
11201         ndr_print_struct(ndr, name, "netr_AccountSync");
11202         ndr->depth++;
11203         if (flags & NDR_SET_VALUES) {
11204                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11205         }
11206         if (flags & NDR_IN) {
11207                 ndr_print_struct(ndr, "in", "netr_AccountSync");
11208                 ndr->depth++;
11209                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
11210                 ndr->depth++;
11211                 if (r->in.logon_server) {
11212                         ndr_print_string(ndr, "logon_server", r->in.logon_server);
11213                 }
11214                 ndr->depth--;
11215                 ndr_print_ptr(ndr, "computername", r->in.computername);
11216                 ndr->depth++;
11217                 ndr_print_string(ndr, "computername", r->in.computername);
11218                 ndr->depth--;
11219                 ndr_print_netr_Authenticator(ndr, "credential", &r->in.credential);
11220                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
11221                 ndr->depth++;
11222                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
11223                 ndr->depth--;
11224                 ndr_print_uint32(ndr, "reference", r->in.reference);
11225                 ndr_print_uint32(ndr, "level", r->in.level);
11226                 ndr_print_uint32(ndr, "buffersize", r->in.buffersize);
11227                 ndr_print_ptr(ndr, "recordid", r->in.recordid);
11228                 ndr->depth++;
11229                 ndr_print_netr_UAS_INFO_0(ndr, "recordid", r->in.recordid);
11230                 ndr->depth--;
11231                 ndr->depth--;
11232         }
11233         if (flags & NDR_OUT) {
11234                 ndr_print_struct(ndr, "out", "netr_AccountSync");
11235                 ndr->depth++;
11236                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
11237                 ndr->depth++;
11238                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
11239                 ndr->depth--;
11240                 ndr_print_ptr(ndr, "buffer", r->out.buffer);
11241                 ndr->depth++;
11242                 ndr_print_netr_AccountBuffer(ndr, "buffer", r->out.buffer);
11243                 ndr->depth--;
11244                 ndr_print_ptr(ndr, "count_returned", r->out.count_returned);
11245                 ndr->depth++;
11246                 ndr_print_uint32(ndr, "count_returned", *r->out.count_returned);
11247                 ndr->depth--;
11248                 ndr_print_ptr(ndr, "total_entries", r->out.total_entries);
11249                 ndr->depth++;
11250                 ndr_print_uint32(ndr, "total_entries", *r->out.total_entries);
11251                 ndr->depth--;
11252                 ndr_print_ptr(ndr, "next_reference", r->out.next_reference);
11253                 ndr->depth++;
11254                 ndr_print_uint32(ndr, "next_reference", *r->out.next_reference);
11255                 ndr->depth--;
11256                 ndr_print_ptr(ndr, "recordid", r->out.recordid);
11257                 ndr->depth++;
11258                 ndr_print_netr_UAS_INFO_0(ndr, "recordid", r->out.recordid);
11259                 ndr->depth--;
11260                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
11261                 ndr->depth--;
11262         }
11263         ndr->depth--;
11264 }
11265
11266 static enum ndr_err_code ndr_push_netr_GetDcName(struct ndr_push *ndr, int flags, const struct netr_GetDcName *r)
11267 {
11268         if (flags & NDR_IN) {
11269                 if (r->in.logon_server == NULL) {
11270                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11271                 }
11272                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11273                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11274                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11275                 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));
11276                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domainname));
11277                 if (r->in.domainname) {
11278                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domainname, CH_UTF16)));
11279                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11280                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domainname, CH_UTF16)));
11281                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.domainname, ndr_charset_length(r->in.domainname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11282                 }
11283         }
11284         if (flags & NDR_OUT) {
11285                 if (r->out.dcname == NULL) {
11286                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11287                 }
11288                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.dcname));
11289                 if (*r->out.dcname) {
11290                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.dcname, CH_UTF16)));
11291                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11292                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.dcname, CH_UTF16)));
11293                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.dcname, ndr_charset_length(*r->out.dcname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11294                 }
11295                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
11296         }
11297         return NDR_ERR_SUCCESS;
11298 }
11299
11300 static enum ndr_err_code ndr_pull_netr_GetDcName(struct ndr_pull *ndr, int flags, struct netr_GetDcName *r)
11301 {
11302         uint32_t _ptr_domainname;
11303         uint32_t _ptr_dcname;
11304         TALLOC_CTX *_mem_save_domainname_0;
11305         TALLOC_CTX *_mem_save_dcname_0;
11306         TALLOC_CTX *_mem_save_dcname_1;
11307         if (flags & NDR_IN) {
11308                 ZERO_STRUCT(r->out);
11309
11310                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
11311                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
11312                 if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
11313                         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));
11314                 }
11315                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
11316                 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));
11317                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domainname));
11318                 if (_ptr_domainname) {
11319                         NDR_PULL_ALLOC(ndr, r->in.domainname);
11320                 } else {
11321                         r->in.domainname = NULL;
11322                 }
11323                 if (r->in.domainname) {
11324                         _mem_save_domainname_0 = NDR_PULL_GET_MEM_CTX(ndr);
11325                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domainname, 0);
11326                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domainname));
11327                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domainname));
11328                         if (ndr_get_array_length(ndr, &r->in.domainname) > ndr_get_array_size(ndr, &r->in.domainname)) {
11329                                 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));
11330                         }
11331                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domainname), sizeof(uint16_t)));
11332                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.domainname, ndr_get_array_length(ndr, &r->in.domainname), sizeof(uint16_t), CH_UTF16));
11333                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domainname_0, 0);
11334                 }
11335                 NDR_PULL_ALLOC(ndr, r->out.dcname);
11336                 ZERO_STRUCTP(r->out.dcname);
11337         }
11338         if (flags & NDR_OUT) {
11339                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11340                         NDR_PULL_ALLOC(ndr, r->out.dcname);
11341                 }
11342                 _mem_save_dcname_0 = NDR_PULL_GET_MEM_CTX(ndr);
11343                 NDR_PULL_SET_MEM_CTX(ndr, r->out.dcname, LIBNDR_FLAG_REF_ALLOC);
11344                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dcname));
11345                 if (_ptr_dcname) {
11346                         NDR_PULL_ALLOC(ndr, *r->out.dcname);
11347                 } else {
11348                         *r->out.dcname = NULL;
11349                 }
11350                 if (*r->out.dcname) {
11351                         _mem_save_dcname_1 = NDR_PULL_GET_MEM_CTX(ndr);
11352                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.dcname, 0);
11353                         NDR_CHECK(ndr_pull_array_size(ndr, r->out.dcname));
11354                         NDR_CHECK(ndr_pull_array_length(ndr, r->out.dcname));
11355                         if (ndr_get_array_length(ndr, r->out.dcname) > ndr_get_array_size(ndr, r->out.dcname)) {
11356                                 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));
11357                         }
11358                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.dcname), sizeof(uint16_t)));
11359                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.dcname, ndr_get_array_length(ndr, r->out.dcname), sizeof(uint16_t), CH_UTF16));
11360                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dcname_1, 0);
11361                 }
11362                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dcname_0, LIBNDR_FLAG_REF_ALLOC);
11363                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
11364         }
11365         return NDR_ERR_SUCCESS;
11366 }
11367
11368 _PUBLIC_ void ndr_print_netr_GetDcName(struct ndr_print *ndr, const char *name, int flags, const struct netr_GetDcName *r)
11369 {
11370         ndr_print_struct(ndr, name, "netr_GetDcName");
11371         ndr->depth++;
11372         if (flags & NDR_SET_VALUES) {
11373                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11374         }
11375         if (flags & NDR_IN) {
11376                 ndr_print_struct(ndr, "in", "netr_GetDcName");
11377                 ndr->depth++;
11378                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
11379                 ndr->depth++;
11380                 ndr_print_string(ndr, "logon_server", r->in.logon_server);
11381                 ndr->depth--;
11382                 ndr_print_ptr(ndr, "domainname", r->in.domainname);
11383                 ndr->depth++;
11384                 if (r->in.domainname) {
11385                         ndr_print_string(ndr, "domainname", r->in.domainname);
11386                 }
11387                 ndr->depth--;
11388                 ndr->depth--;
11389         }
11390         if (flags & NDR_OUT) {
11391                 ndr_print_struct(ndr, "out", "netr_GetDcName");
11392                 ndr->depth++;
11393                 ndr_print_ptr(ndr, "dcname", r->out.dcname);
11394                 ndr->depth++;
11395                 ndr_print_ptr(ndr, "dcname", *r->out.dcname);
11396                 ndr->depth++;
11397                 if (*r->out.dcname) {
11398                         ndr_print_string(ndr, "dcname", *r->out.dcname);
11399                 }
11400                 ndr->depth--;
11401                 ndr->depth--;
11402                 ndr_print_WERROR(ndr, "result", r->out.result);
11403                 ndr->depth--;
11404         }
11405         ndr->depth--;
11406 }
11407
11408 static enum ndr_err_code ndr_push_netr_LogonControl(struct ndr_push *ndr, int flags, const struct netr_LogonControl *r)
11409 {
11410         if (flags & NDR_IN) {
11411                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
11412                 if (r->in.logon_server) {
11413                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11414                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11415                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11416                         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));
11417                 }
11418                 NDR_CHECK(ndr_push_netr_LogonControlCode(ndr, NDR_SCALARS, r->in.function_code));
11419                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
11420         }
11421         if (flags & NDR_OUT) {
11422                 if (r->out.query == NULL) {
11423                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11424                 }
11425                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.query, r->in.level));
11426                 NDR_CHECK(ndr_push_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
11427                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
11428         }
11429         return NDR_ERR_SUCCESS;
11430 }
11431
11432 static enum ndr_err_code ndr_pull_netr_LogonControl(struct ndr_pull *ndr, int flags, struct netr_LogonControl *r)
11433 {
11434         uint32_t _ptr_logon_server;
11435         TALLOC_CTX *_mem_save_logon_server_0;
11436         TALLOC_CTX *_mem_save_query_0;
11437         if (flags & NDR_IN) {
11438                 ZERO_STRUCT(r->out);
11439
11440                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
11441                 if (_ptr_logon_server) {
11442                         NDR_PULL_ALLOC(ndr, r->in.logon_server);
11443                 } else {
11444                         r->in.logon_server = NULL;
11445                 }
11446                 if (r->in.logon_server) {
11447                         _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
11448                         NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
11449                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
11450                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
11451                         if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
11452                                 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));
11453                         }
11454                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
11455                         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));
11456                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
11457                 }
11458                 NDR_CHECK(ndr_pull_netr_LogonControlCode(ndr, NDR_SCALARS, &r->in.function_code));
11459                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
11460                 NDR_PULL_ALLOC(ndr, r->out.query);
11461                 ZERO_STRUCTP(r->out.query);
11462         }
11463         if (flags & NDR_OUT) {
11464                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11465                         NDR_PULL_ALLOC(ndr, r->out.query);
11466                 }
11467                 _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
11468                 NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC);
11469                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.query, r->in.level));
11470                 NDR_CHECK(ndr_pull_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
11471                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
11472                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
11473         }
11474         return NDR_ERR_SUCCESS;
11475 }
11476
11477 _PUBLIC_ void ndr_print_netr_LogonControl(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonControl *r)
11478 {
11479         ndr_print_struct(ndr, name, "netr_LogonControl");
11480         ndr->depth++;
11481         if (flags & NDR_SET_VALUES) {
11482                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11483         }
11484         if (flags & NDR_IN) {
11485                 ndr_print_struct(ndr, "in", "netr_LogonControl");
11486                 ndr->depth++;
11487                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
11488                 ndr->depth++;
11489                 if (r->in.logon_server) {
11490                         ndr_print_string(ndr, "logon_server", r->in.logon_server);
11491                 }
11492                 ndr->depth--;
11493                 ndr_print_netr_LogonControlCode(ndr, "function_code", r->in.function_code);
11494                 ndr_print_uint32(ndr, "level", r->in.level);
11495                 ndr->depth--;
11496         }
11497         if (flags & NDR_OUT) {
11498                 ndr_print_struct(ndr, "out", "netr_LogonControl");
11499                 ndr->depth++;
11500                 ndr_print_ptr(ndr, "query", r->out.query);
11501                 ndr->depth++;
11502                 ndr_print_set_switch_value(ndr, r->out.query, r->in.level);
11503                 ndr_print_netr_CONTROL_QUERY_INFORMATION(ndr, "query", r->out.query);
11504                 ndr->depth--;
11505                 ndr_print_WERROR(ndr, "result", r->out.result);
11506                 ndr->depth--;
11507         }
11508         ndr->depth--;
11509 }
11510
11511 static enum ndr_err_code ndr_push_netr_GetAnyDCName(struct ndr_push *ndr, int flags, const struct netr_GetAnyDCName *r)
11512 {
11513         if (flags & NDR_IN) {
11514                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
11515                 if (r->in.logon_server) {
11516                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11517                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11518                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11519                         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));
11520                 }
11521                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domainname));
11522                 if (r->in.domainname) {
11523                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domainname, CH_UTF16)));
11524                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11525                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domainname, CH_UTF16)));
11526                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.domainname, ndr_charset_length(r->in.domainname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11527                 }
11528         }
11529         if (flags & NDR_OUT) {
11530                 if (r->out.dcname == NULL) {
11531                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11532                 }
11533                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.dcname));
11534                 if (*r->out.dcname) {
11535                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.dcname, CH_UTF16)));
11536                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11537                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.dcname, CH_UTF16)));
11538                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.dcname, ndr_charset_length(*r->out.dcname, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11539                 }
11540                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
11541         }
11542         return NDR_ERR_SUCCESS;
11543 }
11544
11545 static enum ndr_err_code ndr_pull_netr_GetAnyDCName(struct ndr_pull *ndr, int flags, struct netr_GetAnyDCName *r)
11546 {
11547         uint32_t _ptr_logon_server;
11548         uint32_t _ptr_domainname;
11549         uint32_t _ptr_dcname;
11550         TALLOC_CTX *_mem_save_logon_server_0;
11551         TALLOC_CTX *_mem_save_domainname_0;
11552         TALLOC_CTX *_mem_save_dcname_0;
11553         TALLOC_CTX *_mem_save_dcname_1;
11554         if (flags & NDR_IN) {
11555                 ZERO_STRUCT(r->out);
11556
11557                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
11558                 if (_ptr_logon_server) {
11559                         NDR_PULL_ALLOC(ndr, r->in.logon_server);
11560                 } else {
11561                         r->in.logon_server = NULL;
11562                 }
11563                 if (r->in.logon_server) {
11564                         _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
11565                         NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
11566                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
11567                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
11568                         if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
11569                                 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));
11570                         }
11571                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
11572                         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));
11573                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
11574                 }
11575                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domainname));
11576                 if (_ptr_domainname) {
11577                         NDR_PULL_ALLOC(ndr, r->in.domainname);
11578                 } else {
11579                         r->in.domainname = NULL;
11580                 }
11581                 if (r->in.domainname) {
11582                         _mem_save_domainname_0 = NDR_PULL_GET_MEM_CTX(ndr);
11583                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domainname, 0);
11584                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domainname));
11585                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domainname));
11586                         if (ndr_get_array_length(ndr, &r->in.domainname) > ndr_get_array_size(ndr, &r->in.domainname)) {
11587                                 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));
11588                         }
11589                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domainname), sizeof(uint16_t)));
11590                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.domainname, ndr_get_array_length(ndr, &r->in.domainname), sizeof(uint16_t), CH_UTF16));
11591                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domainname_0, 0);
11592                 }
11593                 NDR_PULL_ALLOC(ndr, r->out.dcname);
11594                 ZERO_STRUCTP(r->out.dcname);
11595         }
11596         if (flags & NDR_OUT) {
11597                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11598                         NDR_PULL_ALLOC(ndr, r->out.dcname);
11599                 }
11600                 _mem_save_dcname_0 = NDR_PULL_GET_MEM_CTX(ndr);
11601                 NDR_PULL_SET_MEM_CTX(ndr, r->out.dcname, LIBNDR_FLAG_REF_ALLOC);
11602                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dcname));
11603                 if (_ptr_dcname) {
11604                         NDR_PULL_ALLOC(ndr, *r->out.dcname);
11605                 } else {
11606                         *r->out.dcname = NULL;
11607                 }
11608                 if (*r->out.dcname) {
11609                         _mem_save_dcname_1 = NDR_PULL_GET_MEM_CTX(ndr);
11610                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.dcname, 0);
11611                         NDR_CHECK(ndr_pull_array_size(ndr, r->out.dcname));
11612                         NDR_CHECK(ndr_pull_array_length(ndr, r->out.dcname));
11613                         if (ndr_get_array_length(ndr, r->out.dcname) > ndr_get_array_size(ndr, r->out.dcname)) {
11614                                 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));
11615                         }
11616                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.dcname), sizeof(uint16_t)));
11617                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.dcname, ndr_get_array_length(ndr, r->out.dcname), sizeof(uint16_t), CH_UTF16));
11618                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dcname_1, 0);
11619                 }
11620                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dcname_0, LIBNDR_FLAG_REF_ALLOC);
11621                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
11622         }
11623         return NDR_ERR_SUCCESS;
11624 }
11625
11626 _PUBLIC_ void ndr_print_netr_GetAnyDCName(struct ndr_print *ndr, const char *name, int flags, const struct netr_GetAnyDCName *r)
11627 {
11628         ndr_print_struct(ndr, name, "netr_GetAnyDCName");
11629         ndr->depth++;
11630         if (flags & NDR_SET_VALUES) {
11631                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11632         }
11633         if (flags & NDR_IN) {
11634                 ndr_print_struct(ndr, "in", "netr_GetAnyDCName");
11635                 ndr->depth++;
11636                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
11637                 ndr->depth++;
11638                 if (r->in.logon_server) {
11639                         ndr_print_string(ndr, "logon_server", r->in.logon_server);
11640                 }
11641                 ndr->depth--;
11642                 ndr_print_ptr(ndr, "domainname", r->in.domainname);
11643                 ndr->depth++;
11644                 if (r->in.domainname) {
11645                         ndr_print_string(ndr, "domainname", r->in.domainname);
11646                 }
11647                 ndr->depth--;
11648                 ndr->depth--;
11649         }
11650         if (flags & NDR_OUT) {
11651                 ndr_print_struct(ndr, "out", "netr_GetAnyDCName");
11652                 ndr->depth++;
11653                 ndr_print_ptr(ndr, "dcname", r->out.dcname);
11654                 ndr->depth++;
11655                 ndr_print_ptr(ndr, "dcname", *r->out.dcname);
11656                 ndr->depth++;
11657                 if (*r->out.dcname) {
11658                         ndr_print_string(ndr, "dcname", *r->out.dcname);
11659                 }
11660                 ndr->depth--;
11661                 ndr->depth--;
11662                 ndr_print_WERROR(ndr, "result", r->out.result);
11663                 ndr->depth--;
11664         }
11665         ndr->depth--;
11666 }
11667
11668 static enum ndr_err_code ndr_push_netr_LogonControl2(struct ndr_push *ndr, int flags, const struct netr_LogonControl2 *r)
11669 {
11670         if (flags & NDR_IN) {
11671                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
11672                 if (r->in.logon_server) {
11673                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11674                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11675                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11676                         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));
11677                 }
11678                 NDR_CHECK(ndr_push_netr_LogonControlCode(ndr, NDR_SCALARS, r->in.function_code));
11679                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
11680                 if (r->in.data == NULL) {
11681                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11682                 }
11683                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.data, r->in.function_code));
11684                 NDR_CHECK(ndr_push_netr_CONTROL_DATA_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.data));
11685         }
11686         if (flags & NDR_OUT) {
11687                 if (r->out.query == NULL) {
11688                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11689                 }
11690                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.query, r->in.level));
11691                 NDR_CHECK(ndr_push_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
11692                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
11693         }
11694         return NDR_ERR_SUCCESS;
11695 }
11696
11697 static enum ndr_err_code ndr_pull_netr_LogonControl2(struct ndr_pull *ndr, int flags, struct netr_LogonControl2 *r)
11698 {
11699         uint32_t _ptr_logon_server;
11700         TALLOC_CTX *_mem_save_logon_server_0;
11701         TALLOC_CTX *_mem_save_data_0;
11702         TALLOC_CTX *_mem_save_query_0;
11703         if (flags & NDR_IN) {
11704                 ZERO_STRUCT(r->out);
11705
11706                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
11707                 if (_ptr_logon_server) {
11708                         NDR_PULL_ALLOC(ndr, r->in.logon_server);
11709                 } else {
11710                         r->in.logon_server = NULL;
11711                 }
11712                 if (r->in.logon_server) {
11713                         _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
11714                         NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
11715                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
11716                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
11717                         if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
11718                                 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));
11719                         }
11720                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
11721                         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));
11722                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
11723                 }
11724                 NDR_CHECK(ndr_pull_netr_LogonControlCode(ndr, NDR_SCALARS, &r->in.function_code));
11725                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
11726                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11727                         NDR_PULL_ALLOC(ndr, r->in.data);
11728                 }
11729                 _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
11730                 NDR_PULL_SET_MEM_CTX(ndr, r->in.data, LIBNDR_FLAG_REF_ALLOC);
11731                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.data, r->in.function_code));
11732                 NDR_CHECK(ndr_pull_netr_CONTROL_DATA_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.data));
11733                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, LIBNDR_FLAG_REF_ALLOC);
11734                 NDR_PULL_ALLOC(ndr, r->out.query);
11735                 ZERO_STRUCTP(r->out.query);
11736         }
11737         if (flags & NDR_OUT) {
11738                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11739                         NDR_PULL_ALLOC(ndr, r->out.query);
11740                 }
11741                 _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
11742                 NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC);
11743                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.query, r->in.level));
11744                 NDR_CHECK(ndr_pull_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
11745                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
11746                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
11747         }
11748         return NDR_ERR_SUCCESS;
11749 }
11750
11751 _PUBLIC_ void ndr_print_netr_LogonControl2(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonControl2 *r)
11752 {
11753         ndr_print_struct(ndr, name, "netr_LogonControl2");
11754         ndr->depth++;
11755         if (flags & NDR_SET_VALUES) {
11756                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11757         }
11758         if (flags & NDR_IN) {
11759                 ndr_print_struct(ndr, "in", "netr_LogonControl2");
11760                 ndr->depth++;
11761                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
11762                 ndr->depth++;
11763                 if (r->in.logon_server) {
11764                         ndr_print_string(ndr, "logon_server", r->in.logon_server);
11765                 }
11766                 ndr->depth--;
11767                 ndr_print_netr_LogonControlCode(ndr, "function_code", r->in.function_code);
11768                 ndr_print_uint32(ndr, "level", r->in.level);
11769                 ndr_print_ptr(ndr, "data", r->in.data);
11770                 ndr->depth++;
11771                 ndr_print_set_switch_value(ndr, r->in.data, r->in.function_code);
11772                 ndr_print_netr_CONTROL_DATA_INFORMATION(ndr, "data", r->in.data);
11773                 ndr->depth--;
11774                 ndr->depth--;
11775         }
11776         if (flags & NDR_OUT) {
11777                 ndr_print_struct(ndr, "out", "netr_LogonControl2");
11778                 ndr->depth++;
11779                 ndr_print_ptr(ndr, "query", r->out.query);
11780                 ndr->depth++;
11781                 ndr_print_set_switch_value(ndr, r->out.query, r->in.level);
11782                 ndr_print_netr_CONTROL_QUERY_INFORMATION(ndr, "query", r->out.query);
11783                 ndr->depth--;
11784                 ndr_print_WERROR(ndr, "result", r->out.result);
11785                 ndr->depth--;
11786         }
11787         ndr->depth--;
11788 }
11789
11790 static enum ndr_err_code ndr_push_netr_ServerAuthenticate2(struct ndr_push *ndr, int flags, const struct netr_ServerAuthenticate2 *r)
11791 {
11792         if (flags & NDR_IN) {
11793                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
11794                 if (r->in.server_name) {
11795                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
11796                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11797                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
11798                         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));
11799                 }
11800                 if (r->in.account_name == NULL) {
11801                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11802                 }
11803                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
11804                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11805                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
11806                 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));
11807                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
11808                 if (r->in.computer_name == NULL) {
11809                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11810                 }
11811                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
11812                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11813                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
11814                 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));
11815                 if (r->in.credentials == NULL) {
11816                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11817                 }
11818                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
11819                 if (r->in.negotiate_flags == NULL) {
11820                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11821                 }
11822                 NDR_CHECK(ndr_push_netr_NegotiateFlags(ndr, NDR_SCALARS, *r->in.negotiate_flags));
11823         }
11824         if (flags & NDR_OUT) {
11825                 if (r->out.return_credentials == NULL) {
11826                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11827                 }
11828                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
11829                 if (r->out.negotiate_flags == NULL) {
11830                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11831                 }
11832                 NDR_CHECK(ndr_push_netr_NegotiateFlags(ndr, NDR_SCALARS, *r->out.negotiate_flags));
11833                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
11834         }
11835         return NDR_ERR_SUCCESS;
11836 }
11837
11838 static enum ndr_err_code ndr_pull_netr_ServerAuthenticate2(struct ndr_pull *ndr, int flags, struct netr_ServerAuthenticate2 *r)
11839 {
11840         uint32_t _ptr_server_name;
11841         TALLOC_CTX *_mem_save_server_name_0;
11842         TALLOC_CTX *_mem_save_credentials_0;
11843         TALLOC_CTX *_mem_save_return_credentials_0;
11844         TALLOC_CTX *_mem_save_negotiate_flags_0;
11845         if (flags & NDR_IN) {
11846                 ZERO_STRUCT(r->out);
11847
11848                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
11849                 if (_ptr_server_name) {
11850                         NDR_PULL_ALLOC(ndr, r->in.server_name);
11851                 } else {
11852                         r->in.server_name = NULL;
11853                 }
11854                 if (r->in.server_name) {
11855                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
11856                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
11857                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
11858                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
11859                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
11860                                 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));
11861                         }
11862                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
11863                         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));
11864                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
11865                 }
11866                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
11867                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
11868                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
11869                         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));
11870                 }
11871                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
11872                 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));
11873                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
11874                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
11875                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
11876                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
11877                         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));
11878                 }
11879                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
11880                 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));
11881                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11882                         NDR_PULL_ALLOC(ndr, r->in.credentials);
11883                 }
11884                 _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
11885                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credentials, LIBNDR_FLAG_REF_ALLOC);
11886                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
11887                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
11888                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11889                         NDR_PULL_ALLOC(ndr, r->in.negotiate_flags);
11890                 }
11891                 _mem_save_negotiate_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
11892                 NDR_PULL_SET_MEM_CTX(ndr, r->in.negotiate_flags, LIBNDR_FLAG_REF_ALLOC);
11893                 NDR_CHECK(ndr_pull_netr_NegotiateFlags(ndr, NDR_SCALARS, r->in.negotiate_flags));
11894                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_negotiate_flags_0, LIBNDR_FLAG_REF_ALLOC);
11895                 NDR_PULL_ALLOC(ndr, r->out.return_credentials);
11896                 ZERO_STRUCTP(r->out.return_credentials);
11897                 NDR_PULL_ALLOC(ndr, r->out.negotiate_flags);
11898                 *r->out.negotiate_flags = *r->in.negotiate_flags;
11899         }
11900         if (flags & NDR_OUT) {
11901                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11902                         NDR_PULL_ALLOC(ndr, r->out.return_credentials);
11903                 }
11904                 _mem_save_return_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
11905                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_credentials, LIBNDR_FLAG_REF_ALLOC);
11906                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
11907                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_credentials_0, LIBNDR_FLAG_REF_ALLOC);
11908                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
11909                         NDR_PULL_ALLOC(ndr, r->out.negotiate_flags);
11910                 }
11911                 _mem_save_negotiate_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
11912                 NDR_PULL_SET_MEM_CTX(ndr, r->out.negotiate_flags, LIBNDR_FLAG_REF_ALLOC);
11913                 NDR_CHECK(ndr_pull_netr_NegotiateFlags(ndr, NDR_SCALARS, r->out.negotiate_flags));
11914                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_negotiate_flags_0, LIBNDR_FLAG_REF_ALLOC);
11915                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
11916         }
11917         return NDR_ERR_SUCCESS;
11918 }
11919
11920 _PUBLIC_ void ndr_print_netr_ServerAuthenticate2(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerAuthenticate2 *r)
11921 {
11922         ndr_print_struct(ndr, name, "netr_ServerAuthenticate2");
11923         ndr->depth++;
11924         if (flags & NDR_SET_VALUES) {
11925                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
11926         }
11927         if (flags & NDR_IN) {
11928                 ndr_print_struct(ndr, "in", "netr_ServerAuthenticate2");
11929                 ndr->depth++;
11930                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
11931                 ndr->depth++;
11932                 if (r->in.server_name) {
11933                         ndr_print_string(ndr, "server_name", r->in.server_name);
11934                 }
11935                 ndr->depth--;
11936                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
11937                 ndr->depth++;
11938                 ndr_print_string(ndr, "account_name", r->in.account_name);
11939                 ndr->depth--;
11940                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
11941                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
11942                 ndr->depth++;
11943                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
11944                 ndr->depth--;
11945                 ndr_print_ptr(ndr, "credentials", r->in.credentials);
11946                 ndr->depth++;
11947                 ndr_print_netr_Credential(ndr, "credentials", r->in.credentials);
11948                 ndr->depth--;
11949                 ndr_print_ptr(ndr, "negotiate_flags", r->in.negotiate_flags);
11950                 ndr->depth++;
11951                 ndr_print_netr_NegotiateFlags(ndr, "negotiate_flags", *r->in.negotiate_flags);
11952                 ndr->depth--;
11953                 ndr->depth--;
11954         }
11955         if (flags & NDR_OUT) {
11956                 ndr_print_struct(ndr, "out", "netr_ServerAuthenticate2");
11957                 ndr->depth++;
11958                 ndr_print_ptr(ndr, "return_credentials", r->out.return_credentials);
11959                 ndr->depth++;
11960                 ndr_print_netr_Credential(ndr, "return_credentials", r->out.return_credentials);
11961                 ndr->depth--;
11962                 ndr_print_ptr(ndr, "negotiate_flags", r->out.negotiate_flags);
11963                 ndr->depth++;
11964                 ndr_print_netr_NegotiateFlags(ndr, "negotiate_flags", *r->out.negotiate_flags);
11965                 ndr->depth--;
11966                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
11967                 ndr->depth--;
11968         }
11969         ndr->depth--;
11970 }
11971
11972 static enum ndr_err_code ndr_push_netr_DatabaseSync2(struct ndr_push *ndr, int flags, const struct netr_DatabaseSync2 *r)
11973 {
11974         if (flags & NDR_IN) {
11975                 if (r->in.logon_server == NULL) {
11976                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11977                 }
11978                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11979                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11980                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
11981                 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));
11982                 if (r->in.computername == NULL) {
11983                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11984                 }
11985                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
11986                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
11987                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
11988                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
11989                 if (r->in.credential == NULL) {
11990                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11991                 }
11992                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
11993                 if (r->in.return_authenticator == NULL) {
11994                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
11995                 }
11996                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
11997                 NDR_CHECK(ndr_push_netr_SamDatabaseID(ndr, NDR_SCALARS, r->in.database_id));
11998                 NDR_CHECK(ndr_push_SyncStateEnum(ndr, NDR_SCALARS, r->in.restart_state));
11999                 if (r->in.sync_context == NULL) {
12000                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12001                 }
12002                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.sync_context));
12003                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.preferredmaximumlength));
12004         }
12005         if (flags & NDR_OUT) {
12006                 if (r->out.return_authenticator == NULL) {
12007                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12008                 }
12009                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
12010                 if (r->out.sync_context == NULL) {
12011                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12012                 }
12013                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.sync_context));
12014                 if (r->out.delta_enum_array == NULL) {
12015                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12016                 }
12017                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.delta_enum_array));
12018                 if (*r->out.delta_enum_array) {
12019                         NDR_CHECK(ndr_push_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
12020                 }
12021                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
12022         }
12023         return NDR_ERR_SUCCESS;
12024 }
12025
12026 static enum ndr_err_code ndr_pull_netr_DatabaseSync2(struct ndr_pull *ndr, int flags, struct netr_DatabaseSync2 *r)
12027 {
12028         uint32_t _ptr_delta_enum_array;
12029         TALLOC_CTX *_mem_save_credential_0;
12030         TALLOC_CTX *_mem_save_return_authenticator_0;
12031         TALLOC_CTX *_mem_save_sync_context_0;
12032         TALLOC_CTX *_mem_save_delta_enum_array_0;
12033         TALLOC_CTX *_mem_save_delta_enum_array_1;
12034         if (flags & NDR_IN) {
12035                 ZERO_STRUCT(r->out);
12036
12037                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
12038                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
12039                 if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
12040                         return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.logon_server), ndr_get_array_length(ndr, &r->in.logon_server));
12041                 }
12042                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
12043                 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));
12044                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
12045                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
12046                 if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
12047                         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));
12048                 }
12049                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
12050                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
12051                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12052                         NDR_PULL_ALLOC(ndr, r->in.credential);
12053                 }
12054                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
12055                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
12056                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
12057                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
12058                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12059                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
12060                 }
12061                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
12062                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
12063                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
12064                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
12065                 NDR_CHECK(ndr_pull_netr_SamDatabaseID(ndr, NDR_SCALARS, &r->in.database_id));
12066                 NDR_CHECK(ndr_pull_SyncStateEnum(ndr, NDR_SCALARS, &r->in.restart_state));
12067                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12068                         NDR_PULL_ALLOC(ndr, r->in.sync_context);
12069                 }
12070                 _mem_save_sync_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
12071                 NDR_PULL_SET_MEM_CTX(ndr, r->in.sync_context, LIBNDR_FLAG_REF_ALLOC);
12072                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.sync_context));
12073                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sync_context_0, LIBNDR_FLAG_REF_ALLOC);
12074                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.preferredmaximumlength));
12075                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
12076                 *r->out.return_authenticator = *r->in.return_authenticator;
12077                 NDR_PULL_ALLOC(ndr, r->out.sync_context);
12078                 *r->out.sync_context = *r->in.sync_context;
12079                 NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
12080                 ZERO_STRUCTP(r->out.delta_enum_array);
12081         }
12082         if (flags & NDR_OUT) {
12083                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12084                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
12085                 }
12086                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
12087                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
12088                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
12089                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
12090                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12091                         NDR_PULL_ALLOC(ndr, r->out.sync_context);
12092                 }
12093                 _mem_save_sync_context_0 = NDR_PULL_GET_MEM_CTX(ndr);
12094                 NDR_PULL_SET_MEM_CTX(ndr, r->out.sync_context, LIBNDR_FLAG_REF_ALLOC);
12095                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.sync_context));
12096                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sync_context_0, LIBNDR_FLAG_REF_ALLOC);
12097                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12098                         NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
12099                 }
12100                 _mem_save_delta_enum_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
12101                 NDR_PULL_SET_MEM_CTX(ndr, r->out.delta_enum_array, LIBNDR_FLAG_REF_ALLOC);
12102                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delta_enum_array));
12103                 if (_ptr_delta_enum_array) {
12104                         NDR_PULL_ALLOC(ndr, *r->out.delta_enum_array);
12105                 } else {
12106                         *r->out.delta_enum_array = NULL;
12107                 }
12108                 if (*r->out.delta_enum_array) {
12109                         _mem_save_delta_enum_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
12110                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.delta_enum_array, 0);
12111                         NDR_CHECK(ndr_pull_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
12112                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_1, 0);
12113                 }
12114                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_0, LIBNDR_FLAG_REF_ALLOC);
12115                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
12116         }
12117         return NDR_ERR_SUCCESS;
12118 }
12119
12120 _PUBLIC_ void ndr_print_netr_DatabaseSync2(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseSync2 *r)
12121 {
12122         ndr_print_struct(ndr, name, "netr_DatabaseSync2");
12123         ndr->depth++;
12124         if (flags & NDR_SET_VALUES) {
12125                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12126         }
12127         if (flags & NDR_IN) {
12128                 ndr_print_struct(ndr, "in", "netr_DatabaseSync2");
12129                 ndr->depth++;
12130                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
12131                 ndr->depth++;
12132                 ndr_print_string(ndr, "logon_server", r->in.logon_server);
12133                 ndr->depth--;
12134                 ndr_print_ptr(ndr, "computername", r->in.computername);
12135                 ndr->depth++;
12136                 ndr_print_string(ndr, "computername", r->in.computername);
12137                 ndr->depth--;
12138                 ndr_print_ptr(ndr, "credential", r->in.credential);
12139                 ndr->depth++;
12140                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
12141                 ndr->depth--;
12142                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
12143                 ndr->depth++;
12144                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
12145                 ndr->depth--;
12146                 ndr_print_netr_SamDatabaseID(ndr, "database_id", r->in.database_id);
12147                 ndr_print_SyncStateEnum(ndr, "restart_state", r->in.restart_state);
12148                 ndr_print_ptr(ndr, "sync_context", r->in.sync_context);
12149                 ndr->depth++;
12150                 ndr_print_uint32(ndr, "sync_context", *r->in.sync_context);
12151                 ndr->depth--;
12152                 ndr_print_uint32(ndr, "preferredmaximumlength", r->in.preferredmaximumlength);
12153                 ndr->depth--;
12154         }
12155         if (flags & NDR_OUT) {
12156                 ndr_print_struct(ndr, "out", "netr_DatabaseSync2");
12157                 ndr->depth++;
12158                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
12159                 ndr->depth++;
12160                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
12161                 ndr->depth--;
12162                 ndr_print_ptr(ndr, "sync_context", r->out.sync_context);
12163                 ndr->depth++;
12164                 ndr_print_uint32(ndr, "sync_context", *r->out.sync_context);
12165                 ndr->depth--;
12166                 ndr_print_ptr(ndr, "delta_enum_array", r->out.delta_enum_array);
12167                 ndr->depth++;
12168                 ndr_print_ptr(ndr, "delta_enum_array", *r->out.delta_enum_array);
12169                 ndr->depth++;
12170                 if (*r->out.delta_enum_array) {
12171                         ndr_print_netr_DELTA_ENUM_ARRAY(ndr, "delta_enum_array", *r->out.delta_enum_array);
12172                 }
12173                 ndr->depth--;
12174                 ndr->depth--;
12175                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
12176                 ndr->depth--;
12177         }
12178         ndr->depth--;
12179 }
12180
12181 static enum ndr_err_code ndr_push_netr_DatabaseRedo(struct ndr_push *ndr, int flags, const struct netr_DatabaseRedo *r)
12182 {
12183         if (flags & NDR_IN) {
12184                 if (r->in.logon_server == NULL) {
12185                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12186                 }
12187                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
12188                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12189                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
12190                 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));
12191                 if (r->in.computername == NULL) {
12192                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12193                 }
12194                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
12195                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12196                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computername, CH_UTF16)));
12197                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.computername, ndr_charset_length(r->in.computername, CH_UTF16), sizeof(uint16_t), CH_UTF16));
12198                 if (r->in.credential == NULL) {
12199                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12200                 }
12201                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
12202                 if (r->in.return_authenticator == NULL) {
12203                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12204                 }
12205                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
12206                 {
12207                         struct ndr_push *_ndr_change_log_entry;
12208                         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)));
12209                         NDR_CHECK(ndr_push_netr_ChangeLogEntry(_ndr_change_log_entry, NDR_SCALARS|NDR_BUFFERS, &r->in.change_log_entry));
12210                         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)));
12211                 }
12212                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_netr_ChangeLogEntry(&r->in.change_log_entry, ndr->iconv_convenience, ndr->flags)));
12213         }
12214         if (flags & NDR_OUT) {
12215                 if (r->out.return_authenticator == NULL) {
12216                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12217                 }
12218                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
12219                 if (r->out.delta_enum_array == NULL) {
12220                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12221                 }
12222                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.delta_enum_array));
12223                 if (*r->out.delta_enum_array) {
12224                         NDR_CHECK(ndr_push_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
12225                 }
12226                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
12227         }
12228         return NDR_ERR_SUCCESS;
12229 }
12230
12231 static enum ndr_err_code ndr_pull_netr_DatabaseRedo(struct ndr_pull *ndr, int flags, struct netr_DatabaseRedo *r)
12232 {
12233         uint32_t _ptr_delta_enum_array;
12234         TALLOC_CTX *_mem_save_credential_0;
12235         TALLOC_CTX *_mem_save_return_authenticator_0;
12236         TALLOC_CTX *_mem_save_delta_enum_array_0;
12237         TALLOC_CTX *_mem_save_delta_enum_array_1;
12238         if (flags & NDR_IN) {
12239                 ZERO_STRUCT(r->out);
12240
12241                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
12242                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
12243                 if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
12244                         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));
12245                 }
12246                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
12247                 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));
12248                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computername));
12249                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computername));
12250                 if (ndr_get_array_length(ndr, &r->in.computername) > ndr_get_array_size(ndr, &r->in.computername)) {
12251                         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));
12252                 }
12253                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t)));
12254                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.computername, ndr_get_array_length(ndr, &r->in.computername), sizeof(uint16_t), CH_UTF16));
12255                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12256                         NDR_PULL_ALLOC(ndr, r->in.credential);
12257                 }
12258                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
12259                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
12260                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
12261                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
12262                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12263                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
12264                 }
12265                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
12266                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
12267                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
12268                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
12269                 {
12270                         struct ndr_pull *_ndr_change_log_entry;
12271                         NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_change_log_entry, 4, r->in.change_log_entry_size));
12272                         NDR_CHECK(ndr_pull_netr_ChangeLogEntry(_ndr_change_log_entry, NDR_SCALARS|NDR_BUFFERS, &r->in.change_log_entry));
12273                         NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_change_log_entry, 4, r->in.change_log_entry_size));
12274                 }
12275                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.change_log_entry_size));
12276                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
12277                 *r->out.return_authenticator = *r->in.return_authenticator;
12278                 NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
12279                 ZERO_STRUCTP(r->out.delta_enum_array);
12280         }
12281         if (flags & NDR_OUT) {
12282                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12283                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
12284                 }
12285                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
12286                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
12287                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
12288                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
12289                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12290                         NDR_PULL_ALLOC(ndr, r->out.delta_enum_array);
12291                 }
12292                 _mem_save_delta_enum_array_0 = NDR_PULL_GET_MEM_CTX(ndr);
12293                 NDR_PULL_SET_MEM_CTX(ndr, r->out.delta_enum_array, LIBNDR_FLAG_REF_ALLOC);
12294                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_delta_enum_array));
12295                 if (_ptr_delta_enum_array) {
12296                         NDR_PULL_ALLOC(ndr, *r->out.delta_enum_array);
12297                 } else {
12298                         *r->out.delta_enum_array = NULL;
12299                 }
12300                 if (*r->out.delta_enum_array) {
12301                         _mem_save_delta_enum_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
12302                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.delta_enum_array, 0);
12303                         NDR_CHECK(ndr_pull_netr_DELTA_ENUM_ARRAY(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.delta_enum_array));
12304                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_1, 0);
12305                 }
12306                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_delta_enum_array_0, LIBNDR_FLAG_REF_ALLOC);
12307                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
12308         }
12309         return NDR_ERR_SUCCESS;
12310 }
12311
12312 _PUBLIC_ void ndr_print_netr_DatabaseRedo(struct ndr_print *ndr, const char *name, int flags, const struct netr_DatabaseRedo *r)
12313 {
12314         ndr_print_struct(ndr, name, "netr_DatabaseRedo");
12315         ndr->depth++;
12316         if (flags & NDR_SET_VALUES) {
12317                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12318         }
12319         if (flags & NDR_IN) {
12320                 ndr_print_struct(ndr, "in", "netr_DatabaseRedo");
12321                 ndr->depth++;
12322                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
12323                 ndr->depth++;
12324                 ndr_print_string(ndr, "logon_server", r->in.logon_server);
12325                 ndr->depth--;
12326                 ndr_print_ptr(ndr, "computername", r->in.computername);
12327                 ndr->depth++;
12328                 ndr_print_string(ndr, "computername", r->in.computername);
12329                 ndr->depth--;
12330                 ndr_print_ptr(ndr, "credential", r->in.credential);
12331                 ndr->depth++;
12332                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
12333                 ndr->depth--;
12334                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
12335                 ndr->depth++;
12336                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
12337                 ndr->depth--;
12338                 ndr_print_netr_ChangeLogEntry(ndr, "change_log_entry", &r->in.change_log_entry);
12339                 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);
12340                 ndr->depth--;
12341         }
12342         if (flags & NDR_OUT) {
12343                 ndr_print_struct(ndr, "out", "netr_DatabaseRedo");
12344                 ndr->depth++;
12345                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
12346                 ndr->depth++;
12347                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
12348                 ndr->depth--;
12349                 ndr_print_ptr(ndr, "delta_enum_array", r->out.delta_enum_array);
12350                 ndr->depth++;
12351                 ndr_print_ptr(ndr, "delta_enum_array", *r->out.delta_enum_array);
12352                 ndr->depth++;
12353                 if (*r->out.delta_enum_array) {
12354                         ndr_print_netr_DELTA_ENUM_ARRAY(ndr, "delta_enum_array", *r->out.delta_enum_array);
12355                 }
12356                 ndr->depth--;
12357                 ndr->depth--;
12358                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
12359                 ndr->depth--;
12360         }
12361         ndr->depth--;
12362 }
12363
12364 static enum ndr_err_code ndr_push_netr_LogonControl2Ex(struct ndr_push *ndr, int flags, const struct netr_LogonControl2Ex *r)
12365 {
12366         if (flags & NDR_IN) {
12367                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.logon_server));
12368                 if (r->in.logon_server) {
12369                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
12370                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12371                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.logon_server, CH_UTF16)));
12372                         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));
12373                 }
12374                 NDR_CHECK(ndr_push_netr_LogonControlCode(ndr, NDR_SCALARS, r->in.function_code));
12375                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
12376                 if (r->in.data == NULL) {
12377                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12378                 }
12379                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.data, r->in.function_code));
12380                 NDR_CHECK(ndr_push_netr_CONTROL_DATA_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.data));
12381         }
12382         if (flags & NDR_OUT) {
12383                 if (r->out.query == NULL) {
12384                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12385                 }
12386                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.query, r->in.level));
12387                 NDR_CHECK(ndr_push_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
12388                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
12389         }
12390         return NDR_ERR_SUCCESS;
12391 }
12392
12393 static enum ndr_err_code ndr_pull_netr_LogonControl2Ex(struct ndr_pull *ndr, int flags, struct netr_LogonControl2Ex *r)
12394 {
12395         uint32_t _ptr_logon_server;
12396         TALLOC_CTX *_mem_save_logon_server_0;
12397         TALLOC_CTX *_mem_save_data_0;
12398         TALLOC_CTX *_mem_save_query_0;
12399         if (flags & NDR_IN) {
12400                 ZERO_STRUCT(r->out);
12401
12402                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_logon_server));
12403                 if (_ptr_logon_server) {
12404                         NDR_PULL_ALLOC(ndr, r->in.logon_server);
12405                 } else {
12406                         r->in.logon_server = NULL;
12407                 }
12408                 if (r->in.logon_server) {
12409                         _mem_save_logon_server_0 = NDR_PULL_GET_MEM_CTX(ndr);
12410                         NDR_PULL_SET_MEM_CTX(ndr, r->in.logon_server, 0);
12411                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.logon_server));
12412                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.logon_server));
12413                         if (ndr_get_array_length(ndr, &r->in.logon_server) > ndr_get_array_size(ndr, &r->in.logon_server)) {
12414                                 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));
12415                         }
12416                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.logon_server), sizeof(uint16_t)));
12417                         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));
12418                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_server_0, 0);
12419                 }
12420                 NDR_CHECK(ndr_pull_netr_LogonControlCode(ndr, NDR_SCALARS, &r->in.function_code));
12421                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
12422                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12423                         NDR_PULL_ALLOC(ndr, r->in.data);
12424                 }
12425                 _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
12426                 NDR_PULL_SET_MEM_CTX(ndr, r->in.data, LIBNDR_FLAG_REF_ALLOC);
12427                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.data, r->in.function_code));
12428                 NDR_CHECK(ndr_pull_netr_CONTROL_DATA_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.data));
12429                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, LIBNDR_FLAG_REF_ALLOC);
12430                 NDR_PULL_ALLOC(ndr, r->out.query);
12431                 ZERO_STRUCTP(r->out.query);
12432         }
12433         if (flags & NDR_OUT) {
12434                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12435                         NDR_PULL_ALLOC(ndr, r->out.query);
12436                 }
12437                 _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
12438                 NDR_PULL_SET_MEM_CTX(ndr, r->out.query, LIBNDR_FLAG_REF_ALLOC);
12439                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.query, r->in.level));
12440                 NDR_CHECK(ndr_pull_netr_CONTROL_QUERY_INFORMATION(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.query));
12441                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
12442                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
12443         }
12444         return NDR_ERR_SUCCESS;
12445 }
12446
12447 _PUBLIC_ void ndr_print_netr_LogonControl2Ex(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonControl2Ex *r)
12448 {
12449         ndr_print_struct(ndr, name, "netr_LogonControl2Ex");
12450         ndr->depth++;
12451         if (flags & NDR_SET_VALUES) {
12452                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12453         }
12454         if (flags & NDR_IN) {
12455                 ndr_print_struct(ndr, "in", "netr_LogonControl2Ex");
12456                 ndr->depth++;
12457                 ndr_print_ptr(ndr, "logon_server", r->in.logon_server);
12458                 ndr->depth++;
12459                 if (r->in.logon_server) {
12460                         ndr_print_string(ndr, "logon_server", r->in.logon_server);
12461                 }
12462                 ndr->depth--;
12463                 ndr_print_netr_LogonControlCode(ndr, "function_code", r->in.function_code);
12464                 ndr_print_uint32(ndr, "level", r->in.level);
12465                 ndr_print_ptr(ndr, "data", r->in.data);
12466                 ndr->depth++;
12467                 ndr_print_set_switch_value(ndr, r->in.data, r->in.function_code);
12468                 ndr_print_netr_CONTROL_DATA_INFORMATION(ndr, "data", r->in.data);
12469                 ndr->depth--;
12470                 ndr->depth--;
12471         }
12472         if (flags & NDR_OUT) {
12473                 ndr_print_struct(ndr, "out", "netr_LogonControl2Ex");
12474                 ndr->depth++;
12475                 ndr_print_ptr(ndr, "query", r->out.query);
12476                 ndr->depth++;
12477                 ndr_print_set_switch_value(ndr, r->out.query, r->in.level);
12478                 ndr_print_netr_CONTROL_QUERY_INFORMATION(ndr, "query", r->out.query);
12479                 ndr->depth--;
12480                 ndr_print_WERROR(ndr, "result", r->out.result);
12481                 ndr->depth--;
12482         }
12483         ndr->depth--;
12484 }
12485
12486 static enum ndr_err_code ndr_push_netr_NetrEnumerateTrustedDomains(struct ndr_push *ndr, int flags, const struct netr_NetrEnumerateTrustedDomains *r)
12487 {
12488         if (flags & NDR_IN) {
12489                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
12490                 if (r->in.server_name) {
12491                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12492                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12493                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12494                         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));
12495                 }
12496         }
12497         if (flags & NDR_OUT) {
12498                 if (r->out.trusted_domains_blob == NULL) {
12499                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12500                 }
12501                 NDR_CHECK(ndr_push_netr_Blob(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trusted_domains_blob));
12502                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
12503         }
12504         return NDR_ERR_SUCCESS;
12505 }
12506
12507 static enum ndr_err_code ndr_pull_netr_NetrEnumerateTrustedDomains(struct ndr_pull *ndr, int flags, struct netr_NetrEnumerateTrustedDomains *r)
12508 {
12509         uint32_t _ptr_server_name;
12510         TALLOC_CTX *_mem_save_server_name_0;
12511         TALLOC_CTX *_mem_save_trusted_domains_blob_0;
12512         if (flags & NDR_IN) {
12513                 ZERO_STRUCT(r->out);
12514
12515                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
12516                 if (_ptr_server_name) {
12517                         NDR_PULL_ALLOC(ndr, r->in.server_name);
12518                 } else {
12519                         r->in.server_name = NULL;
12520                 }
12521                 if (r->in.server_name) {
12522                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
12523                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
12524                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
12525                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
12526                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
12527                                 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));
12528                         }
12529                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
12530                         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));
12531                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
12532                 }
12533                 NDR_PULL_ALLOC(ndr, r->out.trusted_domains_blob);
12534                 ZERO_STRUCTP(r->out.trusted_domains_blob);
12535         }
12536         if (flags & NDR_OUT) {
12537                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12538                         NDR_PULL_ALLOC(ndr, r->out.trusted_domains_blob);
12539                 }
12540                 _mem_save_trusted_domains_blob_0 = NDR_PULL_GET_MEM_CTX(ndr);
12541                 NDR_PULL_SET_MEM_CTX(ndr, r->out.trusted_domains_blob, LIBNDR_FLAG_REF_ALLOC);
12542                 NDR_CHECK(ndr_pull_netr_Blob(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trusted_domains_blob));
12543                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusted_domains_blob_0, LIBNDR_FLAG_REF_ALLOC);
12544                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
12545         }
12546         return NDR_ERR_SUCCESS;
12547 }
12548
12549 _PUBLIC_ void ndr_print_netr_NetrEnumerateTrustedDomains(struct ndr_print *ndr, const char *name, int flags, const struct netr_NetrEnumerateTrustedDomains *r)
12550 {
12551         ndr_print_struct(ndr, name, "netr_NetrEnumerateTrustedDomains");
12552         ndr->depth++;
12553         if (flags & NDR_SET_VALUES) {
12554                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12555         }
12556         if (flags & NDR_IN) {
12557                 ndr_print_struct(ndr, "in", "netr_NetrEnumerateTrustedDomains");
12558                 ndr->depth++;
12559                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
12560                 ndr->depth++;
12561                 if (r->in.server_name) {
12562                         ndr_print_string(ndr, "server_name", r->in.server_name);
12563                 }
12564                 ndr->depth--;
12565                 ndr->depth--;
12566         }
12567         if (flags & NDR_OUT) {
12568                 ndr_print_struct(ndr, "out", "netr_NetrEnumerateTrustedDomains");
12569                 ndr->depth++;
12570                 ndr_print_ptr(ndr, "trusted_domains_blob", r->out.trusted_domains_blob);
12571                 ndr->depth++;
12572                 ndr_print_netr_Blob(ndr, "trusted_domains_blob", r->out.trusted_domains_blob);
12573                 ndr->depth--;
12574                 ndr_print_WERROR(ndr, "result", r->out.result);
12575                 ndr->depth--;
12576         }
12577         ndr->depth--;
12578 }
12579
12580 static enum ndr_err_code ndr_push_netr_DsRGetDCName(struct ndr_push *ndr, int flags, const struct netr_DsRGetDCName *r)
12581 {
12582         if (flags & NDR_IN) {
12583                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
12584                 if (r->in.server_unc) {
12585                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
12586                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12587                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
12588                         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));
12589                 }
12590                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_name));
12591                 if (r->in.domain_name) {
12592                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
12593                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12594                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
12595                         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));
12596                 }
12597                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_guid));
12598                 if (r->in.domain_guid) {
12599                         NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, r->in.domain_guid));
12600                 }
12601                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.site_guid));
12602                 if (r->in.site_guid) {
12603                         NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, r->in.site_guid));
12604                 }
12605                 NDR_CHECK(ndr_push_netr_DsRGetDCName_flags(ndr, NDR_SCALARS, r->in.flags));
12606         }
12607         if (flags & NDR_OUT) {
12608                 if (r->out.info == NULL) {
12609                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12610                 }
12611                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.info));
12612                 if (*r->out.info) {
12613                         NDR_CHECK(ndr_push_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
12614                 }
12615                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
12616         }
12617         return NDR_ERR_SUCCESS;
12618 }
12619
12620 static enum ndr_err_code ndr_pull_netr_DsRGetDCName(struct ndr_pull *ndr, int flags, struct netr_DsRGetDCName *r)
12621 {
12622         uint32_t _ptr_server_unc;
12623         uint32_t _ptr_domain_name;
12624         uint32_t _ptr_domain_guid;
12625         uint32_t _ptr_site_guid;
12626         uint32_t _ptr_info;
12627         TALLOC_CTX *_mem_save_server_unc_0;
12628         TALLOC_CTX *_mem_save_domain_name_0;
12629         TALLOC_CTX *_mem_save_domain_guid_0;
12630         TALLOC_CTX *_mem_save_site_guid_0;
12631         TALLOC_CTX *_mem_save_info_0;
12632         TALLOC_CTX *_mem_save_info_1;
12633         if (flags & NDR_IN) {
12634                 ZERO_STRUCT(r->out);
12635
12636                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
12637                 if (_ptr_server_unc) {
12638                         NDR_PULL_ALLOC(ndr, r->in.server_unc);
12639                 } else {
12640                         r->in.server_unc = NULL;
12641                 }
12642                 if (r->in.server_unc) {
12643                         _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
12644                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
12645                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
12646                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
12647                         if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
12648                                 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));
12649                         }
12650                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
12651                         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));
12652                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
12653                 }
12654                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
12655                 if (_ptr_domain_name) {
12656                         NDR_PULL_ALLOC(ndr, r->in.domain_name);
12657                 } else {
12658                         r->in.domain_name = NULL;
12659                 }
12660                 if (r->in.domain_name) {
12661                         _mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
12662                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_name, 0);
12663                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domain_name));
12664                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domain_name));
12665                         if (ndr_get_array_length(ndr, &r->in.domain_name) > ndr_get_array_size(ndr, &r->in.domain_name)) {
12666                                 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));
12667                         }
12668                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t)));
12669                         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));
12670                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
12671                 }
12672                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_guid));
12673                 if (_ptr_domain_guid) {
12674                         NDR_PULL_ALLOC(ndr, r->in.domain_guid);
12675                 } else {
12676                         r->in.domain_guid = NULL;
12677                 }
12678                 if (r->in.domain_guid) {
12679                         _mem_save_domain_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
12680                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_guid, 0);
12681                         NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, r->in.domain_guid));
12682                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_guid_0, 0);
12683                 }
12684                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_guid));
12685                 if (_ptr_site_guid) {
12686                         NDR_PULL_ALLOC(ndr, r->in.site_guid);
12687                 } else {
12688                         r->in.site_guid = NULL;
12689                 }
12690                 if (r->in.site_guid) {
12691                         _mem_save_site_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
12692                         NDR_PULL_SET_MEM_CTX(ndr, r->in.site_guid, 0);
12693                         NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, r->in.site_guid));
12694                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_guid_0, 0);
12695                 }
12696                 NDR_CHECK(ndr_pull_netr_DsRGetDCName_flags(ndr, NDR_SCALARS, &r->in.flags));
12697                 NDR_PULL_ALLOC(ndr, r->out.info);
12698                 ZERO_STRUCTP(r->out.info);
12699         }
12700         if (flags & NDR_OUT) {
12701                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12702                         NDR_PULL_ALLOC(ndr, r->out.info);
12703                 }
12704                 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
12705                 NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
12706                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
12707                 if (_ptr_info) {
12708                         NDR_PULL_ALLOC(ndr, *r->out.info);
12709                 } else {
12710                         *r->out.info = NULL;
12711                 }
12712                 if (*r->out.info) {
12713                         _mem_save_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
12714                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.info, 0);
12715                         NDR_CHECK(ndr_pull_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
12716                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_1, 0);
12717                 }
12718                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
12719                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
12720         }
12721         return NDR_ERR_SUCCESS;
12722 }
12723
12724 _PUBLIC_ void ndr_print_netr_DsRGetDCName(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetDCName *r)
12725 {
12726         ndr_print_struct(ndr, name, "netr_DsRGetDCName");
12727         ndr->depth++;
12728         if (flags & NDR_SET_VALUES) {
12729                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12730         }
12731         if (flags & NDR_IN) {
12732                 ndr_print_struct(ndr, "in", "netr_DsRGetDCName");
12733                 ndr->depth++;
12734                 ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
12735                 ndr->depth++;
12736                 if (r->in.server_unc) {
12737                         ndr_print_string(ndr, "server_unc", r->in.server_unc);
12738                 }
12739                 ndr->depth--;
12740                 ndr_print_ptr(ndr, "domain_name", r->in.domain_name);
12741                 ndr->depth++;
12742                 if (r->in.domain_name) {
12743                         ndr_print_string(ndr, "domain_name", r->in.domain_name);
12744                 }
12745                 ndr->depth--;
12746                 ndr_print_ptr(ndr, "domain_guid", r->in.domain_guid);
12747                 ndr->depth++;
12748                 if (r->in.domain_guid) {
12749                         ndr_print_GUID(ndr, "domain_guid", r->in.domain_guid);
12750                 }
12751                 ndr->depth--;
12752                 ndr_print_ptr(ndr, "site_guid", r->in.site_guid);
12753                 ndr->depth++;
12754                 if (r->in.site_guid) {
12755                         ndr_print_GUID(ndr, "site_guid", r->in.site_guid);
12756                 }
12757                 ndr->depth--;
12758                 ndr_print_netr_DsRGetDCName_flags(ndr, "flags", r->in.flags);
12759                 ndr->depth--;
12760         }
12761         if (flags & NDR_OUT) {
12762                 ndr_print_struct(ndr, "out", "netr_DsRGetDCName");
12763                 ndr->depth++;
12764                 ndr_print_ptr(ndr, "info", r->out.info);
12765                 ndr->depth++;
12766                 ndr_print_ptr(ndr, "info", *r->out.info);
12767                 ndr->depth++;
12768                 if (*r->out.info) {
12769                         ndr_print_netr_DsRGetDCNameInfo(ndr, "info", *r->out.info);
12770                 }
12771                 ndr->depth--;
12772                 ndr->depth--;
12773                 ndr_print_WERROR(ndr, "result", r->out.result);
12774                 ndr->depth--;
12775         }
12776         ndr->depth--;
12777 }
12778
12779 static enum ndr_err_code ndr_push_netr_LogonGetCapabilities(struct ndr_push *ndr, int flags, const struct netr_LogonGetCapabilities *r)
12780 {
12781         if (flags & NDR_IN) {
12782                 if (r->in.server_name == NULL) {
12783                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12784                 }
12785                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12786                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12787                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12788                 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));
12789                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
12790                 if (r->in.computer_name) {
12791                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
12792                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12793                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
12794                         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));
12795                 }
12796                 if (r->in.credential == NULL) {
12797                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12798                 }
12799                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
12800                 if (r->in.return_authenticator == NULL) {
12801                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12802                 }
12803                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
12804                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.query_level));
12805         }
12806         if (flags & NDR_OUT) {
12807                 if (r->out.return_authenticator == NULL) {
12808                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12809                 }
12810                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
12811                 if (r->out.capabilities == NULL) {
12812                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
12813                 }
12814                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.capabilities, r->in.query_level));
12815                 NDR_CHECK(ndr_push_netr_Capabilities(ndr, NDR_SCALARS, r->out.capabilities));
12816                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
12817         }
12818         return NDR_ERR_SUCCESS;
12819 }
12820
12821 static enum ndr_err_code ndr_pull_netr_LogonGetCapabilities(struct ndr_pull *ndr, int flags, struct netr_LogonGetCapabilities *r)
12822 {
12823         uint32_t _ptr_computer_name;
12824         TALLOC_CTX *_mem_save_computer_name_0;
12825         TALLOC_CTX *_mem_save_credential_0;
12826         TALLOC_CTX *_mem_save_return_authenticator_0;
12827         TALLOC_CTX *_mem_save_capabilities_0;
12828         if (flags & NDR_IN) {
12829                 ZERO_STRUCT(r->out);
12830
12831                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
12832                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
12833                 if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
12834                         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));
12835                 }
12836                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
12837                 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));
12838                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
12839                 if (_ptr_computer_name) {
12840                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
12841                 } else {
12842                         r->in.computer_name = NULL;
12843                 }
12844                 if (r->in.computer_name) {
12845                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
12846                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
12847                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
12848                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
12849                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
12850                                 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));
12851                         }
12852                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
12853                         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));
12854                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
12855                 }
12856                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12857                         NDR_PULL_ALLOC(ndr, r->in.credential);
12858                 }
12859                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
12860                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
12861                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
12862                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
12863                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12864                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
12865                 }
12866                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
12867                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
12868                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
12869                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
12870                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.query_level));
12871                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
12872                 *r->out.return_authenticator = *r->in.return_authenticator;
12873                 NDR_PULL_ALLOC(ndr, r->out.capabilities);
12874                 ZERO_STRUCTP(r->out.capabilities);
12875         }
12876         if (flags & NDR_OUT) {
12877                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12878                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
12879                 }
12880                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
12881                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
12882                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
12883                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
12884                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
12885                         NDR_PULL_ALLOC(ndr, r->out.capabilities);
12886                 }
12887                 _mem_save_capabilities_0 = NDR_PULL_GET_MEM_CTX(ndr);
12888                 NDR_PULL_SET_MEM_CTX(ndr, r->out.capabilities, LIBNDR_FLAG_REF_ALLOC);
12889                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.capabilities, r->in.query_level));
12890                 NDR_CHECK(ndr_pull_netr_Capabilities(ndr, NDR_SCALARS, r->out.capabilities));
12891                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_capabilities_0, LIBNDR_FLAG_REF_ALLOC);
12892                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
12893         }
12894         return NDR_ERR_SUCCESS;
12895 }
12896
12897 _PUBLIC_ void ndr_print_netr_LogonGetCapabilities(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonGetCapabilities *r)
12898 {
12899         ndr_print_struct(ndr, name, "netr_LogonGetCapabilities");
12900         ndr->depth++;
12901         if (flags & NDR_SET_VALUES) {
12902                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12903         }
12904         if (flags & NDR_IN) {
12905                 ndr_print_struct(ndr, "in", "netr_LogonGetCapabilities");
12906                 ndr->depth++;
12907                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
12908                 ndr->depth++;
12909                 ndr_print_string(ndr, "server_name", r->in.server_name);
12910                 ndr->depth--;
12911                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
12912                 ndr->depth++;
12913                 if (r->in.computer_name) {
12914                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
12915                 }
12916                 ndr->depth--;
12917                 ndr_print_ptr(ndr, "credential", r->in.credential);
12918                 ndr->depth++;
12919                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
12920                 ndr->depth--;
12921                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
12922                 ndr->depth++;
12923                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
12924                 ndr->depth--;
12925                 ndr_print_uint32(ndr, "query_level", r->in.query_level);
12926                 ndr->depth--;
12927         }
12928         if (flags & NDR_OUT) {
12929                 ndr_print_struct(ndr, "out", "netr_LogonGetCapabilities");
12930                 ndr->depth++;
12931                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
12932                 ndr->depth++;
12933                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
12934                 ndr->depth--;
12935                 ndr_print_ptr(ndr, "capabilities", r->out.capabilities);
12936                 ndr->depth++;
12937                 ndr_print_set_switch_value(ndr, r->out.capabilities, r->in.query_level);
12938                 ndr_print_netr_Capabilities(ndr, "capabilities", r->out.capabilities);
12939                 ndr->depth--;
12940                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
12941                 ndr->depth--;
12942         }
12943         ndr->depth--;
12944 }
12945
12946 static enum ndr_err_code ndr_push_netr_NETRLOGONSETSERVICEBITS(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONSETSERVICEBITS *r)
12947 {
12948         if (flags & NDR_IN) {
12949         }
12950         if (flags & NDR_OUT) {
12951                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
12952         }
12953         return NDR_ERR_SUCCESS;
12954 }
12955
12956 static enum ndr_err_code ndr_pull_netr_NETRLOGONSETSERVICEBITS(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONSETSERVICEBITS *r)
12957 {
12958         if (flags & NDR_IN) {
12959         }
12960         if (flags & NDR_OUT) {
12961                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
12962         }
12963         return NDR_ERR_SUCCESS;
12964 }
12965
12966 _PUBLIC_ void ndr_print_netr_NETRLOGONSETSERVICEBITS(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONSETSERVICEBITS *r)
12967 {
12968         ndr_print_struct(ndr, name, "netr_NETRLOGONSETSERVICEBITS");
12969         ndr->depth++;
12970         if (flags & NDR_SET_VALUES) {
12971                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
12972         }
12973         if (flags & NDR_IN) {
12974                 ndr_print_struct(ndr, "in", "netr_NETRLOGONSETSERVICEBITS");
12975                 ndr->depth++;
12976                 ndr->depth--;
12977         }
12978         if (flags & NDR_OUT) {
12979                 ndr_print_struct(ndr, "out", "netr_NETRLOGONSETSERVICEBITS");
12980                 ndr->depth++;
12981                 ndr_print_WERROR(ndr, "result", r->out.result);
12982                 ndr->depth--;
12983         }
12984         ndr->depth--;
12985 }
12986
12987 static enum ndr_err_code ndr_push_netr_LogonGetTrustRid(struct ndr_push *ndr, int flags, const struct netr_LogonGetTrustRid *r)
12988 {
12989         if (flags & NDR_IN) {
12990                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
12991                 if (r->in.server_name) {
12992                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12993                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
12994                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
12995                         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));
12996                 }
12997                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_name));
12998                 if (r->in.domain_name) {
12999                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
13000                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13001                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
13002                         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));
13003                 }
13004         }
13005         if (flags & NDR_OUT) {
13006                 if (r->out.rid == NULL) {
13007                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13008                 }
13009                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.rid));
13010                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
13011         }
13012         return NDR_ERR_SUCCESS;
13013 }
13014
13015 static enum ndr_err_code ndr_pull_netr_LogonGetTrustRid(struct ndr_pull *ndr, int flags, struct netr_LogonGetTrustRid *r)
13016 {
13017         uint32_t _ptr_server_name;
13018         uint32_t _ptr_domain_name;
13019         TALLOC_CTX *_mem_save_server_name_0;
13020         TALLOC_CTX *_mem_save_domain_name_0;
13021         TALLOC_CTX *_mem_save_rid_0;
13022         if (flags & NDR_IN) {
13023                 ZERO_STRUCT(r->out);
13024
13025                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
13026                 if (_ptr_server_name) {
13027                         NDR_PULL_ALLOC(ndr, r->in.server_name);
13028                 } else {
13029                         r->in.server_name = NULL;
13030                 }
13031                 if (r->in.server_name) {
13032                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13033                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
13034                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
13035                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
13036                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
13037                                 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));
13038                         }
13039                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
13040                         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));
13041                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
13042                 }
13043                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
13044                 if (_ptr_domain_name) {
13045                         NDR_PULL_ALLOC(ndr, r->in.domain_name);
13046                 } else {
13047                         r->in.domain_name = NULL;
13048                 }
13049                 if (r->in.domain_name) {
13050                         _mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13051                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_name, 0);
13052                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domain_name));
13053                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domain_name));
13054                         if (ndr_get_array_length(ndr, &r->in.domain_name) > ndr_get_array_size(ndr, &r->in.domain_name)) {
13055                                 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));
13056                         }
13057                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t)));
13058                         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));
13059                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
13060                 }
13061                 NDR_PULL_ALLOC(ndr, r->out.rid);
13062                 ZERO_STRUCTP(r->out.rid);
13063         }
13064         if (flags & NDR_OUT) {
13065                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13066                         NDR_PULL_ALLOC(ndr, r->out.rid);
13067                 }
13068                 _mem_save_rid_0 = NDR_PULL_GET_MEM_CTX(ndr);
13069                 NDR_PULL_SET_MEM_CTX(ndr, r->out.rid, LIBNDR_FLAG_REF_ALLOC);
13070                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.rid));
13071                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rid_0, LIBNDR_FLAG_REF_ALLOC);
13072                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
13073         }
13074         return NDR_ERR_SUCCESS;
13075 }
13076
13077 _PUBLIC_ void ndr_print_netr_LogonGetTrustRid(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonGetTrustRid *r)
13078 {
13079         ndr_print_struct(ndr, name, "netr_LogonGetTrustRid");
13080         ndr->depth++;
13081         if (flags & NDR_SET_VALUES) {
13082                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13083         }
13084         if (flags & NDR_IN) {
13085                 ndr_print_struct(ndr, "in", "netr_LogonGetTrustRid");
13086                 ndr->depth++;
13087                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
13088                 ndr->depth++;
13089                 if (r->in.server_name) {
13090                         ndr_print_string(ndr, "server_name", r->in.server_name);
13091                 }
13092                 ndr->depth--;
13093                 ndr_print_ptr(ndr, "domain_name", r->in.domain_name);
13094                 ndr->depth++;
13095                 if (r->in.domain_name) {
13096                         ndr_print_string(ndr, "domain_name", r->in.domain_name);
13097                 }
13098                 ndr->depth--;
13099                 ndr->depth--;
13100         }
13101         if (flags & NDR_OUT) {
13102                 ndr_print_struct(ndr, "out", "netr_LogonGetTrustRid");
13103                 ndr->depth++;
13104                 ndr_print_ptr(ndr, "rid", r->out.rid);
13105                 ndr->depth++;
13106                 ndr_print_uint32(ndr, "rid", *r->out.rid);
13107                 ndr->depth--;
13108                 ndr_print_WERROR(ndr, "result", r->out.result);
13109                 ndr->depth--;
13110         }
13111         ndr->depth--;
13112 }
13113
13114 static enum ndr_err_code ndr_push_netr_NETRLOGONCOMPUTESERVERDIGEST(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONCOMPUTESERVERDIGEST *r)
13115 {
13116         if (flags & NDR_IN) {
13117         }
13118         if (flags & NDR_OUT) {
13119                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
13120         }
13121         return NDR_ERR_SUCCESS;
13122 }
13123
13124 static enum ndr_err_code ndr_pull_netr_NETRLOGONCOMPUTESERVERDIGEST(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONCOMPUTESERVERDIGEST *r)
13125 {
13126         if (flags & NDR_IN) {
13127         }
13128         if (flags & NDR_OUT) {
13129                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
13130         }
13131         return NDR_ERR_SUCCESS;
13132 }
13133
13134 _PUBLIC_ void ndr_print_netr_NETRLOGONCOMPUTESERVERDIGEST(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONCOMPUTESERVERDIGEST *r)
13135 {
13136         ndr_print_struct(ndr, name, "netr_NETRLOGONCOMPUTESERVERDIGEST");
13137         ndr->depth++;
13138         if (flags & NDR_SET_VALUES) {
13139                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13140         }
13141         if (flags & NDR_IN) {
13142                 ndr_print_struct(ndr, "in", "netr_NETRLOGONCOMPUTESERVERDIGEST");
13143                 ndr->depth++;
13144                 ndr->depth--;
13145         }
13146         if (flags & NDR_OUT) {
13147                 ndr_print_struct(ndr, "out", "netr_NETRLOGONCOMPUTESERVERDIGEST");
13148                 ndr->depth++;
13149                 ndr_print_WERROR(ndr, "result", r->out.result);
13150                 ndr->depth--;
13151         }
13152         ndr->depth--;
13153 }
13154
13155 static enum ndr_err_code ndr_push_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONCOMPUTECLIENTDIGEST *r)
13156 {
13157         if (flags & NDR_IN) {
13158         }
13159         if (flags & NDR_OUT) {
13160                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
13161         }
13162         return NDR_ERR_SUCCESS;
13163 }
13164
13165 static enum ndr_err_code ndr_pull_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONCOMPUTECLIENTDIGEST *r)
13166 {
13167         if (flags & NDR_IN) {
13168         }
13169         if (flags & NDR_OUT) {
13170                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
13171         }
13172         return NDR_ERR_SUCCESS;
13173 }
13174
13175 _PUBLIC_ void ndr_print_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONCOMPUTECLIENTDIGEST *r)
13176 {
13177         ndr_print_struct(ndr, name, "netr_NETRLOGONCOMPUTECLIENTDIGEST");
13178         ndr->depth++;
13179         if (flags & NDR_SET_VALUES) {
13180                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13181         }
13182         if (flags & NDR_IN) {
13183                 ndr_print_struct(ndr, "in", "netr_NETRLOGONCOMPUTECLIENTDIGEST");
13184                 ndr->depth++;
13185                 ndr->depth--;
13186         }
13187         if (flags & NDR_OUT) {
13188                 ndr_print_struct(ndr, "out", "netr_NETRLOGONCOMPUTECLIENTDIGEST");
13189                 ndr->depth++;
13190                 ndr_print_WERROR(ndr, "result", r->out.result);
13191                 ndr->depth--;
13192         }
13193         ndr->depth--;
13194 }
13195
13196 _PUBLIC_ enum ndr_err_code ndr_push_netr_ServerAuthenticate3(struct ndr_push *ndr, int flags, const struct netr_ServerAuthenticate3 *r)
13197 {
13198         if (flags & NDR_IN) {
13199                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
13200                 if (r->in.server_name) {
13201                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13202                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13203                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13204                         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));
13205                 }
13206                 if (r->in.account_name == NULL) {
13207                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13208                 }
13209                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
13210                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13211                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
13212                 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));
13213                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
13214                 if (r->in.computer_name == NULL) {
13215                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13216                 }
13217                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13218                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13219                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13220                 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));
13221                 if (r->in.credentials == NULL) {
13222                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13223                 }
13224                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
13225                 if (r->in.negotiate_flags == NULL) {
13226                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13227                 }
13228                 NDR_CHECK(ndr_push_netr_NegotiateFlags(ndr, NDR_SCALARS, *r->in.negotiate_flags));
13229         }
13230         if (flags & NDR_OUT) {
13231                 if (r->out.return_credentials == NULL) {
13232                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13233                 }
13234                 NDR_CHECK(ndr_push_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
13235                 if (r->out.negotiate_flags == NULL) {
13236                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13237                 }
13238                 NDR_CHECK(ndr_push_netr_NegotiateFlags(ndr, NDR_SCALARS, *r->out.negotiate_flags));
13239                 if (r->out.rid == NULL) {
13240                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13241                 }
13242                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.rid));
13243                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
13244         }
13245         return NDR_ERR_SUCCESS;
13246 }
13247
13248 _PUBLIC_ enum ndr_err_code ndr_pull_netr_ServerAuthenticate3(struct ndr_pull *ndr, int flags, struct netr_ServerAuthenticate3 *r)
13249 {
13250         uint32_t _ptr_server_name;
13251         TALLOC_CTX *_mem_save_server_name_0;
13252         TALLOC_CTX *_mem_save_credentials_0;
13253         TALLOC_CTX *_mem_save_return_credentials_0;
13254         TALLOC_CTX *_mem_save_negotiate_flags_0;
13255         TALLOC_CTX *_mem_save_rid_0;
13256         if (flags & NDR_IN) {
13257                 ZERO_STRUCT(r->out);
13258
13259                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
13260                 if (_ptr_server_name) {
13261                         NDR_PULL_ALLOC(ndr, r->in.server_name);
13262                 } else {
13263                         r->in.server_name = NULL;
13264                 }
13265                 if (r->in.server_name) {
13266                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13267                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
13268                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
13269                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
13270                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
13271                                 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));
13272                         }
13273                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
13274                         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));
13275                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
13276                 }
13277                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
13278                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
13279                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
13280                         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));
13281                 }
13282                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
13283                 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));
13284                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
13285                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
13286                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
13287                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
13288                         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));
13289                 }
13290                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
13291                 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));
13292                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13293                         NDR_PULL_ALLOC(ndr, r->in.credentials);
13294                 }
13295                 _mem_save_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
13296                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credentials, LIBNDR_FLAG_REF_ALLOC);
13297                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->in.credentials));
13298                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credentials_0, LIBNDR_FLAG_REF_ALLOC);
13299                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13300                         NDR_PULL_ALLOC(ndr, r->in.negotiate_flags);
13301                 }
13302                 _mem_save_negotiate_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
13303                 NDR_PULL_SET_MEM_CTX(ndr, r->in.negotiate_flags, LIBNDR_FLAG_REF_ALLOC);
13304                 NDR_CHECK(ndr_pull_netr_NegotiateFlags(ndr, NDR_SCALARS, r->in.negotiate_flags));
13305                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_negotiate_flags_0, LIBNDR_FLAG_REF_ALLOC);
13306                 NDR_PULL_ALLOC(ndr, r->out.return_credentials);
13307                 ZERO_STRUCTP(r->out.return_credentials);
13308                 NDR_PULL_ALLOC(ndr, r->out.negotiate_flags);
13309                 *r->out.negotiate_flags = *r->in.negotiate_flags;
13310                 NDR_PULL_ALLOC(ndr, r->out.rid);
13311                 ZERO_STRUCTP(r->out.rid);
13312         }
13313         if (flags & NDR_OUT) {
13314                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13315                         NDR_PULL_ALLOC(ndr, r->out.return_credentials);
13316                 }
13317                 _mem_save_return_credentials_0 = NDR_PULL_GET_MEM_CTX(ndr);
13318                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_credentials, LIBNDR_FLAG_REF_ALLOC);
13319                 NDR_CHECK(ndr_pull_netr_Credential(ndr, NDR_SCALARS, r->out.return_credentials));
13320                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_credentials_0, LIBNDR_FLAG_REF_ALLOC);
13321                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13322                         NDR_PULL_ALLOC(ndr, r->out.negotiate_flags);
13323                 }
13324                 _mem_save_negotiate_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
13325                 NDR_PULL_SET_MEM_CTX(ndr, r->out.negotiate_flags, LIBNDR_FLAG_REF_ALLOC);
13326                 NDR_CHECK(ndr_pull_netr_NegotiateFlags(ndr, NDR_SCALARS, r->out.negotiate_flags));
13327                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_negotiate_flags_0, LIBNDR_FLAG_REF_ALLOC);
13328                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13329                         NDR_PULL_ALLOC(ndr, r->out.rid);
13330                 }
13331                 _mem_save_rid_0 = NDR_PULL_GET_MEM_CTX(ndr);
13332                 NDR_PULL_SET_MEM_CTX(ndr, r->out.rid, LIBNDR_FLAG_REF_ALLOC);
13333                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.rid));
13334                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_rid_0, LIBNDR_FLAG_REF_ALLOC);
13335                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
13336         }
13337         return NDR_ERR_SUCCESS;
13338 }
13339
13340 _PUBLIC_ void ndr_print_netr_ServerAuthenticate3(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerAuthenticate3 *r)
13341 {
13342         ndr_print_struct(ndr, name, "netr_ServerAuthenticate3");
13343         ndr->depth++;
13344         if (flags & NDR_SET_VALUES) {
13345                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13346         }
13347         if (flags & NDR_IN) {
13348                 ndr_print_struct(ndr, "in", "netr_ServerAuthenticate3");
13349                 ndr->depth++;
13350                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
13351                 ndr->depth++;
13352                 if (r->in.server_name) {
13353                         ndr_print_string(ndr, "server_name", r->in.server_name);
13354                 }
13355                 ndr->depth--;
13356                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
13357                 ndr->depth++;
13358                 ndr_print_string(ndr, "account_name", r->in.account_name);
13359                 ndr->depth--;
13360                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
13361                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
13362                 ndr->depth++;
13363                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
13364                 ndr->depth--;
13365                 ndr_print_ptr(ndr, "credentials", r->in.credentials);
13366                 ndr->depth++;
13367                 ndr_print_netr_Credential(ndr, "credentials", r->in.credentials);
13368                 ndr->depth--;
13369                 ndr_print_ptr(ndr, "negotiate_flags", r->in.negotiate_flags);
13370                 ndr->depth++;
13371                 ndr_print_netr_NegotiateFlags(ndr, "negotiate_flags", *r->in.negotiate_flags);
13372                 ndr->depth--;
13373                 ndr->depth--;
13374         }
13375         if (flags & NDR_OUT) {
13376                 ndr_print_struct(ndr, "out", "netr_ServerAuthenticate3");
13377                 ndr->depth++;
13378                 ndr_print_ptr(ndr, "return_credentials", r->out.return_credentials);
13379                 ndr->depth++;
13380                 ndr_print_netr_Credential(ndr, "return_credentials", r->out.return_credentials);
13381                 ndr->depth--;
13382                 ndr_print_ptr(ndr, "negotiate_flags", r->out.negotiate_flags);
13383                 ndr->depth++;
13384                 ndr_print_netr_NegotiateFlags(ndr, "negotiate_flags", *r->out.negotiate_flags);
13385                 ndr->depth--;
13386                 ndr_print_ptr(ndr, "rid", r->out.rid);
13387                 ndr->depth++;
13388                 ndr_print_uint32(ndr, "rid", *r->out.rid);
13389                 ndr->depth--;
13390                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
13391                 ndr->depth--;
13392         }
13393         ndr->depth--;
13394 }
13395
13396 static enum ndr_err_code ndr_push_netr_DsRGetDCNameEx(struct ndr_push *ndr, int flags, const struct netr_DsRGetDCNameEx *r)
13397 {
13398         if (flags & NDR_IN) {
13399                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
13400                 if (r->in.server_unc) {
13401                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
13402                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13403                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
13404                         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));
13405                 }
13406                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_name));
13407                 if (r->in.domain_name) {
13408                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
13409                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13410                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
13411                         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));
13412                 }
13413                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_guid));
13414                 if (r->in.domain_guid) {
13415                         NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, r->in.domain_guid));
13416                 }
13417                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.site_name));
13418                 if (r->in.site_name) {
13419                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.site_name, CH_UTF16)));
13420                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13421                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.site_name, CH_UTF16)));
13422                         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));
13423                 }
13424                 NDR_CHECK(ndr_push_netr_DsRGetDCName_flags(ndr, NDR_SCALARS, r->in.flags));
13425         }
13426         if (flags & NDR_OUT) {
13427                 if (r->out.info == NULL) {
13428                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13429                 }
13430                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.info));
13431                 if (*r->out.info) {
13432                         NDR_CHECK(ndr_push_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
13433                 }
13434                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
13435         }
13436         return NDR_ERR_SUCCESS;
13437 }
13438
13439 static enum ndr_err_code ndr_pull_netr_DsRGetDCNameEx(struct ndr_pull *ndr, int flags, struct netr_DsRGetDCNameEx *r)
13440 {
13441         uint32_t _ptr_server_unc;
13442         uint32_t _ptr_domain_name;
13443         uint32_t _ptr_domain_guid;
13444         uint32_t _ptr_site_name;
13445         uint32_t _ptr_info;
13446         TALLOC_CTX *_mem_save_server_unc_0;
13447         TALLOC_CTX *_mem_save_domain_name_0;
13448         TALLOC_CTX *_mem_save_domain_guid_0;
13449         TALLOC_CTX *_mem_save_site_name_0;
13450         TALLOC_CTX *_mem_save_info_0;
13451         TALLOC_CTX *_mem_save_info_1;
13452         if (flags & NDR_IN) {
13453                 ZERO_STRUCT(r->out);
13454
13455                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
13456                 if (_ptr_server_unc) {
13457                         NDR_PULL_ALLOC(ndr, r->in.server_unc);
13458                 } else {
13459                         r->in.server_unc = NULL;
13460                 }
13461                 if (r->in.server_unc) {
13462                         _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
13463                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
13464                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
13465                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
13466                         if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
13467                                 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));
13468                         }
13469                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
13470                         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));
13471                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
13472                 }
13473                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
13474                 if (_ptr_domain_name) {
13475                         NDR_PULL_ALLOC(ndr, r->in.domain_name);
13476                 } else {
13477                         r->in.domain_name = NULL;
13478                 }
13479                 if (r->in.domain_name) {
13480                         _mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13481                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_name, 0);
13482                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domain_name));
13483                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domain_name));
13484                         if (ndr_get_array_length(ndr, &r->in.domain_name) > ndr_get_array_size(ndr, &r->in.domain_name)) {
13485                                 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));
13486                         }
13487                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t)));
13488                         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));
13489                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
13490                 }
13491                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_guid));
13492                 if (_ptr_domain_guid) {
13493                         NDR_PULL_ALLOC(ndr, r->in.domain_guid);
13494                 } else {
13495                         r->in.domain_guid = NULL;
13496                 }
13497                 if (r->in.domain_guid) {
13498                         _mem_save_domain_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
13499                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_guid, 0);
13500                         NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, r->in.domain_guid));
13501                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_guid_0, 0);
13502                 }
13503                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_name));
13504                 if (_ptr_site_name) {
13505                         NDR_PULL_ALLOC(ndr, r->in.site_name);
13506                 } else {
13507                         r->in.site_name = NULL;
13508                 }
13509                 if (r->in.site_name) {
13510                         _mem_save_site_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13511                         NDR_PULL_SET_MEM_CTX(ndr, r->in.site_name, 0);
13512                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.site_name));
13513                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.site_name));
13514                         if (ndr_get_array_length(ndr, &r->in.site_name) > ndr_get_array_size(ndr, &r->in.site_name)) {
13515                                 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));
13516                         }
13517                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.site_name), sizeof(uint16_t)));
13518                         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));
13519                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_name_0, 0);
13520                 }
13521                 NDR_CHECK(ndr_pull_netr_DsRGetDCName_flags(ndr, NDR_SCALARS, &r->in.flags));
13522                 NDR_PULL_ALLOC(ndr, r->out.info);
13523                 ZERO_STRUCTP(r->out.info);
13524         }
13525         if (flags & NDR_OUT) {
13526                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13527                         NDR_PULL_ALLOC(ndr, r->out.info);
13528                 }
13529                 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
13530                 NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
13531                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
13532                 if (_ptr_info) {
13533                         NDR_PULL_ALLOC(ndr, *r->out.info);
13534                 } else {
13535                         *r->out.info = NULL;
13536                 }
13537                 if (*r->out.info) {
13538                         _mem_save_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
13539                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.info, 0);
13540                         NDR_CHECK(ndr_pull_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
13541                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_1, 0);
13542                 }
13543                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
13544                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
13545         }
13546         return NDR_ERR_SUCCESS;
13547 }
13548
13549 _PUBLIC_ void ndr_print_netr_DsRGetDCNameEx(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetDCNameEx *r)
13550 {
13551         ndr_print_struct(ndr, name, "netr_DsRGetDCNameEx");
13552         ndr->depth++;
13553         if (flags & NDR_SET_VALUES) {
13554                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13555         }
13556         if (flags & NDR_IN) {
13557                 ndr_print_struct(ndr, "in", "netr_DsRGetDCNameEx");
13558                 ndr->depth++;
13559                 ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
13560                 ndr->depth++;
13561                 if (r->in.server_unc) {
13562                         ndr_print_string(ndr, "server_unc", r->in.server_unc);
13563                 }
13564                 ndr->depth--;
13565                 ndr_print_ptr(ndr, "domain_name", r->in.domain_name);
13566                 ndr->depth++;
13567                 if (r->in.domain_name) {
13568                         ndr_print_string(ndr, "domain_name", r->in.domain_name);
13569                 }
13570                 ndr->depth--;
13571                 ndr_print_ptr(ndr, "domain_guid", r->in.domain_guid);
13572                 ndr->depth++;
13573                 if (r->in.domain_guid) {
13574                         ndr_print_GUID(ndr, "domain_guid", r->in.domain_guid);
13575                 }
13576                 ndr->depth--;
13577                 ndr_print_ptr(ndr, "site_name", r->in.site_name);
13578                 ndr->depth++;
13579                 if (r->in.site_name) {
13580                         ndr_print_string(ndr, "site_name", r->in.site_name);
13581                 }
13582                 ndr->depth--;
13583                 ndr_print_netr_DsRGetDCName_flags(ndr, "flags", r->in.flags);
13584                 ndr->depth--;
13585         }
13586         if (flags & NDR_OUT) {
13587                 ndr_print_struct(ndr, "out", "netr_DsRGetDCNameEx");
13588                 ndr->depth++;
13589                 ndr_print_ptr(ndr, "info", r->out.info);
13590                 ndr->depth++;
13591                 ndr_print_ptr(ndr, "info", *r->out.info);
13592                 ndr->depth++;
13593                 if (*r->out.info) {
13594                         ndr_print_netr_DsRGetDCNameInfo(ndr, "info", *r->out.info);
13595                 }
13596                 ndr->depth--;
13597                 ndr->depth--;
13598                 ndr_print_WERROR(ndr, "result", r->out.result);
13599                 ndr->depth--;
13600         }
13601         ndr->depth--;
13602 }
13603
13604 static enum ndr_err_code ndr_push_netr_DsRGetSiteName(struct ndr_push *ndr, int flags, const struct netr_DsRGetSiteName *r)
13605 {
13606         if (flags & NDR_IN) {
13607                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
13608                 if (r->in.computer_name) {
13609                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13610                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13611                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13612                         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));
13613                 }
13614         }
13615         if (flags & NDR_OUT) {
13616                 if (r->out.site == NULL) {
13617                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13618                 }
13619                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.site));
13620                 if (*r->out.site) {
13621                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.site, CH_UTF16)));
13622                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13623                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(*r->out.site, CH_UTF16)));
13624                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, *r->out.site, ndr_charset_length(*r->out.site, CH_UTF16), sizeof(uint16_t), CH_UTF16));
13625                 }
13626                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
13627         }
13628         return NDR_ERR_SUCCESS;
13629 }
13630
13631 static enum ndr_err_code ndr_pull_netr_DsRGetSiteName(struct ndr_pull *ndr, int flags, struct netr_DsRGetSiteName *r)
13632 {
13633         uint32_t _ptr_computer_name;
13634         uint32_t _ptr_site;
13635         TALLOC_CTX *_mem_save_computer_name_0;
13636         TALLOC_CTX *_mem_save_site_0;
13637         TALLOC_CTX *_mem_save_site_1;
13638         if (flags & NDR_IN) {
13639                 ZERO_STRUCT(r->out);
13640
13641                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
13642                 if (_ptr_computer_name) {
13643                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
13644                 } else {
13645                         r->in.computer_name = NULL;
13646                 }
13647                 if (r->in.computer_name) {
13648                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13649                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
13650                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
13651                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
13652                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
13653                                 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));
13654                         }
13655                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
13656                         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));
13657                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
13658                 }
13659                 NDR_PULL_ALLOC(ndr, r->out.site);
13660                 ZERO_STRUCTP(r->out.site);
13661         }
13662         if (flags & NDR_OUT) {
13663                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13664                         NDR_PULL_ALLOC(ndr, r->out.site);
13665                 }
13666                 _mem_save_site_0 = NDR_PULL_GET_MEM_CTX(ndr);
13667                 NDR_PULL_SET_MEM_CTX(ndr, r->out.site, LIBNDR_FLAG_REF_ALLOC);
13668                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site));
13669                 if (_ptr_site) {
13670                         NDR_PULL_ALLOC(ndr, *r->out.site);
13671                 } else {
13672                         *r->out.site = NULL;
13673                 }
13674                 if (*r->out.site) {
13675                         _mem_save_site_1 = NDR_PULL_GET_MEM_CTX(ndr);
13676                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.site, 0);
13677                         NDR_CHECK(ndr_pull_array_size(ndr, r->out.site));
13678                         NDR_CHECK(ndr_pull_array_length(ndr, r->out.site));
13679                         if (ndr_get_array_length(ndr, r->out.site) > ndr_get_array_size(ndr, r->out.site)) {
13680                                 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));
13681                         }
13682                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.site), sizeof(uint16_t)));
13683                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.site, ndr_get_array_length(ndr, r->out.site), sizeof(uint16_t), CH_UTF16));
13684                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_1, 0);
13685                 }
13686                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_0, LIBNDR_FLAG_REF_ALLOC);
13687                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
13688         }
13689         return NDR_ERR_SUCCESS;
13690 }
13691
13692 _PUBLIC_ void ndr_print_netr_DsRGetSiteName(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetSiteName *r)
13693 {
13694         ndr_print_struct(ndr, name, "netr_DsRGetSiteName");
13695         ndr->depth++;
13696         if (flags & NDR_SET_VALUES) {
13697                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13698         }
13699         if (flags & NDR_IN) {
13700                 ndr_print_struct(ndr, "in", "netr_DsRGetSiteName");
13701                 ndr->depth++;
13702                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
13703                 ndr->depth++;
13704                 if (r->in.computer_name) {
13705                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
13706                 }
13707                 ndr->depth--;
13708                 ndr->depth--;
13709         }
13710         if (flags & NDR_OUT) {
13711                 ndr_print_struct(ndr, "out", "netr_DsRGetSiteName");
13712                 ndr->depth++;
13713                 ndr_print_ptr(ndr, "site", r->out.site);
13714                 ndr->depth++;
13715                 ndr_print_ptr(ndr, "site", *r->out.site);
13716                 ndr->depth++;
13717                 if (*r->out.site) {
13718                         ndr_print_string(ndr, "site", *r->out.site);
13719                 }
13720                 ndr->depth--;
13721                 ndr->depth--;
13722                 ndr_print_WERROR(ndr, "result", r->out.result);
13723                 ndr->depth--;
13724         }
13725         ndr->depth--;
13726 }
13727
13728 static enum ndr_err_code ndr_push_netr_LogonGetDomainInfo(struct ndr_push *ndr, int flags, const struct netr_LogonGetDomainInfo *r)
13729 {
13730         if (flags & NDR_IN) {
13731                 if (r->in.server_name == NULL) {
13732                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13733                 }
13734                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13735                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13736                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13737                 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));
13738                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
13739                 if (r->in.computer_name) {
13740                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13741                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13742                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13743                         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));
13744                 }
13745                 if (r->in.credential == NULL) {
13746                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13747                 }
13748                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
13749                 if (r->in.return_authenticator == NULL) {
13750                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13751                 }
13752                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
13753                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level));
13754                 if (r->in.query == NULL) {
13755                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13756                 }
13757                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.query, r->in.level));
13758                 NDR_CHECK(ndr_push_netr_WorkstationInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.query));
13759         }
13760         if (flags & NDR_OUT) {
13761                 if (r->out.return_authenticator == NULL) {
13762                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13763                 }
13764                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
13765                 if (r->out.info == NULL) {
13766                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13767                 }
13768                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.info, r->in.level));
13769                 NDR_CHECK(ndr_push_netr_DomainInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
13770                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
13771         }
13772         return NDR_ERR_SUCCESS;
13773 }
13774
13775 static enum ndr_err_code ndr_pull_netr_LogonGetDomainInfo(struct ndr_pull *ndr, int flags, struct netr_LogonGetDomainInfo *r)
13776 {
13777         uint32_t _ptr_computer_name;
13778         TALLOC_CTX *_mem_save_computer_name_0;
13779         TALLOC_CTX *_mem_save_credential_0;
13780         TALLOC_CTX *_mem_save_return_authenticator_0;
13781         TALLOC_CTX *_mem_save_query_0;
13782         TALLOC_CTX *_mem_save_info_0;
13783         if (flags & NDR_IN) {
13784                 ZERO_STRUCT(r->out);
13785
13786                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
13787                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
13788                 if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
13789                         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));
13790                 }
13791                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
13792                 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));
13793                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
13794                 if (_ptr_computer_name) {
13795                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
13796                 } else {
13797                         r->in.computer_name = NULL;
13798                 }
13799                 if (r->in.computer_name) {
13800                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13801                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
13802                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
13803                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
13804                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
13805                                 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));
13806                         }
13807                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
13808                         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));
13809                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
13810                 }
13811                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13812                         NDR_PULL_ALLOC(ndr, r->in.credential);
13813                 }
13814                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
13815                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
13816                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
13817                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
13818                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13819                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
13820                 }
13821                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
13822                 NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
13823                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
13824                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
13825                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level));
13826                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13827                         NDR_PULL_ALLOC(ndr, r->in.query);
13828                 }
13829                 _mem_save_query_0 = NDR_PULL_GET_MEM_CTX(ndr);
13830                 NDR_PULL_SET_MEM_CTX(ndr, r->in.query, LIBNDR_FLAG_REF_ALLOC);
13831                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.query, r->in.level));
13832                 NDR_CHECK(ndr_pull_netr_WorkstationInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.query));
13833                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_query_0, LIBNDR_FLAG_REF_ALLOC);
13834                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
13835                 *r->out.return_authenticator = *r->in.return_authenticator;
13836                 NDR_PULL_ALLOC(ndr, r->out.info);
13837                 ZERO_STRUCTP(r->out.info);
13838         }
13839         if (flags & NDR_OUT) {
13840                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13841                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
13842                 }
13843                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
13844                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
13845                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
13846                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
13847                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
13848                         NDR_PULL_ALLOC(ndr, r->out.info);
13849                 }
13850                 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
13851                 NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
13852                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.info, r->in.level));
13853                 NDR_CHECK(ndr_pull_netr_DomainInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
13854                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
13855                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
13856         }
13857         return NDR_ERR_SUCCESS;
13858 }
13859
13860 _PUBLIC_ void ndr_print_netr_LogonGetDomainInfo(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonGetDomainInfo *r)
13861 {
13862         ndr_print_struct(ndr, name, "netr_LogonGetDomainInfo");
13863         ndr->depth++;
13864         if (flags & NDR_SET_VALUES) {
13865                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
13866         }
13867         if (flags & NDR_IN) {
13868                 ndr_print_struct(ndr, "in", "netr_LogonGetDomainInfo");
13869                 ndr->depth++;
13870                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
13871                 ndr->depth++;
13872                 ndr_print_string(ndr, "server_name", r->in.server_name);
13873                 ndr->depth--;
13874                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
13875                 ndr->depth++;
13876                 if (r->in.computer_name) {
13877                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
13878                 }
13879                 ndr->depth--;
13880                 ndr_print_ptr(ndr, "credential", r->in.credential);
13881                 ndr->depth++;
13882                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
13883                 ndr->depth--;
13884                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
13885                 ndr->depth++;
13886                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
13887                 ndr->depth--;
13888                 ndr_print_uint32(ndr, "level", r->in.level);
13889                 ndr_print_ptr(ndr, "query", r->in.query);
13890                 ndr->depth++;
13891                 ndr_print_set_switch_value(ndr, r->in.query, r->in.level);
13892                 ndr_print_netr_WorkstationInfo(ndr, "query", r->in.query);
13893                 ndr->depth--;
13894                 ndr->depth--;
13895         }
13896         if (flags & NDR_OUT) {
13897                 ndr_print_struct(ndr, "out", "netr_LogonGetDomainInfo");
13898                 ndr->depth++;
13899                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
13900                 ndr->depth++;
13901                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
13902                 ndr->depth--;
13903                 ndr_print_ptr(ndr, "info", r->out.info);
13904                 ndr->depth++;
13905                 ndr_print_set_switch_value(ndr, r->out.info, r->in.level);
13906                 ndr_print_netr_DomainInfo(ndr, "info", r->out.info);
13907                 ndr->depth--;
13908                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
13909                 ndr->depth--;
13910         }
13911         ndr->depth--;
13912 }
13913
13914 static enum ndr_err_code ndr_push_netr_ServerPasswordSet2(struct ndr_push *ndr, int flags, const struct netr_ServerPasswordSet2 *r)
13915 {
13916         if (flags & NDR_IN) {
13917                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
13918                 if (r->in.server_name) {
13919                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13920                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13921                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
13922                         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));
13923                 }
13924                 if (r->in.account_name == NULL) {
13925                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13926                 }
13927                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
13928                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13929                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
13930                 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));
13931                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
13932                 if (r->in.computer_name == NULL) {
13933                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13934                 }
13935                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13936                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
13937                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
13938                 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));
13939                 if (r->in.credential == NULL) {
13940                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13941                 }
13942                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
13943                 if (r->in.new_password == NULL) {
13944                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13945                 }
13946                 NDR_CHECK(ndr_push_netr_CryptPassword(ndr, NDR_SCALARS, r->in.new_password));
13947         }
13948         if (flags & NDR_OUT) {
13949                 if (r->out.return_authenticator == NULL) {
13950                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
13951                 }
13952                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
13953                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
13954         }
13955         return NDR_ERR_SUCCESS;
13956 }
13957
13958 static enum ndr_err_code ndr_pull_netr_ServerPasswordSet2(struct ndr_pull *ndr, int flags, struct netr_ServerPasswordSet2 *r)
13959 {
13960         uint32_t _ptr_server_name;
13961         TALLOC_CTX *_mem_save_server_name_0;
13962         TALLOC_CTX *_mem_save_credential_0;
13963         TALLOC_CTX *_mem_save_return_authenticator_0;
13964         TALLOC_CTX *_mem_save_new_password_0;
13965         if (flags & NDR_IN) {
13966                 ZERO_STRUCT(r->out);
13967
13968                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
13969                 if (_ptr_server_name) {
13970                         NDR_PULL_ALLOC(ndr, r->in.server_name);
13971                 } else {
13972                         r->in.server_name = NULL;
13973                 }
13974                 if (r->in.server_name) {
13975                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
13976                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
13977                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
13978                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
13979                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
13980                                 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));
13981                         }
13982                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
13983                         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));
13984                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
13985                 }
13986                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
13987                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
13988                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
13989                         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));
13990                 }
13991                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
13992                 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));
13993                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
13994                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
13995                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
13996                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
13997                         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));
13998                 }
13999                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
14000                 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));
14001                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14002                         NDR_PULL_ALLOC(ndr, r->in.credential);
14003                 }
14004                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
14005                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
14006                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
14007                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
14008                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14009                         NDR_PULL_ALLOC(ndr, r->in.new_password);
14010                 }
14011                 _mem_save_new_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
14012                 NDR_PULL_SET_MEM_CTX(ndr, r->in.new_password, LIBNDR_FLAG_REF_ALLOC);
14013                 NDR_CHECK(ndr_pull_netr_CryptPassword(ndr, NDR_SCALARS, r->in.new_password));
14014                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_new_password_0, LIBNDR_FLAG_REF_ALLOC);
14015                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
14016                 ZERO_STRUCTP(r->out.return_authenticator);
14017         }
14018         if (flags & NDR_OUT) {
14019                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14020                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
14021                 }
14022                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
14023                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
14024                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
14025                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
14026                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
14027         }
14028         return NDR_ERR_SUCCESS;
14029 }
14030
14031 _PUBLIC_ void ndr_print_netr_ServerPasswordSet2(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerPasswordSet2 *r)
14032 {
14033         ndr_print_struct(ndr, name, "netr_ServerPasswordSet2");
14034         ndr->depth++;
14035         if (flags & NDR_SET_VALUES) {
14036                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
14037         }
14038         if (flags & NDR_IN) {
14039                 ndr_print_struct(ndr, "in", "netr_ServerPasswordSet2");
14040                 ndr->depth++;
14041                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
14042                 ndr->depth++;
14043                 if (r->in.server_name) {
14044                         ndr_print_string(ndr, "server_name", r->in.server_name);
14045                 }
14046                 ndr->depth--;
14047                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
14048                 ndr->depth++;
14049                 ndr_print_string(ndr, "account_name", r->in.account_name);
14050                 ndr->depth--;
14051                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
14052                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
14053                 ndr->depth++;
14054                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
14055                 ndr->depth--;
14056                 ndr_print_ptr(ndr, "credential", r->in.credential);
14057                 ndr->depth++;
14058                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
14059                 ndr->depth--;
14060                 ndr_print_ptr(ndr, "new_password", r->in.new_password);
14061                 ndr->depth++;
14062                 ndr_print_netr_CryptPassword(ndr, "new_password", r->in.new_password);
14063                 ndr->depth--;
14064                 ndr->depth--;
14065         }
14066         if (flags & NDR_OUT) {
14067                 ndr_print_struct(ndr, "out", "netr_ServerPasswordSet2");
14068                 ndr->depth++;
14069                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
14070                 ndr->depth++;
14071                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
14072                 ndr->depth--;
14073                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
14074                 ndr->depth--;
14075         }
14076         ndr->depth--;
14077 }
14078
14079 static enum ndr_err_code ndr_push_netr_ServerPasswordGet(struct ndr_push *ndr, int flags, const struct netr_ServerPasswordGet *r)
14080 {
14081         if (flags & NDR_IN) {
14082                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
14083                 if (r->in.server_name) {
14084                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14085                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14086                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14087                         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));
14088                 }
14089                 if (r->in.account_name == NULL) {
14090                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14091                 }
14092                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
14093                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14094                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
14095                 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));
14096                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
14097                 if (r->in.computer_name == NULL) {
14098                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14099                 }
14100                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
14101                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14102                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
14103                 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));
14104                 if (r->in.credential == NULL) {
14105                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14106                 }
14107                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
14108         }
14109         if (flags & NDR_OUT) {
14110                 if (r->out.return_authenticator == NULL) {
14111                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14112                 }
14113                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
14114                 if (r->out.password == NULL) {
14115                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14116                 }
14117                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, r->out.password));
14118                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
14119         }
14120         return NDR_ERR_SUCCESS;
14121 }
14122
14123 static enum ndr_err_code ndr_pull_netr_ServerPasswordGet(struct ndr_pull *ndr, int flags, struct netr_ServerPasswordGet *r)
14124 {
14125         uint32_t _ptr_server_name;
14126         TALLOC_CTX *_mem_save_server_name_0;
14127         TALLOC_CTX *_mem_save_credential_0;
14128         TALLOC_CTX *_mem_save_return_authenticator_0;
14129         TALLOC_CTX *_mem_save_password_0;
14130         if (flags & NDR_IN) {
14131                 ZERO_STRUCT(r->out);
14132
14133                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
14134                 if (_ptr_server_name) {
14135                         NDR_PULL_ALLOC(ndr, r->in.server_name);
14136                 } else {
14137                         r->in.server_name = NULL;
14138                 }
14139                 if (r->in.server_name) {
14140                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
14141                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
14142                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
14143                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
14144                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
14145                                 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));
14146                         }
14147                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
14148                         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));
14149                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
14150                 }
14151                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
14152                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
14153                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
14154                         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));
14155                 }
14156                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
14157                 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));
14158                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
14159                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
14160                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
14161                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
14162                         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));
14163                 }
14164                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
14165                 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));
14166                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14167                         NDR_PULL_ALLOC(ndr, r->in.credential);
14168                 }
14169                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
14170                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
14171                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
14172                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
14173                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
14174                 ZERO_STRUCTP(r->out.return_authenticator);
14175                 NDR_PULL_ALLOC(ndr, r->out.password);
14176                 ZERO_STRUCTP(r->out.password);
14177         }
14178         if (flags & NDR_OUT) {
14179                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14180                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
14181                 }
14182                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
14183                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
14184                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
14185                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
14186                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14187                         NDR_PULL_ALLOC(ndr, r->out.password);
14188                 }
14189                 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
14190                 NDR_PULL_SET_MEM_CTX(ndr, r->out.password, LIBNDR_FLAG_REF_ALLOC);
14191                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, r->out.password));
14192                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, LIBNDR_FLAG_REF_ALLOC);
14193                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
14194         }
14195         return NDR_ERR_SUCCESS;
14196 }
14197
14198 _PUBLIC_ void ndr_print_netr_ServerPasswordGet(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerPasswordGet *r)
14199 {
14200         ndr_print_struct(ndr, name, "netr_ServerPasswordGet");
14201         ndr->depth++;
14202         if (flags & NDR_SET_VALUES) {
14203                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
14204         }
14205         if (flags & NDR_IN) {
14206                 ndr_print_struct(ndr, "in", "netr_ServerPasswordGet");
14207                 ndr->depth++;
14208                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
14209                 ndr->depth++;
14210                 if (r->in.server_name) {
14211                         ndr_print_string(ndr, "server_name", r->in.server_name);
14212                 }
14213                 ndr->depth--;
14214                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
14215                 ndr->depth++;
14216                 ndr_print_string(ndr, "account_name", r->in.account_name);
14217                 ndr->depth--;
14218                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
14219                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
14220                 ndr->depth++;
14221                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
14222                 ndr->depth--;
14223                 ndr_print_ptr(ndr, "credential", r->in.credential);
14224                 ndr->depth++;
14225                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
14226                 ndr->depth--;
14227                 ndr->depth--;
14228         }
14229         if (flags & NDR_OUT) {
14230                 ndr_print_struct(ndr, "out", "netr_ServerPasswordGet");
14231                 ndr->depth++;
14232                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
14233                 ndr->depth++;
14234                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
14235                 ndr->depth--;
14236                 ndr_print_ptr(ndr, "password", r->out.password);
14237                 ndr->depth++;
14238                 ndr_print_samr_Password(ndr, "password", r->out.password);
14239                 ndr->depth--;
14240                 ndr_print_WERROR(ndr, "result", r->out.result);
14241                 ndr->depth--;
14242         }
14243         ndr->depth--;
14244 }
14245
14246 static enum ndr_err_code ndr_push_netr_NETRLOGONSENDTOSAM(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONSENDTOSAM *r)
14247 {
14248         if (flags & NDR_IN) {
14249         }
14250         if (flags & NDR_OUT) {
14251                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
14252         }
14253         return NDR_ERR_SUCCESS;
14254 }
14255
14256 static enum ndr_err_code ndr_pull_netr_NETRLOGONSENDTOSAM(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONSENDTOSAM *r)
14257 {
14258         if (flags & NDR_IN) {
14259         }
14260         if (flags & NDR_OUT) {
14261                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
14262         }
14263         return NDR_ERR_SUCCESS;
14264 }
14265
14266 _PUBLIC_ void ndr_print_netr_NETRLOGONSENDTOSAM(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONSENDTOSAM *r)
14267 {
14268         ndr_print_struct(ndr, name, "netr_NETRLOGONSENDTOSAM");
14269         ndr->depth++;
14270         if (flags & NDR_SET_VALUES) {
14271                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
14272         }
14273         if (flags & NDR_IN) {
14274                 ndr_print_struct(ndr, "in", "netr_NETRLOGONSENDTOSAM");
14275                 ndr->depth++;
14276                 ndr->depth--;
14277         }
14278         if (flags & NDR_OUT) {
14279                 ndr_print_struct(ndr, "out", "netr_NETRLOGONSENDTOSAM");
14280                 ndr->depth++;
14281                 ndr_print_WERROR(ndr, "result", r->out.result);
14282                 ndr->depth--;
14283         }
14284         ndr->depth--;
14285 }
14286
14287 static enum ndr_err_code ndr_push_netr_DsRAddressToSitenamesW(struct ndr_push *ndr, int flags, const struct netr_DsRAddressToSitenamesW *r)
14288 {
14289         uint32_t cntr_addresses_1;
14290         if (flags & NDR_IN) {
14291                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
14292                 if (r->in.server_name) {
14293                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14294                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14295                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14296                         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));
14297                 }
14298                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
14299                 if (r->in.addresses == NULL) {
14300                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14301                 }
14302                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
14303                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
14304                         NDR_CHECK(ndr_push_netr_DsRAddress(ndr, NDR_SCALARS, &r->in.addresses[cntr_addresses_1]));
14305                 }
14306                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
14307                         NDR_CHECK(ndr_push_netr_DsRAddress(ndr, NDR_BUFFERS, &r->in.addresses[cntr_addresses_1]));
14308                 }
14309         }
14310         if (flags & NDR_OUT) {
14311                 if (r->out.ctr == NULL) {
14312                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14313                 }
14314                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.ctr));
14315                 if (*r->out.ctr) {
14316                         NDR_CHECK(ndr_push_netr_DsRAddressToSitenamesWCtr(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.ctr));
14317                 }
14318                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
14319         }
14320         return NDR_ERR_SUCCESS;
14321 }
14322
14323 static enum ndr_err_code ndr_pull_netr_DsRAddressToSitenamesW(struct ndr_pull *ndr, int flags, struct netr_DsRAddressToSitenamesW *r)
14324 {
14325         uint32_t _ptr_server_name;
14326         uint32_t cntr_addresses_1;
14327         uint32_t _ptr_ctr;
14328         TALLOC_CTX *_mem_save_server_name_0;
14329         TALLOC_CTX *_mem_save_addresses_1;
14330         TALLOC_CTX *_mem_save_ctr_0;
14331         TALLOC_CTX *_mem_save_ctr_1;
14332         if (flags & NDR_IN) {
14333                 ZERO_STRUCT(r->out);
14334
14335                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
14336                 if (_ptr_server_name) {
14337                         NDR_PULL_ALLOC(ndr, r->in.server_name);
14338                 } else {
14339                         r->in.server_name = NULL;
14340                 }
14341                 if (r->in.server_name) {
14342                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
14343                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
14344                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
14345                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
14346                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
14347                                 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));
14348                         }
14349                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
14350                         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));
14351                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
14352                 }
14353                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.count));
14354                 if (r->in.count > 32000) {
14355                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
14356                 }
14357                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.addresses));
14358                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14359                         NDR_PULL_ALLOC_N(ndr, r->in.addresses, ndr_get_array_size(ndr, &r->in.addresses));
14360                 }
14361                 _mem_save_addresses_1 = NDR_PULL_GET_MEM_CTX(ndr);
14362                 NDR_PULL_SET_MEM_CTX(ndr, r->in.addresses, 0);
14363                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
14364                         NDR_CHECK(ndr_pull_netr_DsRAddress(ndr, NDR_SCALARS, &r->in.addresses[cntr_addresses_1]));
14365                 }
14366                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
14367                         NDR_CHECK(ndr_pull_netr_DsRAddress(ndr, NDR_BUFFERS, &r->in.addresses[cntr_addresses_1]));
14368                 }
14369                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_addresses_1, 0);
14370                 NDR_PULL_ALLOC(ndr, r->out.ctr);
14371                 ZERO_STRUCTP(r->out.ctr);
14372                 if (r->in.addresses) {
14373                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.addresses, r->in.count));
14374                 }
14375         }
14376         if (flags & NDR_OUT) {
14377                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14378                         NDR_PULL_ALLOC(ndr, r->out.ctr);
14379                 }
14380                 _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
14381                 NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
14382                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr));
14383                 if (_ptr_ctr) {
14384                         NDR_PULL_ALLOC(ndr, *r->out.ctr);
14385                 } else {
14386                         *r->out.ctr = NULL;
14387                 }
14388                 if (*r->out.ctr) {
14389                         _mem_save_ctr_1 = NDR_PULL_GET_MEM_CTX(ndr);
14390                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.ctr, 0);
14391                         NDR_CHECK(ndr_pull_netr_DsRAddressToSitenamesWCtr(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.ctr));
14392                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_1, 0);
14393                 }
14394                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
14395                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
14396         }
14397         return NDR_ERR_SUCCESS;
14398 }
14399
14400 _PUBLIC_ void ndr_print_netr_DsRAddressToSitenamesW(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRAddressToSitenamesW *r)
14401 {
14402         uint32_t cntr_addresses_1;
14403         ndr_print_struct(ndr, name, "netr_DsRAddressToSitenamesW");
14404         ndr->depth++;
14405         if (flags & NDR_SET_VALUES) {
14406                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
14407         }
14408         if (flags & NDR_IN) {
14409                 ndr_print_struct(ndr, "in", "netr_DsRAddressToSitenamesW");
14410                 ndr->depth++;
14411                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
14412                 ndr->depth++;
14413                 if (r->in.server_name) {
14414                         ndr_print_string(ndr, "server_name", r->in.server_name);
14415                 }
14416                 ndr->depth--;
14417                 ndr_print_uint32(ndr, "count", r->in.count);
14418                 ndr_print_ptr(ndr, "addresses", r->in.addresses);
14419                 ndr->depth++;
14420                 ndr->print(ndr, "%s: ARRAY(%d)", "addresses", (int)r->in.count);
14421                 ndr->depth++;
14422                 for (cntr_addresses_1=0;cntr_addresses_1<r->in.count;cntr_addresses_1++) {
14423                         char *idx_1=NULL;
14424                         if (asprintf(&idx_1, "[%d]", cntr_addresses_1) != -1) {
14425                                 ndr_print_netr_DsRAddress(ndr, "addresses", &r->in.addresses[cntr_addresses_1]);
14426                                 free(idx_1);
14427                         }
14428                 }
14429                 ndr->depth--;
14430                 ndr->depth--;
14431                 ndr->depth--;
14432         }
14433         if (flags & NDR_OUT) {
14434                 ndr_print_struct(ndr, "out", "netr_DsRAddressToSitenamesW");
14435                 ndr->depth++;
14436                 ndr_print_ptr(ndr, "ctr", r->out.ctr);
14437                 ndr->depth++;
14438                 ndr_print_ptr(ndr, "ctr", *r->out.ctr);
14439                 ndr->depth++;
14440                 if (*r->out.ctr) {
14441                         ndr_print_netr_DsRAddressToSitenamesWCtr(ndr, "ctr", *r->out.ctr);
14442                 }
14443                 ndr->depth--;
14444                 ndr->depth--;
14445                 ndr_print_WERROR(ndr, "result", r->out.result);
14446                 ndr->depth--;
14447         }
14448         ndr->depth--;
14449 }
14450
14451 static enum ndr_err_code ndr_push_netr_DsRGetDCNameEx2(struct ndr_push *ndr, int flags, const struct netr_DsRGetDCNameEx2 *r)
14452 {
14453         if (flags & NDR_IN) {
14454                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_unc));
14455                 if (r->in.server_unc) {
14456                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
14457                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14458                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16)));
14459                         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));
14460                 }
14461                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.client_account));
14462                 if (r->in.client_account) {
14463                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.client_account, CH_UTF16)));
14464                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14465                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.client_account, CH_UTF16)));
14466                         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));
14467                 }
14468                 NDR_CHECK(ndr_push_samr_AcctFlags(ndr, NDR_SCALARS, r->in.mask));
14469                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_name));
14470                 if (r->in.domain_name) {
14471                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
14472                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14473                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain_name, CH_UTF16)));
14474                         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));
14475                 }
14476                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_guid));
14477                 if (r->in.domain_guid) {
14478                         NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, r->in.domain_guid));
14479                 }
14480                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.site_name));
14481                 if (r->in.site_name) {
14482                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.site_name, CH_UTF16)));
14483                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14484                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.site_name, CH_UTF16)));
14485                         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));
14486                 }
14487                 NDR_CHECK(ndr_push_netr_DsRGetDCName_flags(ndr, NDR_SCALARS, r->in.flags));
14488         }
14489         if (flags & NDR_OUT) {
14490                 if (r->out.info == NULL) {
14491                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14492                 }
14493                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.info));
14494                 if (*r->out.info) {
14495                         NDR_CHECK(ndr_push_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
14496                 }
14497                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
14498         }
14499         return NDR_ERR_SUCCESS;
14500 }
14501
14502 static enum ndr_err_code ndr_pull_netr_DsRGetDCNameEx2(struct ndr_pull *ndr, int flags, struct netr_DsRGetDCNameEx2 *r)
14503 {
14504         uint32_t _ptr_server_unc;
14505         uint32_t _ptr_client_account;
14506         uint32_t _ptr_domain_name;
14507         uint32_t _ptr_domain_guid;
14508         uint32_t _ptr_site_name;
14509         uint32_t _ptr_info;
14510         TALLOC_CTX *_mem_save_server_unc_0;
14511         TALLOC_CTX *_mem_save_client_account_0;
14512         TALLOC_CTX *_mem_save_domain_name_0;
14513         TALLOC_CTX *_mem_save_domain_guid_0;
14514         TALLOC_CTX *_mem_save_site_name_0;
14515         TALLOC_CTX *_mem_save_info_0;
14516         TALLOC_CTX *_mem_save_info_1;
14517         if (flags & NDR_IN) {
14518                 ZERO_STRUCT(r->out);
14519
14520                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc));
14521                 if (_ptr_server_unc) {
14522                         NDR_PULL_ALLOC(ndr, r->in.server_unc);
14523                 } else {
14524                         r->in.server_unc = NULL;
14525                 }
14526                 if (r->in.server_unc) {
14527                         _mem_save_server_unc_0 = NDR_PULL_GET_MEM_CTX(ndr);
14528                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_unc, 0);
14529                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_unc));
14530                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_unc));
14531                         if (ndr_get_array_length(ndr, &r->in.server_unc) > ndr_get_array_size(ndr, &r->in.server_unc)) {
14532                                 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));
14533                         }
14534                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t)));
14535                         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));
14536                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0);
14537                 }
14538                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client_account));
14539                 if (_ptr_client_account) {
14540                         NDR_PULL_ALLOC(ndr, r->in.client_account);
14541                 } else {
14542                         r->in.client_account = NULL;
14543                 }
14544                 if (r->in.client_account) {
14545                         _mem_save_client_account_0 = NDR_PULL_GET_MEM_CTX(ndr);
14546                         NDR_PULL_SET_MEM_CTX(ndr, r->in.client_account, 0);
14547                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.client_account));
14548                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.client_account));
14549                         if (ndr_get_array_length(ndr, &r->in.client_account) > ndr_get_array_size(ndr, &r->in.client_account)) {
14550                                 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));
14551                         }
14552                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.client_account), sizeof(uint16_t)));
14553                         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));
14554                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_account_0, 0);
14555                 }
14556                 NDR_CHECK(ndr_pull_samr_AcctFlags(ndr, NDR_SCALARS, &r->in.mask));
14557                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_name));
14558                 if (_ptr_domain_name) {
14559                         NDR_PULL_ALLOC(ndr, r->in.domain_name);
14560                 } else {
14561                         r->in.domain_name = NULL;
14562                 }
14563                 if (r->in.domain_name) {
14564                         _mem_save_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
14565                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_name, 0);
14566                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domain_name));
14567                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domain_name));
14568                         if (ndr_get_array_length(ndr, &r->in.domain_name) > ndr_get_array_size(ndr, &r->in.domain_name)) {
14569                                 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));
14570                         }
14571                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domain_name), sizeof(uint16_t)));
14572                         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));
14573                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_name_0, 0);
14574                 }
14575                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_guid));
14576                 if (_ptr_domain_guid) {
14577                         NDR_PULL_ALLOC(ndr, r->in.domain_guid);
14578                 } else {
14579                         r->in.domain_guid = NULL;
14580                 }
14581                 if (r->in.domain_guid) {
14582                         _mem_save_domain_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
14583                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_guid, 0);
14584                         NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, r->in.domain_guid));
14585                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_guid_0, 0);
14586                 }
14587                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_site_name));
14588                 if (_ptr_site_name) {
14589                         NDR_PULL_ALLOC(ndr, r->in.site_name);
14590                 } else {
14591                         r->in.site_name = NULL;
14592                 }
14593                 if (r->in.site_name) {
14594                         _mem_save_site_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
14595                         NDR_PULL_SET_MEM_CTX(ndr, r->in.site_name, 0);
14596                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.site_name));
14597                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.site_name));
14598                         if (ndr_get_array_length(ndr, &r->in.site_name) > ndr_get_array_size(ndr, &r->in.site_name)) {
14599                                 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));
14600                         }
14601                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.site_name), sizeof(uint16_t)));
14602                         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));
14603                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_site_name_0, 0);
14604                 }
14605                 NDR_CHECK(ndr_pull_netr_DsRGetDCName_flags(ndr, NDR_SCALARS, &r->in.flags));
14606                 NDR_PULL_ALLOC(ndr, r->out.info);
14607                 ZERO_STRUCTP(r->out.info);
14608         }
14609         if (flags & NDR_OUT) {
14610                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14611                         NDR_PULL_ALLOC(ndr, r->out.info);
14612                 }
14613                 _mem_save_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
14614                 NDR_PULL_SET_MEM_CTX(ndr, r->out.info, LIBNDR_FLAG_REF_ALLOC);
14615                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
14616                 if (_ptr_info) {
14617                         NDR_PULL_ALLOC(ndr, *r->out.info);
14618                 } else {
14619                         *r->out.info = NULL;
14620                 }
14621                 if (*r->out.info) {
14622                         _mem_save_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
14623                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.info, 0);
14624                         NDR_CHECK(ndr_pull_netr_DsRGetDCNameInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.info));
14625                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_1, 0);
14626                 }
14627                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, LIBNDR_FLAG_REF_ALLOC);
14628                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
14629         }
14630         return NDR_ERR_SUCCESS;
14631 }
14632
14633 _PUBLIC_ void ndr_print_netr_DsRGetDCNameEx2(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetDCNameEx2 *r)
14634 {
14635         ndr_print_struct(ndr, name, "netr_DsRGetDCNameEx2");
14636         ndr->depth++;
14637         if (flags & NDR_SET_VALUES) {
14638                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
14639         }
14640         if (flags & NDR_IN) {
14641                 ndr_print_struct(ndr, "in", "netr_DsRGetDCNameEx2");
14642                 ndr->depth++;
14643                 ndr_print_ptr(ndr, "server_unc", r->in.server_unc);
14644                 ndr->depth++;
14645                 if (r->in.server_unc) {
14646                         ndr_print_string(ndr, "server_unc", r->in.server_unc);
14647                 }
14648                 ndr->depth--;
14649                 ndr_print_ptr(ndr, "client_account", r->in.client_account);
14650                 ndr->depth++;
14651                 if (r->in.client_account) {
14652                         ndr_print_string(ndr, "client_account", r->in.client_account);
14653                 }
14654                 ndr->depth--;
14655                 ndr_print_samr_AcctFlags(ndr, "mask", r->in.mask);
14656                 ndr_print_ptr(ndr, "domain_name", r->in.domain_name);
14657                 ndr->depth++;
14658                 if (r->in.domain_name) {
14659                         ndr_print_string(ndr, "domain_name", r->in.domain_name);
14660                 }
14661                 ndr->depth--;
14662                 ndr_print_ptr(ndr, "domain_guid", r->in.domain_guid);
14663                 ndr->depth++;
14664                 if (r->in.domain_guid) {
14665                         ndr_print_GUID(ndr, "domain_guid", r->in.domain_guid);
14666                 }
14667                 ndr->depth--;
14668                 ndr_print_ptr(ndr, "site_name", r->in.site_name);
14669                 ndr->depth++;
14670                 if (r->in.site_name) {
14671                         ndr_print_string(ndr, "site_name", r->in.site_name);
14672                 }
14673                 ndr->depth--;
14674                 ndr_print_netr_DsRGetDCName_flags(ndr, "flags", r->in.flags);
14675                 ndr->depth--;
14676         }
14677         if (flags & NDR_OUT) {
14678                 ndr_print_struct(ndr, "out", "netr_DsRGetDCNameEx2");
14679                 ndr->depth++;
14680                 ndr_print_ptr(ndr, "info", r->out.info);
14681                 ndr->depth++;
14682                 ndr_print_ptr(ndr, "info", *r->out.info);
14683                 ndr->depth++;
14684                 if (*r->out.info) {
14685                         ndr_print_netr_DsRGetDCNameInfo(ndr, "info", *r->out.info);
14686                 }
14687                 ndr->depth--;
14688                 ndr->depth--;
14689                 ndr_print_WERROR(ndr, "result", r->out.result);
14690                 ndr->depth--;
14691         }
14692         ndr->depth--;
14693 }
14694
14695 static enum ndr_err_code ndr_push_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(struct ndr_push *ndr, int flags, const struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN *r)
14696 {
14697         if (flags & NDR_IN) {
14698         }
14699         if (flags & NDR_OUT) {
14700                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
14701         }
14702         return NDR_ERR_SUCCESS;
14703 }
14704
14705 static enum ndr_err_code ndr_pull_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(struct ndr_pull *ndr, int flags, struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN *r)
14706 {
14707         if (flags & NDR_IN) {
14708         }
14709         if (flags & NDR_OUT) {
14710                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
14711         }
14712         return NDR_ERR_SUCCESS;
14713 }
14714
14715 _PUBLIC_ void ndr_print_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(struct ndr_print *ndr, const char *name, int flags, const struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN *r)
14716 {
14717         ndr_print_struct(ndr, name, "netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN");
14718         ndr->depth++;
14719         if (flags & NDR_SET_VALUES) {
14720                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
14721         }
14722         if (flags & NDR_IN) {
14723                 ndr_print_struct(ndr, "in", "netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN");
14724                 ndr->depth++;
14725                 ndr->depth--;
14726         }
14727         if (flags & NDR_OUT) {
14728                 ndr_print_struct(ndr, "out", "netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN");
14729                 ndr->depth++;
14730                 ndr_print_WERROR(ndr, "result", r->out.result);
14731                 ndr->depth--;
14732         }
14733         ndr->depth--;
14734 }
14735
14736 static enum ndr_err_code ndr_push_netr_NetrEnumerateTrustedDomainsEx(struct ndr_push *ndr, int flags, const struct netr_NetrEnumerateTrustedDomainsEx *r)
14737 {
14738         if (flags & NDR_IN) {
14739                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
14740                 if (r->in.server_name) {
14741                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14742                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14743                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14744                         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));
14745                 }
14746         }
14747         if (flags & NDR_OUT) {
14748                 if (r->out.dom_trust_list == NULL) {
14749                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14750                 }
14751                 NDR_CHECK(ndr_push_netr_DomainTrustList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.dom_trust_list));
14752                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
14753         }
14754         return NDR_ERR_SUCCESS;
14755 }
14756
14757 static enum ndr_err_code ndr_pull_netr_NetrEnumerateTrustedDomainsEx(struct ndr_pull *ndr, int flags, struct netr_NetrEnumerateTrustedDomainsEx *r)
14758 {
14759         uint32_t _ptr_server_name;
14760         TALLOC_CTX *_mem_save_server_name_0;
14761         TALLOC_CTX *_mem_save_dom_trust_list_0;
14762         if (flags & NDR_IN) {
14763                 ZERO_STRUCT(r->out);
14764
14765                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
14766                 if (_ptr_server_name) {
14767                         NDR_PULL_ALLOC(ndr, r->in.server_name);
14768                 } else {
14769                         r->in.server_name = NULL;
14770                 }
14771                 if (r->in.server_name) {
14772                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
14773                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
14774                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
14775                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
14776                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
14777                                 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));
14778                         }
14779                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
14780                         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));
14781                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
14782                 }
14783                 NDR_PULL_ALLOC(ndr, r->out.dom_trust_list);
14784                 ZERO_STRUCTP(r->out.dom_trust_list);
14785         }
14786         if (flags & NDR_OUT) {
14787                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14788                         NDR_PULL_ALLOC(ndr, r->out.dom_trust_list);
14789                 }
14790                 _mem_save_dom_trust_list_0 = NDR_PULL_GET_MEM_CTX(ndr);
14791                 NDR_PULL_SET_MEM_CTX(ndr, r->out.dom_trust_list, LIBNDR_FLAG_REF_ALLOC);
14792                 NDR_CHECK(ndr_pull_netr_DomainTrustList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.dom_trust_list));
14793                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dom_trust_list_0, LIBNDR_FLAG_REF_ALLOC);
14794                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
14795         }
14796         return NDR_ERR_SUCCESS;
14797 }
14798
14799 _PUBLIC_ void ndr_print_netr_NetrEnumerateTrustedDomainsEx(struct ndr_print *ndr, const char *name, int flags, const struct netr_NetrEnumerateTrustedDomainsEx *r)
14800 {
14801         ndr_print_struct(ndr, name, "netr_NetrEnumerateTrustedDomainsEx");
14802         ndr->depth++;
14803         if (flags & NDR_SET_VALUES) {
14804                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
14805         }
14806         if (flags & NDR_IN) {
14807                 ndr_print_struct(ndr, "in", "netr_NetrEnumerateTrustedDomainsEx");
14808                 ndr->depth++;
14809                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
14810                 ndr->depth++;
14811                 if (r->in.server_name) {
14812                         ndr_print_string(ndr, "server_name", r->in.server_name);
14813                 }
14814                 ndr->depth--;
14815                 ndr->depth--;
14816         }
14817         if (flags & NDR_OUT) {
14818                 ndr_print_struct(ndr, "out", "netr_NetrEnumerateTrustedDomainsEx");
14819                 ndr->depth++;
14820                 ndr_print_ptr(ndr, "dom_trust_list", r->out.dom_trust_list);
14821                 ndr->depth++;
14822                 ndr_print_netr_DomainTrustList(ndr, "dom_trust_list", r->out.dom_trust_list);
14823                 ndr->depth--;
14824                 ndr_print_WERROR(ndr, "result", r->out.result);
14825                 ndr->depth--;
14826         }
14827         ndr->depth--;
14828 }
14829
14830 static enum ndr_err_code ndr_push_netr_DsRAddressToSitenamesExW(struct ndr_push *ndr, int flags, const struct netr_DsRAddressToSitenamesExW *r)
14831 {
14832         uint32_t cntr_addresses_1;
14833         if (flags & NDR_IN) {
14834                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
14835                 if (r->in.server_name) {
14836                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14837                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
14838                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
14839                         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));
14840                 }
14841                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
14842                 if (r->in.addresses == NULL) {
14843                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14844                 }
14845                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.count));
14846                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
14847                         NDR_CHECK(ndr_push_netr_DsRAddress(ndr, NDR_SCALARS, &r->in.addresses[cntr_addresses_1]));
14848                 }
14849                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
14850                         NDR_CHECK(ndr_push_netr_DsRAddress(ndr, NDR_BUFFERS, &r->in.addresses[cntr_addresses_1]));
14851                 }
14852         }
14853         if (flags & NDR_OUT) {
14854                 if (r->out.ctr == NULL) {
14855                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
14856                 }
14857                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.ctr));
14858                 if (*r->out.ctr) {
14859                         NDR_CHECK(ndr_push_netr_DsRAddressToSitenamesExWCtr(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.ctr));
14860                 }
14861                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
14862         }
14863         return NDR_ERR_SUCCESS;
14864 }
14865
14866 static enum ndr_err_code ndr_pull_netr_DsRAddressToSitenamesExW(struct ndr_pull *ndr, int flags, struct netr_DsRAddressToSitenamesExW *r)
14867 {
14868         uint32_t _ptr_server_name;
14869         uint32_t cntr_addresses_1;
14870         uint32_t _ptr_ctr;
14871         TALLOC_CTX *_mem_save_server_name_0;
14872         TALLOC_CTX *_mem_save_addresses_1;
14873         TALLOC_CTX *_mem_save_ctr_0;
14874         TALLOC_CTX *_mem_save_ctr_1;
14875         if (flags & NDR_IN) {
14876                 ZERO_STRUCT(r->out);
14877
14878                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
14879                 if (_ptr_server_name) {
14880                         NDR_PULL_ALLOC(ndr, r->in.server_name);
14881                 } else {
14882                         r->in.server_name = NULL;
14883                 }
14884                 if (r->in.server_name) {
14885                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
14886                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
14887                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
14888                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
14889                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
14890                                 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));
14891                         }
14892                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
14893                         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));
14894                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
14895                 }
14896                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.count));
14897                 if (r->in.count > 32000) {
14898                         return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
14899                 }
14900                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.addresses));
14901                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14902                         NDR_PULL_ALLOC_N(ndr, r->in.addresses, ndr_get_array_size(ndr, &r->in.addresses));
14903                 }
14904                 _mem_save_addresses_1 = NDR_PULL_GET_MEM_CTX(ndr);
14905                 NDR_PULL_SET_MEM_CTX(ndr, r->in.addresses, 0);
14906                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
14907                         NDR_CHECK(ndr_pull_netr_DsRAddress(ndr, NDR_SCALARS, &r->in.addresses[cntr_addresses_1]));
14908                 }
14909                 for (cntr_addresses_1 = 0; cntr_addresses_1 < r->in.count; cntr_addresses_1++) {
14910                         NDR_CHECK(ndr_pull_netr_DsRAddress(ndr, NDR_BUFFERS, &r->in.addresses[cntr_addresses_1]));
14911                 }
14912                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_addresses_1, 0);
14913                 NDR_PULL_ALLOC(ndr, r->out.ctr);
14914                 ZERO_STRUCTP(r->out.ctr);
14915                 if (r->in.addresses) {
14916                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.addresses, r->in.count));
14917                 }
14918         }
14919         if (flags & NDR_OUT) {
14920                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
14921                         NDR_PULL_ALLOC(ndr, r->out.ctr);
14922                 }
14923                 _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
14924                 NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
14925                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr));
14926                 if (_ptr_ctr) {
14927                         NDR_PULL_ALLOC(ndr, *r->out.ctr);
14928                 } else {
14929                         *r->out.ctr = NULL;
14930                 }
14931                 if (*r->out.ctr) {
14932                         _mem_save_ctr_1 = NDR_PULL_GET_MEM_CTX(ndr);
14933                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.ctr, 0);
14934                         NDR_CHECK(ndr_pull_netr_DsRAddressToSitenamesExWCtr(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.ctr));
14935                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_1, 0);
14936                 }
14937                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
14938                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
14939         }
14940         return NDR_ERR_SUCCESS;
14941 }
14942
14943 _PUBLIC_ void ndr_print_netr_DsRAddressToSitenamesExW(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRAddressToSitenamesExW *r)
14944 {
14945         uint32_t cntr_addresses_1;
14946         ndr_print_struct(ndr, name, "netr_DsRAddressToSitenamesExW");
14947         ndr->depth++;
14948         if (flags & NDR_SET_VALUES) {
14949                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
14950         }
14951         if (flags & NDR_IN) {
14952                 ndr_print_struct(ndr, "in", "netr_DsRAddressToSitenamesExW");
14953                 ndr->depth++;
14954                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
14955                 ndr->depth++;
14956                 if (r->in.server_name) {
14957                         ndr_print_string(ndr, "server_name", r->in.server_name);
14958                 }
14959                 ndr->depth--;
14960                 ndr_print_uint32(ndr, "count", r->in.count);
14961                 ndr_print_ptr(ndr, "addresses", r->in.addresses);
14962                 ndr->depth++;
14963                 ndr->print(ndr, "%s: ARRAY(%d)", "addresses", (int)r->in.count);
14964                 ndr->depth++;
14965                 for (cntr_addresses_1=0;cntr_addresses_1<r->in.count;cntr_addresses_1++) {
14966                         char *idx_1=NULL;
14967                         if (asprintf(&idx_1, "[%d]", cntr_addresses_1) != -1) {
14968                                 ndr_print_netr_DsRAddress(ndr, "addresses", &r->in.addresses[cntr_addresses_1]);
14969                                 free(idx_1);
14970                         }
14971                 }
14972                 ndr->depth--;
14973                 ndr->depth--;
14974                 ndr->depth--;
14975         }
14976         if (flags & NDR_OUT) {
14977                 ndr_print_struct(ndr, "out", "netr_DsRAddressToSitenamesExW");
14978                 ndr->depth++;
14979                 ndr_print_ptr(ndr, "ctr", r->out.ctr);
14980                 ndr->depth++;
14981                 ndr_print_ptr(ndr, "ctr", *r->out.ctr);
14982                 ndr->depth++;
14983                 if (*r->out.ctr) {
14984                         ndr_print_netr_DsRAddressToSitenamesExWCtr(ndr, "ctr", *r->out.ctr);
14985                 }
14986                 ndr->depth--;
14987                 ndr->depth--;
14988                 ndr_print_WERROR(ndr, "result", r->out.result);
14989                 ndr->depth--;
14990         }
14991         ndr->depth--;
14992 }
14993
14994 static enum ndr_err_code ndr_push_netr_DsrGetDcSiteCoverageW(struct ndr_push *ndr, int flags, const struct netr_DsrGetDcSiteCoverageW *r)
14995 {
14996         if (flags & NDR_IN) {
14997                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
14998                 if (r->in.server_name) {
14999                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15000                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15001                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15002                         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));
15003                 }
15004         }
15005         if (flags & NDR_OUT) {
15006                 if (r->out.ctr == NULL) {
15007                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15008                 }
15009                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.ctr));
15010                 if (*r->out.ctr) {
15011                         NDR_CHECK(ndr_push_DcSitesCtr(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.ctr));
15012                 }
15013                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
15014         }
15015         return NDR_ERR_SUCCESS;
15016 }
15017
15018 static enum ndr_err_code ndr_pull_netr_DsrGetDcSiteCoverageW(struct ndr_pull *ndr, int flags, struct netr_DsrGetDcSiteCoverageW *r)
15019 {
15020         uint32_t _ptr_server_name;
15021         uint32_t _ptr_ctr;
15022         TALLOC_CTX *_mem_save_server_name_0;
15023         TALLOC_CTX *_mem_save_ctr_0;
15024         TALLOC_CTX *_mem_save_ctr_1;
15025         if (flags & NDR_IN) {
15026                 ZERO_STRUCT(r->out);
15027
15028                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
15029                 if (_ptr_server_name) {
15030                         NDR_PULL_ALLOC(ndr, r->in.server_name);
15031                 } else {
15032                         r->in.server_name = NULL;
15033                 }
15034                 if (r->in.server_name) {
15035                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
15036                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
15037                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
15038                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
15039                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
15040                                 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));
15041                         }
15042                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
15043                         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));
15044                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
15045                 }
15046                 NDR_PULL_ALLOC(ndr, r->out.ctr);
15047                 ZERO_STRUCTP(r->out.ctr);
15048         }
15049         if (flags & NDR_OUT) {
15050                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15051                         NDR_PULL_ALLOC(ndr, r->out.ctr);
15052                 }
15053                 _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr);
15054                 NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC);
15055                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_ctr));
15056                 if (_ptr_ctr) {
15057                         NDR_PULL_ALLOC(ndr, *r->out.ctr);
15058                 } else {
15059                         *r->out.ctr = NULL;
15060                 }
15061                 if (*r->out.ctr) {
15062                         _mem_save_ctr_1 = NDR_PULL_GET_MEM_CTX(ndr);
15063                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.ctr, 0);
15064                         NDR_CHECK(ndr_pull_DcSitesCtr(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.ctr));
15065                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_1, 0);
15066                 }
15067                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC);
15068                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
15069         }
15070         return NDR_ERR_SUCCESS;
15071 }
15072
15073 _PUBLIC_ void ndr_print_netr_DsrGetDcSiteCoverageW(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsrGetDcSiteCoverageW *r)
15074 {
15075         ndr_print_struct(ndr, name, "netr_DsrGetDcSiteCoverageW");
15076         ndr->depth++;
15077         if (flags & NDR_SET_VALUES) {
15078                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
15079         }
15080         if (flags & NDR_IN) {
15081                 ndr_print_struct(ndr, "in", "netr_DsrGetDcSiteCoverageW");
15082                 ndr->depth++;
15083                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
15084                 ndr->depth++;
15085                 if (r->in.server_name) {
15086                         ndr_print_string(ndr, "server_name", r->in.server_name);
15087                 }
15088                 ndr->depth--;
15089                 ndr->depth--;
15090         }
15091         if (flags & NDR_OUT) {
15092                 ndr_print_struct(ndr, "out", "netr_DsrGetDcSiteCoverageW");
15093                 ndr->depth++;
15094                 ndr_print_ptr(ndr, "ctr", r->out.ctr);
15095                 ndr->depth++;
15096                 ndr_print_ptr(ndr, "ctr", *r->out.ctr);
15097                 ndr->depth++;
15098                 if (*r->out.ctr) {
15099                         ndr_print_DcSitesCtr(ndr, "ctr", *r->out.ctr);
15100                 }
15101                 ndr->depth--;
15102                 ndr->depth--;
15103                 ndr_print_WERROR(ndr, "result", r->out.result);
15104                 ndr->depth--;
15105         }
15106         ndr->depth--;
15107 }
15108
15109 static enum ndr_err_code ndr_push_netr_LogonSamLogonEx(struct ndr_push *ndr, int flags, const struct netr_LogonSamLogonEx *r)
15110 {
15111         if (flags & NDR_IN) {
15112                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
15113                 if (r->in.server_name) {
15114                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15115                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15116                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15117                         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));
15118                 }
15119                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
15120                 if (r->in.computer_name) {
15121                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
15122                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15123                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
15124                         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));
15125                 }
15126                 NDR_CHECK(ndr_push_netr_LogonInfoClass(ndr, NDR_SCALARS, r->in.logon_level));
15127                 if (r->in.logon == NULL) {
15128                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15129                 }
15130                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.logon, r->in.logon_level));
15131                 NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
15132                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.validation_level));
15133                 if (r->in.flags == NULL) {
15134                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15135                 }
15136                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.flags));
15137         }
15138         if (flags & NDR_OUT) {
15139                 if (r->out.validation == NULL) {
15140                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15141                 }
15142                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.validation, r->in.validation_level));
15143                 NDR_CHECK(ndr_push_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
15144                 if (r->out.authoritative == NULL) {
15145                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15146                 }
15147                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->out.authoritative));
15148                 if (r->out.flags == NULL) {
15149                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15150                 }
15151                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.flags));
15152                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
15153         }
15154         return NDR_ERR_SUCCESS;
15155 }
15156
15157 static enum ndr_err_code ndr_pull_netr_LogonSamLogonEx(struct ndr_pull *ndr, int flags, struct netr_LogonSamLogonEx *r)
15158 {
15159         uint32_t _ptr_server_name;
15160         uint32_t _ptr_computer_name;
15161         TALLOC_CTX *_mem_save_server_name_0;
15162         TALLOC_CTX *_mem_save_computer_name_0;
15163         TALLOC_CTX *_mem_save_logon_0;
15164         TALLOC_CTX *_mem_save_validation_0;
15165         TALLOC_CTX *_mem_save_authoritative_0;
15166         TALLOC_CTX *_mem_save_flags_0;
15167         if (flags & NDR_IN) {
15168                 ZERO_STRUCT(r->out);
15169
15170                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
15171                 if (_ptr_server_name) {
15172                         NDR_PULL_ALLOC(ndr, r->in.server_name);
15173                 } else {
15174                         r->in.server_name = NULL;
15175                 }
15176                 if (r->in.server_name) {
15177                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
15178                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
15179                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
15180                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
15181                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
15182                                 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));
15183                         }
15184                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
15185                         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));
15186                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
15187                 }
15188                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
15189                 if (_ptr_computer_name) {
15190                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
15191                 } else {
15192                         r->in.computer_name = NULL;
15193                 }
15194                 if (r->in.computer_name) {
15195                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
15196                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
15197                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
15198                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
15199                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
15200                                 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));
15201                         }
15202                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
15203                         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));
15204                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
15205                 }
15206                 NDR_CHECK(ndr_pull_netr_LogonInfoClass(ndr, NDR_SCALARS, &r->in.logon_level));
15207                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15208                         NDR_PULL_ALLOC(ndr, r->in.logon);
15209                 }
15210                 _mem_save_logon_0 = NDR_PULL_GET_MEM_CTX(ndr);
15211                 NDR_PULL_SET_MEM_CTX(ndr, r->in.logon, LIBNDR_FLAG_REF_ALLOC);
15212                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.logon, r->in.logon_level));
15213                 NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
15214                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_0, LIBNDR_FLAG_REF_ALLOC);
15215                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.validation_level));
15216                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15217                         NDR_PULL_ALLOC(ndr, r->in.flags);
15218                 }
15219                 _mem_save_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
15220                 NDR_PULL_SET_MEM_CTX(ndr, r->in.flags, LIBNDR_FLAG_REF_ALLOC);
15221                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.flags));
15222                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_flags_0, LIBNDR_FLAG_REF_ALLOC);
15223                 NDR_PULL_ALLOC(ndr, r->out.validation);
15224                 ZERO_STRUCTP(r->out.validation);
15225                 NDR_PULL_ALLOC(ndr, r->out.authoritative);
15226                 ZERO_STRUCTP(r->out.authoritative);
15227                 NDR_PULL_ALLOC(ndr, r->out.flags);
15228                 *r->out.flags = *r->in.flags;
15229         }
15230         if (flags & NDR_OUT) {
15231                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15232                         NDR_PULL_ALLOC(ndr, r->out.validation);
15233                 }
15234                 _mem_save_validation_0 = NDR_PULL_GET_MEM_CTX(ndr);
15235                 NDR_PULL_SET_MEM_CTX(ndr, r->out.validation, LIBNDR_FLAG_REF_ALLOC);
15236                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.validation, r->in.validation_level));
15237                 NDR_CHECK(ndr_pull_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
15238                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_validation_0, LIBNDR_FLAG_REF_ALLOC);
15239                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15240                         NDR_PULL_ALLOC(ndr, r->out.authoritative);
15241                 }
15242                 _mem_save_authoritative_0 = NDR_PULL_GET_MEM_CTX(ndr);
15243                 NDR_PULL_SET_MEM_CTX(ndr, r->out.authoritative, LIBNDR_FLAG_REF_ALLOC);
15244                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->out.authoritative));
15245                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_authoritative_0, LIBNDR_FLAG_REF_ALLOC);
15246                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15247                         NDR_PULL_ALLOC(ndr, r->out.flags);
15248                 }
15249                 _mem_save_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
15250                 NDR_PULL_SET_MEM_CTX(ndr, r->out.flags, LIBNDR_FLAG_REF_ALLOC);
15251                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.flags));
15252                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_flags_0, LIBNDR_FLAG_REF_ALLOC);
15253                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
15254         }
15255         return NDR_ERR_SUCCESS;
15256 }
15257
15258 _PUBLIC_ void ndr_print_netr_LogonSamLogonEx(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogonEx *r)
15259 {
15260         ndr_print_struct(ndr, name, "netr_LogonSamLogonEx");
15261         ndr->depth++;
15262         if (flags & NDR_SET_VALUES) {
15263                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
15264         }
15265         if (flags & NDR_IN) {
15266                 ndr_print_struct(ndr, "in", "netr_LogonSamLogonEx");
15267                 ndr->depth++;
15268                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
15269                 ndr->depth++;
15270                 if (r->in.server_name) {
15271                         ndr_print_string(ndr, "server_name", r->in.server_name);
15272                 }
15273                 ndr->depth--;
15274                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
15275                 ndr->depth++;
15276                 if (r->in.computer_name) {
15277                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
15278                 }
15279                 ndr->depth--;
15280                 ndr_print_netr_LogonInfoClass(ndr, "logon_level", r->in.logon_level);
15281                 ndr_print_ptr(ndr, "logon", r->in.logon);
15282                 ndr->depth++;
15283                 ndr_print_set_switch_value(ndr, r->in.logon, r->in.logon_level);
15284                 ndr_print_netr_LogonLevel(ndr, "logon", r->in.logon);
15285                 ndr->depth--;
15286                 ndr_print_uint16(ndr, "validation_level", r->in.validation_level);
15287                 ndr_print_ptr(ndr, "flags", r->in.flags);
15288                 ndr->depth++;
15289                 ndr_print_uint32(ndr, "flags", *r->in.flags);
15290                 ndr->depth--;
15291                 ndr->depth--;
15292         }
15293         if (flags & NDR_OUT) {
15294                 ndr_print_struct(ndr, "out", "netr_LogonSamLogonEx");
15295                 ndr->depth++;
15296                 ndr_print_ptr(ndr, "validation", r->out.validation);
15297                 ndr->depth++;
15298                 ndr_print_set_switch_value(ndr, r->out.validation, r->in.validation_level);
15299                 ndr_print_netr_Validation(ndr, "validation", r->out.validation);
15300                 ndr->depth--;
15301                 ndr_print_ptr(ndr, "authoritative", r->out.authoritative);
15302                 ndr->depth++;
15303                 ndr_print_uint8(ndr, "authoritative", *r->out.authoritative);
15304                 ndr->depth--;
15305                 ndr_print_ptr(ndr, "flags", r->out.flags);
15306                 ndr->depth++;
15307                 ndr_print_uint32(ndr, "flags", *r->out.flags);
15308                 ndr->depth--;
15309                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
15310                 ndr->depth--;
15311         }
15312         ndr->depth--;
15313 }
15314
15315 static enum ndr_err_code ndr_push_netr_DsrEnumerateDomainTrusts(struct ndr_push *ndr, int flags, const struct netr_DsrEnumerateDomainTrusts *r)
15316 {
15317         if (flags & NDR_IN) {
15318                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
15319                 if (r->in.server_name) {
15320                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15321                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15322                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15323                         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));
15324                 }
15325                 NDR_CHECK(ndr_push_netr_TrustFlags(ndr, NDR_SCALARS, r->in.trust_flags));
15326         }
15327         if (flags & NDR_OUT) {
15328                 if (r->out.trusts == NULL) {
15329                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15330                 }
15331                 NDR_CHECK(ndr_push_netr_DomainTrustList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trusts));
15332                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
15333         }
15334         return NDR_ERR_SUCCESS;
15335 }
15336
15337 static enum ndr_err_code ndr_pull_netr_DsrEnumerateDomainTrusts(struct ndr_pull *ndr, int flags, struct netr_DsrEnumerateDomainTrusts *r)
15338 {
15339         uint32_t _ptr_server_name;
15340         TALLOC_CTX *_mem_save_server_name_0;
15341         TALLOC_CTX *_mem_save_trusts_0;
15342         if (flags & NDR_IN) {
15343                 ZERO_STRUCT(r->out);
15344
15345                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
15346                 if (_ptr_server_name) {
15347                         NDR_PULL_ALLOC(ndr, r->in.server_name);
15348                 } else {
15349                         r->in.server_name = NULL;
15350                 }
15351                 if (r->in.server_name) {
15352                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
15353                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
15354                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
15355                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
15356                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
15357                                 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));
15358                         }
15359                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
15360                         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));
15361                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
15362                 }
15363                 NDR_CHECK(ndr_pull_netr_TrustFlags(ndr, NDR_SCALARS, &r->in.trust_flags));
15364                 NDR_PULL_ALLOC(ndr, r->out.trusts);
15365                 ZERO_STRUCTP(r->out.trusts);
15366         }
15367         if (flags & NDR_OUT) {
15368                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15369                         NDR_PULL_ALLOC(ndr, r->out.trusts);
15370                 }
15371                 _mem_save_trusts_0 = NDR_PULL_GET_MEM_CTX(ndr);
15372                 NDR_PULL_SET_MEM_CTX(ndr, r->out.trusts, LIBNDR_FLAG_REF_ALLOC);
15373                 NDR_CHECK(ndr_pull_netr_DomainTrustList(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.trusts));
15374                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusts_0, LIBNDR_FLAG_REF_ALLOC);
15375                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
15376         }
15377         return NDR_ERR_SUCCESS;
15378 }
15379
15380 _PUBLIC_ void ndr_print_netr_DsrEnumerateDomainTrusts(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsrEnumerateDomainTrusts *r)
15381 {
15382         ndr_print_struct(ndr, name, "netr_DsrEnumerateDomainTrusts");
15383         ndr->depth++;
15384         if (flags & NDR_SET_VALUES) {
15385                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
15386         }
15387         if (flags & NDR_IN) {
15388                 ndr_print_struct(ndr, "in", "netr_DsrEnumerateDomainTrusts");
15389                 ndr->depth++;
15390                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
15391                 ndr->depth++;
15392                 if (r->in.server_name) {
15393                         ndr_print_string(ndr, "server_name", r->in.server_name);
15394                 }
15395                 ndr->depth--;
15396                 ndr_print_netr_TrustFlags(ndr, "trust_flags", r->in.trust_flags);
15397                 ndr->depth--;
15398         }
15399         if (flags & NDR_OUT) {
15400                 ndr_print_struct(ndr, "out", "netr_DsrEnumerateDomainTrusts");
15401                 ndr->depth++;
15402                 ndr_print_ptr(ndr, "trusts", r->out.trusts);
15403                 ndr->depth++;
15404                 ndr_print_netr_DomainTrustList(ndr, "trusts", r->out.trusts);
15405                 ndr->depth--;
15406                 ndr_print_WERROR(ndr, "result", r->out.result);
15407                 ndr->depth--;
15408         }
15409         ndr->depth--;
15410 }
15411
15412 static enum ndr_err_code ndr_push_netr_DsrDeregisterDNSHostRecords(struct ndr_push *ndr, int flags, const struct netr_DsrDeregisterDNSHostRecords *r)
15413 {
15414         if (flags & NDR_IN) {
15415                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
15416                 if (r->in.server_name) {
15417                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15418                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15419                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15420                         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));
15421                 }
15422                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain));
15423                 if (r->in.domain) {
15424                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain, CH_UTF16)));
15425                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15426                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.domain, CH_UTF16)));
15427                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.domain, ndr_charset_length(r->in.domain, CH_UTF16), sizeof(uint16_t), CH_UTF16));
15428                 }
15429                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.domain_guid));
15430                 if (r->in.domain_guid) {
15431                         NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, r->in.domain_guid));
15432                 }
15433                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.dsa_guid));
15434                 if (r->in.dsa_guid) {
15435                         NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, r->in.dsa_guid));
15436                 }
15437                 if (r->in.dns_host == NULL) {
15438                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15439                 }
15440                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dns_host, CH_UTF16)));
15441                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15442                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.dns_host, CH_UTF16)));
15443                 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));
15444         }
15445         if (flags & NDR_OUT) {
15446                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
15447         }
15448         return NDR_ERR_SUCCESS;
15449 }
15450
15451 static enum ndr_err_code ndr_pull_netr_DsrDeregisterDNSHostRecords(struct ndr_pull *ndr, int flags, struct netr_DsrDeregisterDNSHostRecords *r)
15452 {
15453         uint32_t _ptr_server_name;
15454         uint32_t _ptr_domain;
15455         uint32_t _ptr_domain_guid;
15456         uint32_t _ptr_dsa_guid;
15457         TALLOC_CTX *_mem_save_server_name_0;
15458         TALLOC_CTX *_mem_save_domain_0;
15459         TALLOC_CTX *_mem_save_domain_guid_0;
15460         TALLOC_CTX *_mem_save_dsa_guid_0;
15461         if (flags & NDR_IN) {
15462                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
15463                 if (_ptr_server_name) {
15464                         NDR_PULL_ALLOC(ndr, r->in.server_name);
15465                 } else {
15466                         r->in.server_name = NULL;
15467                 }
15468                 if (r->in.server_name) {
15469                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
15470                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
15471                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
15472                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
15473                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
15474                                 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));
15475                         }
15476                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
15477                         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));
15478                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
15479                 }
15480                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain));
15481                 if (_ptr_domain) {
15482                         NDR_PULL_ALLOC(ndr, r->in.domain);
15483                 } else {
15484                         r->in.domain = NULL;
15485                 }
15486                 if (r->in.domain) {
15487                         _mem_save_domain_0 = NDR_PULL_GET_MEM_CTX(ndr);
15488                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain, 0);
15489                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.domain));
15490                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.domain));
15491                         if (ndr_get_array_length(ndr, &r->in.domain) > ndr_get_array_size(ndr, &r->in.domain)) {
15492                                 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));
15493                         }
15494                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.domain), sizeof(uint16_t)));
15495                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.domain, ndr_get_array_length(ndr, &r->in.domain), sizeof(uint16_t), CH_UTF16));
15496                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_0, 0);
15497                 }
15498                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_domain_guid));
15499                 if (_ptr_domain_guid) {
15500                         NDR_PULL_ALLOC(ndr, r->in.domain_guid);
15501                 } else {
15502                         r->in.domain_guid = NULL;
15503                 }
15504                 if (r->in.domain_guid) {
15505                         _mem_save_domain_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
15506                         NDR_PULL_SET_MEM_CTX(ndr, r->in.domain_guid, 0);
15507                         NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, r->in.domain_guid));
15508                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_guid_0, 0);
15509                 }
15510                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_dsa_guid));
15511                 if (_ptr_dsa_guid) {
15512                         NDR_PULL_ALLOC(ndr, r->in.dsa_guid);
15513                 } else {
15514                         r->in.dsa_guid = NULL;
15515                 }
15516                 if (r->in.dsa_guid) {
15517                         _mem_save_dsa_guid_0 = NDR_PULL_GET_MEM_CTX(ndr);
15518                         NDR_PULL_SET_MEM_CTX(ndr, r->in.dsa_guid, 0);
15519                         NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, r->in.dsa_guid));
15520                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_dsa_guid_0, 0);
15521                 }
15522                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.dns_host));
15523                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.dns_host));
15524                 if (ndr_get_array_length(ndr, &r->in.dns_host) > ndr_get_array_size(ndr, &r->in.dns_host)) {
15525                         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));
15526                 }
15527                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.dns_host), sizeof(uint16_t)));
15528                 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));
15529         }
15530         if (flags & NDR_OUT) {
15531                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
15532         }
15533         return NDR_ERR_SUCCESS;
15534 }
15535
15536 _PUBLIC_ void ndr_print_netr_DsrDeregisterDNSHostRecords(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsrDeregisterDNSHostRecords *r)
15537 {
15538         ndr_print_struct(ndr, name, "netr_DsrDeregisterDNSHostRecords");
15539         ndr->depth++;
15540         if (flags & NDR_SET_VALUES) {
15541                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
15542         }
15543         if (flags & NDR_IN) {
15544                 ndr_print_struct(ndr, "in", "netr_DsrDeregisterDNSHostRecords");
15545                 ndr->depth++;
15546                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
15547                 ndr->depth++;
15548                 if (r->in.server_name) {
15549                         ndr_print_string(ndr, "server_name", r->in.server_name);
15550                 }
15551                 ndr->depth--;
15552                 ndr_print_ptr(ndr, "domain", r->in.domain);
15553                 ndr->depth++;
15554                 if (r->in.domain) {
15555                         ndr_print_string(ndr, "domain", r->in.domain);
15556                 }
15557                 ndr->depth--;
15558                 ndr_print_ptr(ndr, "domain_guid", r->in.domain_guid);
15559                 ndr->depth++;
15560                 if (r->in.domain_guid) {
15561                         ndr_print_GUID(ndr, "domain_guid", r->in.domain_guid);
15562                 }
15563                 ndr->depth--;
15564                 ndr_print_ptr(ndr, "dsa_guid", r->in.dsa_guid);
15565                 ndr->depth++;
15566                 if (r->in.dsa_guid) {
15567                         ndr_print_GUID(ndr, "dsa_guid", r->in.dsa_guid);
15568                 }
15569                 ndr->depth--;
15570                 ndr_print_ptr(ndr, "dns_host", r->in.dns_host);
15571                 ndr->depth++;
15572                 ndr_print_string(ndr, "dns_host", r->in.dns_host);
15573                 ndr->depth--;
15574                 ndr->depth--;
15575         }
15576         if (flags & NDR_OUT) {
15577                 ndr_print_struct(ndr, "out", "netr_DsrDeregisterDNSHostRecords");
15578                 ndr->depth++;
15579                 ndr_print_WERROR(ndr, "result", r->out.result);
15580                 ndr->depth--;
15581         }
15582         ndr->depth--;
15583 }
15584
15585 static enum ndr_err_code ndr_push_netr_ServerTrustPasswordsGet(struct ndr_push *ndr, int flags, const struct netr_ServerTrustPasswordsGet *r)
15586 {
15587         if (flags & NDR_IN) {
15588                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
15589                 if (r->in.server_name) {
15590                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15591                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15592                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15593                         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));
15594                 }
15595                 if (r->in.account_name == NULL) {
15596                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15597                 }
15598                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
15599                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15600                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
15601                 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));
15602                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
15603                 if (r->in.computer_name == NULL) {
15604                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15605                 }
15606                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
15607                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15608                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
15609                 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));
15610                 if (r->in.credential == NULL) {
15611                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15612                 }
15613                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
15614         }
15615         if (flags & NDR_OUT) {
15616                 if (r->out.return_authenticator == NULL) {
15617                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15618                 }
15619                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
15620                 if (r->out.password == NULL) {
15621                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15622                 }
15623                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, r->out.password));
15624                 if (r->out.password2 == NULL) {
15625                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15626                 }
15627                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, r->out.password2));
15628                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
15629         }
15630         return NDR_ERR_SUCCESS;
15631 }
15632
15633 static enum ndr_err_code ndr_pull_netr_ServerTrustPasswordsGet(struct ndr_pull *ndr, int flags, struct netr_ServerTrustPasswordsGet *r)
15634 {
15635         uint32_t _ptr_server_name;
15636         TALLOC_CTX *_mem_save_server_name_0;
15637         TALLOC_CTX *_mem_save_credential_0;
15638         TALLOC_CTX *_mem_save_return_authenticator_0;
15639         TALLOC_CTX *_mem_save_password_0;
15640         TALLOC_CTX *_mem_save_password2_0;
15641         if (flags & NDR_IN) {
15642                 ZERO_STRUCT(r->out);
15643
15644                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
15645                 if (_ptr_server_name) {
15646                         NDR_PULL_ALLOC(ndr, r->in.server_name);
15647                 } else {
15648                         r->in.server_name = NULL;
15649                 }
15650                 if (r->in.server_name) {
15651                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
15652                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
15653                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
15654                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
15655                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
15656                                 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));
15657                         }
15658                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
15659                         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));
15660                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
15661                 }
15662                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
15663                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
15664                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
15665                         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));
15666                 }
15667                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
15668                 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));
15669                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
15670                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
15671                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
15672                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
15673                         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));
15674                 }
15675                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
15676                 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));
15677                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15678                         NDR_PULL_ALLOC(ndr, r->in.credential);
15679                 }
15680                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
15681                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
15682                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
15683                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
15684                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
15685                 ZERO_STRUCTP(r->out.return_authenticator);
15686                 NDR_PULL_ALLOC(ndr, r->out.password);
15687                 ZERO_STRUCTP(r->out.password);
15688                 NDR_PULL_ALLOC(ndr, r->out.password2);
15689                 ZERO_STRUCTP(r->out.password2);
15690         }
15691         if (flags & NDR_OUT) {
15692                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15693                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
15694                 }
15695                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
15696                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
15697                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
15698                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
15699                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15700                         NDR_PULL_ALLOC(ndr, r->out.password);
15701                 }
15702                 _mem_save_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
15703                 NDR_PULL_SET_MEM_CTX(ndr, r->out.password, LIBNDR_FLAG_REF_ALLOC);
15704                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, r->out.password));
15705                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password_0, LIBNDR_FLAG_REF_ALLOC);
15706                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15707                         NDR_PULL_ALLOC(ndr, r->out.password2);
15708                 }
15709                 _mem_save_password2_0 = NDR_PULL_GET_MEM_CTX(ndr);
15710                 NDR_PULL_SET_MEM_CTX(ndr, r->out.password2, LIBNDR_FLAG_REF_ALLOC);
15711                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, r->out.password2));
15712                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_password2_0, LIBNDR_FLAG_REF_ALLOC);
15713                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
15714         }
15715         return NDR_ERR_SUCCESS;
15716 }
15717
15718 _PUBLIC_ void ndr_print_netr_ServerTrustPasswordsGet(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerTrustPasswordsGet *r)
15719 {
15720         ndr_print_struct(ndr, name, "netr_ServerTrustPasswordsGet");
15721         ndr->depth++;
15722         if (flags & NDR_SET_VALUES) {
15723                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
15724         }
15725         if (flags & NDR_IN) {
15726                 ndr_print_struct(ndr, "in", "netr_ServerTrustPasswordsGet");
15727                 ndr->depth++;
15728                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
15729                 ndr->depth++;
15730                 if (r->in.server_name) {
15731                         ndr_print_string(ndr, "server_name", r->in.server_name);
15732                 }
15733                 ndr->depth--;
15734                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
15735                 ndr->depth++;
15736                 ndr_print_string(ndr, "account_name", r->in.account_name);
15737                 ndr->depth--;
15738                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
15739                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
15740                 ndr->depth++;
15741                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
15742                 ndr->depth--;
15743                 ndr_print_ptr(ndr, "credential", r->in.credential);
15744                 ndr->depth++;
15745                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
15746                 ndr->depth--;
15747                 ndr->depth--;
15748         }
15749         if (flags & NDR_OUT) {
15750                 ndr_print_struct(ndr, "out", "netr_ServerTrustPasswordsGet");
15751                 ndr->depth++;
15752                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
15753                 ndr->depth++;
15754                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
15755                 ndr->depth--;
15756                 ndr_print_ptr(ndr, "password", r->out.password);
15757                 ndr->depth++;
15758                 ndr_print_samr_Password(ndr, "password", r->out.password);
15759                 ndr->depth--;
15760                 ndr_print_ptr(ndr, "password2", r->out.password2);
15761                 ndr->depth++;
15762                 ndr_print_samr_Password(ndr, "password2", r->out.password2);
15763                 ndr->depth--;
15764                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
15765                 ndr->depth--;
15766         }
15767         ndr->depth--;
15768 }
15769
15770 static enum ndr_err_code ndr_push_netr_DsRGetForestTrustInformation(struct ndr_push *ndr, int flags, const struct netr_DsRGetForestTrustInformation *r)
15771 {
15772         if (flags & NDR_IN) {
15773                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
15774                 if (r->in.server_name) {
15775                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15776                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15777                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15778                         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));
15779                 }
15780                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.trusted_domain_name));
15781                 if (r->in.trusted_domain_name) {
15782                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.trusted_domain_name, CH_UTF16)));
15783                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15784                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.trusted_domain_name, CH_UTF16)));
15785                         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));
15786                 }
15787                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
15788         }
15789         if (flags & NDR_OUT) {
15790                 if (r->out.forest_trust_info == NULL) {
15791                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15792                 }
15793                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.forest_trust_info));
15794                 if (*r->out.forest_trust_info) {
15795                         NDR_CHECK(ndr_push_lsa_ForestTrustInformation(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.forest_trust_info));
15796                 }
15797                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
15798         }
15799         return NDR_ERR_SUCCESS;
15800 }
15801
15802 static enum ndr_err_code ndr_pull_netr_DsRGetForestTrustInformation(struct ndr_pull *ndr, int flags, struct netr_DsRGetForestTrustInformation *r)
15803 {
15804         uint32_t _ptr_server_name;
15805         uint32_t _ptr_trusted_domain_name;
15806         uint32_t _ptr_forest_trust_info;
15807         TALLOC_CTX *_mem_save_server_name_0;
15808         TALLOC_CTX *_mem_save_trusted_domain_name_0;
15809         TALLOC_CTX *_mem_save_forest_trust_info_0;
15810         TALLOC_CTX *_mem_save_forest_trust_info_1;
15811         if (flags & NDR_IN) {
15812                 ZERO_STRUCT(r->out);
15813
15814                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
15815                 if (_ptr_server_name) {
15816                         NDR_PULL_ALLOC(ndr, r->in.server_name);
15817                 } else {
15818                         r->in.server_name = NULL;
15819                 }
15820                 if (r->in.server_name) {
15821                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
15822                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
15823                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
15824                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
15825                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
15826                                 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));
15827                         }
15828                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
15829                         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));
15830                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
15831                 }
15832                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_trusted_domain_name));
15833                 if (_ptr_trusted_domain_name) {
15834                         NDR_PULL_ALLOC(ndr, r->in.trusted_domain_name);
15835                 } else {
15836                         r->in.trusted_domain_name = NULL;
15837                 }
15838                 if (r->in.trusted_domain_name) {
15839                         _mem_save_trusted_domain_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
15840                         NDR_PULL_SET_MEM_CTX(ndr, r->in.trusted_domain_name, 0);
15841                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.trusted_domain_name));
15842                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.trusted_domain_name));
15843                         if (ndr_get_array_length(ndr, &r->in.trusted_domain_name) > ndr_get_array_size(ndr, &r->in.trusted_domain_name)) {
15844                                 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));
15845                         }
15846                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.trusted_domain_name), sizeof(uint16_t)));
15847                         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));
15848                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trusted_domain_name_0, 0);
15849                 }
15850                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
15851                 NDR_PULL_ALLOC(ndr, r->out.forest_trust_info);
15852                 ZERO_STRUCTP(r->out.forest_trust_info);
15853         }
15854         if (flags & NDR_OUT) {
15855                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15856                         NDR_PULL_ALLOC(ndr, r->out.forest_trust_info);
15857                 }
15858                 _mem_save_forest_trust_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
15859                 NDR_PULL_SET_MEM_CTX(ndr, r->out.forest_trust_info, LIBNDR_FLAG_REF_ALLOC);
15860                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_forest_trust_info));
15861                 if (_ptr_forest_trust_info) {
15862                         NDR_PULL_ALLOC(ndr, *r->out.forest_trust_info);
15863                 } else {
15864                         *r->out.forest_trust_info = NULL;
15865                 }
15866                 if (*r->out.forest_trust_info) {
15867                         _mem_save_forest_trust_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
15868                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.forest_trust_info, 0);
15869                         NDR_CHECK(ndr_pull_lsa_ForestTrustInformation(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.forest_trust_info));
15870                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_forest_trust_info_1, 0);
15871                 }
15872                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_forest_trust_info_0, LIBNDR_FLAG_REF_ALLOC);
15873                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
15874         }
15875         return NDR_ERR_SUCCESS;
15876 }
15877
15878 _PUBLIC_ void ndr_print_netr_DsRGetForestTrustInformation(struct ndr_print *ndr, const char *name, int flags, const struct netr_DsRGetForestTrustInformation *r)
15879 {
15880         ndr_print_struct(ndr, name, "netr_DsRGetForestTrustInformation");
15881         ndr->depth++;
15882         if (flags & NDR_SET_VALUES) {
15883                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
15884         }
15885         if (flags & NDR_IN) {
15886                 ndr_print_struct(ndr, "in", "netr_DsRGetForestTrustInformation");
15887                 ndr->depth++;
15888                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
15889                 ndr->depth++;
15890                 if (r->in.server_name) {
15891                         ndr_print_string(ndr, "server_name", r->in.server_name);
15892                 }
15893                 ndr->depth--;
15894                 ndr_print_ptr(ndr, "trusted_domain_name", r->in.trusted_domain_name);
15895                 ndr->depth++;
15896                 if (r->in.trusted_domain_name) {
15897                         ndr_print_string(ndr, "trusted_domain_name", r->in.trusted_domain_name);
15898                 }
15899                 ndr->depth--;
15900                 ndr_print_uint32(ndr, "flags", r->in.flags);
15901                 ndr->depth--;
15902         }
15903         if (flags & NDR_OUT) {
15904                 ndr_print_struct(ndr, "out", "netr_DsRGetForestTrustInformation");
15905                 ndr->depth++;
15906                 ndr_print_ptr(ndr, "forest_trust_info", r->out.forest_trust_info);
15907                 ndr->depth++;
15908                 ndr_print_ptr(ndr, "forest_trust_info", *r->out.forest_trust_info);
15909                 ndr->depth++;
15910                 if (*r->out.forest_trust_info) {
15911                         ndr_print_lsa_ForestTrustInformation(ndr, "forest_trust_info", *r->out.forest_trust_info);
15912                 }
15913                 ndr->depth--;
15914                 ndr->depth--;
15915                 ndr_print_WERROR(ndr, "result", r->out.result);
15916                 ndr->depth--;
15917         }
15918         ndr->depth--;
15919 }
15920
15921 static enum ndr_err_code ndr_push_netr_GetForestTrustInformation(struct ndr_push *ndr, int flags, const struct netr_GetForestTrustInformation *r)
15922 {
15923         if (flags & NDR_IN) {
15924                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
15925                 if (r->in.server_name) {
15926                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15927                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15928                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
15929                         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));
15930                 }
15931                 if (r->in.trusted_domain_name == NULL) {
15932                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15933                 }
15934                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.trusted_domain_name, CH_UTF16)));
15935                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
15936                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.trusted_domain_name, CH_UTF16)));
15937                 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));
15938                 if (r->in.credential == NULL) {
15939                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15940                 }
15941                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
15942                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.flags));
15943         }
15944         if (flags & NDR_OUT) {
15945                 if (r->out.return_authenticator == NULL) {
15946                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15947                 }
15948                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
15949                 if (r->out.forest_trust_info == NULL) {
15950                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
15951                 }
15952                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.forest_trust_info));
15953                 if (*r->out.forest_trust_info) {
15954                         NDR_CHECK(ndr_push_lsa_ForestTrustInformation(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.forest_trust_info));
15955                 }
15956                 NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
15957         }
15958         return NDR_ERR_SUCCESS;
15959 }
15960
15961 static enum ndr_err_code ndr_pull_netr_GetForestTrustInformation(struct ndr_pull *ndr, int flags, struct netr_GetForestTrustInformation *r)
15962 {
15963         uint32_t _ptr_server_name;
15964         uint32_t _ptr_forest_trust_info;
15965         TALLOC_CTX *_mem_save_server_name_0;
15966         TALLOC_CTX *_mem_save_credential_0;
15967         TALLOC_CTX *_mem_save_return_authenticator_0;
15968         TALLOC_CTX *_mem_save_forest_trust_info_0;
15969         TALLOC_CTX *_mem_save_forest_trust_info_1;
15970         if (flags & NDR_IN) {
15971                 ZERO_STRUCT(r->out);
15972
15973                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
15974                 if (_ptr_server_name) {
15975                         NDR_PULL_ALLOC(ndr, r->in.server_name);
15976                 } else {
15977                         r->in.server_name = NULL;
15978                 }
15979                 if (r->in.server_name) {
15980                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
15981                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
15982                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
15983                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
15984                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
15985                                 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));
15986                         }
15987                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
15988                         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));
15989                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
15990                 }
15991                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.trusted_domain_name));
15992                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.trusted_domain_name));
15993                 if (ndr_get_array_length(ndr, &r->in.trusted_domain_name) > ndr_get_array_size(ndr, &r->in.trusted_domain_name)) {
15994                         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));
15995                 }
15996                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.trusted_domain_name), sizeof(uint16_t)));
15997                 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));
15998                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
15999                         NDR_PULL_ALLOC(ndr, r->in.credential);
16000                 }
16001                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
16002                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
16003                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
16004                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
16005                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.flags));
16006                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
16007                 ZERO_STRUCTP(r->out.return_authenticator);
16008                 NDR_PULL_ALLOC(ndr, r->out.forest_trust_info);
16009                 ZERO_STRUCTP(r->out.forest_trust_info);
16010         }
16011         if (flags & NDR_OUT) {
16012                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16013                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
16014                 }
16015                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
16016                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
16017                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
16018                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
16019                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16020                         NDR_PULL_ALLOC(ndr, r->out.forest_trust_info);
16021                 }
16022                 _mem_save_forest_trust_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
16023                 NDR_PULL_SET_MEM_CTX(ndr, r->out.forest_trust_info, LIBNDR_FLAG_REF_ALLOC);
16024                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_forest_trust_info));
16025                 if (_ptr_forest_trust_info) {
16026                         NDR_PULL_ALLOC(ndr, *r->out.forest_trust_info);
16027                 } else {
16028                         *r->out.forest_trust_info = NULL;
16029                 }
16030                 if (*r->out.forest_trust_info) {
16031                         _mem_save_forest_trust_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
16032                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.forest_trust_info, 0);
16033                         NDR_CHECK(ndr_pull_lsa_ForestTrustInformation(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.forest_trust_info));
16034                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_forest_trust_info_1, 0);
16035                 }
16036                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_forest_trust_info_0, LIBNDR_FLAG_REF_ALLOC);
16037                 NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
16038         }
16039         return NDR_ERR_SUCCESS;
16040 }
16041
16042 _PUBLIC_ void ndr_print_netr_GetForestTrustInformation(struct ndr_print *ndr, const char *name, int flags, const struct netr_GetForestTrustInformation *r)
16043 {
16044         ndr_print_struct(ndr, name, "netr_GetForestTrustInformation");
16045         ndr->depth++;
16046         if (flags & NDR_SET_VALUES) {
16047                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
16048         }
16049         if (flags & NDR_IN) {
16050                 ndr_print_struct(ndr, "in", "netr_GetForestTrustInformation");
16051                 ndr->depth++;
16052                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
16053                 ndr->depth++;
16054                 if (r->in.server_name) {
16055                         ndr_print_string(ndr, "server_name", r->in.server_name);
16056                 }
16057                 ndr->depth--;
16058                 ndr_print_ptr(ndr, "trusted_domain_name", r->in.trusted_domain_name);
16059                 ndr->depth++;
16060                 ndr_print_string(ndr, "trusted_domain_name", r->in.trusted_domain_name);
16061                 ndr->depth--;
16062                 ndr_print_ptr(ndr, "credential", r->in.credential);
16063                 ndr->depth++;
16064                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
16065                 ndr->depth--;
16066                 ndr_print_uint32(ndr, "flags", r->in.flags);
16067                 ndr->depth--;
16068         }
16069         if (flags & NDR_OUT) {
16070                 ndr_print_struct(ndr, "out", "netr_GetForestTrustInformation");
16071                 ndr->depth++;
16072                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
16073                 ndr->depth++;
16074                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
16075                 ndr->depth--;
16076                 ndr_print_ptr(ndr, "forest_trust_info", r->out.forest_trust_info);
16077                 ndr->depth++;
16078                 ndr_print_ptr(ndr, "forest_trust_info", *r->out.forest_trust_info);
16079                 ndr->depth++;
16080                 if (*r->out.forest_trust_info) {
16081                         ndr_print_lsa_ForestTrustInformation(ndr, "forest_trust_info", *r->out.forest_trust_info);
16082                 }
16083                 ndr->depth--;
16084                 ndr->depth--;
16085                 ndr_print_WERROR(ndr, "result", r->out.result);
16086                 ndr->depth--;
16087         }
16088         ndr->depth--;
16089 }
16090
16091 static enum ndr_err_code ndr_push_netr_LogonSamLogonWithFlags(struct ndr_push *ndr, int flags, const struct netr_LogonSamLogonWithFlags *r)
16092 {
16093         if (flags & NDR_IN) {
16094                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
16095                 if (r->in.server_name) {
16096                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
16097                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
16098                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
16099                         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));
16100                 }
16101                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.computer_name));
16102                 if (r->in.computer_name) {
16103                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
16104                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
16105                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
16106                         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));
16107                 }
16108                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.credential));
16109                 if (r->in.credential) {
16110                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
16111                 }
16112                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.return_authenticator));
16113                 if (r->in.return_authenticator) {
16114                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
16115                 }
16116                 NDR_CHECK(ndr_push_netr_LogonInfoClass(ndr, NDR_SCALARS, r->in.logon_level));
16117                 if (r->in.logon == NULL) {
16118                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16119                 }
16120                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.logon, r->in.logon_level));
16121                 NDR_CHECK(ndr_push_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
16122                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.validation_level));
16123                 if (r->in.flags == NULL) {
16124                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16125                 }
16126                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.flags));
16127         }
16128         if (flags & NDR_OUT) {
16129                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.return_authenticator));
16130                 if (r->out.return_authenticator) {
16131                         NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
16132                 }
16133                 if (r->out.validation == NULL) {
16134                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16135                 }
16136                 NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.validation, r->in.validation_level));
16137                 NDR_CHECK(ndr_push_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
16138                 if (r->out.authoritative == NULL) {
16139                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16140                 }
16141                 NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, *r->out.authoritative));
16142                 if (r->out.flags == NULL) {
16143                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16144                 }
16145                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.flags));
16146                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
16147         }
16148         return NDR_ERR_SUCCESS;
16149 }
16150
16151 static enum ndr_err_code ndr_pull_netr_LogonSamLogonWithFlags(struct ndr_pull *ndr, int flags, struct netr_LogonSamLogonWithFlags *r)
16152 {
16153         uint32_t _ptr_server_name;
16154         uint32_t _ptr_computer_name;
16155         uint32_t _ptr_credential;
16156         uint32_t _ptr_return_authenticator;
16157         TALLOC_CTX *_mem_save_server_name_0;
16158         TALLOC_CTX *_mem_save_computer_name_0;
16159         TALLOC_CTX *_mem_save_credential_0;
16160         TALLOC_CTX *_mem_save_return_authenticator_0;
16161         TALLOC_CTX *_mem_save_logon_0;
16162         TALLOC_CTX *_mem_save_validation_0;
16163         TALLOC_CTX *_mem_save_authoritative_0;
16164         TALLOC_CTX *_mem_save_flags_0;
16165         if (flags & NDR_IN) {
16166                 ZERO_STRUCT(r->out);
16167
16168                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
16169                 if (_ptr_server_name) {
16170                         NDR_PULL_ALLOC(ndr, r->in.server_name);
16171                 } else {
16172                         r->in.server_name = NULL;
16173                 }
16174                 if (r->in.server_name) {
16175                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
16176                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
16177                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
16178                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
16179                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
16180                                 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));
16181                         }
16182                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
16183                         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));
16184                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
16185                 }
16186                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_computer_name));
16187                 if (_ptr_computer_name) {
16188                         NDR_PULL_ALLOC(ndr, r->in.computer_name);
16189                 } else {
16190                         r->in.computer_name = NULL;
16191                 }
16192                 if (r->in.computer_name) {
16193                         _mem_save_computer_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
16194                         NDR_PULL_SET_MEM_CTX(ndr, r->in.computer_name, 0);
16195                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
16196                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
16197                         if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
16198                                 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));
16199                         }
16200                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
16201                         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));
16202                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_computer_name_0, 0);
16203                 }
16204                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_credential));
16205                 if (_ptr_credential) {
16206                         NDR_PULL_ALLOC(ndr, r->in.credential);
16207                 } else {
16208                         r->in.credential = NULL;
16209                 }
16210                 if (r->in.credential) {
16211                         _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
16212                         NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, 0);
16213                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
16214                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, 0);
16215                 }
16216                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
16217                 if (_ptr_return_authenticator) {
16218                         NDR_PULL_ALLOC(ndr, r->in.return_authenticator);
16219                 } else {
16220                         r->in.return_authenticator = NULL;
16221                 }
16222                 if (r->in.return_authenticator) {
16223                         _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
16224                         NDR_PULL_SET_MEM_CTX(ndr, r->in.return_authenticator, 0);
16225                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.return_authenticator));
16226                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
16227                 }
16228                 NDR_CHECK(ndr_pull_netr_LogonInfoClass(ndr, NDR_SCALARS, &r->in.logon_level));
16229                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16230                         NDR_PULL_ALLOC(ndr, r->in.logon);
16231                 }
16232                 _mem_save_logon_0 = NDR_PULL_GET_MEM_CTX(ndr);
16233                 NDR_PULL_SET_MEM_CTX(ndr, r->in.logon, LIBNDR_FLAG_REF_ALLOC);
16234                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.logon, r->in.logon_level));
16235                 NDR_CHECK(ndr_pull_netr_LogonLevel(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.logon));
16236                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_logon_0, LIBNDR_FLAG_REF_ALLOC);
16237                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.validation_level));
16238                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16239                         NDR_PULL_ALLOC(ndr, r->in.flags);
16240                 }
16241                 _mem_save_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
16242                 NDR_PULL_SET_MEM_CTX(ndr, r->in.flags, LIBNDR_FLAG_REF_ALLOC);
16243                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.flags));
16244                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_flags_0, LIBNDR_FLAG_REF_ALLOC);
16245                 NDR_PULL_ALLOC(ndr, r->out.validation);
16246                 ZERO_STRUCTP(r->out.validation);
16247                 NDR_PULL_ALLOC(ndr, r->out.authoritative);
16248                 ZERO_STRUCTP(r->out.authoritative);
16249                 NDR_PULL_ALLOC(ndr, r->out.flags);
16250                 *r->out.flags = *r->in.flags;
16251         }
16252         if (flags & NDR_OUT) {
16253                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_return_authenticator));
16254                 if (_ptr_return_authenticator) {
16255                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
16256                 } else {
16257                         r->out.return_authenticator = NULL;
16258                 }
16259                 if (r->out.return_authenticator) {
16260                         _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
16261                         NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, 0);
16262                         NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
16263                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, 0);
16264                 }
16265                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16266                         NDR_PULL_ALLOC(ndr, r->out.validation);
16267                 }
16268                 _mem_save_validation_0 = NDR_PULL_GET_MEM_CTX(ndr);
16269                 NDR_PULL_SET_MEM_CTX(ndr, r->out.validation, LIBNDR_FLAG_REF_ALLOC);
16270                 NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.validation, r->in.validation_level));
16271                 NDR_CHECK(ndr_pull_netr_Validation(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.validation));
16272                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_validation_0, LIBNDR_FLAG_REF_ALLOC);
16273                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16274                         NDR_PULL_ALLOC(ndr, r->out.authoritative);
16275                 }
16276                 _mem_save_authoritative_0 = NDR_PULL_GET_MEM_CTX(ndr);
16277                 NDR_PULL_SET_MEM_CTX(ndr, r->out.authoritative, LIBNDR_FLAG_REF_ALLOC);
16278                 NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, r->out.authoritative));
16279                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_authoritative_0, LIBNDR_FLAG_REF_ALLOC);
16280                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16281                         NDR_PULL_ALLOC(ndr, r->out.flags);
16282                 }
16283                 _mem_save_flags_0 = NDR_PULL_GET_MEM_CTX(ndr);
16284                 NDR_PULL_SET_MEM_CTX(ndr, r->out.flags, LIBNDR_FLAG_REF_ALLOC);
16285                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.flags));
16286                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_flags_0, LIBNDR_FLAG_REF_ALLOC);
16287                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
16288         }
16289         return NDR_ERR_SUCCESS;
16290 }
16291
16292 _PUBLIC_ void ndr_print_netr_LogonSamLogonWithFlags(struct ndr_print *ndr, const char *name, int flags, const struct netr_LogonSamLogonWithFlags *r)
16293 {
16294         ndr_print_struct(ndr, name, "netr_LogonSamLogonWithFlags");
16295         ndr->depth++;
16296         if (flags & NDR_SET_VALUES) {
16297                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
16298         }
16299         if (flags & NDR_IN) {
16300                 ndr_print_struct(ndr, "in", "netr_LogonSamLogonWithFlags");
16301                 ndr->depth++;
16302                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
16303                 ndr->depth++;
16304                 if (r->in.server_name) {
16305                         ndr_print_string(ndr, "server_name", r->in.server_name);
16306                 }
16307                 ndr->depth--;
16308                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
16309                 ndr->depth++;
16310                 if (r->in.computer_name) {
16311                         ndr_print_string(ndr, "computer_name", r->in.computer_name);
16312                 }
16313                 ndr->depth--;
16314                 ndr_print_ptr(ndr, "credential", r->in.credential);
16315                 ndr->depth++;
16316                 if (r->in.credential) {
16317                         ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
16318                 }
16319                 ndr->depth--;
16320                 ndr_print_ptr(ndr, "return_authenticator", r->in.return_authenticator);
16321                 ndr->depth++;
16322                 if (r->in.return_authenticator) {
16323                         ndr_print_netr_Authenticator(ndr, "return_authenticator", r->in.return_authenticator);
16324                 }
16325                 ndr->depth--;
16326                 ndr_print_netr_LogonInfoClass(ndr, "logon_level", r->in.logon_level);
16327                 ndr_print_ptr(ndr, "logon", r->in.logon);
16328                 ndr->depth++;
16329                 ndr_print_set_switch_value(ndr, r->in.logon, r->in.logon_level);
16330                 ndr_print_netr_LogonLevel(ndr, "logon", r->in.logon);
16331                 ndr->depth--;
16332                 ndr_print_uint16(ndr, "validation_level", r->in.validation_level);
16333                 ndr_print_ptr(ndr, "flags", r->in.flags);
16334                 ndr->depth++;
16335                 ndr_print_uint32(ndr, "flags", *r->in.flags);
16336                 ndr->depth--;
16337                 ndr->depth--;
16338         }
16339         if (flags & NDR_OUT) {
16340                 ndr_print_struct(ndr, "out", "netr_LogonSamLogonWithFlags");
16341                 ndr->depth++;
16342                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
16343                 ndr->depth++;
16344                 if (r->out.return_authenticator) {
16345                         ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
16346                 }
16347                 ndr->depth--;
16348                 ndr_print_ptr(ndr, "validation", r->out.validation);
16349                 ndr->depth++;
16350                 ndr_print_set_switch_value(ndr, r->out.validation, r->in.validation_level);
16351                 ndr_print_netr_Validation(ndr, "validation", r->out.validation);
16352                 ndr->depth--;
16353                 ndr_print_ptr(ndr, "authoritative", r->out.authoritative);
16354                 ndr->depth++;
16355                 ndr_print_uint8(ndr, "authoritative", *r->out.authoritative);
16356                 ndr->depth--;
16357                 ndr_print_ptr(ndr, "flags", r->out.flags);
16358                 ndr->depth++;
16359                 ndr_print_uint32(ndr, "flags", *r->out.flags);
16360                 ndr->depth--;
16361                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
16362                 ndr->depth--;
16363         }
16364         ndr->depth--;
16365 }
16366
16367 static enum ndr_err_code ndr_push_netr_ServerGetTrustInfo(struct ndr_push *ndr, int flags, const struct netr_ServerGetTrustInfo *r)
16368 {
16369         if (flags & NDR_IN) {
16370                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.server_name));
16371                 if (r->in.server_name) {
16372                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
16373                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
16374                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_name, CH_UTF16)));
16375                         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));
16376                 }
16377                 if (r->in.account_name == NULL) {
16378                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16379                 }
16380                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
16381                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
16382                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.account_name, CH_UTF16)));
16383                 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));
16384                 NDR_CHECK(ndr_push_netr_SchannelType(ndr, NDR_SCALARS, r->in.secure_channel_type));
16385                 if (r->in.computer_name == NULL) {
16386                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16387                 }
16388                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
16389                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
16390                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.computer_name, CH_UTF16)));
16391                 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));
16392                 if (r->in.credential == NULL) {
16393                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16394                 }
16395                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
16396         }
16397         if (flags & NDR_OUT) {
16398                 if (r->out.return_authenticator == NULL) {
16399                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16400                 }
16401                 NDR_CHECK(ndr_push_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
16402                 if (r->out.new_owf_password == NULL) {
16403                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16404                 }
16405                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, r->out.new_owf_password));
16406                 if (r->out.old_owf_password == NULL) {
16407                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16408                 }
16409                 NDR_CHECK(ndr_push_samr_Password(ndr, NDR_SCALARS, r->out.old_owf_password));
16410                 if (r->out.trust_info == NULL) {
16411                         return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
16412                 }
16413                 NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.trust_info));
16414                 if (*r->out.trust_info) {
16415                         NDR_CHECK(ndr_push_netr_TrustInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.trust_info));
16416                 }
16417                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->out.result));
16418         }
16419         return NDR_ERR_SUCCESS;
16420 }
16421
16422 static enum ndr_err_code ndr_pull_netr_ServerGetTrustInfo(struct ndr_pull *ndr, int flags, struct netr_ServerGetTrustInfo *r)
16423 {
16424         uint32_t _ptr_server_name;
16425         uint32_t _ptr_trust_info;
16426         TALLOC_CTX *_mem_save_server_name_0;
16427         TALLOC_CTX *_mem_save_credential_0;
16428         TALLOC_CTX *_mem_save_return_authenticator_0;
16429         TALLOC_CTX *_mem_save_new_owf_password_0;
16430         TALLOC_CTX *_mem_save_old_owf_password_0;
16431         TALLOC_CTX *_mem_save_trust_info_0;
16432         TALLOC_CTX *_mem_save_trust_info_1;
16433         if (flags & NDR_IN) {
16434                 ZERO_STRUCT(r->out);
16435
16436                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
16437                 if (_ptr_server_name) {
16438                         NDR_PULL_ALLOC(ndr, r->in.server_name);
16439                 } else {
16440                         r->in.server_name = NULL;
16441                 }
16442                 if (r->in.server_name) {
16443                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
16444                         NDR_PULL_SET_MEM_CTX(ndr, r->in.server_name, 0);
16445                         NDR_CHECK(ndr_pull_array_size(ndr, &r->in.server_name));
16446                         NDR_CHECK(ndr_pull_array_length(ndr, &r->in.server_name));
16447                         if (ndr_get_array_length(ndr, &r->in.server_name) > ndr_get_array_size(ndr, &r->in.server_name)) {
16448                                 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));
16449                         }
16450                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.server_name), sizeof(uint16_t)));
16451                         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));
16452                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
16453                 }
16454                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.account_name));
16455                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.account_name));
16456                 if (ndr_get_array_length(ndr, &r->in.account_name) > ndr_get_array_size(ndr, &r->in.account_name)) {
16457                         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));
16458                 }
16459                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.account_name), sizeof(uint16_t)));
16460                 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));
16461                 NDR_CHECK(ndr_pull_netr_SchannelType(ndr, NDR_SCALARS, &r->in.secure_channel_type));
16462                 NDR_CHECK(ndr_pull_array_size(ndr, &r->in.computer_name));
16463                 NDR_CHECK(ndr_pull_array_length(ndr, &r->in.computer_name));
16464                 if (ndr_get_array_length(ndr, &r->in.computer_name) > ndr_get_array_size(ndr, &r->in.computer_name)) {
16465                         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));
16466                 }
16467                 NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.computer_name), sizeof(uint16_t)));
16468                 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));
16469                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16470                         NDR_PULL_ALLOC(ndr, r->in.credential);
16471                 }
16472                 _mem_save_credential_0 = NDR_PULL_GET_MEM_CTX(ndr);
16473                 NDR_PULL_SET_MEM_CTX(ndr, r->in.credential, LIBNDR_FLAG_REF_ALLOC);
16474                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->in.credential));
16475                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_credential_0, LIBNDR_FLAG_REF_ALLOC);
16476                 NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
16477                 ZERO_STRUCTP(r->out.return_authenticator);
16478                 NDR_PULL_ALLOC(ndr, r->out.new_owf_password);
16479                 ZERO_STRUCTP(r->out.new_owf_password);
16480                 NDR_PULL_ALLOC(ndr, r->out.old_owf_password);
16481                 ZERO_STRUCTP(r->out.old_owf_password);
16482                 NDR_PULL_ALLOC(ndr, r->out.trust_info);
16483                 ZERO_STRUCTP(r->out.trust_info);
16484         }
16485         if (flags & NDR_OUT) {
16486                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16487                         NDR_PULL_ALLOC(ndr, r->out.return_authenticator);
16488                 }
16489                 _mem_save_return_authenticator_0 = NDR_PULL_GET_MEM_CTX(ndr);
16490                 NDR_PULL_SET_MEM_CTX(ndr, r->out.return_authenticator, LIBNDR_FLAG_REF_ALLOC);
16491                 NDR_CHECK(ndr_pull_netr_Authenticator(ndr, NDR_SCALARS, r->out.return_authenticator));
16492                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_return_authenticator_0, LIBNDR_FLAG_REF_ALLOC);
16493                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16494                         NDR_PULL_ALLOC(ndr, r->out.new_owf_password);
16495                 }
16496                 _mem_save_new_owf_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
16497                 NDR_PULL_SET_MEM_CTX(ndr, r->out.new_owf_password, LIBNDR_FLAG_REF_ALLOC);
16498                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, r->out.new_owf_password));
16499                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_new_owf_password_0, LIBNDR_FLAG_REF_ALLOC);
16500                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16501                         NDR_PULL_ALLOC(ndr, r->out.old_owf_password);
16502                 }
16503                 _mem_save_old_owf_password_0 = NDR_PULL_GET_MEM_CTX(ndr);
16504                 NDR_PULL_SET_MEM_CTX(ndr, r->out.old_owf_password, LIBNDR_FLAG_REF_ALLOC);
16505                 NDR_CHECK(ndr_pull_samr_Password(ndr, NDR_SCALARS, r->out.old_owf_password));
16506                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_old_owf_password_0, LIBNDR_FLAG_REF_ALLOC);
16507                 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
16508                         NDR_PULL_ALLOC(ndr, r->out.trust_info);
16509                 }
16510                 _mem_save_trust_info_0 = NDR_PULL_GET_MEM_CTX(ndr);
16511                 NDR_PULL_SET_MEM_CTX(ndr, r->out.trust_info, LIBNDR_FLAG_REF_ALLOC);
16512                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_trust_info));
16513                 if (_ptr_trust_info) {
16514                         NDR_PULL_ALLOC(ndr, *r->out.trust_info);
16515                 } else {
16516                         *r->out.trust_info = NULL;
16517                 }
16518                 if (*r->out.trust_info) {
16519                         _mem_save_trust_info_1 = NDR_PULL_GET_MEM_CTX(ndr);
16520                         NDR_PULL_SET_MEM_CTX(ndr, *r->out.trust_info, 0);
16521                         NDR_CHECK(ndr_pull_netr_TrustInfo(ndr, NDR_SCALARS|NDR_BUFFERS, *r->out.trust_info));
16522                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trust_info_1, 0);
16523                 }
16524                 NDR_PULL_SET_MEM_CTX(ndr, _mem_save_trust_info_0, LIBNDR_FLAG_REF_ALLOC);
16525                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->out.result));
16526         }
16527         return NDR_ERR_SUCCESS;
16528 }
16529
16530 _PUBLIC_ void ndr_print_netr_ServerGetTrustInfo(struct ndr_print *ndr, const char *name, int flags, const struct netr_ServerGetTrustInfo *r)
16531 {
16532         ndr_print_struct(ndr, name, "netr_ServerGetTrustInfo");
16533         ndr->depth++;
16534         if (flags & NDR_SET_VALUES) {
16535                 ndr->flags |= LIBNDR_PRINT_SET_VALUES;
16536         }
16537         if (flags & NDR_IN) {
16538                 ndr_print_struct(ndr, "in", "netr_ServerGetTrustInfo");
16539                 ndr->depth++;
16540                 ndr_print_ptr(ndr, "server_name", r->in.server_name);
16541                 ndr->depth++;
16542                 if (r->in.server_name) {
16543                         ndr_print_string(ndr, "server_name", r->in.server_name);
16544                 }
16545                 ndr->depth--;
16546                 ndr_print_ptr(ndr, "account_name", r->in.account_name);
16547                 ndr->depth++;
16548                 ndr_print_string(ndr, "account_name", r->in.account_name);
16549                 ndr->depth--;
16550                 ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
16551                 ndr_print_ptr(ndr, "computer_name", r->in.computer_name);
16552                 ndr->depth++;
16553                 ndr_print_string(ndr, "computer_name", r->in.computer_name);
16554                 ndr->depth--;
16555                 ndr_print_ptr(ndr, "credential", r->in.credential);
16556                 ndr->depth++;
16557                 ndr_print_netr_Authenticator(ndr, "credential", r->in.credential);
16558                 ndr->depth--;
16559                 ndr->depth--;
16560         }
16561         if (flags & NDR_OUT) {
16562                 ndr_print_struct(ndr, "out", "netr_ServerGetTrustInfo");
16563                 ndr->depth++;
16564                 ndr_print_ptr(ndr, "return_authenticator", r->out.return_authenticator);
16565                 ndr->depth++;
16566                 ndr_print_netr_Authenticator(ndr, "return_authenticator", r->out.return_authenticator);
16567                 ndr->depth--;
16568                 ndr_print_ptr(ndr, "new_owf_password", r->out.new_owf_password);
16569                 ndr->depth++;
16570                 ndr_print_samr_Password(ndr, "new_owf_password", r->out.new_owf_password);
16571                 ndr->depth--;
16572                 ndr_print_ptr(ndr, "old_owf_password", r->out.old_owf_password);
16573                 ndr->depth++;
16574                 ndr_print_samr_Password(ndr, "old_owf_password", r->out.old_owf_password);
16575                 ndr->depth--;
16576                 ndr_print_ptr(ndr, "trust_info", r->out.trust_info);
16577                 ndr->depth++;
16578                 ndr_print_ptr(ndr, "trust_info", *r->out.trust_info);
16579                 ndr->depth++;
16580                 if (*r->out.trust_info) {
16581                         ndr_print_netr_TrustInfo(ndr, "trust_info", *r->out.trust_info);
16582                 }
16583                 ndr->depth--;
16584                 ndr->depth--;
16585                 ndr_print_NTSTATUS(ndr, "result", r->out.result);
16586                 ndr->depth--;
16587         }
16588         ndr->depth--;
16589 }
16590
16591 static const struct ndr_interface_call netlogon_calls[] = {
16592         {
16593                 "netr_LogonUasLogon",
16594                 sizeof(struct netr_LogonUasLogon),
16595                 (ndr_push_flags_fn_t) ndr_push_netr_LogonUasLogon,
16596                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonUasLogon,
16597                 (ndr_print_function_t) ndr_print_netr_LogonUasLogon,
16598                 false,
16599         },
16600         {
16601                 "netr_LogonUasLogoff",
16602                 sizeof(struct netr_LogonUasLogoff),
16603                 (ndr_push_flags_fn_t) ndr_push_netr_LogonUasLogoff,
16604                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonUasLogoff,
16605                 (ndr_print_function_t) ndr_print_netr_LogonUasLogoff,
16606                 false,
16607         },
16608         {
16609                 "netr_LogonSamLogon",
16610                 sizeof(struct netr_LogonSamLogon),
16611                 (ndr_push_flags_fn_t) ndr_push_netr_LogonSamLogon,
16612                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonSamLogon,
16613                 (ndr_print_function_t) ndr_print_netr_LogonSamLogon,
16614                 false,
16615         },
16616         {
16617                 "netr_LogonSamLogoff",
16618                 sizeof(struct netr_LogonSamLogoff),
16619                 (ndr_push_flags_fn_t) ndr_push_netr_LogonSamLogoff,
16620                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonSamLogoff,
16621                 (ndr_print_function_t) ndr_print_netr_LogonSamLogoff,
16622                 false,
16623         },
16624         {
16625                 "netr_ServerReqChallenge",
16626                 sizeof(struct netr_ServerReqChallenge),
16627                 (ndr_push_flags_fn_t) ndr_push_netr_ServerReqChallenge,
16628                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerReqChallenge,
16629                 (ndr_print_function_t) ndr_print_netr_ServerReqChallenge,
16630                 false,
16631         },
16632         {
16633                 "netr_ServerAuthenticate",
16634                 sizeof(struct netr_ServerAuthenticate),
16635                 (ndr_push_flags_fn_t) ndr_push_netr_ServerAuthenticate,
16636                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerAuthenticate,
16637                 (ndr_print_function_t) ndr_print_netr_ServerAuthenticate,
16638                 false,
16639         },
16640         {
16641                 "netr_ServerPasswordSet",
16642                 sizeof(struct netr_ServerPasswordSet),
16643                 (ndr_push_flags_fn_t) ndr_push_netr_ServerPasswordSet,
16644                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerPasswordSet,
16645                 (ndr_print_function_t) ndr_print_netr_ServerPasswordSet,
16646                 false,
16647         },
16648         {
16649                 "netr_DatabaseDeltas",
16650                 sizeof(struct netr_DatabaseDeltas),
16651                 (ndr_push_flags_fn_t) ndr_push_netr_DatabaseDeltas,
16652                 (ndr_pull_flags_fn_t) ndr_pull_netr_DatabaseDeltas,
16653                 (ndr_print_function_t) ndr_print_netr_DatabaseDeltas,
16654                 false,
16655         },
16656         {
16657                 "netr_DatabaseSync",
16658                 sizeof(struct netr_DatabaseSync),
16659                 (ndr_push_flags_fn_t) ndr_push_netr_DatabaseSync,
16660                 (ndr_pull_flags_fn_t) ndr_pull_netr_DatabaseSync,
16661                 (ndr_print_function_t) ndr_print_netr_DatabaseSync,
16662                 false,
16663         },
16664         {
16665                 "netr_AccountDeltas",
16666                 sizeof(struct netr_AccountDeltas),
16667                 (ndr_push_flags_fn_t) ndr_push_netr_AccountDeltas,
16668                 (ndr_pull_flags_fn_t) ndr_pull_netr_AccountDeltas,
16669                 (ndr_print_function_t) ndr_print_netr_AccountDeltas,
16670                 false,
16671         },
16672         {
16673                 "netr_AccountSync",
16674                 sizeof(struct netr_AccountSync),
16675                 (ndr_push_flags_fn_t) ndr_push_netr_AccountSync,
16676                 (ndr_pull_flags_fn_t) ndr_pull_netr_AccountSync,
16677                 (ndr_print_function_t) ndr_print_netr_AccountSync,
16678                 false,
16679         },
16680         {
16681                 "netr_GetDcName",
16682                 sizeof(struct netr_GetDcName),
16683                 (ndr_push_flags_fn_t) ndr_push_netr_GetDcName,
16684                 (ndr_pull_flags_fn_t) ndr_pull_netr_GetDcName,
16685                 (ndr_print_function_t) ndr_print_netr_GetDcName,
16686                 false,
16687         },
16688         {
16689                 "netr_LogonControl",
16690                 sizeof(struct netr_LogonControl),
16691                 (ndr_push_flags_fn_t) ndr_push_netr_LogonControl,
16692                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonControl,
16693                 (ndr_print_function_t) ndr_print_netr_LogonControl,
16694                 false,
16695         },
16696         {
16697                 "netr_GetAnyDCName",
16698                 sizeof(struct netr_GetAnyDCName),
16699                 (ndr_push_flags_fn_t) ndr_push_netr_GetAnyDCName,
16700                 (ndr_pull_flags_fn_t) ndr_pull_netr_GetAnyDCName,
16701                 (ndr_print_function_t) ndr_print_netr_GetAnyDCName,
16702                 false,
16703         },
16704         {
16705                 "netr_LogonControl2",
16706                 sizeof(struct netr_LogonControl2),
16707                 (ndr_push_flags_fn_t) ndr_push_netr_LogonControl2,
16708                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonControl2,
16709                 (ndr_print_function_t) ndr_print_netr_LogonControl2,
16710                 false,
16711         },
16712         {
16713                 "netr_ServerAuthenticate2",
16714                 sizeof(struct netr_ServerAuthenticate2),
16715                 (ndr_push_flags_fn_t) ndr_push_netr_ServerAuthenticate2,
16716                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerAuthenticate2,
16717                 (ndr_print_function_t) ndr_print_netr_ServerAuthenticate2,
16718                 false,
16719         },
16720         {
16721                 "netr_DatabaseSync2",
16722                 sizeof(struct netr_DatabaseSync2),
16723                 (ndr_push_flags_fn_t) ndr_push_netr_DatabaseSync2,
16724                 (ndr_pull_flags_fn_t) ndr_pull_netr_DatabaseSync2,
16725                 (ndr_print_function_t) ndr_print_netr_DatabaseSync2,
16726                 false,
16727         },
16728         {
16729                 "netr_DatabaseRedo",
16730                 sizeof(struct netr_DatabaseRedo),
16731                 (ndr_push_flags_fn_t) ndr_push_netr_DatabaseRedo,
16732                 (ndr_pull_flags_fn_t) ndr_pull_netr_DatabaseRedo,
16733                 (ndr_print_function_t) ndr_print_netr_DatabaseRedo,
16734                 false,
16735         },
16736         {
16737                 "netr_LogonControl2Ex",
16738                 sizeof(struct netr_LogonControl2Ex),
16739                 (ndr_push_flags_fn_t) ndr_push_netr_LogonControl2Ex,
16740                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonControl2Ex,
16741                 (ndr_print_function_t) ndr_print_netr_LogonControl2Ex,
16742                 false,
16743         },
16744         {
16745                 "netr_NetrEnumerateTrustedDomains",
16746                 sizeof(struct netr_NetrEnumerateTrustedDomains),
16747                 (ndr_push_flags_fn_t) ndr_push_netr_NetrEnumerateTrustedDomains,
16748                 (ndr_pull_flags_fn_t) ndr_pull_netr_NetrEnumerateTrustedDomains,
16749                 (ndr_print_function_t) ndr_print_netr_NetrEnumerateTrustedDomains,
16750                 false,
16751         },
16752         {
16753                 "netr_DsRGetDCName",
16754                 sizeof(struct netr_DsRGetDCName),
16755                 (ndr_push_flags_fn_t) ndr_push_netr_DsRGetDCName,
16756                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRGetDCName,
16757                 (ndr_print_function_t) ndr_print_netr_DsRGetDCName,
16758                 false,
16759         },
16760         {
16761                 "netr_LogonGetCapabilities",
16762                 sizeof(struct netr_LogonGetCapabilities),
16763                 (ndr_push_flags_fn_t) ndr_push_netr_LogonGetCapabilities,
16764                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonGetCapabilities,
16765                 (ndr_print_function_t) ndr_print_netr_LogonGetCapabilities,
16766                 false,
16767         },
16768         {
16769                 "netr_NETRLOGONSETSERVICEBITS",
16770                 sizeof(struct netr_NETRLOGONSETSERVICEBITS),
16771                 (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONSETSERVICEBITS,
16772                 (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONSETSERVICEBITS,
16773                 (ndr_print_function_t) ndr_print_netr_NETRLOGONSETSERVICEBITS,
16774                 false,
16775         },
16776         {
16777                 "netr_LogonGetTrustRid",
16778                 sizeof(struct netr_LogonGetTrustRid),
16779                 (ndr_push_flags_fn_t) ndr_push_netr_LogonGetTrustRid,
16780                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonGetTrustRid,
16781                 (ndr_print_function_t) ndr_print_netr_LogonGetTrustRid,
16782                 false,
16783         },
16784         {
16785                 "netr_NETRLOGONCOMPUTESERVERDIGEST",
16786                 sizeof(struct netr_NETRLOGONCOMPUTESERVERDIGEST),
16787                 (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONCOMPUTESERVERDIGEST,
16788                 (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONCOMPUTESERVERDIGEST,
16789                 (ndr_print_function_t) ndr_print_netr_NETRLOGONCOMPUTESERVERDIGEST,
16790                 false,
16791         },
16792         {
16793                 "netr_NETRLOGONCOMPUTECLIENTDIGEST",
16794                 sizeof(struct netr_NETRLOGONCOMPUTECLIENTDIGEST),
16795                 (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONCOMPUTECLIENTDIGEST,
16796                 (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONCOMPUTECLIENTDIGEST,
16797                 (ndr_print_function_t) ndr_print_netr_NETRLOGONCOMPUTECLIENTDIGEST,
16798                 false,
16799         },
16800         {
16801                 "netr_ServerAuthenticate3",
16802                 sizeof(struct netr_ServerAuthenticate3),
16803                 (ndr_push_flags_fn_t) ndr_push_netr_ServerAuthenticate3,
16804                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerAuthenticate3,
16805                 (ndr_print_function_t) ndr_print_netr_ServerAuthenticate3,
16806                 false,
16807         },
16808         {
16809                 "netr_DsRGetDCNameEx",
16810                 sizeof(struct netr_DsRGetDCNameEx),
16811                 (ndr_push_flags_fn_t) ndr_push_netr_DsRGetDCNameEx,
16812                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRGetDCNameEx,
16813                 (ndr_print_function_t) ndr_print_netr_DsRGetDCNameEx,
16814                 false,
16815         },
16816         {
16817                 "netr_DsRGetSiteName",
16818                 sizeof(struct netr_DsRGetSiteName),
16819                 (ndr_push_flags_fn_t) ndr_push_netr_DsRGetSiteName,
16820                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRGetSiteName,
16821                 (ndr_print_function_t) ndr_print_netr_DsRGetSiteName,
16822                 false,
16823         },
16824         {
16825                 "netr_LogonGetDomainInfo",
16826                 sizeof(struct netr_LogonGetDomainInfo),
16827                 (ndr_push_flags_fn_t) ndr_push_netr_LogonGetDomainInfo,
16828                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonGetDomainInfo,
16829                 (ndr_print_function_t) ndr_print_netr_LogonGetDomainInfo,
16830                 false,
16831         },
16832         {
16833                 "netr_ServerPasswordSet2",
16834                 sizeof(struct netr_ServerPasswordSet2),
16835                 (ndr_push_flags_fn_t) ndr_push_netr_ServerPasswordSet2,
16836                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerPasswordSet2,
16837                 (ndr_print_function_t) ndr_print_netr_ServerPasswordSet2,
16838                 false,
16839         },
16840         {
16841                 "netr_ServerPasswordGet",
16842                 sizeof(struct netr_ServerPasswordGet),
16843                 (ndr_push_flags_fn_t) ndr_push_netr_ServerPasswordGet,
16844                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerPasswordGet,
16845                 (ndr_print_function_t) ndr_print_netr_ServerPasswordGet,
16846                 false,
16847         },
16848         {
16849                 "netr_NETRLOGONSENDTOSAM",
16850                 sizeof(struct netr_NETRLOGONSENDTOSAM),
16851                 (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONSENDTOSAM,
16852                 (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONSENDTOSAM,
16853                 (ndr_print_function_t) ndr_print_netr_NETRLOGONSENDTOSAM,
16854                 false,
16855         },
16856         {
16857                 "netr_DsRAddressToSitenamesW",
16858                 sizeof(struct netr_DsRAddressToSitenamesW),
16859                 (ndr_push_flags_fn_t) ndr_push_netr_DsRAddressToSitenamesW,
16860                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRAddressToSitenamesW,
16861                 (ndr_print_function_t) ndr_print_netr_DsRAddressToSitenamesW,
16862                 false,
16863         },
16864         {
16865                 "netr_DsRGetDCNameEx2",
16866                 sizeof(struct netr_DsRGetDCNameEx2),
16867                 (ndr_push_flags_fn_t) ndr_push_netr_DsRGetDCNameEx2,
16868                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRGetDCNameEx2,
16869                 (ndr_print_function_t) ndr_print_netr_DsRGetDCNameEx2,
16870                 false,
16871         },
16872         {
16873                 "netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN",
16874                 sizeof(struct netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN),
16875                 (ndr_push_flags_fn_t) ndr_push_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN,
16876                 (ndr_pull_flags_fn_t) ndr_pull_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN,
16877                 (ndr_print_function_t) ndr_print_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN,
16878                 false,
16879         },
16880         {
16881                 "netr_NetrEnumerateTrustedDomainsEx",
16882                 sizeof(struct netr_NetrEnumerateTrustedDomainsEx),
16883                 (ndr_push_flags_fn_t) ndr_push_netr_NetrEnumerateTrustedDomainsEx,
16884                 (ndr_pull_flags_fn_t) ndr_pull_netr_NetrEnumerateTrustedDomainsEx,
16885                 (ndr_print_function_t) ndr_print_netr_NetrEnumerateTrustedDomainsEx,
16886                 false,
16887         },
16888         {
16889                 "netr_DsRAddressToSitenamesExW",
16890                 sizeof(struct netr_DsRAddressToSitenamesExW),
16891                 (ndr_push_flags_fn_t) ndr_push_netr_DsRAddressToSitenamesExW,
16892                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRAddressToSitenamesExW,
16893                 (ndr_print_function_t) ndr_print_netr_DsRAddressToSitenamesExW,
16894                 false,
16895         },
16896         {
16897                 "netr_DsrGetDcSiteCoverageW",
16898                 sizeof(struct netr_DsrGetDcSiteCoverageW),
16899                 (ndr_push_flags_fn_t) ndr_push_netr_DsrGetDcSiteCoverageW,
16900                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsrGetDcSiteCoverageW,
16901                 (ndr_print_function_t) ndr_print_netr_DsrGetDcSiteCoverageW,
16902                 false,
16903         },
16904         {
16905                 "netr_LogonSamLogonEx",
16906                 sizeof(struct netr_LogonSamLogonEx),
16907                 (ndr_push_flags_fn_t) ndr_push_netr_LogonSamLogonEx,
16908                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonSamLogonEx,
16909                 (ndr_print_function_t) ndr_print_netr_LogonSamLogonEx,
16910                 false,
16911         },
16912         {
16913                 "netr_DsrEnumerateDomainTrusts",
16914                 sizeof(struct netr_DsrEnumerateDomainTrusts),
16915                 (ndr_push_flags_fn_t) ndr_push_netr_DsrEnumerateDomainTrusts,
16916                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsrEnumerateDomainTrusts,
16917                 (ndr_print_function_t) ndr_print_netr_DsrEnumerateDomainTrusts,
16918                 false,
16919         },
16920         {
16921                 "netr_DsrDeregisterDNSHostRecords",
16922                 sizeof(struct netr_DsrDeregisterDNSHostRecords),
16923                 (ndr_push_flags_fn_t) ndr_push_netr_DsrDeregisterDNSHostRecords,
16924                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsrDeregisterDNSHostRecords,
16925                 (ndr_print_function_t) ndr_print_netr_DsrDeregisterDNSHostRecords,
16926                 false,
16927         },
16928         {
16929                 "netr_ServerTrustPasswordsGet",
16930                 sizeof(struct netr_ServerTrustPasswordsGet),
16931                 (ndr_push_flags_fn_t) ndr_push_netr_ServerTrustPasswordsGet,
16932                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerTrustPasswordsGet,
16933                 (ndr_print_function_t) ndr_print_netr_ServerTrustPasswordsGet,
16934                 false,
16935         },
16936         {
16937                 "netr_DsRGetForestTrustInformation",
16938                 sizeof(struct netr_DsRGetForestTrustInformation),
16939                 (ndr_push_flags_fn_t) ndr_push_netr_DsRGetForestTrustInformation,
16940                 (ndr_pull_flags_fn_t) ndr_pull_netr_DsRGetForestTrustInformation,
16941                 (ndr_print_function_t) ndr_print_netr_DsRGetForestTrustInformation,
16942                 false,
16943         },
16944         {
16945                 "netr_GetForestTrustInformation",
16946                 sizeof(struct netr_GetForestTrustInformation),
16947                 (ndr_push_flags_fn_t) ndr_push_netr_GetForestTrustInformation,
16948                 (ndr_pull_flags_fn_t) ndr_pull_netr_GetForestTrustInformation,
16949                 (ndr_print_function_t) ndr_print_netr_GetForestTrustInformation,
16950                 false,
16951         },
16952         {
16953                 "netr_LogonSamLogonWithFlags",
16954                 sizeof(struct netr_LogonSamLogonWithFlags),
16955                 (ndr_push_flags_fn_t) ndr_push_netr_LogonSamLogonWithFlags,
16956                 (ndr_pull_flags_fn_t) ndr_pull_netr_LogonSamLogonWithFlags,
16957                 (ndr_print_function_t) ndr_print_netr_LogonSamLogonWithFlags,
16958                 false,
16959         },
16960         {
16961                 "netr_ServerGetTrustInfo",
16962                 sizeof(struct netr_ServerGetTrustInfo),
16963                 (ndr_push_flags_fn_t) ndr_push_netr_ServerGetTrustInfo,
16964                 (ndr_pull_flags_fn_t) ndr_pull_netr_ServerGetTrustInfo,
16965                 (ndr_print_function_t) ndr_print_netr_ServerGetTrustInfo,
16966                 false,
16967         },
16968         { NULL, 0, NULL, NULL, NULL, false }
16969 };
16970
16971 static const char * const netlogon_endpoint_strings[] = {
16972         "ncacn_np:[\\pipe\\netlogon]", 
16973         "ncacn_ip_tcp:", 
16974         "ncalrpc:", 
16975 };
16976
16977 static const struct ndr_interface_string_array netlogon_endpoints = {
16978         .count  = 3,
16979         .names  = netlogon_endpoint_strings
16980 };
16981
16982 static const char * const netlogon_authservice_strings[] = {
16983         "host", 
16984 };
16985
16986 static const struct ndr_interface_string_array netlogon_authservices = {
16987         .count  = 1,
16988         .names  = netlogon_authservice_strings
16989 };
16990
16991
16992 const struct ndr_interface_table ndr_table_netlogon = {
16993         .name           = "netlogon",
16994         .syntax_id      = {
16995                 {0x12345678,0x1234,0xabcd,{0xef,0x00},{0x01,0x23,0x45,0x67,0xcf,0xfb}},
16996                 NDR_NETLOGON_VERSION
16997         },
16998         .helpstring     = NDR_NETLOGON_HELPSTRING,
16999         .num_calls      = 47,
17000         .calls          = netlogon_calls,
17001         .endpoints      = &netlogon_endpoints,
17002         .authservices   = &netlogon_authservices
17003 };
17004