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