1 /* parser auto-generated by pidl */
4 #include "../librpc/gen_ndr/ndr_named_pipe_auth.h"
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
)
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));
22 if (ndr_flags
& NDR_BUFFERS
) {
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
));
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
));
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
));
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
));
48 NDR_CHECK(ndr_push_netr_SamInfo3(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->sam_info3
));
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
));
55 return NDR_ERR_SUCCESS
;
58 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
)
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
);
78 r
->client_name
= NULL
;
80 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_client_addr
));
81 if (_ptr_client_addr
) {
82 NDR_PULL_ALLOC(ndr
, r
->client_addr
);
84 r
->client_addr
= NULL
;
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
);
91 r
->server_name
= NULL
;
93 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_server_addr
));
94 if (_ptr_server_addr
) {
95 NDR_PULL_ALLOC(ndr
, r
->server_addr
);
97 r
->server_addr
= NULL
;
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
);
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
);
111 r
->session_key
= NULL
;
113 NDR_CHECK(ndr_pull_trailer_align(ndr
, 5));
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
));
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);
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
));
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);
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
));
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);
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
));
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);
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);
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);
178 if (r
->session_key
) {
179 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->session_key
, r
->session_key_length
));
182 return NDR_ERR_SUCCESS
;
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
)
187 ndr_print_struct(ndr
, name
, "named_pipe_auth_req_info2");
189 ndr_print_ptr(ndr
, "client_name", r
->client_name
);
191 if (r
->client_name
) {
192 ndr_print_string(ndr
, "client_name", r
->client_name
);
195 ndr_print_ptr(ndr
, "client_addr", r
->client_addr
);
197 if (r
->client_addr
) {
198 ndr_print_string(ndr
, "client_addr", r
->client_addr
);
201 ndr_print_uint16(ndr
, "client_port", r
->client_port
);
202 ndr_print_ptr(ndr
, "server_name", r
->server_name
);
204 if (r
->server_name
) {
205 ndr_print_string(ndr
, "server_name", r
->server_name
);
208 ndr_print_ptr(ndr
, "server_addr", r
->server_addr
);
210 if (r
->server_addr
) {
211 ndr_print_string(ndr
, "server_addr", r
->server_addr
);
214 ndr_print_uint16(ndr
, "server_port", r
->server_port
);
215 ndr_print_ptr(ndr
, "sam_info3", r
->sam_info3
);
218 ndr_print_netr_SamInfo3(ndr
, "sam_info3", r
->sam_info3
);
221 ndr_print_uint32(ndr
, "session_key_length", r
->session_key_length
);
222 ndr_print_ptr(ndr
, "session_key", r
->session_key
);
224 if (r
->session_key
) {
225 ndr_print_array_uint8(ndr
, "session_key", r
->session_key
, r
->session_key_length
);
231 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
)
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));
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
));
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
));
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
));
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
));
274 NDR_CHECK(ndr_push_netr_SamInfo3(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->sam_info3
));
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
));
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
));
285 return NDR_ERR_SUCCESS
;
288 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
)
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
);
310 r
->client_name
= NULL
;
312 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_client_addr
));
313 if (_ptr_client_addr
) {
314 NDR_PULL_ALLOC(ndr
, r
->client_addr
);
316 r
->client_addr
= NULL
;
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
);
323 r
->server_name
= NULL
;
325 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_server_addr
));
326 if (_ptr_server_addr
) {
327 NDR_PULL_ALLOC(ndr
, r
->server_addr
);
329 r
->server_addr
= NULL
;
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
);
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
);
343 r
->session_key
= NULL
;
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
);
350 r
->gssapi_delegated_creds
= NULL
;
352 NDR_CHECK(ndr_pull_trailer_align(ndr
, 5));
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
));
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);
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
));
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);
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
));
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);
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
));
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);
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);
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);
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);
425 if (r
->session_key
) {
426 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->session_key
, r
->session_key_length
));
428 if (r
->gssapi_delegated_creds
) {
429 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->gssapi_delegated_creds
, r
->gssapi_delegated_creds_length
));
432 return NDR_ERR_SUCCESS
;
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
)
437 ndr_print_struct(ndr
, name
, "named_pipe_auth_req_info3");
439 ndr_print_ptr(ndr
, "client_name", r
->client_name
);
441 if (r
->client_name
) {
442 ndr_print_string(ndr
, "client_name", r
->client_name
);
445 ndr_print_ptr(ndr
, "client_addr", r
->client_addr
);
447 if (r
->client_addr
) {
448 ndr_print_string(ndr
, "client_addr", r
->client_addr
);
451 ndr_print_uint16(ndr
, "client_port", r
->client_port
);
452 ndr_print_ptr(ndr
, "server_name", r
->server_name
);
454 if (r
->server_name
) {
455 ndr_print_string(ndr
, "server_name", r
->server_name
);
458 ndr_print_ptr(ndr
, "server_addr", r
->server_addr
);
460 if (r
->server_addr
) {
461 ndr_print_string(ndr
, "server_addr", r
->server_addr
);
464 ndr_print_uint16(ndr
, "server_port", r
->server_port
);
465 ndr_print_ptr(ndr
, "sam_info3", r
->sam_info3
);
468 ndr_print_netr_SamInfo3(ndr
, "sam_info3", r
->sam_info3
);
471 ndr_print_uint32(ndr
, "session_key_length", r
->session_key_length
);
472 ndr_print_ptr(ndr
, "session_key", r
->session_key
);
474 if (r
->session_key
) {
475 ndr_print_array_uint8(ndr
, "session_key", r
->session_key
, r
->session_key_length
);
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
);
481 if (r
->gssapi_delegated_creds
) {
482 ndr_print_array_uint8(ndr
, "gssapi_delegated_creds", r
->gssapi_delegated_creds
, r
->gssapi_delegated_creds_length
);
488 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
)
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));
499 NDR_CHECK(ndr_push_netr_SamInfo3(ndr
, NDR_SCALARS
, &r
->info1
));
503 NDR_CHECK(ndr_push_named_pipe_auth_req_info2(ndr
, NDR_SCALARS
, &r
->info2
));
507 NDR_CHECK(ndr_push_named_pipe_auth_req_info3(ndr
, NDR_SCALARS
, &r
->info3
));
511 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
514 if (ndr_flags
& NDR_BUFFERS
) {
515 int level
= ndr_push_get_switch_value(ndr
, r
);
521 NDR_CHECK(ndr_push_netr_SamInfo3(ndr
, NDR_BUFFERS
, &r
->info1
));
525 NDR_CHECK(ndr_push_named_pipe_auth_req_info2(ndr
, NDR_BUFFERS
, &r
->info2
));
529 NDR_CHECK(ndr_push_named_pipe_auth_req_info3(ndr
, NDR_BUFFERS
, &r
->info3
));
533 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
536 return NDR_ERR_SUCCESS
;
539 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
)
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__
);
549 NDR_CHECK(ndr_pull_union_align(ndr
, 5));
555 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr
, NDR_SCALARS
, &r
->info1
));
559 NDR_CHECK(ndr_pull_named_pipe_auth_req_info2(ndr
, NDR_SCALARS
, &r
->info2
));
563 NDR_CHECK(ndr_pull_named_pipe_auth_req_info3(ndr
, NDR_SCALARS
, &r
->info3
));
567 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
570 if (ndr_flags
& NDR_BUFFERS
) {
576 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr
, NDR_BUFFERS
, &r
->info1
));
580 NDR_CHECK(ndr_pull_named_pipe_auth_req_info2(ndr
, NDR_BUFFERS
, &r
->info2
));
584 NDR_CHECK(ndr_pull_named_pipe_auth_req_info3(ndr
, NDR_BUFFERS
, &r
->info3
));
588 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
591 return NDR_ERR_SUCCESS
;
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
)
597 level
= ndr_print_get_switch_value(ndr
, r
);
598 ndr_print_union(ndr
, name
, level
, "named_pipe_auth_req_info");
604 ndr_print_netr_SamInfo3(ndr
, "info1", &r
->info1
);
608 ndr_print_named_pipe_auth_req_info2(ndr
, "info2", &r
->info2
);
612 ndr_print_named_pipe_auth_req_info3(ndr
, "info3", &r
->info3
);
616 ndr_print_bad_level(ndr
, name
, level
);
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
)
622 if (ndr_flags
& NDR_SCALARS
) {
623 NDR_CHECK(ndr_push_align(ndr
, 5));
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
;
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));
636 if (ndr_flags
& NDR_BUFFERS
) {
637 NDR_CHECK(ndr_push_named_pipe_auth_req_info(ndr
, NDR_BUFFERS
, &r
->info
));
639 return NDR_ERR_SUCCESS
;
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
)
644 if (ndr_flags
& NDR_SCALARS
) {
645 NDR_CHECK(ndr_pull_align(ndr
, 5));
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
;
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));
658 if (ndr_flags
& NDR_BUFFERS
) {
659 NDR_CHECK(ndr_pull_named_pipe_auth_req_info(ndr
, NDR_BUFFERS
, &r
->info
));
661 return NDR_ERR_SUCCESS
;
664 _PUBLIC_
void ndr_print_named_pipe_auth_req(struct ndr_print
*ndr
, const char *name
, const struct named_pipe_auth_req
*r
)
666 ndr_print_struct(ndr
, name
, "named_pipe_auth_req");
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
);
676 _PUBLIC_
size_t ndr_size_named_pipe_auth_req(const struct named_pipe_auth_req
*r
, struct smb_iconv_convenience
*ic
, int flags
)
678 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_named_pipe_auth_req
, ic
);
681 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
)
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));
690 if (ndr_flags
& NDR_BUFFERS
) {
692 return NDR_ERR_SUCCESS
;
695 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
)
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));
704 if (ndr_flags
& NDR_BUFFERS
) {
706 return NDR_ERR_SUCCESS
;
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
)
711 ndr_print_struct(ndr
, name
, "named_pipe_auth_rep_info2");
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
);
719 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
)
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));
728 if (ndr_flags
& NDR_BUFFERS
) {
730 return NDR_ERR_SUCCESS
;
733 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
)
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));
742 if (ndr_flags
& NDR_BUFFERS
) {
744 return NDR_ERR_SUCCESS
;
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
)
749 ndr_print_struct(ndr
, name
, "named_pipe_auth_rep_info3");
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
);
757 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
)
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));
771 NDR_CHECK(ndr_push_named_pipe_auth_rep_info2(ndr
, NDR_SCALARS
, &r
->info2
));
775 NDR_CHECK(ndr_push_named_pipe_auth_rep_info3(ndr
, NDR_SCALARS
, &r
->info3
));
779 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
782 if (ndr_flags
& NDR_BUFFERS
) {
783 int level
= ndr_push_get_switch_value(ndr
, r
);
798 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
801 return NDR_ERR_SUCCESS
;
804 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
)
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__
);
814 NDR_CHECK(ndr_pull_union_align(ndr
, 8));
823 NDR_CHECK(ndr_pull_named_pipe_auth_rep_info2(ndr
, NDR_SCALARS
, &r
->info2
));
827 NDR_CHECK(ndr_pull_named_pipe_auth_rep_info3(ndr
, NDR_SCALARS
, &r
->info3
));
831 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
834 if (ndr_flags
& NDR_BUFFERS
) {
849 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
852 return NDR_ERR_SUCCESS
;
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
)
858 level
= ndr_print_get_switch_value(ndr
, r
);
859 ndr_print_union(ndr
, name
, level
, "named_pipe_auth_rep_info");
868 ndr_print_named_pipe_auth_rep_info2(ndr
, "info2", &r
->info2
);
872 ndr_print_named_pipe_auth_rep_info3(ndr
, "info3", &r
->info3
);
876 ndr_print_bad_level(ndr
, name
, level
);
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
)
882 if (ndr_flags
& NDR_SCALARS
) {
883 NDR_CHECK(ndr_push_align(ndr
, 8));
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
;
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));
897 if (ndr_flags
& NDR_BUFFERS
) {
898 NDR_CHECK(ndr_push_named_pipe_auth_rep_info(ndr
, NDR_BUFFERS
, &r
->info
));
900 return NDR_ERR_SUCCESS
;
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
)
905 if (ndr_flags
& NDR_SCALARS
) {
906 NDR_CHECK(ndr_pull_align(ndr
, 8));
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
;
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));
920 if (ndr_flags
& NDR_BUFFERS
) {
921 NDR_CHECK(ndr_pull_named_pipe_auth_rep_info(ndr
, NDR_BUFFERS
, &r
->info
));
923 return NDR_ERR_SUCCESS
;
926 _PUBLIC_
void ndr_print_named_pipe_auth_rep(struct ndr_print
*ndr
, const char *name
, const struct named_pipe_auth_rep
*r
)
928 ndr_print_struct(ndr
, name
, "named_pipe_auth_rep");
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
);
939 _PUBLIC_
size_t ndr_size_named_pipe_auth_rep(const struct named_pipe_auth_rep
*r
, struct smb_iconv_convenience
*ic
, int flags
)
941 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_named_pipe_auth_rep
, ic
);