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
));
21 if (ndr_flags
& NDR_BUFFERS
) {
23 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->client_name
, CH_UTF8
)));
24 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
25 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->client_name
, CH_UTF8
)));
26 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->client_name
, ndr_charset_length(r
->client_name
, CH_UTF8
), sizeof(uint8_t), CH_UTF8
));
29 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->client_addr
, CH_DOS
)));
30 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
31 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->client_addr
, CH_DOS
)));
32 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->client_addr
, ndr_charset_length(r
->client_addr
, CH_DOS
), sizeof(uint8_t), CH_DOS
));
35 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->server_name
, CH_UTF8
)));
36 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
37 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->server_name
, CH_UTF8
)));
38 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->server_name
, ndr_charset_length(r
->server_name
, CH_UTF8
), sizeof(uint8_t), CH_UTF8
));
41 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->server_addr
, CH_DOS
)));
42 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
43 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->server_addr
, CH_DOS
)));
44 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->server_addr
, ndr_charset_length(r
->server_addr
, CH_DOS
), sizeof(uint8_t), CH_DOS
));
47 NDR_CHECK(ndr_push_netr_SamInfo3(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->sam_info3
));
50 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->session_key_length
));
51 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->session_key
, r
->session_key_length
));
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
, 5));
73 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_client_name
));
74 if (_ptr_client_name
) {
75 NDR_PULL_ALLOC(ndr
, r
->client_name
);
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_info3(struct ndr_push
*ndr
, int ndr_flags
, const struct named_pipe_auth_req_info3
*r
)
231 if (ndr_flags
& NDR_SCALARS
) {
232 NDR_CHECK(ndr_push_align(ndr
, 5));
233 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->client_name
));
234 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->client_addr
));
235 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->client_port
));
236 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->server_name
));
237 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->server_addr
));
238 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->server_port
));
239 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->sam_info3
));
240 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->session_key_length
));
241 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->session_key
));
242 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->gssapi_delegated_creds_length
));
243 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->gssapi_delegated_creds
));
245 if (ndr_flags
& NDR_BUFFERS
) {
246 if (r
->client_name
) {
247 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->client_name
, CH_UTF8
)));
248 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
249 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->client_name
, CH_UTF8
)));
250 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->client_name
, ndr_charset_length(r
->client_name
, CH_UTF8
), sizeof(uint8_t), CH_UTF8
));
252 if (r
->client_addr
) {
253 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->client_addr
, CH_DOS
)));
254 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
255 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->client_addr
, CH_DOS
)));
256 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->client_addr
, ndr_charset_length(r
->client_addr
, CH_DOS
), sizeof(uint8_t), CH_DOS
));
258 if (r
->server_name
) {
259 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->server_name
, CH_UTF8
)));
260 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
261 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->server_name
, CH_UTF8
)));
262 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->server_name
, ndr_charset_length(r
->server_name
, CH_UTF8
), sizeof(uint8_t), CH_UTF8
));
264 if (r
->server_addr
) {
265 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->server_addr
, CH_DOS
)));
266 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, 0));
267 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, ndr_charset_length(r
->server_addr
, CH_DOS
)));
268 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->server_addr
, ndr_charset_length(r
->server_addr
, CH_DOS
), sizeof(uint8_t), CH_DOS
));
271 NDR_CHECK(ndr_push_netr_SamInfo3(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->sam_info3
));
273 if (r
->session_key
) {
274 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->session_key_length
));
275 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->session_key
, r
->session_key_length
));
277 if (r
->gssapi_delegated_creds
) {
278 NDR_CHECK(ndr_push_uint3264(ndr
, NDR_SCALARS
, r
->gssapi_delegated_creds_length
));
279 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->gssapi_delegated_creds
, r
->gssapi_delegated_creds_length
));
282 return NDR_ERR_SUCCESS
;
285 static enum ndr_err_code
ndr_pull_named_pipe_auth_req_info3(struct ndr_pull
*ndr
, int ndr_flags
, struct named_pipe_auth_req_info3
*r
)
287 uint32_t _ptr_client_name
;
288 TALLOC_CTX
*_mem_save_client_name_0
;
289 uint32_t _ptr_client_addr
;
290 TALLOC_CTX
*_mem_save_client_addr_0
;
291 uint32_t _ptr_server_name
;
292 TALLOC_CTX
*_mem_save_server_name_0
;
293 uint32_t _ptr_server_addr
;
294 TALLOC_CTX
*_mem_save_server_addr_0
;
295 uint32_t _ptr_sam_info3
;
296 TALLOC_CTX
*_mem_save_sam_info3_0
;
297 uint32_t _ptr_session_key
;
298 TALLOC_CTX
*_mem_save_session_key_0
;
299 uint32_t _ptr_gssapi_delegated_creds
;
300 TALLOC_CTX
*_mem_save_gssapi_delegated_creds_0
;
301 if (ndr_flags
& NDR_SCALARS
) {
302 NDR_CHECK(ndr_pull_align(ndr
, 5));
303 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_client_name
));
304 if (_ptr_client_name
) {
305 NDR_PULL_ALLOC(ndr
, r
->client_name
);
307 r
->client_name
= NULL
;
309 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_client_addr
));
310 if (_ptr_client_addr
) {
311 NDR_PULL_ALLOC(ndr
, r
->client_addr
);
313 r
->client_addr
= NULL
;
315 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->client_port
));
316 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_server_name
));
317 if (_ptr_server_name
) {
318 NDR_PULL_ALLOC(ndr
, r
->server_name
);
320 r
->server_name
= NULL
;
322 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_server_addr
));
323 if (_ptr_server_addr
) {
324 NDR_PULL_ALLOC(ndr
, r
->server_addr
);
326 r
->server_addr
= NULL
;
328 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->server_port
));
329 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_sam_info3
));
330 if (_ptr_sam_info3
) {
331 NDR_PULL_ALLOC(ndr
, r
->sam_info3
);
335 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->session_key_length
));
336 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_session_key
));
337 if (_ptr_session_key
) {
338 NDR_PULL_ALLOC(ndr
, r
->session_key
);
340 r
->session_key
= NULL
;
342 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->gssapi_delegated_creds_length
));
343 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_gssapi_delegated_creds
));
344 if (_ptr_gssapi_delegated_creds
) {
345 NDR_PULL_ALLOC(ndr
, r
->gssapi_delegated_creds
);
347 r
->gssapi_delegated_creds
= NULL
;
350 if (ndr_flags
& NDR_BUFFERS
) {
351 if (r
->client_name
) {
352 _mem_save_client_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
353 NDR_PULL_SET_MEM_CTX(ndr
, r
->client_name
, 0);
354 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->client_name
));
355 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->client_name
));
356 if (ndr_get_array_length(ndr
, &r
->client_name
) > ndr_get_array_size(ndr
, &r
->client_name
)) {
357 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->client_name
), ndr_get_array_length(ndr
, &r
->client_name
));
359 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->client_name
), sizeof(uint8_t)));
360 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->client_name
, ndr_get_array_length(ndr
, &r
->client_name
), sizeof(uint8_t), CH_UTF8
));
361 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_client_name_0
, 0);
363 if (r
->client_addr
) {
364 _mem_save_client_addr_0
= NDR_PULL_GET_MEM_CTX(ndr
);
365 NDR_PULL_SET_MEM_CTX(ndr
, r
->client_addr
, 0);
366 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->client_addr
));
367 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->client_addr
));
368 if (ndr_get_array_length(ndr
, &r
->client_addr
) > ndr_get_array_size(ndr
, &r
->client_addr
)) {
369 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->client_addr
), ndr_get_array_length(ndr
, &r
->client_addr
));
371 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->client_addr
), sizeof(uint8_t)));
372 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->client_addr
, ndr_get_array_length(ndr
, &r
->client_addr
), sizeof(uint8_t), CH_DOS
));
373 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_client_addr_0
, 0);
375 if (r
->server_name
) {
376 _mem_save_server_name_0
= NDR_PULL_GET_MEM_CTX(ndr
);
377 NDR_PULL_SET_MEM_CTX(ndr
, r
->server_name
, 0);
378 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->server_name
));
379 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->server_name
));
380 if (ndr_get_array_length(ndr
, &r
->server_name
) > ndr_get_array_size(ndr
, &r
->server_name
)) {
381 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->server_name
), ndr_get_array_length(ndr
, &r
->server_name
));
383 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->server_name
), sizeof(uint8_t)));
384 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->server_name
, ndr_get_array_length(ndr
, &r
->server_name
), sizeof(uint8_t), CH_UTF8
));
385 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_server_name_0
, 0);
387 if (r
->server_addr
) {
388 _mem_save_server_addr_0
= NDR_PULL_GET_MEM_CTX(ndr
);
389 NDR_PULL_SET_MEM_CTX(ndr
, r
->server_addr
, 0);
390 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->server_addr
));
391 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->server_addr
));
392 if (ndr_get_array_length(ndr
, &r
->server_addr
) > ndr_get_array_size(ndr
, &r
->server_addr
)) {
393 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->server_addr
), ndr_get_array_length(ndr
, &r
->server_addr
));
395 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->server_addr
), sizeof(uint8_t)));
396 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->server_addr
, ndr_get_array_length(ndr
, &r
->server_addr
), sizeof(uint8_t), CH_DOS
));
397 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_server_addr_0
, 0);
400 _mem_save_sam_info3_0
= NDR_PULL_GET_MEM_CTX(ndr
);
401 NDR_PULL_SET_MEM_CTX(ndr
, r
->sam_info3
, 0);
402 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr
, NDR_SCALARS
|NDR_BUFFERS
, r
->sam_info3
));
403 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_sam_info3_0
, 0);
405 if (r
->session_key
) {
406 _mem_save_session_key_0
= NDR_PULL_GET_MEM_CTX(ndr
);
407 NDR_PULL_SET_MEM_CTX(ndr
, r
->session_key
, 0);
408 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->session_key
));
409 NDR_PULL_ALLOC_N(ndr
, r
->session_key
, ndr_get_array_size(ndr
, &r
->session_key
));
410 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->session_key
, ndr_get_array_size(ndr
, &r
->session_key
)));
411 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_session_key_0
, 0);
413 if (r
->gssapi_delegated_creds
) {
414 _mem_save_gssapi_delegated_creds_0
= NDR_PULL_GET_MEM_CTX(ndr
);
415 NDR_PULL_SET_MEM_CTX(ndr
, r
->gssapi_delegated_creds
, 0);
416 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->gssapi_delegated_creds
));
417 NDR_PULL_ALLOC_N(ndr
, r
->gssapi_delegated_creds
, ndr_get_array_size(ndr
, &r
->gssapi_delegated_creds
));
418 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->gssapi_delegated_creds
, ndr_get_array_size(ndr
, &r
->gssapi_delegated_creds
)));
419 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_gssapi_delegated_creds_0
, 0);
421 if (r
->session_key
) {
422 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->session_key
, r
->session_key_length
));
424 if (r
->gssapi_delegated_creds
) {
425 NDR_CHECK(ndr_check_array_size(ndr
, (void*)&r
->gssapi_delegated_creds
, r
->gssapi_delegated_creds_length
));
428 return NDR_ERR_SUCCESS
;
431 _PUBLIC_
void ndr_print_named_pipe_auth_req_info3(struct ndr_print
*ndr
, const char *name
, const struct named_pipe_auth_req_info3
*r
)
433 ndr_print_struct(ndr
, name
, "named_pipe_auth_req_info3");
435 ndr_print_ptr(ndr
, "client_name", r
->client_name
);
437 if (r
->client_name
) {
438 ndr_print_string(ndr
, "client_name", r
->client_name
);
441 ndr_print_ptr(ndr
, "client_addr", r
->client_addr
);
443 if (r
->client_addr
) {
444 ndr_print_string(ndr
, "client_addr", r
->client_addr
);
447 ndr_print_uint16(ndr
, "client_port", r
->client_port
);
448 ndr_print_ptr(ndr
, "server_name", r
->server_name
);
450 if (r
->server_name
) {
451 ndr_print_string(ndr
, "server_name", r
->server_name
);
454 ndr_print_ptr(ndr
, "server_addr", r
->server_addr
);
456 if (r
->server_addr
) {
457 ndr_print_string(ndr
, "server_addr", r
->server_addr
);
460 ndr_print_uint16(ndr
, "server_port", r
->server_port
);
461 ndr_print_ptr(ndr
, "sam_info3", r
->sam_info3
);
464 ndr_print_netr_SamInfo3(ndr
, "sam_info3", r
->sam_info3
);
467 ndr_print_uint32(ndr
, "session_key_length", r
->session_key_length
);
468 ndr_print_ptr(ndr
, "session_key", r
->session_key
);
470 if (r
->session_key
) {
471 ndr_print_array_uint8(ndr
, "session_key", r
->session_key
, r
->session_key_length
);
474 ndr_print_uint32(ndr
, "gssapi_delegated_creds_length", r
->gssapi_delegated_creds_length
);
475 ndr_print_ptr(ndr
, "gssapi_delegated_creds", r
->gssapi_delegated_creds
);
477 if (r
->gssapi_delegated_creds
) {
478 ndr_print_array_uint8(ndr
, "gssapi_delegated_creds", r
->gssapi_delegated_creds
, r
->gssapi_delegated_creds_length
);
484 static enum ndr_err_code
ndr_push_named_pipe_auth_req_info(struct ndr_push
*ndr
, int ndr_flags
, const union named_pipe_auth_req_info
*r
)
486 if (ndr_flags
& NDR_SCALARS
) {
487 int level
= ndr_push_get_switch_value(ndr
, r
);
488 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, level
));
494 NDR_CHECK(ndr_push_netr_SamInfo3(ndr
, NDR_SCALARS
, &r
->info1
));
498 NDR_CHECK(ndr_push_named_pipe_auth_req_info2(ndr
, NDR_SCALARS
, &r
->info2
));
502 NDR_CHECK(ndr_push_named_pipe_auth_req_info3(ndr
, NDR_SCALARS
, &r
->info3
));
506 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
509 if (ndr_flags
& NDR_BUFFERS
) {
510 int level
= ndr_push_get_switch_value(ndr
, r
);
516 NDR_CHECK(ndr_push_netr_SamInfo3(ndr
, NDR_BUFFERS
, &r
->info1
));
520 NDR_CHECK(ndr_push_named_pipe_auth_req_info2(ndr
, NDR_BUFFERS
, &r
->info2
));
524 NDR_CHECK(ndr_push_named_pipe_auth_req_info3(ndr
, NDR_BUFFERS
, &r
->info3
));
528 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
531 return NDR_ERR_SUCCESS
;
534 static enum ndr_err_code
ndr_pull_named_pipe_auth_req_info(struct ndr_pull
*ndr
, int ndr_flags
, union named_pipe_auth_req_info
*r
)
538 level
= ndr_pull_get_switch_value(ndr
, r
);
539 if (ndr_flags
& NDR_SCALARS
) {
540 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &_level
));
541 if (_level
!= level
) {
542 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u for r at %s", _level
, __location__
);
549 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr
, NDR_SCALARS
, &r
->info1
));
553 NDR_CHECK(ndr_pull_named_pipe_auth_req_info2(ndr
, NDR_SCALARS
, &r
->info2
));
557 NDR_CHECK(ndr_pull_named_pipe_auth_req_info3(ndr
, NDR_SCALARS
, &r
->info3
));
561 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
564 if (ndr_flags
& NDR_BUFFERS
) {
570 NDR_CHECK(ndr_pull_netr_SamInfo3(ndr
, NDR_BUFFERS
, &r
->info1
));
574 NDR_CHECK(ndr_pull_named_pipe_auth_req_info2(ndr
, NDR_BUFFERS
, &r
->info2
));
578 NDR_CHECK(ndr_pull_named_pipe_auth_req_info3(ndr
, NDR_BUFFERS
, &r
->info3
));
582 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
585 return NDR_ERR_SUCCESS
;
588 _PUBLIC_
void ndr_print_named_pipe_auth_req_info(struct ndr_print
*ndr
, const char *name
, const union named_pipe_auth_req_info
*r
)
591 level
= ndr_print_get_switch_value(ndr
, r
);
592 ndr_print_union(ndr
, name
, level
, "named_pipe_auth_req_info");
598 ndr_print_netr_SamInfo3(ndr
, "info1", &r
->info1
);
602 ndr_print_named_pipe_auth_req_info2(ndr
, "info2", &r
->info2
);
606 ndr_print_named_pipe_auth_req_info3(ndr
, "info3", &r
->info3
);
610 ndr_print_bad_level(ndr
, name
, level
);
614 _PUBLIC_
enum ndr_err_code
ndr_push_named_pipe_auth_req(struct ndr_push
*ndr
, int ndr_flags
, const struct named_pipe_auth_req
*r
)
616 if (ndr_flags
& NDR_SCALARS
) {
617 NDR_CHECK(ndr_push_align(ndr
, 5));
619 uint32_t _flags_save_uint32
= ndr
->flags
;
620 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_BIGENDIAN
);
621 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_size_named_pipe_auth_req(r
, ndr
->iconv_convenience
, ndr
->flags
) - 4));
622 ndr
->flags
= _flags_save_uint32
;
624 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, NAMED_PIPE_AUTH_MAGIC
, 4, sizeof(uint8_t), CH_DOS
));
625 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->level
));
626 NDR_CHECK(ndr_push_set_switch_value(ndr
, &r
->info
, r
->level
));
627 NDR_CHECK(ndr_push_named_pipe_auth_req_info(ndr
, NDR_SCALARS
, &r
->info
));
629 if (ndr_flags
& NDR_BUFFERS
) {
630 NDR_CHECK(ndr_push_named_pipe_auth_req_info(ndr
, NDR_BUFFERS
, &r
->info
));
632 return NDR_ERR_SUCCESS
;
635 _PUBLIC_
enum ndr_err_code
ndr_pull_named_pipe_auth_req(struct ndr_pull
*ndr
, int ndr_flags
, struct named_pipe_auth_req
*r
)
637 if (ndr_flags
& NDR_SCALARS
) {
638 NDR_CHECK(ndr_pull_align(ndr
, 5));
640 uint32_t _flags_save_uint32
= ndr
->flags
;
641 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_BIGENDIAN
);
642 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->length
));
643 ndr
->flags
= _flags_save_uint32
;
645 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->magic
, 4, sizeof(uint8_t), CH_DOS
));
646 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->level
));
647 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->info
, r
->level
));
648 NDR_CHECK(ndr_pull_named_pipe_auth_req_info(ndr
, NDR_SCALARS
, &r
->info
));
650 if (ndr_flags
& NDR_BUFFERS
) {
651 NDR_CHECK(ndr_pull_named_pipe_auth_req_info(ndr
, NDR_BUFFERS
, &r
->info
));
653 return NDR_ERR_SUCCESS
;
656 _PUBLIC_
void ndr_print_named_pipe_auth_req(struct ndr_print
*ndr
, const char *name
, const struct named_pipe_auth_req
*r
)
658 ndr_print_struct(ndr
, name
, "named_pipe_auth_req");
660 ndr_print_uint32(ndr
, "length", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?ndr_size_named_pipe_auth_req(r
, ndr
->iconv_convenience
, ndr
->flags
) - 4:r
->length
);
661 ndr_print_string(ndr
, "magic", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?NAMED_PIPE_AUTH_MAGIC
:r
->magic
);
662 ndr_print_uint32(ndr
, "level", r
->level
);
663 ndr_print_set_switch_value(ndr
, &r
->info
, r
->level
);
664 ndr_print_named_pipe_auth_req_info(ndr
, "info", &r
->info
);
668 _PUBLIC_
size_t ndr_size_named_pipe_auth_req(const struct named_pipe_auth_req
*r
, struct smb_iconv_convenience
*ic
, int flags
)
670 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_named_pipe_auth_req
, ic
);
673 static enum ndr_err_code
ndr_push_named_pipe_auth_rep_info2(struct ndr_push
*ndr
, int ndr_flags
, const struct named_pipe_auth_rep_info2
*r
)
675 if (ndr_flags
& NDR_SCALARS
) {
676 NDR_CHECK(ndr_push_align(ndr
, 8));
677 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->file_type
));
678 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->device_state
));
679 NDR_CHECK(ndr_push_hyper(ndr
, NDR_SCALARS
, r
->allocation_size
));
681 if (ndr_flags
& NDR_BUFFERS
) {
683 return NDR_ERR_SUCCESS
;
686 static enum ndr_err_code
ndr_pull_named_pipe_auth_rep_info2(struct ndr_pull
*ndr
, int ndr_flags
, struct named_pipe_auth_rep_info2
*r
)
688 if (ndr_flags
& NDR_SCALARS
) {
689 NDR_CHECK(ndr_pull_align(ndr
, 8));
690 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->file_type
));
691 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->device_state
));
692 NDR_CHECK(ndr_pull_hyper(ndr
, NDR_SCALARS
, &r
->allocation_size
));
694 if (ndr_flags
& NDR_BUFFERS
) {
696 return NDR_ERR_SUCCESS
;
699 _PUBLIC_
void ndr_print_named_pipe_auth_rep_info2(struct ndr_print
*ndr
, const char *name
, const struct named_pipe_auth_rep_info2
*r
)
701 ndr_print_struct(ndr
, name
, "named_pipe_auth_rep_info2");
703 ndr_print_uint16(ndr
, "file_type", r
->file_type
);
704 ndr_print_uint16(ndr
, "device_state", r
->device_state
);
705 ndr_print_hyper(ndr
, "allocation_size", r
->allocation_size
);
709 static enum ndr_err_code
ndr_push_named_pipe_auth_rep_info3(struct ndr_push
*ndr
, int ndr_flags
, const struct named_pipe_auth_rep_info3
*r
)
711 if (ndr_flags
& NDR_SCALARS
) {
712 NDR_CHECK(ndr_push_align(ndr
, 8));
713 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->file_type
));
714 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->device_state
));
715 NDR_CHECK(ndr_push_hyper(ndr
, NDR_SCALARS
, r
->allocation_size
));
717 if (ndr_flags
& NDR_BUFFERS
) {
719 return NDR_ERR_SUCCESS
;
722 static enum ndr_err_code
ndr_pull_named_pipe_auth_rep_info3(struct ndr_pull
*ndr
, int ndr_flags
, struct named_pipe_auth_rep_info3
*r
)
724 if (ndr_flags
& NDR_SCALARS
) {
725 NDR_CHECK(ndr_pull_align(ndr
, 8));
726 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->file_type
));
727 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->device_state
));
728 NDR_CHECK(ndr_pull_hyper(ndr
, NDR_SCALARS
, &r
->allocation_size
));
730 if (ndr_flags
& NDR_BUFFERS
) {
732 return NDR_ERR_SUCCESS
;
735 _PUBLIC_
void ndr_print_named_pipe_auth_rep_info3(struct ndr_print
*ndr
, const char *name
, const struct named_pipe_auth_rep_info3
*r
)
737 ndr_print_struct(ndr
, name
, "named_pipe_auth_rep_info3");
739 ndr_print_uint16(ndr
, "file_type", r
->file_type
);
740 ndr_print_uint16(ndr
, "device_state", r
->device_state
);
741 ndr_print_hyper(ndr
, "allocation_size", r
->allocation_size
);
745 static enum ndr_err_code
ndr_push_named_pipe_auth_rep_info(struct ndr_push
*ndr
, int ndr_flags
, const union named_pipe_auth_rep_info
*r
)
747 if (ndr_flags
& NDR_SCALARS
) {
748 int level
= ndr_push_get_switch_value(ndr
, r
);
749 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, level
));
758 NDR_CHECK(ndr_push_named_pipe_auth_rep_info2(ndr
, NDR_SCALARS
, &r
->info2
));
762 NDR_CHECK(ndr_push_named_pipe_auth_rep_info3(ndr
, NDR_SCALARS
, &r
->info3
));
766 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
769 if (ndr_flags
& NDR_BUFFERS
) {
770 int level
= ndr_push_get_switch_value(ndr
, r
);
785 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
788 return NDR_ERR_SUCCESS
;
791 static enum ndr_err_code
ndr_pull_named_pipe_auth_rep_info(struct ndr_pull
*ndr
, int ndr_flags
, union named_pipe_auth_rep_info
*r
)
795 level
= ndr_pull_get_switch_value(ndr
, r
);
796 if (ndr_flags
& NDR_SCALARS
) {
797 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &_level
));
798 if (_level
!= level
) {
799 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u for r at %s", _level
, __location__
);
809 NDR_CHECK(ndr_pull_named_pipe_auth_rep_info2(ndr
, NDR_SCALARS
, &r
->info2
));
813 NDR_CHECK(ndr_pull_named_pipe_auth_rep_info3(ndr
, NDR_SCALARS
, &r
->info3
));
817 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
820 if (ndr_flags
& NDR_BUFFERS
) {
835 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
838 return NDR_ERR_SUCCESS
;
841 _PUBLIC_
void ndr_print_named_pipe_auth_rep_info(struct ndr_print
*ndr
, const char *name
, const union named_pipe_auth_rep_info
*r
)
844 level
= ndr_print_get_switch_value(ndr
, r
);
845 ndr_print_union(ndr
, name
, level
, "named_pipe_auth_rep_info");
854 ndr_print_named_pipe_auth_rep_info2(ndr
, "info2", &r
->info2
);
858 ndr_print_named_pipe_auth_rep_info3(ndr
, "info3", &r
->info3
);
862 ndr_print_bad_level(ndr
, name
, level
);
866 _PUBLIC_
enum ndr_err_code
ndr_push_named_pipe_auth_rep(struct ndr_push
*ndr
, int ndr_flags
, const struct named_pipe_auth_rep
*r
)
868 if (ndr_flags
& NDR_SCALARS
) {
869 NDR_CHECK(ndr_push_align(ndr
, 8));
871 uint32_t _flags_save_uint32
= ndr
->flags
;
872 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_BIGENDIAN
);
873 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_size_named_pipe_auth_rep(r
, ndr
->iconv_convenience
, ndr
->flags
) - 4));
874 ndr
->flags
= _flags_save_uint32
;
876 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, NAMED_PIPE_AUTH_MAGIC
, 4, sizeof(uint8_t), CH_DOS
));
877 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->level
));
878 NDR_CHECK(ndr_push_set_switch_value(ndr
, &r
->info
, r
->level
));
879 NDR_CHECK(ndr_push_named_pipe_auth_rep_info(ndr
, NDR_SCALARS
, &r
->info
));
880 NDR_CHECK(ndr_push_NTSTATUS(ndr
, NDR_SCALARS
, r
->status
));
882 if (ndr_flags
& NDR_BUFFERS
) {
883 NDR_CHECK(ndr_push_named_pipe_auth_rep_info(ndr
, NDR_BUFFERS
, &r
->info
));
885 return NDR_ERR_SUCCESS
;
888 _PUBLIC_
enum ndr_err_code
ndr_pull_named_pipe_auth_rep(struct ndr_pull
*ndr
, int ndr_flags
, struct named_pipe_auth_rep
*r
)
890 if (ndr_flags
& NDR_SCALARS
) {
891 NDR_CHECK(ndr_pull_align(ndr
, 8));
893 uint32_t _flags_save_uint32
= ndr
->flags
;
894 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_BIGENDIAN
);
895 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->length
));
896 ndr
->flags
= _flags_save_uint32
;
898 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->magic
, 4, sizeof(uint8_t), CH_DOS
));
899 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->level
));
900 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->info
, r
->level
));
901 NDR_CHECK(ndr_pull_named_pipe_auth_rep_info(ndr
, NDR_SCALARS
, &r
->info
));
902 NDR_CHECK(ndr_pull_NTSTATUS(ndr
, NDR_SCALARS
, &r
->status
));
904 if (ndr_flags
& NDR_BUFFERS
) {
905 NDR_CHECK(ndr_pull_named_pipe_auth_rep_info(ndr
, NDR_BUFFERS
, &r
->info
));
907 return NDR_ERR_SUCCESS
;
910 _PUBLIC_
void ndr_print_named_pipe_auth_rep(struct ndr_print
*ndr
, const char *name
, const struct named_pipe_auth_rep
*r
)
912 ndr_print_struct(ndr
, name
, "named_pipe_auth_rep");
914 ndr_print_uint32(ndr
, "length", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?ndr_size_named_pipe_auth_rep(r
, ndr
->iconv_convenience
, ndr
->flags
) - 4:r
->length
);
915 ndr_print_string(ndr
, "magic", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?NAMED_PIPE_AUTH_MAGIC
:r
->magic
);
916 ndr_print_uint32(ndr
, "level", r
->level
);
917 ndr_print_set_switch_value(ndr
, &r
->info
, r
->level
);
918 ndr_print_named_pipe_auth_rep_info(ndr
, "info", &r
->info
);
919 ndr_print_NTSTATUS(ndr
, "status", r
->status
);
923 _PUBLIC_
size_t ndr_size_named_pipe_auth_rep(const struct named_pipe_auth_rep
*r
, struct smb_iconv_convenience
*ic
, int flags
)
925 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_named_pipe_auth_rep
, ic
);