1 /* parser auto-generated by pidl */
4 #include "../librpc/gen_ndr/ndr_schannel.h"
6 #include "librpc/gen_ndr/ndr_netlogon.h"
7 #include "librpc/gen_ndr/ndr_nbt.h"
8 static enum ndr_err_code
ndr_push_schannel_bind_3(struct ndr_push
*ndr
, int ndr_flags
, const struct schannel_bind_3
*r
)
10 if (ndr_flags
& NDR_SCALARS
) {
11 NDR_CHECK(ndr_push_align(ndr
, 4));
13 uint32_t _flags_save_string
= ndr
->flags
;
14 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
15 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->domain
));
16 ndr
->flags
= _flags_save_string
;
19 uint32_t _flags_save_string
= ndr
->flags
;
20 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
21 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->workstation
));
22 ndr
->flags
= _flags_save_string
;
25 if (ndr_flags
& NDR_BUFFERS
) {
27 return NDR_ERR_SUCCESS
;
30 static enum ndr_err_code
ndr_pull_schannel_bind_3(struct ndr_pull
*ndr
, int ndr_flags
, struct schannel_bind_3
*r
)
32 if (ndr_flags
& NDR_SCALARS
) {
33 NDR_CHECK(ndr_pull_align(ndr
, 4));
35 uint32_t _flags_save_string
= ndr
->flags
;
36 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
37 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->domain
));
38 ndr
->flags
= _flags_save_string
;
41 uint32_t _flags_save_string
= ndr
->flags
;
42 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
43 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->workstation
));
44 ndr
->flags
= _flags_save_string
;
47 if (ndr_flags
& NDR_BUFFERS
) {
49 return NDR_ERR_SUCCESS
;
52 _PUBLIC_
void ndr_print_schannel_bind_3(struct ndr_print
*ndr
, const char *name
, const struct schannel_bind_3
*r
)
54 ndr_print_struct(ndr
, name
, "schannel_bind_3");
56 ndr_print_string(ndr
, "domain", r
->domain
);
57 ndr_print_string(ndr
, "workstation", r
->workstation
);
61 static enum ndr_err_code
ndr_push_schannel_bind_23(struct ndr_push
*ndr
, int ndr_flags
, const struct schannel_bind_23
*r
)
63 if (ndr_flags
& NDR_SCALARS
) {
64 NDR_CHECK(ndr_push_align(ndr
, 4));
66 uint32_t _flags_save_string
= ndr
->flags
;
67 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
68 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->domain
));
69 ndr
->flags
= _flags_save_string
;
72 uint32_t _flags_save_string
= ndr
->flags
;
73 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
74 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->workstation
));
75 ndr
->flags
= _flags_save_string
;
77 NDR_CHECK(ndr_push_nbt_string(ndr
, NDR_SCALARS
, r
->dnsdomain
));
78 NDR_CHECK(ndr_push_nbt_string(ndr
, NDR_SCALARS
, r
->dnsworkstation
));
80 if (ndr_flags
& NDR_BUFFERS
) {
82 return NDR_ERR_SUCCESS
;
85 static enum ndr_err_code
ndr_pull_schannel_bind_23(struct ndr_pull
*ndr
, int ndr_flags
, struct schannel_bind_23
*r
)
87 if (ndr_flags
& NDR_SCALARS
) {
88 NDR_CHECK(ndr_pull_align(ndr
, 4));
90 uint32_t _flags_save_string
= ndr
->flags
;
91 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
92 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->domain
));
93 ndr
->flags
= _flags_save_string
;
96 uint32_t _flags_save_string
= ndr
->flags
;
97 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
98 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->workstation
));
99 ndr
->flags
= _flags_save_string
;
101 NDR_CHECK(ndr_pull_nbt_string(ndr
, NDR_SCALARS
, &r
->dnsdomain
));
102 NDR_CHECK(ndr_pull_nbt_string(ndr
, NDR_SCALARS
, &r
->dnsworkstation
));
104 if (ndr_flags
& NDR_BUFFERS
) {
106 return NDR_ERR_SUCCESS
;
109 _PUBLIC_
void ndr_print_schannel_bind_23(struct ndr_print
*ndr
, const char *name
, const struct schannel_bind_23
*r
)
111 ndr_print_struct(ndr
, name
, "schannel_bind_23");
113 ndr_print_string(ndr
, "domain", r
->domain
);
114 ndr_print_string(ndr
, "workstation", r
->workstation
);
115 ndr_print_nbt_string(ndr
, "dnsdomain", r
->dnsdomain
);
116 ndr_print_nbt_string(ndr
, "dnsworkstation", r
->dnsworkstation
);
120 static enum ndr_err_code
ndr_push_schannel_bind_info(struct ndr_push
*ndr
, int ndr_flags
, const union schannel_bind_info
*r
)
122 if (ndr_flags
& NDR_SCALARS
) {
123 int level
= ndr_push_get_switch_value(ndr
, r
);
126 NDR_CHECK(ndr_push_schannel_bind_3(ndr
, NDR_SCALARS
, &r
->info3
));
130 NDR_CHECK(ndr_push_schannel_bind_23(ndr
, NDR_SCALARS
, &r
->info23
));
134 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
137 if (ndr_flags
& NDR_BUFFERS
) {
138 int level
= ndr_push_get_switch_value(ndr
, r
);
147 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
150 return NDR_ERR_SUCCESS
;
153 static enum ndr_err_code
ndr_pull_schannel_bind_info(struct ndr_pull
*ndr
, int ndr_flags
, union schannel_bind_info
*r
)
156 level
= ndr_pull_get_switch_value(ndr
, r
);
157 if (ndr_flags
& NDR_SCALARS
) {
160 NDR_CHECK(ndr_pull_schannel_bind_3(ndr
, NDR_SCALARS
, &r
->info3
));
164 NDR_CHECK(ndr_pull_schannel_bind_23(ndr
, NDR_SCALARS
, &r
->info23
));
168 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
171 if (ndr_flags
& NDR_BUFFERS
) {
180 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u at %s", level
, __location__
);
183 return NDR_ERR_SUCCESS
;
186 _PUBLIC_
void ndr_print_schannel_bind_info(struct ndr_print
*ndr
, const char *name
, const union schannel_bind_info
*r
)
189 level
= ndr_print_get_switch_value(ndr
, r
);
190 ndr_print_union(ndr
, name
, level
, "schannel_bind_info");
193 ndr_print_schannel_bind_3(ndr
, "info3", &r
->info3
);
197 ndr_print_schannel_bind_23(ndr
, "info23", &r
->info23
);
201 ndr_print_bad_level(ndr
, name
, level
);
205 _PUBLIC_
enum ndr_err_code
ndr_push_schannel_bind(struct ndr_push
*ndr
, int ndr_flags
, const struct schannel_bind
*r
)
207 if (ndr_flags
& NDR_SCALARS
) {
208 NDR_CHECK(ndr_push_align(ndr
, 4));
209 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->unknown1
));
210 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->bind_type
));
211 NDR_CHECK(ndr_push_set_switch_value(ndr
, &r
->u
, r
->bind_type
));
212 NDR_CHECK(ndr_push_schannel_bind_info(ndr
, NDR_SCALARS
, &r
->u
));
214 if (ndr_flags
& NDR_BUFFERS
) {
216 return NDR_ERR_SUCCESS
;
219 _PUBLIC_
enum ndr_err_code
ndr_pull_schannel_bind(struct ndr_pull
*ndr
, int ndr_flags
, struct schannel_bind
*r
)
221 if (ndr_flags
& NDR_SCALARS
) {
222 NDR_CHECK(ndr_pull_align(ndr
, 4));
223 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->unknown1
));
224 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->bind_type
));
225 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->u
, r
->bind_type
));
226 NDR_CHECK(ndr_pull_schannel_bind_info(ndr
, NDR_SCALARS
, &r
->u
));
228 if (ndr_flags
& NDR_BUFFERS
) {
230 return NDR_ERR_SUCCESS
;
233 _PUBLIC_
void ndr_print_schannel_bind(struct ndr_print
*ndr
, const char *name
, const struct schannel_bind
*r
)
235 ndr_print_struct(ndr
, name
, "schannel_bind");
237 ndr_print_uint32(ndr
, "unknown1", r
->unknown1
);
238 ndr_print_uint32(ndr
, "bind_type", r
->bind_type
);
239 ndr_print_set_switch_value(ndr
, &r
->u
, r
->bind_type
);
240 ndr_print_schannel_bind_info(ndr
, "u", &r
->u
);
244 _PUBLIC_
enum ndr_err_code
ndr_push_schannel_bind_ack(struct ndr_push
*ndr
, int ndr_flags
, const struct schannel_bind_ack
*r
)
246 if (ndr_flags
& NDR_SCALARS
) {
247 NDR_CHECK(ndr_push_align(ndr
, 4));
248 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->unknown1
));
249 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->unknown2
));
250 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->unknown3
));
252 if (ndr_flags
& NDR_BUFFERS
) {
254 return NDR_ERR_SUCCESS
;
257 _PUBLIC_
enum ndr_err_code
ndr_pull_schannel_bind_ack(struct ndr_pull
*ndr
, int ndr_flags
, struct schannel_bind_ack
*r
)
259 if (ndr_flags
& NDR_SCALARS
) {
260 NDR_CHECK(ndr_pull_align(ndr
, 4));
261 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->unknown1
));
262 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->unknown2
));
263 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->unknown3
));
265 if (ndr_flags
& NDR_BUFFERS
) {
267 return NDR_ERR_SUCCESS
;
270 _PUBLIC_
void ndr_print_schannel_bind_ack(struct ndr_print
*ndr
, const char *name
, const struct schannel_bind_ack
*r
)
272 ndr_print_struct(ndr
, name
, "schannel_bind_ack");
274 ndr_print_uint32(ndr
, "unknown1", r
->unknown1
);
275 ndr_print_uint32(ndr
, "unknown2", r
->unknown2
);
276 ndr_print_uint32(ndr
, "unknown3", r
->unknown3
);
280 _PUBLIC_
enum ndr_err_code
ndr_push_netlogon_creds_CredentialState(struct ndr_push
*ndr
, int ndr_flags
, const struct netlogon_creds_CredentialState
*r
)
283 uint32_t _flags_save_STRUCT
= ndr
->flags
;
284 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
285 if (ndr_flags
& NDR_SCALARS
) {
286 NDR_CHECK(ndr_push_align(ndr
, 4));
287 NDR_CHECK(ndr_push_netr_NegotiateFlags(ndr
, NDR_SCALARS
, r
->negotiate_flags
));
288 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->session_key
, 16));
289 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->sequence
));
290 NDR_CHECK(ndr_push_netr_Credential(ndr
, NDR_SCALARS
, &r
->seed
));
291 NDR_CHECK(ndr_push_netr_Credential(ndr
, NDR_SCALARS
, &r
->client
));
292 NDR_CHECK(ndr_push_netr_Credential(ndr
, NDR_SCALARS
, &r
->server
));
293 NDR_CHECK(ndr_push_netr_SchannelType(ndr
, NDR_SCALARS
, r
->secure_channel_type
));
294 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->computer_name
, CH_UTF8
)));
295 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
296 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->computer_name
, CH_UTF8
)));
297 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->computer_name
, ndr_charset_length(r
->computer_name
, CH_UTF8
), sizeof(uint8_t), CH_UTF8
));
298 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->account_name
, CH_UTF8
)));
299 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, 0));
300 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_charset_length(r
->account_name
, CH_UTF8
)));
301 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->account_name
, ndr_charset_length(r
->account_name
, CH_UTF8
), sizeof(uint8_t), CH_UTF8
));
302 NDR_CHECK(ndr_push_unique_ptr(ndr
, r
->sid
));
304 if (ndr_flags
& NDR_BUFFERS
) {
306 NDR_CHECK(ndr_push_dom_sid(ndr
, NDR_SCALARS
, r
->sid
));
309 ndr
->flags
= _flags_save_STRUCT
;
311 return NDR_ERR_SUCCESS
;
314 _PUBLIC_
enum ndr_err_code
ndr_pull_netlogon_creds_CredentialState(struct ndr_pull
*ndr
, int ndr_flags
, struct netlogon_creds_CredentialState
*r
)
317 TALLOC_CTX
*_mem_save_sid_0
;
319 uint32_t _flags_save_STRUCT
= ndr
->flags
;
320 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
321 if (ndr_flags
& NDR_SCALARS
) {
322 NDR_CHECK(ndr_pull_align(ndr
, 4));
323 NDR_CHECK(ndr_pull_netr_NegotiateFlags(ndr
, NDR_SCALARS
, &r
->negotiate_flags
));
324 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->session_key
, 16));
325 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->sequence
));
326 NDR_CHECK(ndr_pull_netr_Credential(ndr
, NDR_SCALARS
, &r
->seed
));
327 NDR_CHECK(ndr_pull_netr_Credential(ndr
, NDR_SCALARS
, &r
->client
));
328 NDR_CHECK(ndr_pull_netr_Credential(ndr
, NDR_SCALARS
, &r
->server
));
329 NDR_CHECK(ndr_pull_netr_SchannelType(ndr
, NDR_SCALARS
, &r
->secure_channel_type
));
330 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->computer_name
));
331 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->computer_name
));
332 if (ndr_get_array_length(ndr
, &r
->computer_name
) > ndr_get_array_size(ndr
, &r
->computer_name
)) {
333 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->computer_name
), ndr_get_array_length(ndr
, &r
->computer_name
));
335 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->computer_name
), sizeof(uint8_t)));
336 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->computer_name
, ndr_get_array_length(ndr
, &r
->computer_name
), sizeof(uint8_t), CH_UTF8
));
337 NDR_CHECK(ndr_pull_array_size(ndr
, &r
->account_name
));
338 NDR_CHECK(ndr_pull_array_length(ndr
, &r
->account_name
));
339 if (ndr_get_array_length(ndr
, &r
->account_name
) > ndr_get_array_size(ndr
, &r
->account_name
)) {
340 return ndr_pull_error(ndr
, NDR_ERR_ARRAY_SIZE
, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr
, &r
->account_name
), ndr_get_array_length(ndr
, &r
->account_name
));
342 NDR_CHECK(ndr_check_string_terminator(ndr
, ndr_get_array_length(ndr
, &r
->account_name
), sizeof(uint8_t)));
343 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->account_name
, ndr_get_array_length(ndr
, &r
->account_name
), sizeof(uint8_t), CH_UTF8
));
344 NDR_CHECK(ndr_pull_generic_ptr(ndr
, &_ptr_sid
));
346 NDR_PULL_ALLOC(ndr
, r
->sid
);
351 if (ndr_flags
& NDR_BUFFERS
) {
353 _mem_save_sid_0
= NDR_PULL_GET_MEM_CTX(ndr
);
354 NDR_PULL_SET_MEM_CTX(ndr
, r
->sid
, 0);
355 NDR_CHECK(ndr_pull_dom_sid(ndr
, NDR_SCALARS
, r
->sid
));
356 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_sid_0
, 0);
359 ndr
->flags
= _flags_save_STRUCT
;
361 return NDR_ERR_SUCCESS
;
364 _PUBLIC_
void ndr_print_netlogon_creds_CredentialState(struct ndr_print
*ndr
, const char *name
, const struct netlogon_creds_CredentialState
*r
)
366 ndr_print_struct(ndr
, name
, "netlogon_creds_CredentialState");
368 uint32_t _flags_save_STRUCT
= ndr
->flags
;
369 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
371 ndr_print_netr_NegotiateFlags(ndr
, "negotiate_flags", r
->negotiate_flags
);
372 ndr_print_array_uint8(ndr
, "session_key", r
->session_key
, 16);
373 ndr_print_uint32(ndr
, "sequence", r
->sequence
);
374 ndr_print_netr_Credential(ndr
, "seed", &r
->seed
);
375 ndr_print_netr_Credential(ndr
, "client", &r
->client
);
376 ndr_print_netr_Credential(ndr
, "server", &r
->server
);
377 ndr_print_netr_SchannelType(ndr
, "secure_channel_type", r
->secure_channel_type
);
378 ndr_print_string(ndr
, "computer_name", r
->computer_name
);
379 ndr_print_string(ndr
, "account_name", r
->account_name
);
380 ndr_print_ptr(ndr
, "sid", r
->sid
);
383 ndr_print_dom_sid(ndr
, "sid", r
->sid
);
387 ndr
->flags
= _flags_save_STRUCT
;