cdd8a3d64145c7640b7e7a93e37161ae62a42a0c
[samba.git] / librpc / gen_ndr / ndr_named_pipe_auth.c
1 /* parser auto-generated by pidl */
2
3 #include "includes.h"
4 #include "../librpc/gen_ndr/ndr_named_pipe_auth.h"
5
6 #include "librpc/gen_ndr/ndr_netlogon.h"
7 static enum ndr_err_code ndr_push_named_pipe_auth_req_info2(struct ndr_push *ndr, int ndr_flags, const struct named_pipe_auth_req_info2 *r)
8 {
9         if (ndr_flags & NDR_SCALARS) {
10                 NDR_CHECK(ndr_push_align(ndr, 5));
11                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->client_name));
12                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->client_addr));
13                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->client_port));
14                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->server_name));
15                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->server_addr));
16                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->server_port));
17                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sam_info3));
18                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->session_key_length));
19                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->session_key));
20         }
21         if (ndr_flags & NDR_BUFFERS) {
22                 if (r->client_name) {
23                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client_name, CH_UTF8)));
24                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
25                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client_name, CH_UTF8)));
26                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client_name, ndr_charset_length(r->client_name, CH_UTF8), sizeof(uint8_t), CH_UTF8));
27                 }
28                 if (r->client_addr) {
29                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client_addr, CH_DOS)));
30                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
31                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client_addr, CH_DOS)));
32                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client_addr, ndr_charset_length(r->client_addr, CH_DOS), sizeof(uint8_t), CH_DOS));
33                 }
34                 if (r->server_name) {
35                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF8)));
36                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
37                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF8)));
38                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->server_name, ndr_charset_length(r->server_name, CH_UTF8), sizeof(uint8_t), CH_UTF8));
39                 }
40                 if (r->server_addr) {
41                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_addr, CH_DOS)));
42                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
43                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_addr, CH_DOS)));
44                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->server_addr, ndr_charset_length(r->server_addr, CH_DOS), sizeof(uint8_t), CH_DOS));
45                 }
46                 if (r->sam_info3) {
47                         NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam_info3));
48                 }
49                 if (r->session_key) {
50                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->session_key_length));
51                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->session_key, r->session_key_length));
52                 }
53         }
54         return NDR_ERR_SUCCESS;
55 }
56
57 static enum ndr_err_code ndr_pull_named_pipe_auth_req_info2(struct ndr_pull *ndr, int ndr_flags, struct named_pipe_auth_req_info2 *r)
58 {
59         uint32_t _ptr_client_name;
60         TALLOC_CTX *_mem_save_client_name_0;
61         uint32_t _ptr_client_addr;
62         TALLOC_CTX *_mem_save_client_addr_0;
63         uint32_t _ptr_server_name;
64         TALLOC_CTX *_mem_save_server_name_0;
65         uint32_t _ptr_server_addr;
66         TALLOC_CTX *_mem_save_server_addr_0;
67         uint32_t _ptr_sam_info3;
68         TALLOC_CTX *_mem_save_sam_info3_0;
69         uint32_t _ptr_session_key;
70         TALLOC_CTX *_mem_save_session_key_0;
71         if (ndr_flags & NDR_SCALARS) {
72                 NDR_CHECK(ndr_pull_align(ndr, 5));
73                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client_name));
74                 if (_ptr_client_name) {
75                         NDR_PULL_ALLOC(ndr, r->client_name);
76                 } else {
77                         r->client_name = NULL;
78                 }
79                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client_addr));
80                 if (_ptr_client_addr) {
81                         NDR_PULL_ALLOC(ndr, r->client_addr);
82                 } else {
83                         r->client_addr = NULL;
84                 }
85                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->client_port));
86                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
87                 if (_ptr_server_name) {
88                         NDR_PULL_ALLOC(ndr, r->server_name);
89                 } else {
90                         r->server_name = NULL;
91                 }
92                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_addr));
93                 if (_ptr_server_addr) {
94                         NDR_PULL_ALLOC(ndr, r->server_addr);
95                 } else {
96                         r->server_addr = NULL;
97                 }
98                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->server_port));
99                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sam_info3));
100                 if (_ptr_sam_info3) {
101                         NDR_PULL_ALLOC(ndr, r->sam_info3);
102                 } else {
103                         r->sam_info3 = NULL;
104                 }
105                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->session_key_length));
106                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_session_key));
107                 if (_ptr_session_key) {
108                         NDR_PULL_ALLOC(ndr, r->session_key);
109                 } else {
110                         r->session_key = NULL;
111                 }
112         }
113         if (ndr_flags & NDR_BUFFERS) {
114                 if (r->client_name) {
115                         _mem_save_client_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
116                         NDR_PULL_SET_MEM_CTX(ndr, r->client_name, 0);
117                         NDR_CHECK(ndr_pull_array_size(ndr, &r->client_name));
118                         NDR_CHECK(ndr_pull_array_length(ndr, &r->client_name));
119                         if (ndr_get_array_length(ndr, &r->client_name) > ndr_get_array_size(ndr, &r->client_name)) {
120                                 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_name), ndr_get_array_length(ndr, &r->client_name));
121                         }
122                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client_name), sizeof(uint8_t)));
123                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client_name, ndr_get_array_length(ndr, &r->client_name), sizeof(uint8_t), CH_UTF8));
124                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_name_0, 0);
125                 }
126                 if (r->client_addr) {
127                         _mem_save_client_addr_0 = NDR_PULL_GET_MEM_CTX(ndr);
128                         NDR_PULL_SET_MEM_CTX(ndr, r->client_addr, 0);
129                         NDR_CHECK(ndr_pull_array_size(ndr, &r->client_addr));
130                         NDR_CHECK(ndr_pull_array_length(ndr, &r->client_addr));
131                         if (ndr_get_array_length(ndr, &r->client_addr) > ndr_get_array_size(ndr, &r->client_addr)) {
132                                 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_addr), ndr_get_array_length(ndr, &r->client_addr));
133                         }
134                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client_addr), sizeof(uint8_t)));
135                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client_addr, ndr_get_array_length(ndr, &r->client_addr), sizeof(uint8_t), CH_DOS));
136                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_addr_0, 0);
137                 }
138                 if (r->server_name) {
139                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
140                         NDR_PULL_SET_MEM_CTX(ndr, r->server_name, 0);
141                         NDR_CHECK(ndr_pull_array_size(ndr, &r->server_name));
142                         NDR_CHECK(ndr_pull_array_length(ndr, &r->server_name));
143                         if (ndr_get_array_length(ndr, &r->server_name) > ndr_get_array_size(ndr, &r->server_name)) {
144                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->server_name), ndr_get_array_length(ndr, &r->server_name));
145                         }
146                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->server_name), sizeof(uint8_t)));
147                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->server_name, ndr_get_array_length(ndr, &r->server_name), sizeof(uint8_t), CH_UTF8));
148                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
149                 }
150                 if (r->server_addr) {
151                         _mem_save_server_addr_0 = NDR_PULL_GET_MEM_CTX(ndr);
152                         NDR_PULL_SET_MEM_CTX(ndr, r->server_addr, 0);
153                         NDR_CHECK(ndr_pull_array_size(ndr, &r->server_addr));
154                         NDR_CHECK(ndr_pull_array_length(ndr, &r->server_addr));
155                         if (ndr_get_array_length(ndr, &r->server_addr) > ndr_get_array_size(ndr, &r->server_addr)) {
156                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->server_addr), ndr_get_array_length(ndr, &r->server_addr));
157                         }
158                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->server_addr), sizeof(uint8_t)));
159                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->server_addr, ndr_get_array_length(ndr, &r->server_addr), sizeof(uint8_t), CH_DOS));
160                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_addr_0, 0);
161                 }
162                 if (r->sam_info3) {
163                         _mem_save_sam_info3_0 = NDR_PULL_GET_MEM_CTX(ndr);
164                         NDR_PULL_SET_MEM_CTX(ndr, r->sam_info3, 0);
165                         NDR_CHECK(ndr_pull_netr_SamInfo3(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam_info3));
166                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sam_info3_0, 0);
167                 }
168                 if (r->session_key) {
169                         _mem_save_session_key_0 = NDR_PULL_GET_MEM_CTX(ndr);
170                         NDR_PULL_SET_MEM_CTX(ndr, r->session_key, 0);
171                         NDR_CHECK(ndr_pull_array_size(ndr, &r->session_key));
172                         NDR_PULL_ALLOC_N(ndr, r->session_key, ndr_get_array_size(ndr, &r->session_key));
173                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->session_key, ndr_get_array_size(ndr, &r->session_key)));
174                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_session_key_0, 0);
175                 }
176                 if (r->session_key) {
177                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->session_key, r->session_key_length));
178                 }
179         }
180         return NDR_ERR_SUCCESS;
181 }
182
183 _PUBLIC_ void ndr_print_named_pipe_auth_req_info2(struct ndr_print *ndr, const char *name, const struct named_pipe_auth_req_info2 *r)
184 {
185         ndr_print_struct(ndr, name, "named_pipe_auth_req_info2");
186         ndr->depth++;
187         ndr_print_ptr(ndr, "client_name", r->client_name);
188         ndr->depth++;
189         if (r->client_name) {
190                 ndr_print_string(ndr, "client_name", r->client_name);
191         }
192         ndr->depth--;
193         ndr_print_ptr(ndr, "client_addr", r->client_addr);
194         ndr->depth++;
195         if (r->client_addr) {
196                 ndr_print_string(ndr, "client_addr", r->client_addr);
197         }
198         ndr->depth--;
199         ndr_print_uint16(ndr, "client_port", r->client_port);
200         ndr_print_ptr(ndr, "server_name", r->server_name);
201         ndr->depth++;
202         if (r->server_name) {
203                 ndr_print_string(ndr, "server_name", r->server_name);
204         }
205         ndr->depth--;
206         ndr_print_ptr(ndr, "server_addr", r->server_addr);
207         ndr->depth++;
208         if (r->server_addr) {
209                 ndr_print_string(ndr, "server_addr", r->server_addr);
210         }
211         ndr->depth--;
212         ndr_print_uint16(ndr, "server_port", r->server_port);
213         ndr_print_ptr(ndr, "sam_info3", r->sam_info3);
214         ndr->depth++;
215         if (r->sam_info3) {
216                 ndr_print_netr_SamInfo3(ndr, "sam_info3", r->sam_info3);
217         }
218         ndr->depth--;
219         ndr_print_uint32(ndr, "session_key_length", r->session_key_length);
220         ndr_print_ptr(ndr, "session_key", r->session_key);
221         ndr->depth++;
222         if (r->session_key) {
223                 ndr_print_array_uint8(ndr, "session_key", r->session_key, r->session_key_length);
224         }
225         ndr->depth--;
226         ndr->depth--;
227 }
228
229 static enum ndr_err_code ndr_push_named_pipe_auth_req_info3(struct ndr_push *ndr, int ndr_flags, const struct named_pipe_auth_req_info3 *r)
230 {
231         if (ndr_flags & NDR_SCALARS) {
232                 NDR_CHECK(ndr_push_align(ndr, 5));
233                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->client_name));
234                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->client_addr));
235                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->client_port));
236                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->server_name));
237                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->server_addr));
238                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->server_port));
239                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->sam_info3));
240                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->session_key_length));
241                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->session_key));
242                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->gssapi_delegated_creds_length));
243                 NDR_CHECK(ndr_push_unique_ptr(ndr, r->gssapi_delegated_creds));
244         }
245         if (ndr_flags & NDR_BUFFERS) {
246                 if (r->client_name) {
247                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client_name, CH_UTF8)));
248                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
249                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client_name, CH_UTF8)));
250                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client_name, ndr_charset_length(r->client_name, CH_UTF8), sizeof(uint8_t), CH_UTF8));
251                 }
252                 if (r->client_addr) {
253                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client_addr, CH_DOS)));
254                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
255                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->client_addr, CH_DOS)));
256                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->client_addr, ndr_charset_length(r->client_addr, CH_DOS), sizeof(uint8_t), CH_DOS));
257                 }
258                 if (r->server_name) {
259                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF8)));
260                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
261                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_name, CH_UTF8)));
262                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->server_name, ndr_charset_length(r->server_name, CH_UTF8), sizeof(uint8_t), CH_UTF8));
263                 }
264                 if (r->server_addr) {
265                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_addr, CH_DOS)));
266                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
267                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, ndr_charset_length(r->server_addr, CH_DOS)));
268                         NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->server_addr, ndr_charset_length(r->server_addr, CH_DOS), sizeof(uint8_t), CH_DOS));
269                 }
270                 if (r->sam_info3) {
271                         NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam_info3));
272                 }
273                 if (r->session_key) {
274                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->session_key_length));
275                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->session_key, r->session_key_length));
276                 }
277                 if (r->gssapi_delegated_creds) {
278                         NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->gssapi_delegated_creds_length));
279                         NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->gssapi_delegated_creds, r->gssapi_delegated_creds_length));
280                 }
281         }
282         return NDR_ERR_SUCCESS;
283 }
284
285 static enum ndr_err_code ndr_pull_named_pipe_auth_req_info3(struct ndr_pull *ndr, int ndr_flags, struct named_pipe_auth_req_info3 *r)
286 {
287         uint32_t _ptr_client_name;
288         TALLOC_CTX *_mem_save_client_name_0;
289         uint32_t _ptr_client_addr;
290         TALLOC_CTX *_mem_save_client_addr_0;
291         uint32_t _ptr_server_name;
292         TALLOC_CTX *_mem_save_server_name_0;
293         uint32_t _ptr_server_addr;
294         TALLOC_CTX *_mem_save_server_addr_0;
295         uint32_t _ptr_sam_info3;
296         TALLOC_CTX *_mem_save_sam_info3_0;
297         uint32_t _ptr_session_key;
298         TALLOC_CTX *_mem_save_session_key_0;
299         uint32_t _ptr_gssapi_delegated_creds;
300         TALLOC_CTX *_mem_save_gssapi_delegated_creds_0;
301         if (ndr_flags & NDR_SCALARS) {
302                 NDR_CHECK(ndr_pull_align(ndr, 5));
303                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client_name));
304                 if (_ptr_client_name) {
305                         NDR_PULL_ALLOC(ndr, r->client_name);
306                 } else {
307                         r->client_name = NULL;
308                 }
309                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_client_addr));
310                 if (_ptr_client_addr) {
311                         NDR_PULL_ALLOC(ndr, r->client_addr);
312                 } else {
313                         r->client_addr = NULL;
314                 }
315                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->client_port));
316                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_name));
317                 if (_ptr_server_name) {
318                         NDR_PULL_ALLOC(ndr, r->server_name);
319                 } else {
320                         r->server_name = NULL;
321                 }
322                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_addr));
323                 if (_ptr_server_addr) {
324                         NDR_PULL_ALLOC(ndr, r->server_addr);
325                 } else {
326                         r->server_addr = NULL;
327                 }
328                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->server_port));
329                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_sam_info3));
330                 if (_ptr_sam_info3) {
331                         NDR_PULL_ALLOC(ndr, r->sam_info3);
332                 } else {
333                         r->sam_info3 = NULL;
334                 }
335                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->session_key_length));
336                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_session_key));
337                 if (_ptr_session_key) {
338                         NDR_PULL_ALLOC(ndr, r->session_key);
339                 } else {
340                         r->session_key = NULL;
341                 }
342                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->gssapi_delegated_creds_length));
343                 NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_gssapi_delegated_creds));
344                 if (_ptr_gssapi_delegated_creds) {
345                         NDR_PULL_ALLOC(ndr, r->gssapi_delegated_creds);
346                 } else {
347                         r->gssapi_delegated_creds = NULL;
348                 }
349         }
350         if (ndr_flags & NDR_BUFFERS) {
351                 if (r->client_name) {
352                         _mem_save_client_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
353                         NDR_PULL_SET_MEM_CTX(ndr, r->client_name, 0);
354                         NDR_CHECK(ndr_pull_array_size(ndr, &r->client_name));
355                         NDR_CHECK(ndr_pull_array_length(ndr, &r->client_name));
356                         if (ndr_get_array_length(ndr, &r->client_name) > ndr_get_array_size(ndr, &r->client_name)) {
357                                 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_name), ndr_get_array_length(ndr, &r->client_name));
358                         }
359                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client_name), sizeof(uint8_t)));
360                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client_name, ndr_get_array_length(ndr, &r->client_name), sizeof(uint8_t), CH_UTF8));
361                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_name_0, 0);
362                 }
363                 if (r->client_addr) {
364                         _mem_save_client_addr_0 = NDR_PULL_GET_MEM_CTX(ndr);
365                         NDR_PULL_SET_MEM_CTX(ndr, r->client_addr, 0);
366                         NDR_CHECK(ndr_pull_array_size(ndr, &r->client_addr));
367                         NDR_CHECK(ndr_pull_array_length(ndr, &r->client_addr));
368                         if (ndr_get_array_length(ndr, &r->client_addr) > ndr_get_array_size(ndr, &r->client_addr)) {
369                                 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_addr), ndr_get_array_length(ndr, &r->client_addr));
370                         }
371                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->client_addr), sizeof(uint8_t)));
372                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->client_addr, ndr_get_array_length(ndr, &r->client_addr), sizeof(uint8_t), CH_DOS));
373                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_client_addr_0, 0);
374                 }
375                 if (r->server_name) {
376                         _mem_save_server_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
377                         NDR_PULL_SET_MEM_CTX(ndr, r->server_name, 0);
378                         NDR_CHECK(ndr_pull_array_size(ndr, &r->server_name));
379                         NDR_CHECK(ndr_pull_array_length(ndr, &r->server_name));
380                         if (ndr_get_array_length(ndr, &r->server_name) > ndr_get_array_size(ndr, &r->server_name)) {
381                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->server_name), ndr_get_array_length(ndr, &r->server_name));
382                         }
383                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->server_name), sizeof(uint8_t)));
384                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->server_name, ndr_get_array_length(ndr, &r->server_name), sizeof(uint8_t), CH_UTF8));
385                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_name_0, 0);
386                 }
387                 if (r->server_addr) {
388                         _mem_save_server_addr_0 = NDR_PULL_GET_MEM_CTX(ndr);
389                         NDR_PULL_SET_MEM_CTX(ndr, r->server_addr, 0);
390                         NDR_CHECK(ndr_pull_array_size(ndr, &r->server_addr));
391                         NDR_CHECK(ndr_pull_array_length(ndr, &r->server_addr));
392                         if (ndr_get_array_length(ndr, &r->server_addr) > ndr_get_array_size(ndr, &r->server_addr)) {
393                                 return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->server_addr), ndr_get_array_length(ndr, &r->server_addr));
394                         }
395                         NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->server_addr), sizeof(uint8_t)));
396                         NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->server_addr, ndr_get_array_length(ndr, &r->server_addr), sizeof(uint8_t), CH_DOS));
397                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_addr_0, 0);
398                 }
399                 if (r->sam_info3) {
400                         _mem_save_sam_info3_0 = NDR_PULL_GET_MEM_CTX(ndr);
401                         NDR_PULL_SET_MEM_CTX(ndr, r->sam_info3, 0);
402                         NDR_CHECK(ndr_pull_netr_SamInfo3(ndr, NDR_SCALARS|NDR_BUFFERS, r->sam_info3));
403                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_sam_info3_0, 0);
404                 }
405                 if (r->session_key) {
406                         _mem_save_session_key_0 = NDR_PULL_GET_MEM_CTX(ndr);
407                         NDR_PULL_SET_MEM_CTX(ndr, r->session_key, 0);
408                         NDR_CHECK(ndr_pull_array_size(ndr, &r->session_key));
409                         NDR_PULL_ALLOC_N(ndr, r->session_key, ndr_get_array_size(ndr, &r->session_key));
410                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->session_key, ndr_get_array_size(ndr, &r->session_key)));
411                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_session_key_0, 0);
412                 }
413                 if (r->gssapi_delegated_creds) {
414                         _mem_save_gssapi_delegated_creds_0 = NDR_PULL_GET_MEM_CTX(ndr);
415                         NDR_PULL_SET_MEM_CTX(ndr, r->gssapi_delegated_creds, 0);
416                         NDR_CHECK(ndr_pull_array_size(ndr, &r->gssapi_delegated_creds));
417                         NDR_PULL_ALLOC_N(ndr, r->gssapi_delegated_creds, ndr_get_array_size(ndr, &r->gssapi_delegated_creds));
418                         NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->gssapi_delegated_creds, ndr_get_array_size(ndr, &r->gssapi_delegated_creds)));
419                         NDR_PULL_SET_MEM_CTX(ndr, _mem_save_gssapi_delegated_creds_0, 0);
420                 }
421                 if (r->session_key) {
422                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->session_key, r->session_key_length));
423                 }
424                 if (r->gssapi_delegated_creds) {
425                         NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->gssapi_delegated_creds, r->gssapi_delegated_creds_length));
426                 }
427         }
428         return NDR_ERR_SUCCESS;
429 }
430
431 _PUBLIC_ void ndr_print_named_pipe_auth_req_info3(struct ndr_print *ndr, const char *name, const struct named_pipe_auth_req_info3 *r)
432 {
433         ndr_print_struct(ndr, name, "named_pipe_auth_req_info3");
434         ndr->depth++;
435         ndr_print_ptr(ndr, "client_name", r->client_name);
436         ndr->depth++;
437         if (r->client_name) {
438                 ndr_print_string(ndr, "client_name", r->client_name);
439         }
440         ndr->depth--;
441         ndr_print_ptr(ndr, "client_addr", r->client_addr);
442         ndr->depth++;
443         if (r->client_addr) {
444                 ndr_print_string(ndr, "client_addr", r->client_addr);
445         }
446         ndr->depth--;
447         ndr_print_uint16(ndr, "client_port", r->client_port);
448         ndr_print_ptr(ndr, "server_name", r->server_name);
449         ndr->depth++;
450         if (r->server_name) {
451                 ndr_print_string(ndr, "server_name", r->server_name);
452         }
453         ndr->depth--;
454         ndr_print_ptr(ndr, "server_addr", r->server_addr);
455         ndr->depth++;
456         if (r->server_addr) {
457                 ndr_print_string(ndr, "server_addr", r->server_addr);
458         }
459         ndr->depth--;
460         ndr_print_uint16(ndr, "server_port", r->server_port);
461         ndr_print_ptr(ndr, "sam_info3", r->sam_info3);
462         ndr->depth++;
463         if (r->sam_info3) {
464                 ndr_print_netr_SamInfo3(ndr, "sam_info3", r->sam_info3);
465         }
466         ndr->depth--;
467         ndr_print_uint32(ndr, "session_key_length", r->session_key_length);
468         ndr_print_ptr(ndr, "session_key", r->session_key);
469         ndr->depth++;
470         if (r->session_key) {
471                 ndr_print_array_uint8(ndr, "session_key", r->session_key, r->session_key_length);
472         }
473         ndr->depth--;
474         ndr_print_uint32(ndr, "gssapi_delegated_creds_length", r->gssapi_delegated_creds_length);
475         ndr_print_ptr(ndr, "gssapi_delegated_creds", r->gssapi_delegated_creds);
476         ndr->depth++;
477         if (r->gssapi_delegated_creds) {
478                 ndr_print_array_uint8(ndr, "gssapi_delegated_creds", r->gssapi_delegated_creds, r->gssapi_delegated_creds_length);
479         }
480         ndr->depth--;
481         ndr->depth--;
482 }
483
484 static enum ndr_err_code ndr_push_named_pipe_auth_req_info(struct ndr_push *ndr, int ndr_flags, const union named_pipe_auth_req_info *r)
485 {
486         if (ndr_flags & NDR_SCALARS) {
487                 int level = ndr_push_get_switch_value(ndr, r);
488                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
489                 switch (level) {
490                         case 0: {
491                         break; }
492
493                         case 1: {
494                                 NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_SCALARS, &r->info1));
495                         break; }
496
497                         case 2: {
498                                 NDR_CHECK(ndr_push_named_pipe_auth_req_info2(ndr, NDR_SCALARS, &r->info2));
499                         break; }
500
501                         case 3: {
502                                 NDR_CHECK(ndr_push_named_pipe_auth_req_info3(ndr, NDR_SCALARS, &r->info3));
503                         break; }
504
505                         default:
506                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
507                 }
508         }
509         if (ndr_flags & NDR_BUFFERS) {
510                 int level = ndr_push_get_switch_value(ndr, r);
511                 switch (level) {
512                         case 0:
513                         break;
514
515                         case 1:
516                                 NDR_CHECK(ndr_push_netr_SamInfo3(ndr, NDR_BUFFERS, &r->info1));
517                         break;
518
519                         case 2:
520                                 NDR_CHECK(ndr_push_named_pipe_auth_req_info2(ndr, NDR_BUFFERS, &r->info2));
521                         break;
522
523                         case 3:
524                                 NDR_CHECK(ndr_push_named_pipe_auth_req_info3(ndr, NDR_BUFFERS, &r->info3));
525                         break;
526
527                         default:
528                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
529                 }
530         }
531         return NDR_ERR_SUCCESS;
532 }
533
534 static enum ndr_err_code ndr_pull_named_pipe_auth_req_info(struct ndr_pull *ndr, int ndr_flags, union named_pipe_auth_req_info *r)
535 {
536         int level;
537         uint32_t _level;
538         level = ndr_pull_get_switch_value(ndr, r);
539         if (ndr_flags & NDR_SCALARS) {
540                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
541                 if (_level != level) {
542                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
543                 }
544                 switch (level) {
545                         case 0: {
546                         break; }
547
548                         case 1: {
549                                 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr, NDR_SCALARS, &r->info1));
550                         break; }
551
552                         case 2: {
553                                 NDR_CHECK(ndr_pull_named_pipe_auth_req_info2(ndr, NDR_SCALARS, &r->info2));
554                         break; }
555
556                         case 3: {
557                                 NDR_CHECK(ndr_pull_named_pipe_auth_req_info3(ndr, NDR_SCALARS, &r->info3));
558                         break; }
559
560                         default:
561                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
562                 }
563         }
564         if (ndr_flags & NDR_BUFFERS) {
565                 switch (level) {
566                         case 0:
567                         break;
568
569                         case 1:
570                                 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr, NDR_BUFFERS, &r->info1));
571                         break;
572
573                         case 2:
574                                 NDR_CHECK(ndr_pull_named_pipe_auth_req_info2(ndr, NDR_BUFFERS, &r->info2));
575                         break;
576
577                         case 3:
578                                 NDR_CHECK(ndr_pull_named_pipe_auth_req_info3(ndr, NDR_BUFFERS, &r->info3));
579                         break;
580
581                         default:
582                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
583                 }
584         }
585         return NDR_ERR_SUCCESS;
586 }
587
588 _PUBLIC_ void ndr_print_named_pipe_auth_req_info(struct ndr_print *ndr, const char *name, const union named_pipe_auth_req_info *r)
589 {
590         int level;
591         level = ndr_print_get_switch_value(ndr, r);
592         ndr_print_union(ndr, name, level, "named_pipe_auth_req_info");
593         switch (level) {
594                 case 0:
595                 break;
596
597                 case 1:
598                         ndr_print_netr_SamInfo3(ndr, "info1", &r->info1);
599                 break;
600
601                 case 2:
602                         ndr_print_named_pipe_auth_req_info2(ndr, "info2", &r->info2);
603                 break;
604
605                 case 3:
606                         ndr_print_named_pipe_auth_req_info3(ndr, "info3", &r->info3);
607                 break;
608
609                 default:
610                         ndr_print_bad_level(ndr, name, level);
611         }
612 }
613
614 _PUBLIC_ enum ndr_err_code ndr_push_named_pipe_auth_req(struct ndr_push *ndr, int ndr_flags, const struct named_pipe_auth_req *r)
615 {
616         if (ndr_flags & NDR_SCALARS) {
617                 NDR_CHECK(ndr_push_align(ndr, 5));
618                 {
619                         uint32_t _flags_save_uint32 = ndr->flags;
620                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
621                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_named_pipe_auth_req(r, ndr->iconv_convenience, ndr->flags) - 4));
622                         ndr->flags = _flags_save_uint32;
623                 }
624                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, NAMED_PIPE_AUTH_MAGIC, 4, sizeof(uint8_t), CH_DOS));
625                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->level));
626                 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->info, r->level));
627                 NDR_CHECK(ndr_push_named_pipe_auth_req_info(ndr, NDR_SCALARS, &r->info));
628         }
629         if (ndr_flags & NDR_BUFFERS) {
630                 NDR_CHECK(ndr_push_named_pipe_auth_req_info(ndr, NDR_BUFFERS, &r->info));
631         }
632         return NDR_ERR_SUCCESS;
633 }
634
635 _PUBLIC_ enum ndr_err_code ndr_pull_named_pipe_auth_req(struct ndr_pull *ndr, int ndr_flags, struct named_pipe_auth_req *r)
636 {
637         if (ndr_flags & NDR_SCALARS) {
638                 NDR_CHECK(ndr_pull_align(ndr, 5));
639                 {
640                         uint32_t _flags_save_uint32 = ndr->flags;
641                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
642                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
643                         ndr->flags = _flags_save_uint32;
644                 }
645                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->magic, 4, sizeof(uint8_t), CH_DOS));
646                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->level));
647                 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->info, r->level));
648                 NDR_CHECK(ndr_pull_named_pipe_auth_req_info(ndr, NDR_SCALARS, &r->info));
649         }
650         if (ndr_flags & NDR_BUFFERS) {
651                 NDR_CHECK(ndr_pull_named_pipe_auth_req_info(ndr, NDR_BUFFERS, &r->info));
652         }
653         return NDR_ERR_SUCCESS;
654 }
655
656 _PUBLIC_ void ndr_print_named_pipe_auth_req(struct ndr_print *ndr, const char *name, const struct named_pipe_auth_req *r)
657 {
658         ndr_print_struct(ndr, name, "named_pipe_auth_req");
659         ndr->depth++;
660         ndr_print_uint32(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_named_pipe_auth_req(r, ndr->iconv_convenience, ndr->flags) - 4:r->length);
661         ndr_print_string(ndr, "magic", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?NAMED_PIPE_AUTH_MAGIC:r->magic);
662         ndr_print_uint32(ndr, "level", r->level);
663         ndr_print_set_switch_value(ndr, &r->info, r->level);
664         ndr_print_named_pipe_auth_req_info(ndr, "info", &r->info);
665         ndr->depth--;
666 }
667
668 _PUBLIC_ size_t ndr_size_named_pipe_auth_req(const struct named_pipe_auth_req *r, struct smb_iconv_convenience *ic, int flags)
669 {
670         return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_named_pipe_auth_req, ic);
671 }
672
673 static enum ndr_err_code ndr_push_named_pipe_auth_rep_info2(struct ndr_push *ndr, int ndr_flags, const struct named_pipe_auth_rep_info2 *r)
674 {
675         if (ndr_flags & NDR_SCALARS) {
676                 NDR_CHECK(ndr_push_align(ndr, 8));
677                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->file_type));
678                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->device_state));
679                 NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->allocation_size));
680         }
681         if (ndr_flags & NDR_BUFFERS) {
682         }
683         return NDR_ERR_SUCCESS;
684 }
685
686 static enum ndr_err_code ndr_pull_named_pipe_auth_rep_info2(struct ndr_pull *ndr, int ndr_flags, struct named_pipe_auth_rep_info2 *r)
687 {
688         if (ndr_flags & NDR_SCALARS) {
689                 NDR_CHECK(ndr_pull_align(ndr, 8));
690                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->file_type));
691                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->device_state));
692                 NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->allocation_size));
693         }
694         if (ndr_flags & NDR_BUFFERS) {
695         }
696         return NDR_ERR_SUCCESS;
697 }
698
699 _PUBLIC_ void ndr_print_named_pipe_auth_rep_info2(struct ndr_print *ndr, const char *name, const struct named_pipe_auth_rep_info2 *r)
700 {
701         ndr_print_struct(ndr, name, "named_pipe_auth_rep_info2");
702         ndr->depth++;
703         ndr_print_uint16(ndr, "file_type", r->file_type);
704         ndr_print_uint16(ndr, "device_state", r->device_state);
705         ndr_print_hyper(ndr, "allocation_size", r->allocation_size);
706         ndr->depth--;
707 }
708
709 static enum ndr_err_code ndr_push_named_pipe_auth_rep_info3(struct ndr_push *ndr, int ndr_flags, const struct named_pipe_auth_rep_info3 *r)
710 {
711         if (ndr_flags & NDR_SCALARS) {
712                 NDR_CHECK(ndr_push_align(ndr, 8));
713                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->file_type));
714                 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->device_state));
715                 NDR_CHECK(ndr_push_hyper(ndr, NDR_SCALARS, r->allocation_size));
716         }
717         if (ndr_flags & NDR_BUFFERS) {
718         }
719         return NDR_ERR_SUCCESS;
720 }
721
722 static enum ndr_err_code ndr_pull_named_pipe_auth_rep_info3(struct ndr_pull *ndr, int ndr_flags, struct named_pipe_auth_rep_info3 *r)
723 {
724         if (ndr_flags & NDR_SCALARS) {
725                 NDR_CHECK(ndr_pull_align(ndr, 8));
726                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->file_type));
727                 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->device_state));
728                 NDR_CHECK(ndr_pull_hyper(ndr, NDR_SCALARS, &r->allocation_size));
729         }
730         if (ndr_flags & NDR_BUFFERS) {
731         }
732         return NDR_ERR_SUCCESS;
733 }
734
735 _PUBLIC_ void ndr_print_named_pipe_auth_rep_info3(struct ndr_print *ndr, const char *name, const struct named_pipe_auth_rep_info3 *r)
736 {
737         ndr_print_struct(ndr, name, "named_pipe_auth_rep_info3");
738         ndr->depth++;
739         ndr_print_uint16(ndr, "file_type", r->file_type);
740         ndr_print_uint16(ndr, "device_state", r->device_state);
741         ndr_print_hyper(ndr, "allocation_size", r->allocation_size);
742         ndr->depth--;
743 }
744
745 static enum ndr_err_code ndr_push_named_pipe_auth_rep_info(struct ndr_push *ndr, int ndr_flags, const union named_pipe_auth_rep_info *r)
746 {
747         if (ndr_flags & NDR_SCALARS) {
748                 int level = ndr_push_get_switch_value(ndr, r);
749                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level));
750                 switch (level) {
751                         case 0: {
752                         break; }
753
754                         case 1: {
755                         break; }
756
757                         case 2: {
758                                 NDR_CHECK(ndr_push_named_pipe_auth_rep_info2(ndr, NDR_SCALARS, &r->info2));
759                         break; }
760
761                         case 3: {
762                                 NDR_CHECK(ndr_push_named_pipe_auth_rep_info3(ndr, NDR_SCALARS, &r->info3));
763                         break; }
764
765                         default:
766                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
767                 }
768         }
769         if (ndr_flags & NDR_BUFFERS) {
770                 int level = ndr_push_get_switch_value(ndr, r);
771                 switch (level) {
772                         case 0:
773                         break;
774
775                         case 1:
776                         break;
777
778                         case 2:
779                         break;
780
781                         case 3:
782                         break;
783
784                         default:
785                                 return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
786                 }
787         }
788         return NDR_ERR_SUCCESS;
789 }
790
791 static enum ndr_err_code ndr_pull_named_pipe_auth_rep_info(struct ndr_pull *ndr, int ndr_flags, union named_pipe_auth_rep_info *r)
792 {
793         int level;
794         uint32_t _level;
795         level = ndr_pull_get_switch_value(ndr, r);
796         if (ndr_flags & NDR_SCALARS) {
797                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level));
798                 if (_level != level) {
799                         return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u for r at %s", _level, __location__);
800                 }
801                 switch (level) {
802                         case 0: {
803                         break; }
804
805                         case 1: {
806                         break; }
807
808                         case 2: {
809                                 NDR_CHECK(ndr_pull_named_pipe_auth_rep_info2(ndr, NDR_SCALARS, &r->info2));
810                         break; }
811
812                         case 3: {
813                                 NDR_CHECK(ndr_pull_named_pipe_auth_rep_info3(ndr, NDR_SCALARS, &r->info3));
814                         break; }
815
816                         default:
817                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
818                 }
819         }
820         if (ndr_flags & NDR_BUFFERS) {
821                 switch (level) {
822                         case 0:
823                         break;
824
825                         case 1:
826                         break;
827
828                         case 2:
829                         break;
830
831                         case 3:
832                         break;
833
834                         default:
835                                 return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__);
836                 }
837         }
838         return NDR_ERR_SUCCESS;
839 }
840
841 _PUBLIC_ void ndr_print_named_pipe_auth_rep_info(struct ndr_print *ndr, const char *name, const union named_pipe_auth_rep_info *r)
842 {
843         int level;
844         level = ndr_print_get_switch_value(ndr, r);
845         ndr_print_union(ndr, name, level, "named_pipe_auth_rep_info");
846         switch (level) {
847                 case 0:
848                 break;
849
850                 case 1:
851                 break;
852
853                 case 2:
854                         ndr_print_named_pipe_auth_rep_info2(ndr, "info2", &r->info2);
855                 break;
856
857                 case 3:
858                         ndr_print_named_pipe_auth_rep_info3(ndr, "info3", &r->info3);
859                 break;
860
861                 default:
862                         ndr_print_bad_level(ndr, name, level);
863         }
864 }
865
866 _PUBLIC_ enum ndr_err_code ndr_push_named_pipe_auth_rep(struct ndr_push *ndr, int ndr_flags, const struct named_pipe_auth_rep *r)
867 {
868         if (ndr_flags & NDR_SCALARS) {
869                 NDR_CHECK(ndr_push_align(ndr, 8));
870                 {
871                         uint32_t _flags_save_uint32 = ndr->flags;
872                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
873                         NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_named_pipe_auth_rep(r, ndr->iconv_convenience, ndr->flags) - 4));
874                         ndr->flags = _flags_save_uint32;
875                 }
876                 NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, NAMED_PIPE_AUTH_MAGIC, 4, sizeof(uint8_t), CH_DOS));
877                 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->level));
878                 NDR_CHECK(ndr_push_set_switch_value(ndr, &r->info, r->level));
879                 NDR_CHECK(ndr_push_named_pipe_auth_rep_info(ndr, NDR_SCALARS, &r->info));
880                 NDR_CHECK(ndr_push_NTSTATUS(ndr, NDR_SCALARS, r->status));
881         }
882         if (ndr_flags & NDR_BUFFERS) {
883                 NDR_CHECK(ndr_push_named_pipe_auth_rep_info(ndr, NDR_BUFFERS, &r->info));
884         }
885         return NDR_ERR_SUCCESS;
886 }
887
888 _PUBLIC_ enum ndr_err_code ndr_pull_named_pipe_auth_rep(struct ndr_pull *ndr, int ndr_flags, struct named_pipe_auth_rep *r)
889 {
890         if (ndr_flags & NDR_SCALARS) {
891                 NDR_CHECK(ndr_pull_align(ndr, 8));
892                 {
893                         uint32_t _flags_save_uint32 = ndr->flags;
894                         ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
895                         NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->length));
896                         ndr->flags = _flags_save_uint32;
897                 }
898                 NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->magic, 4, sizeof(uint8_t), CH_DOS));
899                 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->level));
900                 NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->info, r->level));
901                 NDR_CHECK(ndr_pull_named_pipe_auth_rep_info(ndr, NDR_SCALARS, &r->info));
902                 NDR_CHECK(ndr_pull_NTSTATUS(ndr, NDR_SCALARS, &r->status));
903         }
904         if (ndr_flags & NDR_BUFFERS) {
905                 NDR_CHECK(ndr_pull_named_pipe_auth_rep_info(ndr, NDR_BUFFERS, &r->info));
906         }
907         return NDR_ERR_SUCCESS;
908 }
909
910 _PUBLIC_ void ndr_print_named_pipe_auth_rep(struct ndr_print *ndr, const char *name, const struct named_pipe_auth_rep *r)
911 {
912         ndr_print_struct(ndr, name, "named_pipe_auth_rep");
913         ndr->depth++;
914         ndr_print_uint32(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_named_pipe_auth_rep(r, ndr->iconv_convenience, ndr->flags) - 4:r->length);
915         ndr_print_string(ndr, "magic", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?NAMED_PIPE_AUTH_MAGIC:r->magic);
916         ndr_print_uint32(ndr, "level", r->level);
917         ndr_print_set_switch_value(ndr, &r->info, r->level);
918         ndr_print_named_pipe_auth_rep_info(ndr, "info", &r->info);
919         ndr_print_NTSTATUS(ndr, "status", r->status);
920         ndr->depth--;
921 }
922
923 _PUBLIC_ size_t ndr_size_named_pipe_auth_rep(const struct named_pipe_auth_rep *r, struct smb_iconv_convenience *ic, int flags)
924 {
925         return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_named_pipe_auth_rep, ic);
926 }
927