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
, 4));
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
));
21 if (ndr_flags
& NDR_BUFFERS
) {
23 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->client_name
, CH_UTF8
)));
24 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
25 NDR_CHECK(ndr_push_uint32(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
));
29 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->client_addr
, CH_DOS
)));
30 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
31 NDR_CHECK(ndr_push_uint32(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
));
35 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->server_name
, CH_UTF8
)));
36 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
37 NDR_CHECK(ndr_push_uint32(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
));
41 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->server_addr
, CH_DOS
)));
42 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
43 NDR_CHECK(ndr_push_uint32(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
));
47 NDR_CHECK(ndr_push_netr_SamInfo3(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->sam_info3
));
50 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->session_key_length
));
51 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->session_key
, r
->session_key_length
));
54 return NDR_ERR_SUCCESS
;
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
)
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
, 4));
73 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_client_name
));
74 if (_ptr_client_name
) {
75 NDR_PULL_ALLOC(ndr
, r
->client_name
);
77 r
->client_name
= NULL
;
79 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_client_addr
));
80 if (_ptr_client_addr
) {
81 NDR_PULL_ALLOC(ndr
, r
->client_addr
);
83 r
->client_addr
= NULL
;
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
);
90 r
->server_name
= NULL
;
92 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_server_addr
));
93 if (_ptr_server_addr
) {
94 NDR_PULL_ALLOC(ndr
, r
->server_addr
);
96 r
->server_addr
= NULL
;
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
);
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
);
110 r
->session_key
= NULL
;
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
));
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);
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
));
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);
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
));
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);
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
));
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);
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);
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);
176 if (r
->session_key
) {
177 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->session_key
, r
->session_key_length
));
180 return NDR_ERR_SUCCESS
;
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
)
185 ndr_print_struct(ndr
, name
, "named_pipe_auth_req_info2");
187 ndr_print_ptr(ndr
, "client_name", r
->client_name
);
189 if (r
->client_name
) {
190 ndr_print_string(ndr
, "client_name", r
->client_name
);
193 ndr_print_ptr(ndr
, "client_addr", r
->client_addr
);
195 if (r
->client_addr
) {
196 ndr_print_string(ndr
, "client_addr", r
->client_addr
);
199 ndr_print_uint16(ndr
, "client_port", r
->client_port
);
200 ndr_print_ptr(ndr
, "server_name", r
->server_name
);
202 if (r
->server_name
) {
203 ndr_print_string(ndr
, "server_name", r
->server_name
);
206 ndr_print_ptr(ndr
, "server_addr", r
->server_addr
);
208 if (r
->server_addr
) {
209 ndr_print_string(ndr
, "server_addr", r
->server_addr
);
212 ndr_print_uint16(ndr
, "server_port", r
->server_port
);
213 ndr_print_ptr(ndr
, "sam_info3", r
->sam_info3
);
216 ndr_print_netr_SamInfo3(ndr
, "sam_info3", r
->sam_info3
);
219 ndr_print_uint32(ndr
, "session_key_length", r
->session_key_length
);
220 ndr_print_ptr(ndr
, "session_key", r
->session_key
);
222 if (r
->session_key
) {
223 ndr_print_array_uint8(ndr
, "session_key", r
->session_key
, r
->session_key_length
);
229 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
)
231 if (ndr_flags
& NDR_SCALARS
) {
232 int level
= ndr_push_get_switch_value(ndr
, r
);
233 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, level
));
239 NDR_CHECK(ndr_push_netr_SamInfo3(ndr
, NDR_SCALARS
, &r
->info1
));
243 NDR_CHECK(ndr_push_named_pipe_auth_req_info2(ndr
, NDR_SCALARS
, &r
->info2
));
247 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
250 if (ndr_flags
& NDR_BUFFERS
) {
251 int level
= ndr_push_get_switch_value(ndr
, r
);
257 NDR_CHECK(ndr_push_netr_SamInfo3(ndr
, NDR_BUFFERS
, &r
->info1
));
261 NDR_CHECK(ndr_push_named_pipe_auth_req_info2(ndr
, NDR_BUFFERS
, &r
->info2
));
265 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
268 return NDR_ERR_SUCCESS
;
271 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
)
275 level
= ndr_pull_get_switch_value(ndr
, r
);
276 if (ndr_flags
& NDR_SCALARS
) {
277 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &_level
));
278 if (_level
!= level
) {
279 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u for r at %s", _level
, __location__
);
286 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr
, NDR_SCALARS
, &r
->info1
));
290 NDR_CHECK(ndr_pull_named_pipe_auth_req_info2(ndr
, NDR_SCALARS
, &r
->info2
));
294 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
297 if (ndr_flags
& NDR_BUFFERS
) {
303 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr
, NDR_BUFFERS
, &r
->info1
));
307 NDR_CHECK(ndr_pull_named_pipe_auth_req_info2(ndr
, NDR_BUFFERS
, &r
->info2
));
311 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
314 return NDR_ERR_SUCCESS
;
317 _PUBLIC_
void ndr_print_named_pipe_auth_req_info(struct ndr_print
*ndr
, const char *name
, const union named_pipe_auth_req_info
*r
)
320 level
= ndr_print_get_switch_value(ndr
, r
);
321 ndr_print_union(ndr
, name
, level
, "named_pipe_auth_req_info");
327 ndr_print_netr_SamInfo3(ndr
, "info1", &r
->info1
);
331 ndr_print_named_pipe_auth_req_info2(ndr
, "info2", &r
->info2
);
335 ndr_print_bad_level(ndr
, name
, level
);
339 _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
)
341 if (ndr_flags
& NDR_SCALARS
) {
342 NDR_CHECK(ndr_push_align(ndr
, 4));
344 uint32_t _flags_save_uint32
= ndr
->flags
;
345 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_BIGENDIAN
);
346 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_size_named_pipe_auth_req(r
, ndr
->iconv_convenience
, ndr
->flags
) - 4));
347 ndr
->flags
= _flags_save_uint32
;
349 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, NAMED_PIPE_AUTH_MAGIC
, 4, sizeof(uint8_t), CH_DOS
));
350 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->level
));
351 NDR_CHECK(ndr_push_set_switch_value(ndr
, &r
->info
, r
->level
));
352 NDR_CHECK(ndr_push_named_pipe_auth_req_info(ndr
, NDR_SCALARS
, &r
->info
));
354 if (ndr_flags
& NDR_BUFFERS
) {
355 NDR_CHECK(ndr_push_named_pipe_auth_req_info(ndr
, NDR_BUFFERS
, &r
->info
));
357 return NDR_ERR_SUCCESS
;
360 _PUBLIC_
enum ndr_err_code
ndr_pull_named_pipe_auth_req(struct ndr_pull
*ndr
, int ndr_flags
, struct named_pipe_auth_req
*r
)
362 if (ndr_flags
& NDR_SCALARS
) {
363 NDR_CHECK(ndr_pull_align(ndr
, 4));
365 uint32_t _flags_save_uint32
= ndr
->flags
;
366 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_BIGENDIAN
);
367 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->length
));
368 ndr
->flags
= _flags_save_uint32
;
370 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->magic
, 4, sizeof(uint8_t), CH_DOS
));
371 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->level
));
372 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->info
, r
->level
));
373 NDR_CHECK(ndr_pull_named_pipe_auth_req_info(ndr
, NDR_SCALARS
, &r
->info
));
375 if (ndr_flags
& NDR_BUFFERS
) {
376 NDR_CHECK(ndr_pull_named_pipe_auth_req_info(ndr
, NDR_BUFFERS
, &r
->info
));
378 return NDR_ERR_SUCCESS
;
381 _PUBLIC_
void ndr_print_named_pipe_auth_req(struct ndr_print
*ndr
, const char *name
, const struct named_pipe_auth_req
*r
)
383 ndr_print_struct(ndr
, name
, "named_pipe_auth_req");
385 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
);
386 ndr_print_string(ndr
, "magic", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?NAMED_PIPE_AUTH_MAGIC
:r
->magic
);
387 ndr_print_uint32(ndr
, "level", r
->level
);
388 ndr_print_set_switch_value(ndr
, &r
->info
, r
->level
);
389 ndr_print_named_pipe_auth_req_info(ndr
, "info", &r
->info
);
393 _PUBLIC_
size_t ndr_size_named_pipe_auth_req(const struct named_pipe_auth_req
*r
, struct smb_iconv_convenience
*ic
, int flags
)
395 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_named_pipe_auth_req
, ic
);
398 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
)
400 if (ndr_flags
& NDR_SCALARS
) {
401 NDR_CHECK(ndr_push_align(ndr
, 8));
402 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->file_type
));
403 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->device_state
));
404 NDR_CHECK(ndr_push_hyper(ndr
, NDR_SCALARS
, r
->allocation_size
));
406 if (ndr_flags
& NDR_BUFFERS
) {
408 return NDR_ERR_SUCCESS
;
411 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
)
413 if (ndr_flags
& NDR_SCALARS
) {
414 NDR_CHECK(ndr_pull_align(ndr
, 8));
415 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->file_type
));
416 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->device_state
));
417 NDR_CHECK(ndr_pull_hyper(ndr
, NDR_SCALARS
, &r
->allocation_size
));
419 if (ndr_flags
& NDR_BUFFERS
) {
421 return NDR_ERR_SUCCESS
;
424 _PUBLIC_
void ndr_print_named_pipe_auth_rep_info2(struct ndr_print
*ndr
, const char *name
, const struct named_pipe_auth_rep_info2
*r
)
426 ndr_print_struct(ndr
, name
, "named_pipe_auth_rep_info2");
428 ndr_print_uint16(ndr
, "file_type", r
->file_type
);
429 ndr_print_uint16(ndr
, "device_state", r
->device_state
);
430 ndr_print_hyper(ndr
, "allocation_size", r
->allocation_size
);
434 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
)
436 if (ndr_flags
& NDR_SCALARS
) {
437 int level
= ndr_push_get_switch_value(ndr
, r
);
438 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, level
));
447 NDR_CHECK(ndr_push_named_pipe_auth_rep_info2(ndr
, NDR_SCALARS
, &r
->info2
));
451 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
454 if (ndr_flags
& NDR_BUFFERS
) {
455 int level
= ndr_push_get_switch_value(ndr
, r
);
467 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
470 return NDR_ERR_SUCCESS
;
473 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
)
477 level
= ndr_pull_get_switch_value(ndr
, r
);
478 if (ndr_flags
& NDR_SCALARS
) {
479 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &_level
));
480 if (_level
!= level
) {
481 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u for r at %s", _level
, __location__
);
491 NDR_CHECK(ndr_pull_named_pipe_auth_rep_info2(ndr
, NDR_SCALARS
, &r
->info2
));
495 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
498 if (ndr_flags
& NDR_BUFFERS
) {
510 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
513 return NDR_ERR_SUCCESS
;
516 _PUBLIC_
void ndr_print_named_pipe_auth_rep_info(struct ndr_print
*ndr
, const char *name
, const union named_pipe_auth_rep_info
*r
)
519 level
= ndr_print_get_switch_value(ndr
, r
);
520 ndr_print_union(ndr
, name
, level
, "named_pipe_auth_rep_info");
529 ndr_print_named_pipe_auth_rep_info2(ndr
, "info2", &r
->info2
);
533 ndr_print_bad_level(ndr
, name
, level
);
537 _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
)
539 if (ndr_flags
& NDR_SCALARS
) {
540 NDR_CHECK(ndr_push_align(ndr
, 8));
542 uint32_t _flags_save_uint32
= ndr
->flags
;
543 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_BIGENDIAN
);
544 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_size_named_pipe_auth_rep(r
, ndr
->iconv_convenience
, ndr
->flags
) - 4));
545 ndr
->flags
= _flags_save_uint32
;
547 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, NAMED_PIPE_AUTH_MAGIC
, 4, sizeof(uint8_t), CH_DOS
));
548 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->level
));
549 NDR_CHECK(ndr_push_set_switch_value(ndr
, &r
->info
, r
->level
));
550 NDR_CHECK(ndr_push_named_pipe_auth_rep_info(ndr
, NDR_SCALARS
, &r
->info
));
551 NDR_CHECK(ndr_push_NTSTATUS(ndr
, NDR_SCALARS
, r
->status
));
553 if (ndr_flags
& NDR_BUFFERS
) {
554 NDR_CHECK(ndr_push_named_pipe_auth_rep_info(ndr
, NDR_BUFFERS
, &r
->info
));
556 return NDR_ERR_SUCCESS
;
559 _PUBLIC_
enum ndr_err_code
ndr_pull_named_pipe_auth_rep(struct ndr_pull
*ndr
, int ndr_flags
, struct named_pipe_auth_rep
*r
)
561 if (ndr_flags
& NDR_SCALARS
) {
562 NDR_CHECK(ndr_pull_align(ndr
, 8));
564 uint32_t _flags_save_uint32
= ndr
->flags
;
565 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_BIGENDIAN
);
566 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->length
));
567 ndr
->flags
= _flags_save_uint32
;
569 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->magic
, 4, sizeof(uint8_t), CH_DOS
));
570 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->level
));
571 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->info
, r
->level
));
572 NDR_CHECK(ndr_pull_named_pipe_auth_rep_info(ndr
, NDR_SCALARS
, &r
->info
));
573 NDR_CHECK(ndr_pull_NTSTATUS(ndr
, NDR_SCALARS
, &r
->status
));
575 if (ndr_flags
& NDR_BUFFERS
) {
576 NDR_CHECK(ndr_pull_named_pipe_auth_rep_info(ndr
, NDR_BUFFERS
, &r
->info
));
578 return NDR_ERR_SUCCESS
;
581 _PUBLIC_
void ndr_print_named_pipe_auth_rep(struct ndr_print
*ndr
, const char *name
, const struct named_pipe_auth_rep
*r
)
583 ndr_print_struct(ndr
, name
, "named_pipe_auth_rep");
585 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
);
586 ndr_print_string(ndr
, "magic", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?NAMED_PIPE_AUTH_MAGIC
:r
->magic
);
587 ndr_print_uint32(ndr
, "level", r
->level
);
588 ndr_print_set_switch_value(ndr
, &r
->info
, r
->level
);
589 ndr_print_named_pipe_auth_rep_info(ndr
, "info", &r
->info
);
590 ndr_print_NTSTATUS(ndr
, "status", r
->status
);
594 _PUBLIC_
size_t ndr_size_named_pipe_auth_rep(const struct named_pipe_auth_rep
*r
, struct smb_iconv_convenience
*ic
, int flags
)
596 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_named_pipe_auth_rep
, ic
);