1 /* parser auto-generated by pidl */
4 #include "librpc/gen_ndr/ndr_nbt.h"
6 #include "librpc/gen_ndr/ndr_misc.h"
7 #include "librpc/gen_ndr/ndr_security.h"
8 #include "librpc/gen_ndr/ndr_svcctl.h"
9 #include "librpc/gen_ndr/ndr_samr.h"
10 static enum ndr_err_code
ndr_push_nbt_operation(struct ndr_push
*ndr
, int ndr_flags
, uint16_t r
)
12 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
));
13 return NDR_ERR_SUCCESS
;
16 static enum ndr_err_code
ndr_pull_nbt_operation(struct ndr_pull
*ndr
, int ndr_flags
, uint16_t *r
)
19 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &v
));
21 return NDR_ERR_SUCCESS
;
24 _PUBLIC_
void ndr_print_nbt_operation(struct ndr_print
*ndr
, const char *name
, uint16_t r
)
26 ndr_print_uint16(ndr
, name
, r
);
28 ndr_print_bitmap_flag(ndr
, sizeof(uint16_t), "NBT_RCODE", NBT_RCODE
, r
);
29 ndr_print_bitmap_flag(ndr
, sizeof(uint16_t), "NBT_FLAG_BROADCAST", NBT_FLAG_BROADCAST
, r
);
30 ndr_print_bitmap_flag(ndr
, sizeof(uint16_t), "NBT_FLAG_RECURSION_AVAIL", NBT_FLAG_RECURSION_AVAIL
, r
);
31 ndr_print_bitmap_flag(ndr
, sizeof(uint16_t), "NBT_FLAG_RECURSION_DESIRED", NBT_FLAG_RECURSION_DESIRED
, r
);
32 ndr_print_bitmap_flag(ndr
, sizeof(uint16_t), "NBT_FLAG_TRUNCATION", NBT_FLAG_TRUNCATION
, r
);
33 ndr_print_bitmap_flag(ndr
, sizeof(uint16_t), "NBT_FLAG_AUTHORITIVE", NBT_FLAG_AUTHORITIVE
, r
);
34 ndr_print_bitmap_flag(ndr
, sizeof(uint16_t), "NBT_OPCODE", NBT_OPCODE
, r
);
35 ndr_print_bitmap_flag(ndr
, sizeof(uint16_t), "NBT_FLAG_REPLY", NBT_FLAG_REPLY
, r
);
39 static enum ndr_err_code
ndr_push_nbt_name_type(struct ndr_push
*ndr
, int ndr_flags
, enum nbt_name_type r
)
41 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
));
42 return NDR_ERR_SUCCESS
;
45 static enum ndr_err_code
ndr_pull_nbt_name_type(struct ndr_pull
*ndr
, int ndr_flags
, enum nbt_name_type
*r
)
48 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &v
));
50 return NDR_ERR_SUCCESS
;
53 _PUBLIC_
void ndr_print_nbt_name_type(struct ndr_print
*ndr
, const char *name
, enum nbt_name_type r
)
55 const char *val
= NULL
;
58 case NBT_NAME_CLIENT
: val
= "NBT_NAME_CLIENT"; break;
59 case NBT_NAME_MS
: val
= "NBT_NAME_MS"; break;
60 case NBT_NAME_USER
: val
= "NBT_NAME_USER"; break;
61 case NBT_NAME_SERVER
: val
= "NBT_NAME_SERVER"; break;
62 case NBT_NAME_PDC
: val
= "NBT_NAME_PDC"; break;
63 case NBT_NAME_LOGON
: val
= "NBT_NAME_LOGON"; break;
64 case NBT_NAME_MASTER
: val
= "NBT_NAME_MASTER"; break;
65 case NBT_NAME_BROWSER
: val
= "NBT_NAME_BROWSER"; break;
67 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
70 _PUBLIC_
void ndr_print_nbt_name(struct ndr_print
*ndr
, const char *name
, const struct nbt_name
*r
)
72 ndr_print_struct(ndr
, name
, "nbt_name");
74 ndr_print_string(ndr
, "name", r
->name
);
75 ndr_print_string(ndr
, "scope", r
->scope
);
76 ndr_print_nbt_name_type(ndr
, "type", r
->type
);
80 _PUBLIC_
enum ndr_err_code
ndr_push_nbt_qclass(struct ndr_push
*ndr
, int ndr_flags
, enum nbt_qclass r
)
82 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
));
83 return NDR_ERR_SUCCESS
;
86 _PUBLIC_
enum ndr_err_code
ndr_pull_nbt_qclass(struct ndr_pull
*ndr
, int ndr_flags
, enum nbt_qclass
*r
)
89 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &v
));
91 return NDR_ERR_SUCCESS
;
94 _PUBLIC_
void ndr_print_nbt_qclass(struct ndr_print
*ndr
, const char *name
, enum nbt_qclass r
)
96 const char *val
= NULL
;
99 case NBT_QCLASS_IP
: val
= "NBT_QCLASS_IP"; break;
101 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
104 _PUBLIC_
enum ndr_err_code
ndr_push_nbt_qtype(struct ndr_push
*ndr
, int ndr_flags
, enum nbt_qtype r
)
106 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
));
107 return NDR_ERR_SUCCESS
;
110 _PUBLIC_
enum ndr_err_code
ndr_pull_nbt_qtype(struct ndr_pull
*ndr
, int ndr_flags
, enum nbt_qtype
*r
)
113 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &v
));
115 return NDR_ERR_SUCCESS
;
118 _PUBLIC_
void ndr_print_nbt_qtype(struct ndr_print
*ndr
, const char *name
, enum nbt_qtype r
)
120 const char *val
= NULL
;
123 case NBT_QTYPE_ADDRESS
: val
= "NBT_QTYPE_ADDRESS"; break;
124 case NBT_QTYPE_NAMESERVICE
: val
= "NBT_QTYPE_NAMESERVICE"; break;
125 case NBT_QTYPE_NULL
: val
= "NBT_QTYPE_NULL"; break;
126 case NBT_QTYPE_NETBIOS
: val
= "NBT_QTYPE_NETBIOS"; break;
127 case NBT_QTYPE_STATUS
: val
= "NBT_QTYPE_STATUS"; break;
129 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
132 static enum ndr_err_code
ndr_push_nbt_name_question(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_name_question
*r
)
134 if (ndr_flags
& NDR_SCALARS
) {
135 NDR_CHECK(ndr_push_align(ndr
, 4));
136 NDR_CHECK(ndr_push_nbt_name(ndr
, NDR_SCALARS
, &r
->name
));
137 NDR_CHECK(ndr_push_nbt_qtype(ndr
, NDR_SCALARS
, r
->question_type
));
138 NDR_CHECK(ndr_push_nbt_qclass(ndr
, NDR_SCALARS
, r
->question_class
));
140 if (ndr_flags
& NDR_BUFFERS
) {
142 return NDR_ERR_SUCCESS
;
145 static enum ndr_err_code
ndr_pull_nbt_name_question(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_name_question
*r
)
147 if (ndr_flags
& NDR_SCALARS
) {
148 NDR_CHECK(ndr_pull_align(ndr
, 4));
149 NDR_CHECK(ndr_pull_nbt_name(ndr
, NDR_SCALARS
, &r
->name
));
150 NDR_CHECK(ndr_pull_nbt_qtype(ndr
, NDR_SCALARS
, &r
->question_type
));
151 NDR_CHECK(ndr_pull_nbt_qclass(ndr
, NDR_SCALARS
, &r
->question_class
));
153 if (ndr_flags
& NDR_BUFFERS
) {
155 return NDR_ERR_SUCCESS
;
158 _PUBLIC_
void ndr_print_nbt_name_question(struct ndr_print
*ndr
, const char *name
, const struct nbt_name_question
*r
)
160 ndr_print_struct(ndr
, name
, "nbt_name_question");
162 ndr_print_nbt_name(ndr
, "name", &r
->name
);
163 ndr_print_nbt_qtype(ndr
, "question_type", r
->question_type
);
164 ndr_print_nbt_qclass(ndr
, "question_class", r
->question_class
);
168 static enum ndr_err_code
ndr_push_nb_flags(struct ndr_push
*ndr
, int ndr_flags
, uint16_t r
)
170 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
));
171 return NDR_ERR_SUCCESS
;
174 static enum ndr_err_code
ndr_pull_nb_flags(struct ndr_pull
*ndr
, int ndr_flags
, uint16_t *r
)
177 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &v
));
179 return NDR_ERR_SUCCESS
;
182 _PUBLIC_
void ndr_print_nb_flags(struct ndr_print
*ndr
, const char *name
, uint16_t r
)
184 ndr_print_uint16(ndr
, name
, r
);
186 ndr_print_bitmap_flag(ndr
, sizeof(uint16_t), "NBT_NM_PERMANENT", NBT_NM_PERMANENT
, r
);
187 ndr_print_bitmap_flag(ndr
, sizeof(uint16_t), "NBT_NM_ACTIVE", NBT_NM_ACTIVE
, r
);
188 ndr_print_bitmap_flag(ndr
, sizeof(uint16_t), "NBT_NM_CONFLICT", NBT_NM_CONFLICT
, r
);
189 ndr_print_bitmap_flag(ndr
, sizeof(uint16_t), "NBT_NM_DEREGISTER", NBT_NM_DEREGISTER
, r
);
190 ndr_print_bitmap_flag(ndr
, sizeof(uint16_t), "NBT_NM_OWNER_TYPE", NBT_NM_OWNER_TYPE
, r
);
191 ndr_print_bitmap_flag(ndr
, sizeof(uint16_t), "NBT_NM_GROUP", NBT_NM_GROUP
, r
);
195 static enum ndr_err_code
ndr_push_nbt_rdata_address(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_rdata_address
*r
)
197 if (ndr_flags
& NDR_SCALARS
) {
198 NDR_CHECK(ndr_push_align(ndr
, 4));
199 NDR_CHECK(ndr_push_nb_flags(ndr
, NDR_SCALARS
, r
->nb_flags
));
200 NDR_CHECK(ndr_push_ipv4address(ndr
, NDR_SCALARS
, r
->ipaddr
));
202 if (ndr_flags
& NDR_BUFFERS
) {
204 return NDR_ERR_SUCCESS
;
207 static enum ndr_err_code
ndr_pull_nbt_rdata_address(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_rdata_address
*r
)
209 if (ndr_flags
& NDR_SCALARS
) {
210 NDR_CHECK(ndr_pull_align(ndr
, 4));
211 NDR_CHECK(ndr_pull_nb_flags(ndr
, NDR_SCALARS
, &r
->nb_flags
));
212 NDR_CHECK(ndr_pull_ipv4address(ndr
, NDR_SCALARS
, &r
->ipaddr
));
214 if (ndr_flags
& NDR_BUFFERS
) {
216 return NDR_ERR_SUCCESS
;
219 _PUBLIC_
void ndr_print_nbt_rdata_address(struct ndr_print
*ndr
, const char *name
, const struct nbt_rdata_address
*r
)
221 ndr_print_struct(ndr
, name
, "nbt_rdata_address");
223 ndr_print_nb_flags(ndr
, "nb_flags", r
->nb_flags
);
224 ndr_print_ipv4address(ndr
, "ipaddr", r
->ipaddr
);
228 static enum ndr_err_code
ndr_push_nbt_rdata_netbios(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_rdata_netbios
*r
)
230 uint32_t cntr_addresses_0
;
231 if (ndr_flags
& NDR_SCALARS
) {
232 NDR_CHECK(ndr_push_align(ndr
, 4));
233 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->length
));
234 for (cntr_addresses_0
= 0; cntr_addresses_0
< r
->length
/ 6; cntr_addresses_0
++) {
235 NDR_CHECK(ndr_push_nbt_rdata_address(ndr
, NDR_SCALARS
, &r
->addresses
[cntr_addresses_0
]));
238 if (ndr_flags
& NDR_BUFFERS
) {
240 return NDR_ERR_SUCCESS
;
243 static enum ndr_err_code
ndr_pull_nbt_rdata_netbios(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_rdata_netbios
*r
)
245 uint32_t cntr_addresses_0
;
246 TALLOC_CTX
*_mem_save_addresses_0
;
247 if (ndr_flags
& NDR_SCALARS
) {
248 NDR_CHECK(ndr_pull_align(ndr
, 4));
249 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->length
));
250 NDR_PULL_ALLOC_N(ndr
, r
->addresses
, r
->length
/ 6);
251 _mem_save_addresses_0
= NDR_PULL_GET_MEM_CTX(ndr
);
252 NDR_PULL_SET_MEM_CTX(ndr
, r
->addresses
, 0);
253 for (cntr_addresses_0
= 0; cntr_addresses_0
< r
->length
/ 6; cntr_addresses_0
++) {
254 NDR_CHECK(ndr_pull_nbt_rdata_address(ndr
, NDR_SCALARS
, &r
->addresses
[cntr_addresses_0
]));
256 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_addresses_0
, 0);
258 if (ndr_flags
& NDR_BUFFERS
) {
260 return NDR_ERR_SUCCESS
;
263 _PUBLIC_
void ndr_print_nbt_rdata_netbios(struct ndr_print
*ndr
, const char *name
, const struct nbt_rdata_netbios
*r
)
265 uint32_t cntr_addresses_0
;
266 ndr_print_struct(ndr
, name
, "nbt_rdata_netbios");
268 ndr_print_uint16(ndr
, "length", r
->length
);
269 ndr
->print(ndr
, "%s: ARRAY(%d)", "addresses", (int)r
->length
/ 6);
271 for (cntr_addresses_0
=0;cntr_addresses_0
<r
->length
/ 6;cntr_addresses_0
++) {
273 if (asprintf(&idx_0
, "[%d]", cntr_addresses_0
) != -1) {
274 ndr_print_nbt_rdata_address(ndr
, "addresses", &r
->addresses
[cntr_addresses_0
]);
282 static enum ndr_err_code
ndr_push_nbt_statistics(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_statistics
*r
)
284 if (ndr_flags
& NDR_SCALARS
) {
285 NDR_CHECK(ndr_push_align(ndr
, 4));
286 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->unit_id
, 6));
287 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->jumpers
));
288 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->test_result
));
289 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->version_number
));
290 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->period_of_statistics
));
291 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->number_of_crcs
));
292 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->number_alignment_errors
));
293 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->number_of_collisions
));
294 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->number_send_aborts
));
295 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->number_good_sends
));
296 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->number_good_receives
));
297 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->number_retransmits
));
298 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->number_no_resource_conditions
));
299 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->number_free_command_blocks
));
300 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->total_number_command_blocks
));
301 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->max_total_number_command_blocks
));
302 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->number_pending_sessions
));
303 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->max_number_pending_sessions
));
304 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->max_total_sessions_possible
));
305 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->session_data_packet_size
));
307 if (ndr_flags
& NDR_BUFFERS
) {
309 return NDR_ERR_SUCCESS
;
312 static enum ndr_err_code
ndr_pull_nbt_statistics(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_statistics
*r
)
314 if (ndr_flags
& NDR_SCALARS
) {
315 NDR_CHECK(ndr_pull_align(ndr
, 4));
316 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->unit_id
, 6));
317 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->jumpers
));
318 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->test_result
));
319 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->version_number
));
320 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->period_of_statistics
));
321 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->number_of_crcs
));
322 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->number_alignment_errors
));
323 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->number_of_collisions
));
324 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->number_send_aborts
));
325 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->number_good_sends
));
326 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->number_good_receives
));
327 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->number_retransmits
));
328 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->number_no_resource_conditions
));
329 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->number_free_command_blocks
));
330 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->total_number_command_blocks
));
331 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->max_total_number_command_blocks
));
332 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->number_pending_sessions
));
333 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->max_number_pending_sessions
));
334 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->max_total_sessions_possible
));
335 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->session_data_packet_size
));
337 if (ndr_flags
& NDR_BUFFERS
) {
339 return NDR_ERR_SUCCESS
;
342 _PUBLIC_
void ndr_print_nbt_statistics(struct ndr_print
*ndr
, const char *name
, const struct nbt_statistics
*r
)
344 ndr_print_struct(ndr
, name
, "nbt_statistics");
346 ndr_print_array_uint8(ndr
, "unit_id", r
->unit_id
, 6);
347 ndr_print_uint8(ndr
, "jumpers", r
->jumpers
);
348 ndr_print_uint8(ndr
, "test_result", r
->test_result
);
349 ndr_print_uint16(ndr
, "version_number", r
->version_number
);
350 ndr_print_uint16(ndr
, "period_of_statistics", r
->period_of_statistics
);
351 ndr_print_uint16(ndr
, "number_of_crcs", r
->number_of_crcs
);
352 ndr_print_uint16(ndr
, "number_alignment_errors", r
->number_alignment_errors
);
353 ndr_print_uint16(ndr
, "number_of_collisions", r
->number_of_collisions
);
354 ndr_print_uint16(ndr
, "number_send_aborts", r
->number_send_aborts
);
355 ndr_print_uint32(ndr
, "number_good_sends", r
->number_good_sends
);
356 ndr_print_uint32(ndr
, "number_good_receives", r
->number_good_receives
);
357 ndr_print_uint16(ndr
, "number_retransmits", r
->number_retransmits
);
358 ndr_print_uint16(ndr
, "number_no_resource_conditions", r
->number_no_resource_conditions
);
359 ndr_print_uint16(ndr
, "number_free_command_blocks", r
->number_free_command_blocks
);
360 ndr_print_uint16(ndr
, "total_number_command_blocks", r
->total_number_command_blocks
);
361 ndr_print_uint16(ndr
, "max_total_number_command_blocks", r
->max_total_number_command_blocks
);
362 ndr_print_uint16(ndr
, "number_pending_sessions", r
->number_pending_sessions
);
363 ndr_print_uint16(ndr
, "max_number_pending_sessions", r
->max_number_pending_sessions
);
364 ndr_print_uint16(ndr
, "max_total_sessions_possible", r
->max_total_sessions_possible
);
365 ndr_print_uint16(ndr
, "session_data_packet_size", r
->session_data_packet_size
);
369 static enum ndr_err_code
ndr_push_nbt_status_name(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_status_name
*r
)
371 if (ndr_flags
& NDR_SCALARS
) {
372 NDR_CHECK(ndr_push_align(ndr
, 2));
373 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->name
, 15, sizeof(uint8_t), CH_DOS
));
374 NDR_CHECK(ndr_push_nbt_name_type(ndr
, NDR_SCALARS
, r
->type
));
375 NDR_CHECK(ndr_push_nb_flags(ndr
, NDR_SCALARS
, r
->nb_flags
));
377 if (ndr_flags
& NDR_BUFFERS
) {
379 return NDR_ERR_SUCCESS
;
382 static enum ndr_err_code
ndr_pull_nbt_status_name(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_status_name
*r
)
384 if (ndr_flags
& NDR_SCALARS
) {
385 NDR_CHECK(ndr_pull_align(ndr
, 2));
386 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->name
, 15, sizeof(uint8_t), CH_DOS
));
387 NDR_CHECK(ndr_pull_nbt_name_type(ndr
, NDR_SCALARS
, &r
->type
));
388 NDR_CHECK(ndr_pull_nb_flags(ndr
, NDR_SCALARS
, &r
->nb_flags
));
390 if (ndr_flags
& NDR_BUFFERS
) {
392 return NDR_ERR_SUCCESS
;
395 _PUBLIC_
void ndr_print_nbt_status_name(struct ndr_print
*ndr
, const char *name
, const struct nbt_status_name
*r
)
397 ndr_print_struct(ndr
, name
, "nbt_status_name");
399 ndr_print_string(ndr
, "name", r
->name
);
400 ndr_print_nbt_name_type(ndr
, "type", r
->type
);
401 ndr_print_nb_flags(ndr
, "nb_flags", r
->nb_flags
);
405 static enum ndr_err_code
ndr_push_nbt_rdata_status(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_rdata_status
*r
)
407 uint32_t cntr_names_0
;
408 if (ndr_flags
& NDR_SCALARS
) {
409 NDR_CHECK(ndr_push_align(ndr
, 4));
410 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->num_names
* 18 + 47));
411 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->num_names
));
412 for (cntr_names_0
= 0; cntr_names_0
< r
->num_names
; cntr_names_0
++) {
413 NDR_CHECK(ndr_push_nbt_status_name(ndr
, NDR_SCALARS
, &r
->names
[cntr_names_0
]));
415 NDR_CHECK(ndr_push_nbt_statistics(ndr
, NDR_SCALARS
, &r
->statistics
));
417 if (ndr_flags
& NDR_BUFFERS
) {
419 return NDR_ERR_SUCCESS
;
422 static enum ndr_err_code
ndr_pull_nbt_rdata_status(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_rdata_status
*r
)
424 uint32_t cntr_names_0
;
425 TALLOC_CTX
*_mem_save_names_0
;
426 if (ndr_flags
& NDR_SCALARS
) {
427 NDR_CHECK(ndr_pull_align(ndr
, 4));
428 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->length
));
429 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->num_names
));
430 NDR_PULL_ALLOC_N(ndr
, r
->names
, r
->num_names
);
431 _mem_save_names_0
= NDR_PULL_GET_MEM_CTX(ndr
);
432 NDR_PULL_SET_MEM_CTX(ndr
, r
->names
, 0);
433 for (cntr_names_0
= 0; cntr_names_0
< r
->num_names
; cntr_names_0
++) {
434 NDR_CHECK(ndr_pull_nbt_status_name(ndr
, NDR_SCALARS
, &r
->names
[cntr_names_0
]));
436 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_names_0
, 0);
437 NDR_CHECK(ndr_pull_nbt_statistics(ndr
, NDR_SCALARS
, &r
->statistics
));
439 if (ndr_flags
& NDR_BUFFERS
) {
441 return NDR_ERR_SUCCESS
;
444 _PUBLIC_
void ndr_print_nbt_rdata_status(struct ndr_print
*ndr
, const char *name
, const struct nbt_rdata_status
*r
)
446 uint32_t cntr_names_0
;
447 ndr_print_struct(ndr
, name
, "nbt_rdata_status");
449 ndr_print_uint16(ndr
, "length", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?r
->num_names
* 18 + 47:r
->length
);
450 ndr_print_uint8(ndr
, "num_names", r
->num_names
);
451 ndr
->print(ndr
, "%s: ARRAY(%d)", "names", (int)r
->num_names
);
453 for (cntr_names_0
=0;cntr_names_0
<r
->num_names
;cntr_names_0
++) {
455 if (asprintf(&idx_0
, "[%d]", cntr_names_0
) != -1) {
456 ndr_print_nbt_status_name(ndr
, "names", &r
->names
[cntr_names_0
]);
461 ndr_print_nbt_statistics(ndr
, "statistics", &r
->statistics
);
465 static enum ndr_err_code
ndr_push_nbt_rdata_data(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_rdata_data
*r
)
467 if (ndr_flags
& NDR_SCALARS
) {
468 NDR_CHECK(ndr_push_align(ndr
, 2));
469 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->length
));
470 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->data
, r
->length
));
472 if (ndr_flags
& NDR_BUFFERS
) {
474 return NDR_ERR_SUCCESS
;
477 static enum ndr_err_code
ndr_pull_nbt_rdata_data(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_rdata_data
*r
)
479 if (ndr_flags
& NDR_SCALARS
) {
480 NDR_CHECK(ndr_pull_align(ndr
, 2));
481 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->length
));
482 NDR_PULL_ALLOC_N(ndr
, r
->data
, r
->length
);
483 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->data
, r
->length
));
485 if (ndr_flags
& NDR_BUFFERS
) {
487 return NDR_ERR_SUCCESS
;
490 _PUBLIC_
void ndr_print_nbt_rdata_data(struct ndr_print
*ndr
, const char *name
, const struct nbt_rdata_data
*r
)
492 ndr_print_struct(ndr
, name
, "nbt_rdata_data");
494 ndr_print_uint16(ndr
, "length", r
->length
);
495 ndr_print_array_uint8(ndr
, "data", r
->data
, r
->length
);
499 _PUBLIC_
enum ndr_err_code
ndr_push_nbt_rdata(struct ndr_push
*ndr
, int ndr_flags
, const union nbt_rdata
*r
)
501 if (ndr_flags
& NDR_SCALARS
) {
502 int level
= ndr_push_get_switch_value(ndr
, r
);
504 case NBT_QTYPE_NETBIOS
: {
505 NDR_CHECK(ndr_push_nbt_rdata_netbios(ndr
, NDR_SCALARS
, &r
->netbios
));
508 case NBT_QTYPE_STATUS
: {
509 NDR_CHECK(ndr_push_nbt_rdata_status(ndr
, NDR_SCALARS
, &r
->status
));
513 NDR_CHECK(ndr_push_nbt_rdata_data(ndr
, NDR_SCALARS
, &r
->data
));
518 if (ndr_flags
& NDR_BUFFERS
) {
519 int level
= ndr_push_get_switch_value(ndr
, r
);
521 case NBT_QTYPE_NETBIOS
:
524 case NBT_QTYPE_STATUS
:
532 return NDR_ERR_SUCCESS
;
535 _PUBLIC_
enum ndr_err_code
ndr_pull_nbt_rdata(struct ndr_pull
*ndr
, int ndr_flags
, union nbt_rdata
*r
)
538 level
= ndr_pull_get_switch_value(ndr
, r
);
539 if (ndr_flags
& NDR_SCALARS
) {
541 case NBT_QTYPE_NETBIOS
: {
542 NDR_CHECK(ndr_pull_nbt_rdata_netbios(ndr
, NDR_SCALARS
, &r
->netbios
));
545 case NBT_QTYPE_STATUS
: {
546 NDR_CHECK(ndr_pull_nbt_rdata_status(ndr
, NDR_SCALARS
, &r
->status
));
550 NDR_CHECK(ndr_pull_nbt_rdata_data(ndr
, NDR_SCALARS
, &r
->data
));
555 if (ndr_flags
& NDR_BUFFERS
) {
557 case NBT_QTYPE_NETBIOS
:
560 case NBT_QTYPE_STATUS
:
568 return NDR_ERR_SUCCESS
;
571 _PUBLIC_
void ndr_print_nbt_rdata(struct ndr_print
*ndr
, const char *name
, const union nbt_rdata
*r
)
574 level
= ndr_print_get_switch_value(ndr
, r
);
575 ndr_print_union(ndr
, name
, level
, "nbt_rdata");
577 case NBT_QTYPE_NETBIOS
:
578 ndr_print_nbt_rdata_netbios(ndr
, "netbios", &r
->netbios
);
581 case NBT_QTYPE_STATUS
:
582 ndr_print_nbt_rdata_status(ndr
, "status", &r
->status
);
586 ndr_print_nbt_rdata_data(ndr
, "data", &r
->data
);
592 static enum ndr_err_code
ndr_pull_nbt_res_rec(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_res_rec
*r
)
595 uint32_t _flags_save_STRUCT
= ndr
->flags
;
596 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
597 if (ndr_flags
& NDR_SCALARS
) {
598 NDR_CHECK(ndr_pull_align(ndr
, 4));
599 NDR_CHECK(ndr_pull_nbt_name(ndr
, NDR_SCALARS
, &r
->name
));
600 NDR_CHECK(ndr_pull_nbt_qtype(ndr
, NDR_SCALARS
, &r
->rr_type
));
601 NDR_CHECK(ndr_pull_nbt_qclass(ndr
, NDR_SCALARS
, &r
->rr_class
));
602 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->ttl
));
603 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->rdata
, r
->rr_type
));
604 NDR_CHECK(ndr_pull_nbt_rdata(ndr
, NDR_SCALARS
, &r
->rdata
));
606 if (ndr_flags
& NDR_BUFFERS
) {
608 ndr
->flags
= _flags_save_STRUCT
;
610 return NDR_ERR_SUCCESS
;
613 _PUBLIC_
void ndr_print_nbt_res_rec(struct ndr_print
*ndr
, const char *name
, const struct nbt_res_rec
*r
)
615 ndr_print_struct(ndr
, name
, "nbt_res_rec");
617 uint32_t _flags_save_STRUCT
= ndr
->flags
;
618 ndr_set_flags(&ndr
->flags
, LIBNDR_PRINT_ARRAY_HEX
);
620 ndr_print_nbt_name(ndr
, "name", &r
->name
);
621 ndr_print_nbt_qtype(ndr
, "rr_type", r
->rr_type
);
622 ndr_print_nbt_qclass(ndr
, "rr_class", r
->rr_class
);
623 ndr_print_uint32(ndr
, "ttl", r
->ttl
);
624 ndr_print_set_switch_value(ndr
, &r
->rdata
, r
->rr_type
);
625 ndr_print_nbt_rdata(ndr
, "rdata", &r
->rdata
);
627 ndr
->flags
= _flags_save_STRUCT
;
631 _PUBLIC_
enum ndr_err_code
ndr_push_nbt_name_packet(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_name_packet
*r
)
633 uint32_t cntr_questions_0
;
634 uint32_t cntr_answers_0
;
635 uint32_t cntr_nsrecs_0
;
636 uint32_t cntr_additional_0
;
638 uint32_t _flags_save_STRUCT
= ndr
->flags
;
639 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
|LIBNDR_FLAG_BIGENDIAN
|LIBNDR_PRINT_ARRAY_HEX
);
640 if (ndr_flags
& NDR_SCALARS
) {
641 NDR_CHECK(ndr_push_align(ndr
, 4));
642 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->name_trn_id
));
643 NDR_CHECK(ndr_push_nbt_operation(ndr
, NDR_SCALARS
, r
->operation
));
644 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->qdcount
));
645 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->ancount
));
646 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->nscount
));
647 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->arcount
));
648 for (cntr_questions_0
= 0; cntr_questions_0
< r
->qdcount
; cntr_questions_0
++) {
649 NDR_CHECK(ndr_push_nbt_name_question(ndr
, NDR_SCALARS
, &r
->questions
[cntr_questions_0
]));
651 for (cntr_answers_0
= 0; cntr_answers_0
< r
->ancount
; cntr_answers_0
++) {
652 NDR_CHECK(ndr_push_nbt_res_rec(ndr
, NDR_SCALARS
, &r
->answers
[cntr_answers_0
]));
654 for (cntr_nsrecs_0
= 0; cntr_nsrecs_0
< r
->nscount
; cntr_nsrecs_0
++) {
655 NDR_CHECK(ndr_push_nbt_res_rec(ndr
, NDR_SCALARS
, &r
->nsrecs
[cntr_nsrecs_0
]));
657 for (cntr_additional_0
= 0; cntr_additional_0
< r
->arcount
; cntr_additional_0
++) {
658 NDR_CHECK(ndr_push_nbt_res_rec(ndr
, NDR_SCALARS
, &r
->additional
[cntr_additional_0
]));
661 uint32_t _flags_save_DATA_BLOB
= ndr
->flags
;
662 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
663 NDR_CHECK(ndr_push_DATA_BLOB(ndr
, NDR_SCALARS
, r
->padding
));
664 ndr
->flags
= _flags_save_DATA_BLOB
;
667 if (ndr_flags
& NDR_BUFFERS
) {
669 ndr
->flags
= _flags_save_STRUCT
;
671 return NDR_ERR_SUCCESS
;
674 _PUBLIC_
enum ndr_err_code
ndr_pull_nbt_name_packet(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_name_packet
*r
)
676 uint32_t cntr_questions_0
;
677 TALLOC_CTX
*_mem_save_questions_0
;
678 uint32_t cntr_answers_0
;
679 TALLOC_CTX
*_mem_save_answers_0
;
680 uint32_t cntr_nsrecs_0
;
681 TALLOC_CTX
*_mem_save_nsrecs_0
;
682 uint32_t cntr_additional_0
;
683 TALLOC_CTX
*_mem_save_additional_0
;
685 uint32_t _flags_save_STRUCT
= ndr
->flags
;
686 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
|LIBNDR_FLAG_BIGENDIAN
|LIBNDR_PRINT_ARRAY_HEX
);
687 if (ndr_flags
& NDR_SCALARS
) {
688 NDR_CHECK(ndr_pull_align(ndr
, 4));
689 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->name_trn_id
));
690 NDR_CHECK(ndr_pull_nbt_operation(ndr
, NDR_SCALARS
, &r
->operation
));
691 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->qdcount
));
692 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->ancount
));
693 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->nscount
));
694 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->arcount
));
695 NDR_PULL_ALLOC_N(ndr
, r
->questions
, r
->qdcount
);
696 _mem_save_questions_0
= NDR_PULL_GET_MEM_CTX(ndr
);
697 NDR_PULL_SET_MEM_CTX(ndr
, r
->questions
, 0);
698 for (cntr_questions_0
= 0; cntr_questions_0
< r
->qdcount
; cntr_questions_0
++) {
699 NDR_CHECK(ndr_pull_nbt_name_question(ndr
, NDR_SCALARS
, &r
->questions
[cntr_questions_0
]));
701 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_questions_0
, 0);
702 NDR_PULL_ALLOC_N(ndr
, r
->answers
, r
->ancount
);
703 _mem_save_answers_0
= NDR_PULL_GET_MEM_CTX(ndr
);
704 NDR_PULL_SET_MEM_CTX(ndr
, r
->answers
, 0);
705 for (cntr_answers_0
= 0; cntr_answers_0
< r
->ancount
; cntr_answers_0
++) {
706 NDR_CHECK(ndr_pull_nbt_res_rec(ndr
, NDR_SCALARS
, &r
->answers
[cntr_answers_0
]));
708 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_answers_0
, 0);
709 NDR_PULL_ALLOC_N(ndr
, r
->nsrecs
, r
->nscount
);
710 _mem_save_nsrecs_0
= NDR_PULL_GET_MEM_CTX(ndr
);
711 NDR_PULL_SET_MEM_CTX(ndr
, r
->nsrecs
, 0);
712 for (cntr_nsrecs_0
= 0; cntr_nsrecs_0
< r
->nscount
; cntr_nsrecs_0
++) {
713 NDR_CHECK(ndr_pull_nbt_res_rec(ndr
, NDR_SCALARS
, &r
->nsrecs
[cntr_nsrecs_0
]));
715 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_nsrecs_0
, 0);
716 NDR_PULL_ALLOC_N(ndr
, r
->additional
, r
->arcount
);
717 _mem_save_additional_0
= NDR_PULL_GET_MEM_CTX(ndr
);
718 NDR_PULL_SET_MEM_CTX(ndr
, r
->additional
, 0);
719 for (cntr_additional_0
= 0; cntr_additional_0
< r
->arcount
; cntr_additional_0
++) {
720 NDR_CHECK(ndr_pull_nbt_res_rec(ndr
, NDR_SCALARS
, &r
->additional
[cntr_additional_0
]));
722 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_additional_0
, 0);
724 uint32_t _flags_save_DATA_BLOB
= ndr
->flags
;
725 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
726 NDR_CHECK(ndr_pull_DATA_BLOB(ndr
, NDR_SCALARS
, &r
->padding
));
727 ndr
->flags
= _flags_save_DATA_BLOB
;
730 if (ndr_flags
& NDR_BUFFERS
) {
732 ndr
->flags
= _flags_save_STRUCT
;
734 return NDR_ERR_SUCCESS
;
737 _PUBLIC_
void ndr_print_nbt_name_packet(struct ndr_print
*ndr
, const char *name
, const struct nbt_name_packet
*r
)
739 uint32_t cntr_questions_0
;
740 uint32_t cntr_answers_0
;
741 uint32_t cntr_nsrecs_0
;
742 uint32_t cntr_additional_0
;
743 ndr_print_struct(ndr
, name
, "nbt_name_packet");
745 uint32_t _flags_save_STRUCT
= ndr
->flags
;
746 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
|LIBNDR_FLAG_BIGENDIAN
|LIBNDR_PRINT_ARRAY_HEX
);
748 ndr_print_uint16(ndr
, "name_trn_id", r
->name_trn_id
);
749 ndr_print_nbt_operation(ndr
, "operation", r
->operation
);
750 ndr_print_uint16(ndr
, "qdcount", r
->qdcount
);
751 ndr_print_uint16(ndr
, "ancount", r
->ancount
);
752 ndr_print_uint16(ndr
, "nscount", r
->nscount
);
753 ndr_print_uint16(ndr
, "arcount", r
->arcount
);
754 ndr
->print(ndr
, "%s: ARRAY(%d)", "questions", (int)r
->qdcount
);
756 for (cntr_questions_0
=0;cntr_questions_0
<r
->qdcount
;cntr_questions_0
++) {
758 if (asprintf(&idx_0
, "[%d]", cntr_questions_0
) != -1) {
759 ndr_print_nbt_name_question(ndr
, "questions", &r
->questions
[cntr_questions_0
]);
764 ndr
->print(ndr
, "%s: ARRAY(%d)", "answers", (int)r
->ancount
);
766 for (cntr_answers_0
=0;cntr_answers_0
<r
->ancount
;cntr_answers_0
++) {
768 if (asprintf(&idx_0
, "[%d]", cntr_answers_0
) != -1) {
769 ndr_print_nbt_res_rec(ndr
, "answers", &r
->answers
[cntr_answers_0
]);
774 ndr
->print(ndr
, "%s: ARRAY(%d)", "nsrecs", (int)r
->nscount
);
776 for (cntr_nsrecs_0
=0;cntr_nsrecs_0
<r
->nscount
;cntr_nsrecs_0
++) {
778 if (asprintf(&idx_0
, "[%d]", cntr_nsrecs_0
) != -1) {
779 ndr_print_nbt_res_rec(ndr
, "nsrecs", &r
->nsrecs
[cntr_nsrecs_0
]);
784 ndr
->print(ndr
, "%s: ARRAY(%d)", "additional", (int)r
->arcount
);
786 for (cntr_additional_0
=0;cntr_additional_0
<r
->arcount
;cntr_additional_0
++) {
788 if (asprintf(&idx_0
, "[%d]", cntr_additional_0
) != -1) {
789 ndr_print_nbt_res_rec(ndr
, "additional", &r
->additional
[cntr_additional_0
]);
794 ndr_print_DATA_BLOB(ndr
, "padding", r
->padding
);
796 ndr
->flags
= _flags_save_STRUCT
;
800 static enum ndr_err_code
ndr_push_dgram_msg_type(struct ndr_push
*ndr
, int ndr_flags
, enum dgram_msg_type r
)
802 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
));
803 return NDR_ERR_SUCCESS
;
806 static enum ndr_err_code
ndr_pull_dgram_msg_type(struct ndr_pull
*ndr
, int ndr_flags
, enum dgram_msg_type
*r
)
809 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &v
));
811 return NDR_ERR_SUCCESS
;
814 _PUBLIC_
void ndr_print_dgram_msg_type(struct ndr_print
*ndr
, const char *name
, enum dgram_msg_type r
)
816 const char *val
= NULL
;
819 case DGRAM_DIRECT_UNIQUE
: val
= "DGRAM_DIRECT_UNIQUE"; break;
820 case DGRAM_DIRECT_GROUP
: val
= "DGRAM_DIRECT_GROUP"; break;
821 case DGRAM_BCAST
: val
= "DGRAM_BCAST"; break;
822 case DGRAM_ERROR
: val
= "DGRAM_ERROR"; break;
823 case DGRAM_QUERY
: val
= "DGRAM_QUERY"; break;
824 case DGRAM_QUERY_POSITIVE
: val
= "DGRAM_QUERY_POSITIVE"; break;
825 case DGRAM_QUERY_NEGATIVE
: val
= "DGRAM_QUERY_NEGATIVE"; break;
827 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
830 static enum ndr_err_code
ndr_push_dgram_flags(struct ndr_push
*ndr
, int ndr_flags
, uint8_t r
)
832 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
));
833 return NDR_ERR_SUCCESS
;
836 static enum ndr_err_code
ndr_pull_dgram_flags(struct ndr_pull
*ndr
, int ndr_flags
, uint8_t *r
)
839 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &v
));
841 return NDR_ERR_SUCCESS
;
844 _PUBLIC_
void ndr_print_dgram_flags(struct ndr_print
*ndr
, const char *name
, uint8_t r
)
846 ndr_print_uint8(ndr
, name
, r
);
848 ndr_print_bitmap_flag(ndr
, sizeof(uint8_t), "DGRAM_FLAG_MORE", DGRAM_FLAG_MORE
, r
);
849 ndr_print_bitmap_flag(ndr
, sizeof(uint8_t), "DGRAM_FLAG_FIRST", DGRAM_FLAG_FIRST
, r
);
850 ndr_print_bitmap_flag(ndr
, sizeof(uint8_t), "DGRAM_FLAG_NODE_TYPE", DGRAM_FLAG_NODE_TYPE
, r
);
854 static enum ndr_err_code
ndr_push_smb_command(struct ndr_push
*ndr
, int ndr_flags
, enum smb_command r
)
856 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
));
857 return NDR_ERR_SUCCESS
;
860 static enum ndr_err_code
ndr_pull_smb_command(struct ndr_pull
*ndr
, int ndr_flags
, enum smb_command
*r
)
863 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &v
));
865 return NDR_ERR_SUCCESS
;
868 _PUBLIC_
void ndr_print_smb_command(struct ndr_print
*ndr
, const char *name
, enum smb_command r
)
870 const char *val
= NULL
;
873 case SMB_TRANSACTION
: val
= "SMB_TRANSACTION"; break;
875 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
878 static enum ndr_err_code
ndr_push_smb_trans_body(struct ndr_push
*ndr
, int ndr_flags
, const struct smb_trans_body
*r
)
880 if (ndr_flags
& NDR_SCALARS
) {
881 NDR_CHECK(ndr_push_align(ndr
, 4));
882 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, 17));
883 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->total_param_count
));
884 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->total_data_count
));
885 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->max_param_count
));
886 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->max_data_count
));
887 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->max_setup_count
));
888 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->pad
));
889 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->trans_flags
));
890 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->timeout
));
891 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->reserved
));
892 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->param_count
));
893 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->param_offset
));
894 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->data_count
));
895 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->data_offset
));
896 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, 3));
897 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->pad2
));
898 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->opcode
));
899 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->priority
));
900 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->_class
));
901 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, strlen(r
->mailslot_name
) + 1 + r
->data
.length
));
903 uint32_t _flags_save_string
= ndr
->flags
;
904 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
905 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->mailslot_name
));
906 ndr
->flags
= _flags_save_string
;
909 uint32_t _flags_save_DATA_BLOB
= ndr
->flags
;
910 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
911 NDR_CHECK(ndr_push_DATA_BLOB(ndr
, NDR_SCALARS
, r
->data
));
912 ndr
->flags
= _flags_save_DATA_BLOB
;
915 if (ndr_flags
& NDR_BUFFERS
) {
917 return NDR_ERR_SUCCESS
;
920 static enum ndr_err_code
ndr_pull_smb_trans_body(struct ndr_pull
*ndr
, int ndr_flags
, struct smb_trans_body
*r
)
922 if (ndr_flags
& NDR_SCALARS
) {
923 NDR_CHECK(ndr_pull_align(ndr
, 4));
924 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->wct
));
925 if (r
->wct
< 17 || r
->wct
> 17) {
926 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
928 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->total_param_count
));
929 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->total_data_count
));
930 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->max_param_count
));
931 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->max_data_count
));
932 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->max_setup_count
));
933 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->pad
));
934 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->trans_flags
));
935 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->timeout
));
936 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->reserved
));
937 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->param_count
));
938 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->param_offset
));
939 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->data_count
));
940 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->data_offset
));
941 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->setup_count
));
942 if (r
->setup_count
< 3 || r
->setup_count
> 3) {
943 return ndr_pull_error(ndr
, NDR_ERR_RANGE
, "value out of range");
945 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->pad2
));
946 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->opcode
));
947 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->priority
));
948 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->_class
));
949 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->byte_count
));
951 uint32_t _flags_save_string
= ndr
->flags
;
952 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
953 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->mailslot_name
));
954 ndr
->flags
= _flags_save_string
;
957 uint32_t _flags_save_DATA_BLOB
= ndr
->flags
;
958 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
959 NDR_CHECK(ndr_pull_DATA_BLOB(ndr
, NDR_SCALARS
, &r
->data
));
960 ndr
->flags
= _flags_save_DATA_BLOB
;
963 if (ndr_flags
& NDR_BUFFERS
) {
965 return NDR_ERR_SUCCESS
;
968 _PUBLIC_
void ndr_print_smb_trans_body(struct ndr_print
*ndr
, const char *name
, const struct smb_trans_body
*r
)
970 ndr_print_struct(ndr
, name
, "smb_trans_body");
972 ndr_print_uint8(ndr
, "wct", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?17:r
->wct
);
973 ndr_print_uint16(ndr
, "total_param_count", r
->total_param_count
);
974 ndr_print_uint16(ndr
, "total_data_count", r
->total_data_count
);
975 ndr_print_uint16(ndr
, "max_param_count", r
->max_param_count
);
976 ndr_print_uint16(ndr
, "max_data_count", r
->max_data_count
);
977 ndr_print_uint8(ndr
, "max_setup_count", r
->max_setup_count
);
978 ndr_print_uint8(ndr
, "pad", r
->pad
);
979 ndr_print_uint16(ndr
, "trans_flags", r
->trans_flags
);
980 ndr_print_uint32(ndr
, "timeout", r
->timeout
);
981 ndr_print_uint16(ndr
, "reserved", r
->reserved
);
982 ndr_print_uint16(ndr
, "param_count", r
->param_count
);
983 ndr_print_uint16(ndr
, "param_offset", r
->param_offset
);
984 ndr_print_uint16(ndr
, "data_count", r
->data_count
);
985 ndr_print_uint16(ndr
, "data_offset", r
->data_offset
);
986 ndr_print_uint8(ndr
, "setup_count", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?3:r
->setup_count
);
987 ndr_print_uint8(ndr
, "pad2", r
->pad2
);
988 ndr_print_uint16(ndr
, "opcode", r
->opcode
);
989 ndr_print_uint16(ndr
, "priority", r
->priority
);
990 ndr_print_uint16(ndr
, "_class", r
->_class
);
991 ndr_print_uint16(ndr
, "byte_count", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?strlen(r
->mailslot_name
) + 1 + r
->data
.length
:r
->byte_count
);
992 ndr_print_string(ndr
, "mailslot_name", r
->mailslot_name
);
993 ndr_print_DATA_BLOB(ndr
, "data", r
->data
);
997 static enum ndr_err_code
ndr_push_smb_body(struct ndr_push
*ndr
, int ndr_flags
, const union smb_body
*r
)
999 if (ndr_flags
& NDR_SCALARS
) {
1000 int level
= ndr_push_get_switch_value(ndr
, r
);
1002 case SMB_TRANSACTION
: {
1003 NDR_CHECK(ndr_push_smb_trans_body(ndr
, NDR_SCALARS
, &r
->trans
));
1007 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
1010 if (ndr_flags
& NDR_BUFFERS
) {
1011 int level
= ndr_push_get_switch_value(ndr
, r
);
1013 case SMB_TRANSACTION
:
1017 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
1020 return NDR_ERR_SUCCESS
;
1023 static enum ndr_err_code
ndr_pull_smb_body(struct ndr_pull
*ndr
, int ndr_flags
, union smb_body
*r
)
1026 level
= ndr_pull_get_switch_value(ndr
, r
);
1027 if (ndr_flags
& NDR_SCALARS
) {
1029 case SMB_TRANSACTION
: {
1030 NDR_CHECK(ndr_pull_smb_trans_body(ndr
, NDR_SCALARS
, &r
->trans
));
1034 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
1037 if (ndr_flags
& NDR_BUFFERS
) {
1039 case SMB_TRANSACTION
:
1043 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
1046 return NDR_ERR_SUCCESS
;
1049 _PUBLIC_
void ndr_print_smb_body(struct ndr_print
*ndr
, const char *name
, const union smb_body
*r
)
1052 level
= ndr_print_get_switch_value(ndr
, r
);
1053 ndr_print_union(ndr
, name
, level
, "smb_body");
1055 case SMB_TRANSACTION
:
1056 ndr_print_smb_trans_body(ndr
, "trans", &r
->trans
);
1060 ndr_print_bad_level(ndr
, name
, level
);
1064 _PUBLIC_
enum ndr_err_code
ndr_push_dgram_smb_packet(struct ndr_push
*ndr
, int ndr_flags
, const struct dgram_smb_packet
*r
)
1067 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1068 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
|LIBNDR_FLAG_LITTLE_ENDIAN
|LIBNDR_PRINT_ARRAY_HEX
);
1069 if (ndr_flags
& NDR_SCALARS
) {
1070 NDR_CHECK(ndr_push_align(ndr
, 4));
1071 NDR_CHECK(ndr_push_smb_command(ndr
, NDR_SCALARS
, r
->smb_command
));
1072 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->err_class
));
1073 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->pad
));
1074 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->err_code
));
1075 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->flags
));
1076 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->flags2
));
1077 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->pid_high
));
1078 NDR_CHECK(ndr_push_array_uint8(ndr
, NDR_SCALARS
, r
->signature
, 8));
1079 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->reserved
));
1080 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->tid
));
1081 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->pid
));
1082 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->vuid
));
1083 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->mid
));
1084 NDR_CHECK(ndr_push_set_switch_value(ndr
, &r
->body
, r
->smb_command
));
1085 NDR_CHECK(ndr_push_smb_body(ndr
, NDR_SCALARS
, &r
->body
));
1087 if (ndr_flags
& NDR_BUFFERS
) {
1089 ndr
->flags
= _flags_save_STRUCT
;
1091 return NDR_ERR_SUCCESS
;
1094 _PUBLIC_
enum ndr_err_code
ndr_pull_dgram_smb_packet(struct ndr_pull
*ndr
, int ndr_flags
, struct dgram_smb_packet
*r
)
1097 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1098 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
|LIBNDR_FLAG_LITTLE_ENDIAN
|LIBNDR_PRINT_ARRAY_HEX
);
1099 if (ndr_flags
& NDR_SCALARS
) {
1100 NDR_CHECK(ndr_pull_align(ndr
, 4));
1101 NDR_CHECK(ndr_pull_smb_command(ndr
, NDR_SCALARS
, &r
->smb_command
));
1102 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->err_class
));
1103 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->pad
));
1104 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->err_code
));
1105 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->flags
));
1106 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->flags2
));
1107 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->pid_high
));
1108 NDR_CHECK(ndr_pull_array_uint8(ndr
, NDR_SCALARS
, r
->signature
, 8));
1109 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->reserved
));
1110 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->tid
));
1111 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->pid
));
1112 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->vuid
));
1113 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->mid
));
1114 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->body
, r
->smb_command
));
1115 NDR_CHECK(ndr_pull_smb_body(ndr
, NDR_SCALARS
, &r
->body
));
1117 if (ndr_flags
& NDR_BUFFERS
) {
1119 ndr
->flags
= _flags_save_STRUCT
;
1121 return NDR_ERR_SUCCESS
;
1124 _PUBLIC_
void ndr_print_dgram_smb_packet(struct ndr_print
*ndr
, const char *name
, const struct dgram_smb_packet
*r
)
1126 ndr_print_struct(ndr
, name
, "dgram_smb_packet");
1128 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1129 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
|LIBNDR_FLAG_LITTLE_ENDIAN
|LIBNDR_PRINT_ARRAY_HEX
);
1131 ndr_print_smb_command(ndr
, "smb_command", r
->smb_command
);
1132 ndr_print_uint8(ndr
, "err_class", r
->err_class
);
1133 ndr_print_uint8(ndr
, "pad", r
->pad
);
1134 ndr_print_uint16(ndr
, "err_code", r
->err_code
);
1135 ndr_print_uint8(ndr
, "flags", r
->flags
);
1136 ndr_print_uint16(ndr
, "flags2", r
->flags2
);
1137 ndr_print_uint16(ndr
, "pid_high", r
->pid_high
);
1138 ndr_print_array_uint8(ndr
, "signature", r
->signature
, 8);
1139 ndr_print_uint16(ndr
, "reserved", r
->reserved
);
1140 ndr_print_uint16(ndr
, "tid", r
->tid
);
1141 ndr_print_uint16(ndr
, "pid", r
->pid
);
1142 ndr_print_uint16(ndr
, "vuid", r
->vuid
);
1143 ndr_print_uint16(ndr
, "mid", r
->mid
);
1144 ndr_print_set_switch_value(ndr
, &r
->body
, r
->smb_command
);
1145 ndr_print_smb_body(ndr
, "body", &r
->body
);
1147 ndr
->flags
= _flags_save_STRUCT
;
1151 static enum ndr_err_code
ndr_push_dgram_message_body(struct ndr_push
*ndr
, int ndr_flags
, const union dgram_message_body
*r
)
1153 if (ndr_flags
& NDR_SCALARS
) {
1154 int level
= ndr_push_get_switch_value(ndr
, r
);
1157 NDR_CHECK(ndr_push_dgram_smb_packet(ndr
, NDR_SCALARS
, &r
->smb
));
1161 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
1164 if (ndr_flags
& NDR_BUFFERS
) {
1165 int level
= ndr_push_get_switch_value(ndr
, r
);
1171 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
1174 return NDR_ERR_SUCCESS
;
1177 static enum ndr_err_code
ndr_pull_dgram_message_body(struct ndr_pull
*ndr
, int ndr_flags
, union dgram_message_body
*r
)
1180 level
= ndr_pull_get_switch_value(ndr
, r
);
1181 if (ndr_flags
& NDR_SCALARS
) {
1184 NDR_CHECK(ndr_pull_dgram_smb_packet(ndr
, NDR_SCALARS
, &r
->smb
));
1188 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
1191 if (ndr_flags
& NDR_BUFFERS
) {
1197 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
1200 return NDR_ERR_SUCCESS
;
1203 _PUBLIC_
void ndr_print_dgram_message_body(struct ndr_print
*ndr
, const char *name
, const union dgram_message_body
*r
)
1206 level
= ndr_print_get_switch_value(ndr
, r
);
1207 ndr_print_union(ndr
, name
, level
, "dgram_message_body");
1210 ndr_print_dgram_smb_packet(ndr
, "smb", &r
->smb
);
1214 ndr_print_bad_level(ndr
, name
, level
);
1218 static enum ndr_err_code
ndr_push_dgram_message(struct ndr_push
*ndr
, int ndr_flags
, const struct dgram_message
*r
)
1220 if (ndr_flags
& NDR_SCALARS
) {
1221 NDR_CHECK(ndr_push_align(ndr
, 4));
1222 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->length
));
1223 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->offset
));
1224 NDR_CHECK(ndr_push_nbt_name(ndr
, NDR_SCALARS
, &r
->source_name
));
1225 NDR_CHECK(ndr_push_nbt_name(ndr
, NDR_SCALARS
, &r
->dest_name
));
1226 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->dgram_body_type
));
1227 NDR_CHECK(ndr_push_set_switch_value(ndr
, &r
->body
, r
->dgram_body_type
));
1228 NDR_CHECK(ndr_push_dgram_message_body(ndr
, NDR_SCALARS
, &r
->body
));
1230 if (ndr_flags
& NDR_BUFFERS
) {
1232 return NDR_ERR_SUCCESS
;
1235 static enum ndr_err_code
ndr_pull_dgram_message(struct ndr_pull
*ndr
, int ndr_flags
, struct dgram_message
*r
)
1237 if (ndr_flags
& NDR_SCALARS
) {
1238 NDR_CHECK(ndr_pull_align(ndr
, 4));
1239 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->length
));
1240 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->offset
));
1241 NDR_CHECK(ndr_pull_nbt_name(ndr
, NDR_SCALARS
, &r
->source_name
));
1242 NDR_CHECK(ndr_pull_nbt_name(ndr
, NDR_SCALARS
, &r
->dest_name
));
1243 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->dgram_body_type
));
1244 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->body
, r
->dgram_body_type
));
1245 NDR_CHECK(ndr_pull_dgram_message_body(ndr
, NDR_SCALARS
, &r
->body
));
1247 if (ndr_flags
& NDR_BUFFERS
) {
1249 return NDR_ERR_SUCCESS
;
1252 _PUBLIC_
void ndr_print_dgram_message(struct ndr_print
*ndr
, const char *name
, const struct dgram_message
*r
)
1254 ndr_print_struct(ndr
, name
, "dgram_message");
1256 ndr_print_uint16(ndr
, "length", r
->length
);
1257 ndr_print_uint16(ndr
, "offset", r
->offset
);
1258 ndr_print_nbt_name(ndr
, "source_name", &r
->source_name
);
1259 ndr_print_nbt_name(ndr
, "dest_name", &r
->dest_name
);
1260 ndr_print_uint32(ndr
, "dgram_body_type", r
->dgram_body_type
);
1261 ndr_print_set_switch_value(ndr
, &r
->body
, r
->dgram_body_type
);
1262 ndr_print_dgram_message_body(ndr
, "body", &r
->body
);
1266 static enum ndr_err_code
ndr_push_dgram_err_code(struct ndr_push
*ndr
, int ndr_flags
, enum dgram_err_code r
)
1268 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
));
1269 return NDR_ERR_SUCCESS
;
1272 static enum ndr_err_code
ndr_pull_dgram_err_code(struct ndr_pull
*ndr
, int ndr_flags
, enum dgram_err_code
*r
)
1275 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &v
));
1277 return NDR_ERR_SUCCESS
;
1280 _PUBLIC_
void ndr_print_dgram_err_code(struct ndr_print
*ndr
, const char *name
, enum dgram_err_code r
)
1282 const char *val
= NULL
;
1285 case DGRAM_ERROR_NAME_NOT_PRESENT
: val
= "DGRAM_ERROR_NAME_NOT_PRESENT"; break;
1286 case DGRAM_ERROR_INVALID_SOURCE
: val
= "DGRAM_ERROR_INVALID_SOURCE"; break;
1287 case DGRAM_ERROR_INVALID_DEST
: val
= "DGRAM_ERROR_INVALID_DEST"; break;
1289 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
1292 static enum ndr_err_code
ndr_push_dgram_data(struct ndr_push
*ndr
, int ndr_flags
, const union dgram_data
*r
)
1294 if (ndr_flags
& NDR_SCALARS
) {
1295 int level
= ndr_push_get_switch_value(ndr
, r
);
1297 case DGRAM_DIRECT_UNIQUE
: {
1298 NDR_CHECK(ndr_push_dgram_message(ndr
, NDR_SCALARS
, &r
->msg
));
1301 case DGRAM_DIRECT_GROUP
: {
1302 NDR_CHECK(ndr_push_dgram_message(ndr
, NDR_SCALARS
, &r
->msg
));
1306 NDR_CHECK(ndr_push_dgram_message(ndr
, NDR_SCALARS
, &r
->msg
));
1310 NDR_CHECK(ndr_push_dgram_err_code(ndr
, NDR_SCALARS
, r
->error
));
1314 NDR_CHECK(ndr_push_nbt_name(ndr
, NDR_SCALARS
, &r
->dest_name
));
1317 case DGRAM_QUERY_POSITIVE
: {
1318 NDR_CHECK(ndr_push_nbt_name(ndr
, NDR_SCALARS
, &r
->dest_name
));
1321 case DGRAM_QUERY_NEGATIVE
: {
1322 NDR_CHECK(ndr_push_nbt_name(ndr
, NDR_SCALARS
, &r
->dest_name
));
1326 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
1329 if (ndr_flags
& NDR_BUFFERS
) {
1330 int level
= ndr_push_get_switch_value(ndr
, r
);
1332 case DGRAM_DIRECT_UNIQUE
:
1335 case DGRAM_DIRECT_GROUP
:
1347 case DGRAM_QUERY_POSITIVE
:
1350 case DGRAM_QUERY_NEGATIVE
:
1354 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
1357 return NDR_ERR_SUCCESS
;
1360 static enum ndr_err_code
ndr_pull_dgram_data(struct ndr_pull
*ndr
, int ndr_flags
, union dgram_data
*r
)
1363 level
= ndr_pull_get_switch_value(ndr
, r
);
1364 if (ndr_flags
& NDR_SCALARS
) {
1366 case DGRAM_DIRECT_UNIQUE
: {
1367 NDR_CHECK(ndr_pull_dgram_message(ndr
, NDR_SCALARS
, &r
->msg
));
1370 case DGRAM_DIRECT_GROUP
: {
1371 NDR_CHECK(ndr_pull_dgram_message(ndr
, NDR_SCALARS
, &r
->msg
));
1375 NDR_CHECK(ndr_pull_dgram_message(ndr
, NDR_SCALARS
, &r
->msg
));
1379 NDR_CHECK(ndr_pull_dgram_err_code(ndr
, NDR_SCALARS
, &r
->error
));
1383 NDR_CHECK(ndr_pull_nbt_name(ndr
, NDR_SCALARS
, &r
->dest_name
));
1386 case DGRAM_QUERY_POSITIVE
: {
1387 NDR_CHECK(ndr_pull_nbt_name(ndr
, NDR_SCALARS
, &r
->dest_name
));
1390 case DGRAM_QUERY_NEGATIVE
: {
1391 NDR_CHECK(ndr_pull_nbt_name(ndr
, NDR_SCALARS
, &r
->dest_name
));
1395 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
1398 if (ndr_flags
& NDR_BUFFERS
) {
1400 case DGRAM_DIRECT_UNIQUE
:
1403 case DGRAM_DIRECT_GROUP
:
1415 case DGRAM_QUERY_POSITIVE
:
1418 case DGRAM_QUERY_NEGATIVE
:
1422 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
1425 return NDR_ERR_SUCCESS
;
1428 _PUBLIC_
void ndr_print_dgram_data(struct ndr_print
*ndr
, const char *name
, const union dgram_data
*r
)
1431 level
= ndr_print_get_switch_value(ndr
, r
);
1432 ndr_print_union(ndr
, name
, level
, "dgram_data");
1434 case DGRAM_DIRECT_UNIQUE
:
1435 ndr_print_dgram_message(ndr
, "msg", &r
->msg
);
1438 case DGRAM_DIRECT_GROUP
:
1439 ndr_print_dgram_message(ndr
, "msg", &r
->msg
);
1443 ndr_print_dgram_message(ndr
, "msg", &r
->msg
);
1447 ndr_print_dgram_err_code(ndr
, "error", r
->error
);
1451 ndr_print_nbt_name(ndr
, "dest_name", &r
->dest_name
);
1454 case DGRAM_QUERY_POSITIVE
:
1455 ndr_print_nbt_name(ndr
, "dest_name", &r
->dest_name
);
1458 case DGRAM_QUERY_NEGATIVE
:
1459 ndr_print_nbt_name(ndr
, "dest_name", &r
->dest_name
);
1463 ndr_print_bad_level(ndr
, name
, level
);
1467 _PUBLIC_
enum ndr_err_code
ndr_push_nbt_dgram_packet(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_dgram_packet
*r
)
1470 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1471 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
|LIBNDR_FLAG_BIGENDIAN
|LIBNDR_PRINT_ARRAY_HEX
);
1472 if (ndr_flags
& NDR_SCALARS
) {
1473 NDR_CHECK(ndr_push_align(ndr
, 4));
1474 NDR_CHECK(ndr_push_dgram_msg_type(ndr
, NDR_SCALARS
, r
->msg_type
));
1475 NDR_CHECK(ndr_push_dgram_flags(ndr
, NDR_SCALARS
, r
->flags
));
1476 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->dgram_id
));
1477 NDR_CHECK(ndr_push_ipv4address(ndr
, NDR_SCALARS
, r
->src_addr
));
1478 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->src_port
));
1479 NDR_CHECK(ndr_push_set_switch_value(ndr
, &r
->data
, r
->msg_type
));
1480 NDR_CHECK(ndr_push_dgram_data(ndr
, NDR_SCALARS
, &r
->data
));
1482 if (ndr_flags
& NDR_BUFFERS
) {
1484 ndr
->flags
= _flags_save_STRUCT
;
1486 return NDR_ERR_SUCCESS
;
1489 _PUBLIC_
enum ndr_err_code
ndr_pull_nbt_dgram_packet(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_dgram_packet
*r
)
1492 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1493 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
|LIBNDR_FLAG_BIGENDIAN
|LIBNDR_PRINT_ARRAY_HEX
);
1494 if (ndr_flags
& NDR_SCALARS
) {
1495 NDR_CHECK(ndr_pull_align(ndr
, 4));
1496 NDR_CHECK(ndr_pull_dgram_msg_type(ndr
, NDR_SCALARS
, &r
->msg_type
));
1497 NDR_CHECK(ndr_pull_dgram_flags(ndr
, NDR_SCALARS
, &r
->flags
));
1498 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->dgram_id
));
1499 NDR_CHECK(ndr_pull_ipv4address(ndr
, NDR_SCALARS
, &r
->src_addr
));
1500 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->src_port
));
1501 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->data
, r
->msg_type
));
1502 NDR_CHECK(ndr_pull_dgram_data(ndr
, NDR_SCALARS
, &r
->data
));
1504 if (ndr_flags
& NDR_BUFFERS
) {
1506 ndr
->flags
= _flags_save_STRUCT
;
1508 return NDR_ERR_SUCCESS
;
1511 _PUBLIC_
void ndr_print_nbt_dgram_packet(struct ndr_print
*ndr
, const char *name
, const struct nbt_dgram_packet
*r
)
1513 ndr_print_struct(ndr
, name
, "nbt_dgram_packet");
1515 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1516 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
|LIBNDR_FLAG_BIGENDIAN
|LIBNDR_PRINT_ARRAY_HEX
);
1518 ndr_print_dgram_msg_type(ndr
, "msg_type", r
->msg_type
);
1519 ndr_print_dgram_flags(ndr
, "flags", r
->flags
);
1520 ndr_print_uint16(ndr
, "dgram_id", r
->dgram_id
);
1521 ndr_print_ipv4address(ndr
, "src_addr", r
->src_addr
);
1522 ndr_print_uint16(ndr
, "src_port", r
->src_port
);
1523 ndr_print_set_switch_value(ndr
, &r
->data
, r
->msg_type
);
1524 ndr_print_dgram_data(ndr
, "data", &r
->data
);
1526 ndr
->flags
= _flags_save_STRUCT
;
1530 _PUBLIC_
enum ndr_err_code
ndr_push_nbt_sockaddr(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_sockaddr
*r
)
1532 if (ndr_flags
& NDR_SCALARS
) {
1533 NDR_CHECK(ndr_push_align(ndr
, 4));
1534 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->sa_family
));
1536 uint32_t _flags_save_ipv4address
= ndr
->flags
;
1537 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_BIGENDIAN
);
1538 NDR_CHECK(ndr_push_ipv4address(ndr
, NDR_SCALARS
, r
->pdc_ip
));
1539 ndr
->flags
= _flags_save_ipv4address
;
1542 uint32_t _flags_save_DATA_BLOB
= ndr
->flags
;
1543 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1544 NDR_CHECK(ndr_push_DATA_BLOB(ndr
, NDR_SCALARS
, r
->remaining
));
1545 ndr
->flags
= _flags_save_DATA_BLOB
;
1548 if (ndr_flags
& NDR_BUFFERS
) {
1550 return NDR_ERR_SUCCESS
;
1553 _PUBLIC_
enum ndr_err_code
ndr_pull_nbt_sockaddr(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_sockaddr
*r
)
1555 if (ndr_flags
& NDR_SCALARS
) {
1556 NDR_CHECK(ndr_pull_align(ndr
, 4));
1557 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->sa_family
));
1559 uint32_t _flags_save_ipv4address
= ndr
->flags
;
1560 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_BIGENDIAN
);
1561 NDR_CHECK(ndr_pull_ipv4address(ndr
, NDR_SCALARS
, &r
->pdc_ip
));
1562 ndr
->flags
= _flags_save_ipv4address
;
1565 uint32_t _flags_save_DATA_BLOB
= ndr
->flags
;
1566 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_REMAINING
);
1567 NDR_CHECK(ndr_pull_DATA_BLOB(ndr
, NDR_SCALARS
, &r
->remaining
));
1568 ndr
->flags
= _flags_save_DATA_BLOB
;
1571 if (ndr_flags
& NDR_BUFFERS
) {
1573 return NDR_ERR_SUCCESS
;
1576 _PUBLIC_
void ndr_print_nbt_sockaddr(struct ndr_print
*ndr
, const char *name
, const struct nbt_sockaddr
*r
)
1578 ndr_print_struct(ndr
, name
, "nbt_sockaddr");
1580 ndr_print_uint32(ndr
, "sa_family", r
->sa_family
);
1581 ndr_print_ipv4address(ndr
, "pdc_ip", r
->pdc_ip
);
1582 ndr_print_DATA_BLOB(ndr
, "remaining", r
->remaining
);
1586 _PUBLIC_
size_t ndr_size_nbt_sockaddr(const struct nbt_sockaddr
*r
, int flags
)
1588 return ndr_size_struct(r
, flags
, (ndr_push_flags_fn_t
)ndr_push_nbt_sockaddr
);
1591 _PUBLIC_
enum ndr_err_code
ndr_push_nbt_server_type(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
1593 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
1594 return NDR_ERR_SUCCESS
;
1597 _PUBLIC_
enum ndr_err_code
ndr_pull_nbt_server_type(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
1600 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
1602 return NDR_ERR_SUCCESS
;
1605 _PUBLIC_
void ndr_print_nbt_server_type(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
1607 ndr_print_uint32(ndr
, name
, r
);
1609 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NBT_SERVER_PDC", NBT_SERVER_PDC
, r
);
1610 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NBT_SERVER_GC", NBT_SERVER_GC
, r
);
1611 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NBT_SERVER_LDAP", NBT_SERVER_LDAP
, r
);
1612 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NBT_SERVER_DS", NBT_SERVER_DS
, r
);
1613 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NBT_SERVER_KDC", NBT_SERVER_KDC
, r
);
1614 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NBT_SERVER_TIMESERV", NBT_SERVER_TIMESERV
, r
);
1615 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NBT_SERVER_CLOSEST", NBT_SERVER_CLOSEST
, r
);
1616 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NBT_SERVER_WRITABLE", NBT_SERVER_WRITABLE
, r
);
1617 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NBT_SERVER_GOOD_TIMESERV", NBT_SERVER_GOOD_TIMESERV
, r
);
1618 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NBT_SERVER_NDNC", NBT_SERVER_NDNC
, r
);
1619 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NBT_SERVER_SELECT_SECRET_DOMAIN_6", NBT_SERVER_SELECT_SECRET_DOMAIN_6
, r
);
1620 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NBT_SERVER_FULL_SECRET_DOMAIN_6", NBT_SERVER_FULL_SECRET_DOMAIN_6
, r
);
1624 _PUBLIC_
enum ndr_err_code
ndr_push_netlogon_nt_version_flags(struct ndr_push
*ndr
, int ndr_flags
, uint32_t r
)
1626 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
));
1627 return NDR_ERR_SUCCESS
;
1630 _PUBLIC_
enum ndr_err_code
ndr_pull_netlogon_nt_version_flags(struct ndr_pull
*ndr
, int ndr_flags
, uint32_t *r
)
1633 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &v
));
1635 return NDR_ERR_SUCCESS
;
1638 _PUBLIC_
void ndr_print_netlogon_nt_version_flags(struct ndr_print
*ndr
, const char *name
, uint32_t r
)
1640 ndr_print_uint32(ndr
, name
, r
);
1642 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NETLOGON_NT_VERSION_1", NETLOGON_NT_VERSION_1
, r
);
1643 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NETLOGON_NT_VERSION_5", NETLOGON_NT_VERSION_5
, r
);
1644 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NETLOGON_NT_VERSION_5EX", NETLOGON_NT_VERSION_5EX
, r
);
1645 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NETLOGON_NT_VERSION_5EX_WITH_IP", NETLOGON_NT_VERSION_5EX_WITH_IP
, r
);
1646 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NETLOGON_NT_VERSION_WITH_CLOSEST_SITE", NETLOGON_NT_VERSION_WITH_CLOSEST_SITE
, r
);
1647 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NETLOGON_NT_VERSION_AVIOD_NT4EMUL", NETLOGON_NT_VERSION_AVIOD_NT4EMUL
, r
);
1648 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NETLOGON_NT_VERSION_PDC", NETLOGON_NT_VERSION_PDC
, r
);
1649 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NETLOGON_NT_VERSION_IP", NETLOGON_NT_VERSION_IP
, r
);
1650 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NETLOGON_NT_VERSION_LOCAL", NETLOGON_NT_VERSION_LOCAL
, r
);
1651 ndr_print_bitmap_flag(ndr
, sizeof(uint32_t), "NETLOGON_NT_VERSION_GC", NETLOGON_NT_VERSION_GC
, r
);
1655 _PUBLIC_
enum ndr_err_code
ndr_push_netlogon_command(struct ndr_push
*ndr
, int ndr_flags
, enum netlogon_command r
)
1657 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
));
1658 return NDR_ERR_SUCCESS
;
1661 _PUBLIC_
enum ndr_err_code
ndr_pull_netlogon_command(struct ndr_pull
*ndr
, int ndr_flags
, enum netlogon_command
*r
)
1664 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &v
));
1666 return NDR_ERR_SUCCESS
;
1669 _PUBLIC_
void ndr_print_netlogon_command(struct ndr_print
*ndr
, const char *name
, enum netlogon_command r
)
1671 const char *val
= NULL
;
1674 case LOGON_PRIMARY_QUERY
: val
= "LOGON_PRIMARY_QUERY"; break;
1675 case NETLOGON_ANNOUNCE_UAS
: val
= "NETLOGON_ANNOUNCE_UAS"; break;
1676 case NETLOGON_RESPONSE_FROM_PDC
: val
= "NETLOGON_RESPONSE_FROM_PDC"; break;
1677 case LOGON_SAM_LOGON_REQUEST
: val
= "LOGON_SAM_LOGON_REQUEST"; break;
1678 case LOGON_SAM_LOGON_RESPONSE
: val
= "LOGON_SAM_LOGON_RESPONSE"; break;
1679 case LOGON_SAM_LOGON_PAUSE_RESPONSE
: val
= "LOGON_SAM_LOGON_PAUSE_RESPONSE"; break;
1680 case LOGON_SAM_LOGON_USER_UNKNOWN
: val
= "LOGON_SAM_LOGON_USER_UNKNOWN"; break;
1681 case LOGON_SAM_LOGON_RESPONSE_EX
: val
= "LOGON_SAM_LOGON_RESPONSE_EX"; break;
1682 case LOGON_SAM_LOGON_PAUSE_RESPONSE_EX
: val
= "LOGON_SAM_LOGON_PAUSE_RESPONSE_EX"; break;
1683 case LOGON_SAM_LOGON_USER_UNKNOWN_EX
: val
= "LOGON_SAM_LOGON_USER_UNKNOWN_EX"; break;
1685 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
1688 _PUBLIC_
void ndr_print_NETLOGON_SAM_LOGON_REQUEST(struct ndr_print
*ndr
, const char *name
, const struct NETLOGON_SAM_LOGON_REQUEST
*r
)
1690 ndr_print_struct(ndr
, name
, "NETLOGON_SAM_LOGON_REQUEST");
1692 ndr_print_uint16(ndr
, "request_count", r
->request_count
);
1693 ndr_print_string(ndr
, "computer_name", r
->computer_name
);
1694 ndr_print_string(ndr
, "user_name", r
->user_name
);
1695 ndr_print_string(ndr
, "mailslot_name", r
->mailslot_name
);
1696 ndr_print_samr_AcctFlags(ndr
, "acct_control", r
->acct_control
);
1697 ndr_print_uint32(ndr
, "sid_size", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?ndr_size_dom_sid0(&r
->sid
, ndr
->flags
):r
->sid_size
);
1698 ndr_print_DATA_BLOB(ndr
, "_pad", r
->_pad
);
1699 ndr_print_dom_sid0(ndr
, "sid", &r
->sid
);
1700 ndr_print_netlogon_nt_version_flags(ndr
, "nt_version", r
->nt_version
);
1701 ndr_print_uint16(ndr
, "lmnt_token", r
->lmnt_token
);
1702 ndr_print_uint16(ndr
, "lm20_token", r
->lm20_token
);
1706 _PUBLIC_
enum ndr_err_code
ndr_push_NETLOGON_SAM_LOGON_RESPONSE_NT40(struct ndr_push
*ndr
, int ndr_flags
, const struct NETLOGON_SAM_LOGON_RESPONSE_NT40
*r
)
1709 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1710 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
1711 if (ndr_flags
& NDR_SCALARS
) {
1712 NDR_CHECK(ndr_push_align(ndr
, 4));
1713 NDR_CHECK(ndr_push_netlogon_command(ndr
, NDR_SCALARS
, r
->command
));
1715 uint32_t _flags_save_string
= ndr
->flags
;
1716 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1717 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->server
));
1718 ndr
->flags
= _flags_save_string
;
1721 uint32_t _flags_save_string
= ndr
->flags
;
1722 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1723 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->user_name
));
1724 ndr
->flags
= _flags_save_string
;
1727 uint32_t _flags_save_string
= ndr
->flags
;
1728 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1729 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->domain
));
1730 ndr
->flags
= _flags_save_string
;
1732 NDR_CHECK(ndr_push_netlogon_nt_version_flags(ndr
, NDR_SCALARS
, r
->nt_version
));
1733 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->lmnt_token
));
1734 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->lm20_token
));
1736 if (ndr_flags
& NDR_BUFFERS
) {
1738 ndr
->flags
= _flags_save_STRUCT
;
1740 return NDR_ERR_SUCCESS
;
1743 _PUBLIC_
enum ndr_err_code
ndr_pull_NETLOGON_SAM_LOGON_RESPONSE_NT40(struct ndr_pull
*ndr
, int ndr_flags
, struct NETLOGON_SAM_LOGON_RESPONSE_NT40
*r
)
1746 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1747 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
1748 if (ndr_flags
& NDR_SCALARS
) {
1749 NDR_CHECK(ndr_pull_align(ndr
, 4));
1750 NDR_CHECK(ndr_pull_netlogon_command(ndr
, NDR_SCALARS
, &r
->command
));
1752 uint32_t _flags_save_string
= ndr
->flags
;
1753 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1754 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->server
));
1755 ndr
->flags
= _flags_save_string
;
1758 uint32_t _flags_save_string
= ndr
->flags
;
1759 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1760 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->user_name
));
1761 ndr
->flags
= _flags_save_string
;
1764 uint32_t _flags_save_string
= ndr
->flags
;
1765 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1766 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->domain
));
1767 ndr
->flags
= _flags_save_string
;
1769 NDR_CHECK(ndr_pull_netlogon_nt_version_flags(ndr
, NDR_SCALARS
, &r
->nt_version
));
1770 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->lmnt_token
));
1771 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->lm20_token
));
1773 if (ndr_flags
& NDR_BUFFERS
) {
1775 ndr
->flags
= _flags_save_STRUCT
;
1777 return NDR_ERR_SUCCESS
;
1780 _PUBLIC_
void ndr_print_NETLOGON_SAM_LOGON_RESPONSE_NT40(struct ndr_print
*ndr
, const char *name
, const struct NETLOGON_SAM_LOGON_RESPONSE_NT40
*r
)
1782 ndr_print_struct(ndr
, name
, "NETLOGON_SAM_LOGON_RESPONSE_NT40");
1784 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1785 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
1787 ndr_print_netlogon_command(ndr
, "command", r
->command
);
1788 ndr_print_string(ndr
, "server", r
->server
);
1789 ndr_print_string(ndr
, "user_name", r
->user_name
);
1790 ndr_print_string(ndr
, "domain", r
->domain
);
1791 ndr_print_netlogon_nt_version_flags(ndr
, "nt_version", r
->nt_version
);
1792 ndr_print_uint16(ndr
, "lmnt_token", r
->lmnt_token
);
1793 ndr_print_uint16(ndr
, "lm20_token", r
->lm20_token
);
1795 ndr
->flags
= _flags_save_STRUCT
;
1799 _PUBLIC_
enum ndr_err_code
ndr_push_NETLOGON_SAM_LOGON_RESPONSE(struct ndr_push
*ndr
, int ndr_flags
, const struct NETLOGON_SAM_LOGON_RESPONSE
*r
)
1802 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1803 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
1804 if (ndr_flags
& NDR_SCALARS
) {
1805 NDR_CHECK(ndr_push_align(ndr
, 4));
1806 NDR_CHECK(ndr_push_netlogon_command(ndr
, NDR_SCALARS
, r
->command
));
1808 uint32_t _flags_save_string
= ndr
->flags
;
1809 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1810 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->pdc_name
));
1811 ndr
->flags
= _flags_save_string
;
1814 uint32_t _flags_save_string
= ndr
->flags
;
1815 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1816 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->user_name
));
1817 ndr
->flags
= _flags_save_string
;
1820 uint32_t _flags_save_string
= ndr
->flags
;
1821 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1822 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->domain_name
));
1823 ndr
->flags
= _flags_save_string
;
1825 NDR_CHECK(ndr_push_GUID(ndr
, NDR_SCALARS
, &r
->domain_uuid
));
1826 NDR_CHECK(ndr_push_GUID(ndr
, NDR_SCALARS
, &r
->zero_uuid
));
1827 NDR_CHECK(ndr_push_nbt_string(ndr
, NDR_SCALARS
, r
->forest
));
1828 NDR_CHECK(ndr_push_nbt_string(ndr
, NDR_SCALARS
, r
->dns_domain
));
1829 NDR_CHECK(ndr_push_nbt_string(ndr
, NDR_SCALARS
, r
->pdc_dns_name
));
1830 NDR_CHECK(ndr_push_ipv4address(ndr
, NDR_SCALARS
, r
->pdc_ip
));
1831 NDR_CHECK(ndr_push_nbt_server_type(ndr
, NDR_SCALARS
, r
->server_type
));
1832 NDR_CHECK(ndr_push_netlogon_nt_version_flags(ndr
, NDR_SCALARS
, r
->nt_version
));
1833 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->lmnt_token
));
1834 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->lm20_token
));
1836 if (ndr_flags
& NDR_BUFFERS
) {
1838 ndr
->flags
= _flags_save_STRUCT
;
1840 return NDR_ERR_SUCCESS
;
1843 _PUBLIC_
enum ndr_err_code
ndr_pull_NETLOGON_SAM_LOGON_RESPONSE(struct ndr_pull
*ndr
, int ndr_flags
, struct NETLOGON_SAM_LOGON_RESPONSE
*r
)
1846 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1847 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
1848 if (ndr_flags
& NDR_SCALARS
) {
1849 NDR_CHECK(ndr_pull_align(ndr
, 4));
1850 NDR_CHECK(ndr_pull_netlogon_command(ndr
, NDR_SCALARS
, &r
->command
));
1852 uint32_t _flags_save_string
= ndr
->flags
;
1853 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1854 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->pdc_name
));
1855 ndr
->flags
= _flags_save_string
;
1858 uint32_t _flags_save_string
= ndr
->flags
;
1859 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1860 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->user_name
));
1861 ndr
->flags
= _flags_save_string
;
1864 uint32_t _flags_save_string
= ndr
->flags
;
1865 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
1866 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->domain_name
));
1867 ndr
->flags
= _flags_save_string
;
1869 NDR_CHECK(ndr_pull_GUID(ndr
, NDR_SCALARS
, &r
->domain_uuid
));
1870 NDR_CHECK(ndr_pull_GUID(ndr
, NDR_SCALARS
, &r
->zero_uuid
));
1871 NDR_CHECK(ndr_pull_nbt_string(ndr
, NDR_SCALARS
, &r
->forest
));
1872 NDR_CHECK(ndr_pull_nbt_string(ndr
, NDR_SCALARS
, &r
->dns_domain
));
1873 NDR_CHECK(ndr_pull_nbt_string(ndr
, NDR_SCALARS
, &r
->pdc_dns_name
));
1874 NDR_CHECK(ndr_pull_ipv4address(ndr
, NDR_SCALARS
, &r
->pdc_ip
));
1875 NDR_CHECK(ndr_pull_nbt_server_type(ndr
, NDR_SCALARS
, &r
->server_type
));
1876 NDR_CHECK(ndr_pull_netlogon_nt_version_flags(ndr
, NDR_SCALARS
, &r
->nt_version
));
1877 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->lmnt_token
));
1878 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->lm20_token
));
1880 if (ndr_flags
& NDR_BUFFERS
) {
1882 ndr
->flags
= _flags_save_STRUCT
;
1884 return NDR_ERR_SUCCESS
;
1887 _PUBLIC_
void ndr_print_NETLOGON_SAM_LOGON_RESPONSE(struct ndr_print
*ndr
, const char *name
, const struct NETLOGON_SAM_LOGON_RESPONSE
*r
)
1889 ndr_print_struct(ndr
, name
, "NETLOGON_SAM_LOGON_RESPONSE");
1891 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1892 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
1894 ndr_print_netlogon_command(ndr
, "command", r
->command
);
1895 ndr_print_string(ndr
, "pdc_name", r
->pdc_name
);
1896 ndr_print_string(ndr
, "user_name", r
->user_name
);
1897 ndr_print_string(ndr
, "domain_name", r
->domain_name
);
1898 ndr_print_GUID(ndr
, "domain_uuid", &r
->domain_uuid
);
1899 ndr_print_GUID(ndr
, "zero_uuid", &r
->zero_uuid
);
1900 ndr_print_nbt_string(ndr
, "forest", r
->forest
);
1901 ndr_print_nbt_string(ndr
, "dns_domain", r
->dns_domain
);
1902 ndr_print_nbt_string(ndr
, "pdc_dns_name", r
->pdc_dns_name
);
1903 ndr_print_ipv4address(ndr
, "pdc_ip", r
->pdc_ip
);
1904 ndr_print_nbt_server_type(ndr
, "server_type", r
->server_type
);
1905 ndr_print_netlogon_nt_version_flags(ndr
, "nt_version", r
->nt_version
);
1906 ndr_print_uint16(ndr
, "lmnt_token", r
->lmnt_token
);
1907 ndr_print_uint16(ndr
, "lm20_token", r
->lm20_token
);
1909 ndr
->flags
= _flags_save_STRUCT
;
1913 _PUBLIC_
enum ndr_err_code
ndr_push_NETLOGON_SAM_LOGON_RESPONSE_EX(struct ndr_push
*ndr
, int ndr_flags
, const struct NETLOGON_SAM_LOGON_RESPONSE_EX
*r
)
1916 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1917 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
1918 if (ndr_flags
& NDR_SCALARS
) {
1919 NDR_CHECK(ndr_push_align(ndr
, 4));
1920 NDR_CHECK(ndr_push_netlogon_command(ndr
, NDR_SCALARS
, r
->command
));
1921 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->sbz
));
1922 NDR_CHECK(ndr_push_nbt_server_type(ndr
, NDR_SCALARS
, r
->server_type
));
1923 NDR_CHECK(ndr_push_GUID(ndr
, NDR_SCALARS
, &r
->domain_uuid
));
1924 NDR_CHECK(ndr_push_nbt_string(ndr
, NDR_SCALARS
, r
->forest
));
1925 NDR_CHECK(ndr_push_nbt_string(ndr
, NDR_SCALARS
, r
->dns_domain
));
1926 NDR_CHECK(ndr_push_nbt_string(ndr
, NDR_SCALARS
, r
->pdc_dns_name
));
1927 NDR_CHECK(ndr_push_nbt_string(ndr
, NDR_SCALARS
, r
->domain
));
1928 NDR_CHECK(ndr_push_nbt_string(ndr
, NDR_SCALARS
, r
->pdc_name
));
1929 NDR_CHECK(ndr_push_nbt_string(ndr
, NDR_SCALARS
, r
->user_name
));
1930 NDR_CHECK(ndr_push_nbt_string(ndr
, NDR_SCALARS
, r
->server_site
));
1931 NDR_CHECK(ndr_push_nbt_string(ndr
, NDR_SCALARS
, r
->client_site
));
1932 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, ndr_size_nbt_sockaddr(&r
->sockaddr
, ndr
->flags
)));
1934 struct ndr_push
*_ndr_sockaddr
;
1935 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_sockaddr
, 0, ndr_size_nbt_sockaddr(&r
->sockaddr
, ndr
->flags
)));
1936 NDR_CHECK(ndr_push_nbt_sockaddr(_ndr_sockaddr
, NDR_SCALARS
, &r
->sockaddr
));
1937 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_sockaddr
, 0, ndr_size_nbt_sockaddr(&r
->sockaddr
, ndr
->flags
)));
1939 NDR_CHECK(ndr_push_nbt_string(ndr
, NDR_SCALARS
, r
->next_closest_site
));
1940 NDR_CHECK(ndr_push_netlogon_nt_version_flags(ndr
, NDR_SCALARS
, r
->nt_version
));
1941 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->lmnt_token
));
1942 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->lm20_token
));
1944 if (ndr_flags
& NDR_BUFFERS
) {
1946 ndr
->flags
= _flags_save_STRUCT
;
1948 return NDR_ERR_SUCCESS
;
1951 _PUBLIC_
enum ndr_err_code
ndr_pull_NETLOGON_SAM_LOGON_RESPONSE_EX(struct ndr_pull
*ndr
, int ndr_flags
, struct NETLOGON_SAM_LOGON_RESPONSE_EX
*r
)
1954 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1955 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
1956 if (ndr_flags
& NDR_SCALARS
) {
1957 NDR_CHECK(ndr_pull_align(ndr
, 4));
1958 NDR_CHECK(ndr_pull_netlogon_command(ndr
, NDR_SCALARS
, &r
->command
));
1959 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->sbz
));
1960 NDR_CHECK(ndr_pull_nbt_server_type(ndr
, NDR_SCALARS
, &r
->server_type
));
1961 NDR_CHECK(ndr_pull_GUID(ndr
, NDR_SCALARS
, &r
->domain_uuid
));
1962 NDR_CHECK(ndr_pull_nbt_string(ndr
, NDR_SCALARS
, &r
->forest
));
1963 NDR_CHECK(ndr_pull_nbt_string(ndr
, NDR_SCALARS
, &r
->dns_domain
));
1964 NDR_CHECK(ndr_pull_nbt_string(ndr
, NDR_SCALARS
, &r
->pdc_dns_name
));
1965 NDR_CHECK(ndr_pull_nbt_string(ndr
, NDR_SCALARS
, &r
->domain
));
1966 NDR_CHECK(ndr_pull_nbt_string(ndr
, NDR_SCALARS
, &r
->pdc_name
));
1967 NDR_CHECK(ndr_pull_nbt_string(ndr
, NDR_SCALARS
, &r
->user_name
));
1968 NDR_CHECK(ndr_pull_nbt_string(ndr
, NDR_SCALARS
, &r
->server_site
));
1969 NDR_CHECK(ndr_pull_nbt_string(ndr
, NDR_SCALARS
, &r
->client_site
));
1970 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->sockaddr_size
));
1972 struct ndr_pull
*_ndr_sockaddr
;
1973 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_sockaddr
, 0, r
->sockaddr_size
));
1974 NDR_CHECK(ndr_pull_nbt_sockaddr(_ndr_sockaddr
, NDR_SCALARS
, &r
->sockaddr
));
1975 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_sockaddr
, 0, r
->sockaddr_size
));
1977 NDR_CHECK(ndr_pull_nbt_string(ndr
, NDR_SCALARS
, &r
->next_closest_site
));
1978 NDR_CHECK(ndr_pull_netlogon_nt_version_flags(ndr
, NDR_SCALARS
, &r
->nt_version
));
1979 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->lmnt_token
));
1980 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->lm20_token
));
1982 if (ndr_flags
& NDR_BUFFERS
) {
1984 ndr
->flags
= _flags_save_STRUCT
;
1986 return NDR_ERR_SUCCESS
;
1989 _PUBLIC_
void ndr_print_NETLOGON_SAM_LOGON_RESPONSE_EX(struct ndr_print
*ndr
, const char *name
, const struct NETLOGON_SAM_LOGON_RESPONSE_EX
*r
)
1991 ndr_print_struct(ndr
, name
, "NETLOGON_SAM_LOGON_RESPONSE_EX");
1993 uint32_t _flags_save_STRUCT
= ndr
->flags
;
1994 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
1996 ndr_print_netlogon_command(ndr
, "command", r
->command
);
1997 ndr_print_uint16(ndr
, "sbz", r
->sbz
);
1998 ndr_print_nbt_server_type(ndr
, "server_type", r
->server_type
);
1999 ndr_print_GUID(ndr
, "domain_uuid", &r
->domain_uuid
);
2000 ndr_print_nbt_string(ndr
, "forest", r
->forest
);
2001 ndr_print_nbt_string(ndr
, "dns_domain", r
->dns_domain
);
2002 ndr_print_nbt_string(ndr
, "pdc_dns_name", r
->pdc_dns_name
);
2003 ndr_print_nbt_string(ndr
, "domain", r
->domain
);
2004 ndr_print_nbt_string(ndr
, "pdc_name", r
->pdc_name
);
2005 ndr_print_nbt_string(ndr
, "user_name", r
->user_name
);
2006 ndr_print_nbt_string(ndr
, "server_site", r
->server_site
);
2007 ndr_print_nbt_string(ndr
, "client_site", r
->client_site
);
2008 ndr_print_uint8(ndr
, "sockaddr_size", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?ndr_size_nbt_sockaddr(&r
->sockaddr
, ndr
->flags
):r
->sockaddr_size
);
2009 ndr_print_nbt_sockaddr(ndr
, "sockaddr", &r
->sockaddr
);
2010 ndr_print_nbt_string(ndr
, "next_closest_site", r
->next_closest_site
);
2011 ndr_print_netlogon_nt_version_flags(ndr
, "nt_version", r
->nt_version
);
2012 ndr_print_uint16(ndr
, "lmnt_token", r
->lmnt_token
);
2013 ndr_print_uint16(ndr
, "lm20_token", r
->lm20_token
);
2015 ndr
->flags
= _flags_save_STRUCT
;
2019 static enum ndr_err_code
ndr_push_nbt_netlogon_query_for_pdc(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_netlogon_query_for_pdc
*r
)
2021 if (ndr_flags
& NDR_SCALARS
) {
2022 NDR_CHECK(ndr_push_align(ndr
, 4));
2024 uint32_t _flags_save_string
= ndr
->flags
;
2025 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2026 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->computer_name
));
2027 ndr
->flags
= _flags_save_string
;
2030 uint32_t _flags_save_string
= ndr
->flags
;
2031 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2032 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->mailslot_name
));
2033 ndr
->flags
= _flags_save_string
;
2036 uint32_t _flags_save_DATA_BLOB
= ndr
->flags
;
2037 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_ALIGN2
);
2038 NDR_CHECK(ndr_push_DATA_BLOB(ndr
, NDR_SCALARS
, r
->_pad
));
2039 ndr
->flags
= _flags_save_DATA_BLOB
;
2042 uint32_t _flags_save_string
= ndr
->flags
;
2043 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
2044 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->unicode_name
));
2045 ndr
->flags
= _flags_save_string
;
2047 NDR_CHECK(ndr_push_netlogon_nt_version_flags(ndr
, NDR_SCALARS
, r
->nt_version
));
2048 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->lmnt_token
));
2049 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->lm20_token
));
2051 if (ndr_flags
& NDR_BUFFERS
) {
2053 return NDR_ERR_SUCCESS
;
2056 static enum ndr_err_code
ndr_pull_nbt_netlogon_query_for_pdc(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_netlogon_query_for_pdc
*r
)
2058 if (ndr_flags
& NDR_SCALARS
) {
2059 NDR_CHECK(ndr_pull_align(ndr
, 4));
2061 uint32_t _flags_save_string
= ndr
->flags
;
2062 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2063 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->computer_name
));
2064 ndr
->flags
= _flags_save_string
;
2067 uint32_t _flags_save_string
= ndr
->flags
;
2068 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2069 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->mailslot_name
));
2070 ndr
->flags
= _flags_save_string
;
2073 uint32_t _flags_save_DATA_BLOB
= ndr
->flags
;
2074 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_ALIGN2
);
2075 NDR_CHECK(ndr_pull_DATA_BLOB(ndr
, NDR_SCALARS
, &r
->_pad
));
2076 ndr
->flags
= _flags_save_DATA_BLOB
;
2079 uint32_t _flags_save_string
= ndr
->flags
;
2080 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
2081 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->unicode_name
));
2082 ndr
->flags
= _flags_save_string
;
2084 NDR_CHECK(ndr_pull_netlogon_nt_version_flags(ndr
, NDR_SCALARS
, &r
->nt_version
));
2085 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->lmnt_token
));
2086 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->lm20_token
));
2088 if (ndr_flags
& NDR_BUFFERS
) {
2090 return NDR_ERR_SUCCESS
;
2093 _PUBLIC_
void ndr_print_nbt_netlogon_query_for_pdc(struct ndr_print
*ndr
, const char *name
, const struct nbt_netlogon_query_for_pdc
*r
)
2095 ndr_print_struct(ndr
, name
, "nbt_netlogon_query_for_pdc");
2097 ndr_print_string(ndr
, "computer_name", r
->computer_name
);
2098 ndr_print_string(ndr
, "mailslot_name", r
->mailslot_name
);
2099 ndr_print_DATA_BLOB(ndr
, "_pad", r
->_pad
);
2100 ndr_print_string(ndr
, "unicode_name", r
->unicode_name
);
2101 ndr_print_netlogon_nt_version_flags(ndr
, "nt_version", r
->nt_version
);
2102 ndr_print_uint16(ndr
, "lmnt_token", r
->lmnt_token
);
2103 ndr_print_uint16(ndr
, "lm20_token", r
->lm20_token
);
2107 _PUBLIC_
enum ndr_err_code
ndr_push_nbt_netlogon_response_from_pdc(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_netlogon_response_from_pdc
*r
)
2110 uint32_t _flags_save_STRUCT
= ndr
->flags
;
2111 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
2112 if (ndr_flags
& NDR_SCALARS
) {
2113 NDR_CHECK(ndr_push_align(ndr
, 4));
2114 NDR_CHECK(ndr_push_netlogon_command(ndr
, NDR_SCALARS
, r
->command
));
2116 uint32_t _flags_save_string
= ndr
->flags
;
2117 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2118 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->pdc_name
));
2119 ndr
->flags
= _flags_save_string
;
2122 uint32_t _flags_save_DATA_BLOB
= ndr
->flags
;
2123 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_ALIGN2
);
2124 NDR_CHECK(ndr_push_DATA_BLOB(ndr
, NDR_SCALARS
, r
->_pad
));
2125 ndr
->flags
= _flags_save_DATA_BLOB
;
2128 uint32_t _flags_save_string
= ndr
->flags
;
2129 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
2130 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->unicode_pdc_name
));
2131 ndr
->flags
= _flags_save_string
;
2134 uint32_t _flags_save_string
= ndr
->flags
;
2135 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
2136 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->domain_name
));
2137 ndr
->flags
= _flags_save_string
;
2139 NDR_CHECK(ndr_push_netlogon_nt_version_flags(ndr
, NDR_SCALARS
, r
->nt_version
));
2140 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->lmnt_token
));
2141 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->lm20_token
));
2143 if (ndr_flags
& NDR_BUFFERS
) {
2145 ndr
->flags
= _flags_save_STRUCT
;
2147 return NDR_ERR_SUCCESS
;
2150 _PUBLIC_
enum ndr_err_code
ndr_pull_nbt_netlogon_response_from_pdc(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_netlogon_response_from_pdc
*r
)
2153 uint32_t _flags_save_STRUCT
= ndr
->flags
;
2154 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
2155 if (ndr_flags
& NDR_SCALARS
) {
2156 NDR_CHECK(ndr_pull_align(ndr
, 4));
2157 NDR_CHECK(ndr_pull_netlogon_command(ndr
, NDR_SCALARS
, &r
->command
));
2159 uint32_t _flags_save_string
= ndr
->flags
;
2160 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2161 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->pdc_name
));
2162 ndr
->flags
= _flags_save_string
;
2165 uint32_t _flags_save_DATA_BLOB
= ndr
->flags
;
2166 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_ALIGN2
);
2167 NDR_CHECK(ndr_pull_DATA_BLOB(ndr
, NDR_SCALARS
, &r
->_pad
));
2168 ndr
->flags
= _flags_save_DATA_BLOB
;
2171 uint32_t _flags_save_string
= ndr
->flags
;
2172 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
2173 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->unicode_pdc_name
));
2174 ndr
->flags
= _flags_save_string
;
2177 uint32_t _flags_save_string
= ndr
->flags
;
2178 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
2179 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->domain_name
));
2180 ndr
->flags
= _flags_save_string
;
2182 NDR_CHECK(ndr_pull_netlogon_nt_version_flags(ndr
, NDR_SCALARS
, &r
->nt_version
));
2183 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->lmnt_token
));
2184 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->lm20_token
));
2186 if (ndr_flags
& NDR_BUFFERS
) {
2188 ndr
->flags
= _flags_save_STRUCT
;
2190 return NDR_ERR_SUCCESS
;
2193 _PUBLIC_
void ndr_print_nbt_netlogon_response_from_pdc(struct ndr_print
*ndr
, const char *name
, const struct nbt_netlogon_response_from_pdc
*r
)
2195 ndr_print_struct(ndr
, name
, "nbt_netlogon_response_from_pdc");
2197 uint32_t _flags_save_STRUCT
= ndr
->flags
;
2198 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
2200 ndr_print_netlogon_command(ndr
, "command", r
->command
);
2201 ndr_print_string(ndr
, "pdc_name", r
->pdc_name
);
2202 ndr_print_DATA_BLOB(ndr
, "_pad", r
->_pad
);
2203 ndr_print_string(ndr
, "unicode_pdc_name", r
->unicode_pdc_name
);
2204 ndr_print_string(ndr
, "domain_name", r
->domain_name
);
2205 ndr_print_netlogon_nt_version_flags(ndr
, "nt_version", r
->nt_version
);
2206 ndr_print_uint16(ndr
, "lmnt_token", r
->lmnt_token
);
2207 ndr_print_uint16(ndr
, "lm20_token", r
->lm20_token
);
2209 ndr
->flags
= _flags_save_STRUCT
;
2213 static enum ndr_err_code
ndr_push_nbt_db_change_info(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_db_change_info
*r
)
2215 if (ndr_flags
& NDR_SCALARS
) {
2216 NDR_CHECK(ndr_push_align(ndr
, 8));
2217 NDR_CHECK(ndr_push_netr_SamDatabaseID(ndr
, NDR_SCALARS
, r
->db_index
));
2218 NDR_CHECK(ndr_push_hyper(ndr
, NDR_SCALARS
, r
->serial
));
2219 NDR_CHECK(ndr_push_NTTIME(ndr
, NDR_SCALARS
, r
->timestamp
));
2221 if (ndr_flags
& NDR_BUFFERS
) {
2223 return NDR_ERR_SUCCESS
;
2226 static enum ndr_err_code
ndr_pull_nbt_db_change_info(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_db_change_info
*r
)
2228 if (ndr_flags
& NDR_SCALARS
) {
2229 NDR_CHECK(ndr_pull_align(ndr
, 8));
2230 NDR_CHECK(ndr_pull_netr_SamDatabaseID(ndr
, NDR_SCALARS
, &r
->db_index
));
2231 NDR_CHECK(ndr_pull_hyper(ndr
, NDR_SCALARS
, &r
->serial
));
2232 NDR_CHECK(ndr_pull_NTTIME(ndr
, NDR_SCALARS
, &r
->timestamp
));
2234 if (ndr_flags
& NDR_BUFFERS
) {
2236 return NDR_ERR_SUCCESS
;
2239 _PUBLIC_
void ndr_print_nbt_db_change_info(struct ndr_print
*ndr
, const char *name
, const struct nbt_db_change_info
*r
)
2241 ndr_print_struct(ndr
, name
, "nbt_db_change_info");
2243 ndr_print_netr_SamDatabaseID(ndr
, "db_index", r
->db_index
);
2244 ndr_print_hyper(ndr
, "serial", r
->serial
);
2245 ndr_print_NTTIME(ndr
, "timestamp", r
->timestamp
);
2249 static enum ndr_err_code
ndr_push_NETLOGON_DB_CHANGE(struct ndr_push
*ndr
, int ndr_flags
, const struct NETLOGON_DB_CHANGE
*r
)
2251 uint32_t cntr_dbchange_0
;
2252 if (ndr_flags
& NDR_SCALARS
) {
2253 NDR_CHECK(ndr_push_align(ndr
, 8));
2254 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->serial_lo
));
2255 NDR_CHECK(ndr_push_time_t(ndr
, NDR_SCALARS
, r
->timestamp
));
2256 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->pulse
));
2257 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->random
));
2259 uint32_t _flags_save_string
= ndr
->flags
;
2260 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2261 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->pdc_name
));
2262 ndr
->flags
= _flags_save_string
;
2265 uint32_t _flags_save_string
= ndr
->flags
;
2266 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2267 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->domain
));
2268 ndr
->flags
= _flags_save_string
;
2271 uint32_t _flags_save_DATA_BLOB
= ndr
->flags
;
2272 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_ALIGN2
);
2273 NDR_CHECK(ndr_push_DATA_BLOB(ndr
, NDR_SCALARS
, r
->_pad
));
2274 ndr
->flags
= _flags_save_DATA_BLOB
;
2277 uint32_t _flags_save_string
= ndr
->flags
;
2278 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
2279 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->unicode_pdc_name
));
2280 ndr
->flags
= _flags_save_string
;
2283 uint32_t _flags_save_string
= ndr
->flags
;
2284 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
2285 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->unicode_domain
));
2286 ndr
->flags
= _flags_save_string
;
2288 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->db_count
));
2289 for (cntr_dbchange_0
= 0; cntr_dbchange_0
< r
->db_count
; cntr_dbchange_0
++) {
2290 NDR_CHECK(ndr_push_nbt_db_change_info(ndr
, NDR_SCALARS
, &r
->dbchange
[cntr_dbchange_0
]));
2292 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, ndr_size_dom_sid0(&r
->sid
, ndr
->flags
)));
2294 struct ndr_push
*_ndr_sid
;
2295 NDR_CHECK(ndr_push_subcontext_start(ndr
, &_ndr_sid
, 0, ndr_size_dom_sid0(&r
->sid
, ndr
->flags
)));
2296 NDR_CHECK(ndr_push_dom_sid0(_ndr_sid
, NDR_SCALARS
|NDR_BUFFERS
, &r
->sid
));
2297 NDR_CHECK(ndr_push_subcontext_end(ndr
, _ndr_sid
, 0, ndr_size_dom_sid0(&r
->sid
, ndr
->flags
)));
2299 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->message_format_version
));
2300 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->message_token
));
2302 if (ndr_flags
& NDR_BUFFERS
) {
2304 return NDR_ERR_SUCCESS
;
2307 static enum ndr_err_code
ndr_pull_NETLOGON_DB_CHANGE(struct ndr_pull
*ndr
, int ndr_flags
, struct NETLOGON_DB_CHANGE
*r
)
2309 uint32_t cntr_dbchange_0
;
2310 TALLOC_CTX
*_mem_save_dbchange_0
;
2311 if (ndr_flags
& NDR_SCALARS
) {
2312 NDR_CHECK(ndr_pull_align(ndr
, 8));
2313 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->serial_lo
));
2314 NDR_CHECK(ndr_pull_time_t(ndr
, NDR_SCALARS
, &r
->timestamp
));
2315 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->pulse
));
2316 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->random
));
2318 uint32_t _flags_save_string
= ndr
->flags
;
2319 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2320 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->pdc_name
));
2321 ndr
->flags
= _flags_save_string
;
2324 uint32_t _flags_save_string
= ndr
->flags
;
2325 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2326 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->domain
));
2327 ndr
->flags
= _flags_save_string
;
2330 uint32_t _flags_save_DATA_BLOB
= ndr
->flags
;
2331 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_ALIGN2
);
2332 NDR_CHECK(ndr_pull_DATA_BLOB(ndr
, NDR_SCALARS
, &r
->_pad
));
2333 ndr
->flags
= _flags_save_DATA_BLOB
;
2336 uint32_t _flags_save_string
= ndr
->flags
;
2337 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
2338 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->unicode_pdc_name
));
2339 ndr
->flags
= _flags_save_string
;
2342 uint32_t _flags_save_string
= ndr
->flags
;
2343 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_NULLTERM
);
2344 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->unicode_domain
));
2345 ndr
->flags
= _flags_save_string
;
2347 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->db_count
));
2348 NDR_PULL_ALLOC_N(ndr
, r
->dbchange
, r
->db_count
);
2349 _mem_save_dbchange_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2350 NDR_PULL_SET_MEM_CTX(ndr
, r
->dbchange
, 0);
2351 for (cntr_dbchange_0
= 0; cntr_dbchange_0
< r
->db_count
; cntr_dbchange_0
++) {
2352 NDR_CHECK(ndr_pull_nbt_db_change_info(ndr
, NDR_SCALARS
, &r
->dbchange
[cntr_dbchange_0
]));
2354 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_dbchange_0
, 0);
2355 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->sid_size
));
2357 struct ndr_pull
*_ndr_sid
;
2358 NDR_CHECK(ndr_pull_subcontext_start(ndr
, &_ndr_sid
, 0, r
->sid_size
));
2359 NDR_CHECK(ndr_pull_dom_sid0(_ndr_sid
, NDR_SCALARS
|NDR_BUFFERS
, &r
->sid
));
2360 NDR_CHECK(ndr_pull_subcontext_end(ndr
, _ndr_sid
, 0, r
->sid_size
));
2362 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->message_format_version
));
2363 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->message_token
));
2365 if (ndr_flags
& NDR_BUFFERS
) {
2367 return NDR_ERR_SUCCESS
;
2370 _PUBLIC_
void ndr_print_NETLOGON_DB_CHANGE(struct ndr_print
*ndr
, const char *name
, const struct NETLOGON_DB_CHANGE
*r
)
2372 uint32_t cntr_dbchange_0
;
2373 ndr_print_struct(ndr
, name
, "NETLOGON_DB_CHANGE");
2375 ndr_print_uint32(ndr
, "serial_lo", r
->serial_lo
);
2376 ndr_print_time_t(ndr
, "timestamp", r
->timestamp
);
2377 ndr_print_uint32(ndr
, "pulse", r
->pulse
);
2378 ndr_print_uint32(ndr
, "random", r
->random
);
2379 ndr_print_string(ndr
, "pdc_name", r
->pdc_name
);
2380 ndr_print_string(ndr
, "domain", r
->domain
);
2381 ndr_print_DATA_BLOB(ndr
, "_pad", r
->_pad
);
2382 ndr_print_string(ndr
, "unicode_pdc_name", r
->unicode_pdc_name
);
2383 ndr_print_string(ndr
, "unicode_domain", r
->unicode_domain
);
2384 ndr_print_uint32(ndr
, "db_count", r
->db_count
);
2385 ndr
->print(ndr
, "%s: ARRAY(%d)", "dbchange", (int)r
->db_count
);
2387 for (cntr_dbchange_0
=0;cntr_dbchange_0
<r
->db_count
;cntr_dbchange_0
++) {
2389 if (asprintf(&idx_0
, "[%d]", cntr_dbchange_0
) != -1) {
2390 ndr_print_nbt_db_change_info(ndr
, "dbchange", &r
->dbchange
[cntr_dbchange_0
]);
2395 ndr_print_uint32(ndr
, "sid_size", (ndr
->flags
& LIBNDR_PRINT_SET_VALUES
)?ndr_size_dom_sid0(&r
->sid
, ndr
->flags
):r
->sid_size
);
2396 ndr_print_dom_sid0(ndr
, "sid", &r
->sid
);
2397 ndr_print_uint32(ndr
, "message_format_version", r
->message_format_version
);
2398 ndr_print_uint32(ndr
, "message_token", r
->message_token
);
2402 static enum ndr_err_code
ndr_push_nbt_netlogon_request(struct ndr_push
*ndr
, int ndr_flags
, const union nbt_netlogon_request
*r
)
2404 if (ndr_flags
& NDR_SCALARS
) {
2405 int level
= ndr_push_get_switch_value(ndr
, r
);
2407 case LOGON_SAM_LOGON_REQUEST
: {
2408 NDR_CHECK(ndr_push_NETLOGON_SAM_LOGON_REQUEST(ndr
, NDR_SCALARS
, &r
->logon
));
2411 case LOGON_PRIMARY_QUERY
: {
2412 NDR_CHECK(ndr_push_nbt_netlogon_query_for_pdc(ndr
, NDR_SCALARS
, &r
->pdc
));
2415 case NETLOGON_ANNOUNCE_UAS
: {
2416 NDR_CHECK(ndr_push_NETLOGON_DB_CHANGE(ndr
, NDR_SCALARS
, &r
->uas
));
2420 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
2423 if (ndr_flags
& NDR_BUFFERS
) {
2424 int level
= ndr_push_get_switch_value(ndr
, r
);
2426 case LOGON_SAM_LOGON_REQUEST
:
2427 NDR_CHECK(ndr_push_NETLOGON_SAM_LOGON_REQUEST(ndr
, NDR_BUFFERS
, &r
->logon
));
2430 case LOGON_PRIMARY_QUERY
:
2433 case NETLOGON_ANNOUNCE_UAS
:
2434 NDR_CHECK(ndr_push_NETLOGON_DB_CHANGE(ndr
, NDR_BUFFERS
, &r
->uas
));
2438 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
2441 return NDR_ERR_SUCCESS
;
2444 static enum ndr_err_code
ndr_pull_nbt_netlogon_request(struct ndr_pull
*ndr
, int ndr_flags
, union nbt_netlogon_request
*r
)
2447 level
= ndr_pull_get_switch_value(ndr
, r
);
2448 if (ndr_flags
& NDR_SCALARS
) {
2450 case LOGON_SAM_LOGON_REQUEST
: {
2451 NDR_CHECK(ndr_pull_NETLOGON_SAM_LOGON_REQUEST(ndr
, NDR_SCALARS
, &r
->logon
));
2454 case LOGON_PRIMARY_QUERY
: {
2455 NDR_CHECK(ndr_pull_nbt_netlogon_query_for_pdc(ndr
, NDR_SCALARS
, &r
->pdc
));
2458 case NETLOGON_ANNOUNCE_UAS
: {
2459 NDR_CHECK(ndr_pull_NETLOGON_DB_CHANGE(ndr
, NDR_SCALARS
, &r
->uas
));
2463 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
2466 if (ndr_flags
& NDR_BUFFERS
) {
2468 case LOGON_SAM_LOGON_REQUEST
:
2469 NDR_CHECK(ndr_pull_NETLOGON_SAM_LOGON_REQUEST(ndr
, NDR_BUFFERS
, &r
->logon
));
2472 case LOGON_PRIMARY_QUERY
:
2475 case NETLOGON_ANNOUNCE_UAS
:
2476 NDR_CHECK(ndr_pull_NETLOGON_DB_CHANGE(ndr
, NDR_BUFFERS
, &r
->uas
));
2480 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
2483 return NDR_ERR_SUCCESS
;
2486 _PUBLIC_
void ndr_print_nbt_netlogon_request(struct ndr_print
*ndr
, const char *name
, const union nbt_netlogon_request
*r
)
2489 level
= ndr_print_get_switch_value(ndr
, r
);
2490 ndr_print_union(ndr
, name
, level
, "nbt_netlogon_request");
2492 case LOGON_SAM_LOGON_REQUEST
:
2493 ndr_print_NETLOGON_SAM_LOGON_REQUEST(ndr
, "logon", &r
->logon
);
2496 case LOGON_PRIMARY_QUERY
:
2497 ndr_print_nbt_netlogon_query_for_pdc(ndr
, "pdc", &r
->pdc
);
2500 case NETLOGON_ANNOUNCE_UAS
:
2501 ndr_print_NETLOGON_DB_CHANGE(ndr
, "uas", &r
->uas
);
2505 ndr_print_bad_level(ndr
, name
, level
);
2509 _PUBLIC_
enum ndr_err_code
ndr_push_nbt_netlogon_packet(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_netlogon_packet
*r
)
2512 uint32_t _flags_save_STRUCT
= ndr
->flags
;
2513 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
2514 if (ndr_flags
& NDR_SCALARS
) {
2515 NDR_CHECK(ndr_push_align(ndr
, 8));
2516 NDR_CHECK(ndr_push_netlogon_command(ndr
, NDR_SCALARS
, r
->command
));
2517 NDR_CHECK(ndr_push_set_switch_value(ndr
, &r
->req
, r
->command
));
2518 NDR_CHECK(ndr_push_nbt_netlogon_request(ndr
, NDR_SCALARS
, &r
->req
));
2520 if (ndr_flags
& NDR_BUFFERS
) {
2521 NDR_CHECK(ndr_push_nbt_netlogon_request(ndr
, NDR_BUFFERS
, &r
->req
));
2523 ndr
->flags
= _flags_save_STRUCT
;
2525 return NDR_ERR_SUCCESS
;
2528 _PUBLIC_
enum ndr_err_code
ndr_pull_nbt_netlogon_packet(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_netlogon_packet
*r
)
2531 uint32_t _flags_save_STRUCT
= ndr
->flags
;
2532 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
2533 if (ndr_flags
& NDR_SCALARS
) {
2534 NDR_CHECK(ndr_pull_align(ndr
, 8));
2535 NDR_CHECK(ndr_pull_netlogon_command(ndr
, NDR_SCALARS
, &r
->command
));
2536 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->req
, r
->command
));
2537 NDR_CHECK(ndr_pull_nbt_netlogon_request(ndr
, NDR_SCALARS
, &r
->req
));
2539 if (ndr_flags
& NDR_BUFFERS
) {
2540 NDR_CHECK(ndr_pull_nbt_netlogon_request(ndr
, NDR_BUFFERS
, &r
->req
));
2542 ndr
->flags
= _flags_save_STRUCT
;
2544 return NDR_ERR_SUCCESS
;
2547 _PUBLIC_
void ndr_print_nbt_netlogon_packet(struct ndr_print
*ndr
, const char *name
, const struct nbt_netlogon_packet
*r
)
2549 ndr_print_struct(ndr
, name
, "nbt_netlogon_packet");
2551 uint32_t _flags_save_STRUCT
= ndr
->flags
;
2552 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
2554 ndr_print_netlogon_command(ndr
, "command", r
->command
);
2555 ndr_print_set_switch_value(ndr
, &r
->req
, r
->command
);
2556 ndr_print_nbt_netlogon_request(ndr
, "req", &r
->req
);
2558 ndr
->flags
= _flags_save_STRUCT
;
2562 static enum ndr_err_code
ndr_push_nbt_browse_opcode(struct ndr_push
*ndr
, int ndr_flags
, enum nbt_browse_opcode r
)
2564 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
));
2565 return NDR_ERR_SUCCESS
;
2568 static enum ndr_err_code
ndr_pull_nbt_browse_opcode(struct ndr_pull
*ndr
, int ndr_flags
, enum nbt_browse_opcode
*r
)
2571 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &v
));
2573 return NDR_ERR_SUCCESS
;
2576 _PUBLIC_
void ndr_print_nbt_browse_opcode(struct ndr_print
*ndr
, const char *name
, enum nbt_browse_opcode r
)
2578 const char *val
= NULL
;
2581 case HostAnnouncement
: val
= "HostAnnouncement"; break;
2582 case AnnouncementRequest
: val
= "AnnouncementRequest"; break;
2583 case Election
: val
= "Election"; break;
2584 case GetBackupListReq
: val
= "GetBackupListReq"; break;
2585 case GetBackupListResp
: val
= "GetBackupListResp"; break;
2586 case BecomeBackup
: val
= "BecomeBackup"; break;
2587 case DomainAnnouncement
: val
= "DomainAnnouncement"; break;
2588 case MasterAnnouncement
: val
= "MasterAnnouncement"; break;
2589 case ResetBrowserState
: val
= "ResetBrowserState"; break;
2590 case LocalMasterAnnouncement
: val
= "LocalMasterAnnouncement"; break;
2592 ndr_print_enum(ndr
, name
, "ENUM", val
, r
);
2595 static enum ndr_err_code
ndr_push_nbt_browse_host_announcement(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_browse_host_announcement
*r
)
2597 if (ndr_flags
& NDR_SCALARS
) {
2598 NDR_CHECK(ndr_push_align(ndr
, 4));
2599 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->UpdateCount
));
2600 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->Periodicity
));
2601 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->ServerName
, 16, sizeof(uint8_t), CH_DOS
));
2602 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->OSMajor
));
2603 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->OSMinor
));
2604 NDR_CHECK(ndr_push_svcctl_ServerType(ndr
, NDR_SCALARS
, r
->ServerType
));
2605 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->BroMajorVer
));
2606 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->BroMinorVer
));
2607 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->Signature
));
2609 uint32_t _flags_save_string
= ndr
->flags
;
2610 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2611 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->Comment
));
2612 ndr
->flags
= _flags_save_string
;
2615 if (ndr_flags
& NDR_BUFFERS
) {
2617 return NDR_ERR_SUCCESS
;
2620 static enum ndr_err_code
ndr_pull_nbt_browse_host_announcement(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_browse_host_announcement
*r
)
2622 if (ndr_flags
& NDR_SCALARS
) {
2623 NDR_CHECK(ndr_pull_align(ndr
, 4));
2624 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->UpdateCount
));
2625 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Periodicity
));
2626 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->ServerName
, 16, sizeof(uint8_t), CH_DOS
));
2627 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->OSMajor
));
2628 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->OSMinor
));
2629 NDR_CHECK(ndr_pull_svcctl_ServerType(ndr
, NDR_SCALARS
, &r
->ServerType
));
2630 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->BroMajorVer
));
2631 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->BroMinorVer
));
2632 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->Signature
));
2634 uint32_t _flags_save_string
= ndr
->flags
;
2635 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2636 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->Comment
));
2637 ndr
->flags
= _flags_save_string
;
2640 if (ndr_flags
& NDR_BUFFERS
) {
2642 return NDR_ERR_SUCCESS
;
2645 _PUBLIC_
void ndr_print_nbt_browse_host_announcement(struct ndr_print
*ndr
, const char *name
, const struct nbt_browse_host_announcement
*r
)
2647 ndr_print_struct(ndr
, name
, "nbt_browse_host_announcement");
2649 ndr_print_uint8(ndr
, "UpdateCount", r
->UpdateCount
);
2650 ndr_print_uint32(ndr
, "Periodicity", r
->Periodicity
);
2651 ndr_print_string(ndr
, "ServerName", r
->ServerName
);
2652 ndr_print_uint8(ndr
, "OSMajor", r
->OSMajor
);
2653 ndr_print_uint8(ndr
, "OSMinor", r
->OSMinor
);
2654 ndr_print_svcctl_ServerType(ndr
, "ServerType", r
->ServerType
);
2655 ndr_print_uint8(ndr
, "BroMajorVer", r
->BroMajorVer
);
2656 ndr_print_uint8(ndr
, "BroMinorVer", r
->BroMinorVer
);
2657 ndr_print_uint16(ndr
, "Signature", r
->Signature
);
2658 ndr_print_string(ndr
, "Comment", r
->Comment
);
2662 static enum ndr_err_code
ndr_push_nbt_browse_announcement_request(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_browse_announcement_request
*r
)
2664 if (ndr_flags
& NDR_SCALARS
) {
2665 NDR_CHECK(ndr_push_align(ndr
, 4));
2666 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->Unused
));
2668 uint32_t _flags_save_string
= ndr
->flags
;
2669 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2670 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->ResponseName
));
2671 ndr
->flags
= _flags_save_string
;
2674 if (ndr_flags
& NDR_BUFFERS
) {
2676 return NDR_ERR_SUCCESS
;
2679 static enum ndr_err_code
ndr_pull_nbt_browse_announcement_request(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_browse_announcement_request
*r
)
2681 if (ndr_flags
& NDR_SCALARS
) {
2682 NDR_CHECK(ndr_pull_align(ndr
, 4));
2683 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->Unused
));
2685 uint32_t _flags_save_string
= ndr
->flags
;
2686 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2687 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->ResponseName
));
2688 ndr
->flags
= _flags_save_string
;
2691 if (ndr_flags
& NDR_BUFFERS
) {
2693 return NDR_ERR_SUCCESS
;
2696 _PUBLIC_
void ndr_print_nbt_browse_announcement_request(struct ndr_print
*ndr
, const char *name
, const struct nbt_browse_announcement_request
*r
)
2698 ndr_print_struct(ndr
, name
, "nbt_browse_announcement_request");
2700 ndr_print_uint8(ndr
, "Unused", r
->Unused
);
2701 ndr_print_string(ndr
, "ResponseName", r
->ResponseName
);
2705 static enum ndr_err_code
ndr_push_nbt_browse_election_request(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_browse_election_request
*r
)
2707 if (ndr_flags
& NDR_SCALARS
) {
2708 NDR_CHECK(ndr_push_align(ndr
, 4));
2709 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->Version
));
2710 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->Criteria
));
2711 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->UpTime
));
2712 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->Reserved
));
2714 uint32_t _flags_save_string
= ndr
->flags
;
2715 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2716 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->ServerName
));
2717 ndr
->flags
= _flags_save_string
;
2720 if (ndr_flags
& NDR_BUFFERS
) {
2722 return NDR_ERR_SUCCESS
;
2725 static enum ndr_err_code
ndr_pull_nbt_browse_election_request(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_browse_election_request
*r
)
2727 if (ndr_flags
& NDR_SCALARS
) {
2728 NDR_CHECK(ndr_pull_align(ndr
, 4));
2729 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->Version
));
2730 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Criteria
));
2731 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->UpTime
));
2732 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Reserved
));
2734 uint32_t _flags_save_string
= ndr
->flags
;
2735 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2736 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->ServerName
));
2737 ndr
->flags
= _flags_save_string
;
2740 if (ndr_flags
& NDR_BUFFERS
) {
2742 return NDR_ERR_SUCCESS
;
2745 _PUBLIC_
void ndr_print_nbt_browse_election_request(struct ndr_print
*ndr
, const char *name
, const struct nbt_browse_election_request
*r
)
2747 ndr_print_struct(ndr
, name
, "nbt_browse_election_request");
2749 ndr_print_uint8(ndr
, "Version", r
->Version
);
2750 ndr_print_uint32(ndr
, "Criteria", r
->Criteria
);
2751 ndr_print_uint32(ndr
, "UpTime", r
->UpTime
);
2752 ndr_print_uint32(ndr
, "Reserved", r
->Reserved
);
2753 ndr_print_string(ndr
, "ServerName", r
->ServerName
);
2757 static enum ndr_err_code
ndr_push_nbt_browse_backup_list_request(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_browse_backup_list_request
*r
)
2759 if (ndr_flags
& NDR_SCALARS
) {
2760 NDR_CHECK(ndr_push_align(ndr
, 4));
2761 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->ReqCount
));
2762 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->Token
));
2764 if (ndr_flags
& NDR_BUFFERS
) {
2766 return NDR_ERR_SUCCESS
;
2769 static enum ndr_err_code
ndr_pull_nbt_browse_backup_list_request(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_browse_backup_list_request
*r
)
2771 if (ndr_flags
& NDR_SCALARS
) {
2772 NDR_CHECK(ndr_pull_align(ndr
, 4));
2773 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->ReqCount
));
2774 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Token
));
2776 if (ndr_flags
& NDR_BUFFERS
) {
2778 return NDR_ERR_SUCCESS
;
2781 _PUBLIC_
void ndr_print_nbt_browse_backup_list_request(struct ndr_print
*ndr
, const char *name
, const struct nbt_browse_backup_list_request
*r
)
2783 ndr_print_struct(ndr
, name
, "nbt_browse_backup_list_request");
2785 ndr_print_uint8(ndr
, "ReqCount", r
->ReqCount
);
2786 ndr_print_uint32(ndr
, "Token", r
->Token
);
2790 static enum ndr_err_code
ndr_push_nbt_browse_backup_list_response(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_browse_backup_list_response
*r
)
2792 uint32_t cntr_BackupServerList_0
;
2793 if (ndr_flags
& NDR_SCALARS
) {
2794 NDR_CHECK(ndr_push_align(ndr
, 4));
2795 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->BackupCount
));
2796 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->Token
));
2797 for (cntr_BackupServerList_0
= 0; cntr_BackupServerList_0
< r
->BackupCount
; cntr_BackupServerList_0
++) {
2798 NDR_CHECK(ndr_push_nbt_name(ndr
, NDR_SCALARS
, &r
->BackupServerList
[cntr_BackupServerList_0
]));
2801 if (ndr_flags
& NDR_BUFFERS
) {
2803 return NDR_ERR_SUCCESS
;
2806 static enum ndr_err_code
ndr_pull_nbt_browse_backup_list_response(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_browse_backup_list_response
*r
)
2808 uint32_t cntr_BackupServerList_0
;
2809 TALLOC_CTX
*_mem_save_BackupServerList_0
;
2810 if (ndr_flags
& NDR_SCALARS
) {
2811 NDR_CHECK(ndr_pull_align(ndr
, 4));
2812 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->BackupCount
));
2813 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Token
));
2814 NDR_PULL_ALLOC_N(ndr
, r
->BackupServerList
, r
->BackupCount
);
2815 _mem_save_BackupServerList_0
= NDR_PULL_GET_MEM_CTX(ndr
);
2816 NDR_PULL_SET_MEM_CTX(ndr
, r
->BackupServerList
, 0);
2817 for (cntr_BackupServerList_0
= 0; cntr_BackupServerList_0
< r
->BackupCount
; cntr_BackupServerList_0
++) {
2818 NDR_CHECK(ndr_pull_nbt_name(ndr
, NDR_SCALARS
, &r
->BackupServerList
[cntr_BackupServerList_0
]));
2820 NDR_PULL_SET_MEM_CTX(ndr
, _mem_save_BackupServerList_0
, 0);
2822 if (ndr_flags
& NDR_BUFFERS
) {
2824 return NDR_ERR_SUCCESS
;
2827 _PUBLIC_
void ndr_print_nbt_browse_backup_list_response(struct ndr_print
*ndr
, const char *name
, const struct nbt_browse_backup_list_response
*r
)
2829 uint32_t cntr_BackupServerList_0
;
2830 ndr_print_struct(ndr
, name
, "nbt_browse_backup_list_response");
2832 ndr_print_uint8(ndr
, "BackupCount", r
->BackupCount
);
2833 ndr_print_uint32(ndr
, "Token", r
->Token
);
2834 ndr
->print(ndr
, "%s: ARRAY(%d)", "BackupServerList", (int)r
->BackupCount
);
2836 for (cntr_BackupServerList_0
=0;cntr_BackupServerList_0
<r
->BackupCount
;cntr_BackupServerList_0
++) {
2838 if (asprintf(&idx_0
, "[%d]", cntr_BackupServerList_0
) != -1) {
2839 ndr_print_nbt_name(ndr
, "BackupServerList", &r
->BackupServerList
[cntr_BackupServerList_0
]);
2847 static enum ndr_err_code
ndr_push_nbt_browse_become_backup(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_browse_become_backup
*r
)
2849 if (ndr_flags
& NDR_SCALARS
) {
2850 NDR_CHECK(ndr_push_align(ndr
, 4));
2852 uint32_t _flags_save_string
= ndr
->flags
;
2853 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2854 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->BrowserName
));
2855 ndr
->flags
= _flags_save_string
;
2858 if (ndr_flags
& NDR_BUFFERS
) {
2860 return NDR_ERR_SUCCESS
;
2863 static enum ndr_err_code
ndr_pull_nbt_browse_become_backup(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_browse_become_backup
*r
)
2865 if (ndr_flags
& NDR_SCALARS
) {
2866 NDR_CHECK(ndr_pull_align(ndr
, 4));
2868 uint32_t _flags_save_string
= ndr
->flags
;
2869 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2870 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->BrowserName
));
2871 ndr
->flags
= _flags_save_string
;
2874 if (ndr_flags
& NDR_BUFFERS
) {
2876 return NDR_ERR_SUCCESS
;
2879 _PUBLIC_
void ndr_print_nbt_browse_become_backup(struct ndr_print
*ndr
, const char *name
, const struct nbt_browse_become_backup
*r
)
2881 ndr_print_struct(ndr
, name
, "nbt_browse_become_backup");
2883 ndr_print_string(ndr
, "BrowserName", r
->BrowserName
);
2887 static enum ndr_err_code
ndr_push_nbt_browse_domain_announcement(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_browse_domain_announcement
*r
)
2889 if (ndr_flags
& NDR_SCALARS
) {
2890 NDR_CHECK(ndr_push_align(ndr
, 4));
2891 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->UpdateCount
));
2892 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->Periodicity
));
2893 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->ServerName
, 16, sizeof(uint8_t), CH_DOS
));
2894 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->OSMajor
));
2895 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->OSMinor
));
2896 NDR_CHECK(ndr_push_svcctl_ServerType(ndr
, NDR_SCALARS
, r
->ServerType
));
2897 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->MysteriousField
));
2899 uint32_t _flags_save_string
= ndr
->flags
;
2900 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2901 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->Comment
));
2902 ndr
->flags
= _flags_save_string
;
2905 if (ndr_flags
& NDR_BUFFERS
) {
2907 return NDR_ERR_SUCCESS
;
2910 static enum ndr_err_code
ndr_pull_nbt_browse_domain_announcement(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_browse_domain_announcement
*r
)
2912 if (ndr_flags
& NDR_SCALARS
) {
2913 NDR_CHECK(ndr_pull_align(ndr
, 4));
2914 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->UpdateCount
));
2915 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Periodicity
));
2916 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->ServerName
, 16, sizeof(uint8_t), CH_DOS
));
2917 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->OSMajor
));
2918 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->OSMinor
));
2919 NDR_CHECK(ndr_pull_svcctl_ServerType(ndr
, NDR_SCALARS
, &r
->ServerType
));
2920 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->MysteriousField
));
2922 uint32_t _flags_save_string
= ndr
->flags
;
2923 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2924 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->Comment
));
2925 ndr
->flags
= _flags_save_string
;
2928 if (ndr_flags
& NDR_BUFFERS
) {
2930 return NDR_ERR_SUCCESS
;
2933 _PUBLIC_
void ndr_print_nbt_browse_domain_announcement(struct ndr_print
*ndr
, const char *name
, const struct nbt_browse_domain_announcement
*r
)
2935 ndr_print_struct(ndr
, name
, "nbt_browse_domain_announcement");
2937 ndr_print_uint8(ndr
, "UpdateCount", r
->UpdateCount
);
2938 ndr_print_uint32(ndr
, "Periodicity", r
->Periodicity
);
2939 ndr_print_string(ndr
, "ServerName", r
->ServerName
);
2940 ndr_print_uint8(ndr
, "OSMajor", r
->OSMajor
);
2941 ndr_print_uint8(ndr
, "OSMinor", r
->OSMinor
);
2942 ndr_print_svcctl_ServerType(ndr
, "ServerType", r
->ServerType
);
2943 ndr_print_uint32(ndr
, "MysteriousField", r
->MysteriousField
);
2944 ndr_print_string(ndr
, "Comment", r
->Comment
);
2948 static enum ndr_err_code
ndr_push_nbt_browse_master_announcement(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_browse_master_announcement
*r
)
2950 if (ndr_flags
& NDR_SCALARS
) {
2951 NDR_CHECK(ndr_push_align(ndr
, 4));
2953 uint32_t _flags_save_string
= ndr
->flags
;
2954 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2955 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->ServerName
));
2956 ndr
->flags
= _flags_save_string
;
2959 if (ndr_flags
& NDR_BUFFERS
) {
2961 return NDR_ERR_SUCCESS
;
2964 static enum ndr_err_code
ndr_pull_nbt_browse_master_announcement(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_browse_master_announcement
*r
)
2966 if (ndr_flags
& NDR_SCALARS
) {
2967 NDR_CHECK(ndr_pull_align(ndr
, 4));
2969 uint32_t _flags_save_string
= ndr
->flags
;
2970 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
2971 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->ServerName
));
2972 ndr
->flags
= _flags_save_string
;
2975 if (ndr_flags
& NDR_BUFFERS
) {
2977 return NDR_ERR_SUCCESS
;
2980 _PUBLIC_
void ndr_print_nbt_browse_master_announcement(struct ndr_print
*ndr
, const char *name
, const struct nbt_browse_master_announcement
*r
)
2982 ndr_print_struct(ndr
, name
, "nbt_browse_master_announcement");
2984 ndr_print_string(ndr
, "ServerName", r
->ServerName
);
2988 static enum ndr_err_code
ndr_push_nbt_browse_reset_state(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_browse_reset_state
*r
)
2990 if (ndr_flags
& NDR_SCALARS
) {
2991 NDR_CHECK(ndr_push_align(ndr
, 1));
2992 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->Command
));
2994 if (ndr_flags
& NDR_BUFFERS
) {
2996 return NDR_ERR_SUCCESS
;
2999 static enum ndr_err_code
ndr_pull_nbt_browse_reset_state(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_browse_reset_state
*r
)
3001 if (ndr_flags
& NDR_SCALARS
) {
3002 NDR_CHECK(ndr_pull_align(ndr
, 1));
3003 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->Command
));
3005 if (ndr_flags
& NDR_BUFFERS
) {
3007 return NDR_ERR_SUCCESS
;
3010 _PUBLIC_
void ndr_print_nbt_browse_reset_state(struct ndr_print
*ndr
, const char *name
, const struct nbt_browse_reset_state
*r
)
3012 ndr_print_struct(ndr
, name
, "nbt_browse_reset_state");
3014 ndr_print_uint8(ndr
, "Command", r
->Command
);
3018 static enum ndr_err_code
ndr_push_nbt_browse_local_master_announcement(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_browse_local_master_announcement
*r
)
3020 if (ndr_flags
& NDR_SCALARS
) {
3021 NDR_CHECK(ndr_push_align(ndr
, 4));
3022 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->UpdateCount
));
3023 NDR_CHECK(ndr_push_uint32(ndr
, NDR_SCALARS
, r
->Periodicity
));
3024 NDR_CHECK(ndr_push_charset(ndr
, NDR_SCALARS
, r
->ServerName
, 16, sizeof(uint8_t), CH_DOS
));
3025 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->OSMajor
));
3026 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->OSMinor
));
3027 NDR_CHECK(ndr_push_svcctl_ServerType(ndr
, NDR_SCALARS
, r
->ServerType
));
3028 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->BroMajorVer
));
3029 NDR_CHECK(ndr_push_uint8(ndr
, NDR_SCALARS
, r
->BroMinorVer
));
3030 NDR_CHECK(ndr_push_uint16(ndr
, NDR_SCALARS
, r
->Signature
));
3032 uint32_t _flags_save_string
= ndr
->flags
;
3033 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
3034 NDR_CHECK(ndr_push_string(ndr
, NDR_SCALARS
, r
->Comment
));
3035 ndr
->flags
= _flags_save_string
;
3038 if (ndr_flags
& NDR_BUFFERS
) {
3040 return NDR_ERR_SUCCESS
;
3043 static enum ndr_err_code
ndr_pull_nbt_browse_local_master_announcement(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_browse_local_master_announcement
*r
)
3045 if (ndr_flags
& NDR_SCALARS
) {
3046 NDR_CHECK(ndr_pull_align(ndr
, 4));
3047 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->UpdateCount
));
3048 NDR_CHECK(ndr_pull_uint32(ndr
, NDR_SCALARS
, &r
->Periodicity
));
3049 NDR_CHECK(ndr_pull_charset(ndr
, NDR_SCALARS
, &r
->ServerName
, 16, sizeof(uint8_t), CH_DOS
));
3050 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->OSMajor
));
3051 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->OSMinor
));
3052 NDR_CHECK(ndr_pull_svcctl_ServerType(ndr
, NDR_SCALARS
, &r
->ServerType
));
3053 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->BroMajorVer
));
3054 NDR_CHECK(ndr_pull_uint8(ndr
, NDR_SCALARS
, &r
->BroMinorVer
));
3055 NDR_CHECK(ndr_pull_uint16(ndr
, NDR_SCALARS
, &r
->Signature
));
3057 uint32_t _flags_save_string
= ndr
->flags
;
3058 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_STR_ASCII
|LIBNDR_FLAG_STR_NULLTERM
);
3059 NDR_CHECK(ndr_pull_string(ndr
, NDR_SCALARS
, &r
->Comment
));
3060 ndr
->flags
= _flags_save_string
;
3063 if (ndr_flags
& NDR_BUFFERS
) {
3065 return NDR_ERR_SUCCESS
;
3068 _PUBLIC_
void ndr_print_nbt_browse_local_master_announcement(struct ndr_print
*ndr
, const char *name
, const struct nbt_browse_local_master_announcement
*r
)
3070 ndr_print_struct(ndr
, name
, "nbt_browse_local_master_announcement");
3072 ndr_print_uint8(ndr
, "UpdateCount", r
->UpdateCount
);
3073 ndr_print_uint32(ndr
, "Periodicity", r
->Periodicity
);
3074 ndr_print_string(ndr
, "ServerName", r
->ServerName
);
3075 ndr_print_uint8(ndr
, "OSMajor", r
->OSMajor
);
3076 ndr_print_uint8(ndr
, "OSMinor", r
->OSMinor
);
3077 ndr_print_svcctl_ServerType(ndr
, "ServerType", r
->ServerType
);
3078 ndr_print_uint8(ndr
, "BroMajorVer", r
->BroMajorVer
);
3079 ndr_print_uint8(ndr
, "BroMinorVer", r
->BroMinorVer
);
3080 ndr_print_uint16(ndr
, "Signature", r
->Signature
);
3081 ndr_print_string(ndr
, "Comment", r
->Comment
);
3085 static enum ndr_err_code
ndr_push_nbt_browse_payload(struct ndr_push
*ndr
, int ndr_flags
, const union nbt_browse_payload
*r
)
3087 if (ndr_flags
& NDR_SCALARS
) {
3088 int level
= ndr_push_get_switch_value(ndr
, r
);
3090 case HostAnnouncement
: {
3091 NDR_CHECK(ndr_push_nbt_browse_host_announcement(ndr
, NDR_SCALARS
, &r
->host_annoucement
));
3094 case AnnouncementRequest
: {
3095 NDR_CHECK(ndr_push_nbt_browse_announcement_request(ndr
, NDR_SCALARS
, &r
->announcement_request
));
3099 NDR_CHECK(ndr_push_nbt_browse_election_request(ndr
, NDR_SCALARS
, &r
->election_request
));
3102 case GetBackupListReq
: {
3103 NDR_CHECK(ndr_push_nbt_browse_backup_list_request(ndr
, NDR_SCALARS
, &r
->backup_list_request
));
3106 case GetBackupListResp
: {
3107 NDR_CHECK(ndr_push_nbt_browse_backup_list_response(ndr
, NDR_SCALARS
, &r
->backup_list_response
));
3110 case BecomeBackup
: {
3111 NDR_CHECK(ndr_push_nbt_browse_become_backup(ndr
, NDR_SCALARS
, &r
->become_backup
));
3114 case DomainAnnouncement
: {
3115 NDR_CHECK(ndr_push_nbt_browse_domain_announcement(ndr
, NDR_SCALARS
, &r
->domain_announcement
));
3118 case MasterAnnouncement
: {
3119 NDR_CHECK(ndr_push_nbt_browse_master_announcement(ndr
, NDR_SCALARS
, &r
->master_announcement
));
3122 case ResetBrowserState
: {
3123 NDR_CHECK(ndr_push_nbt_browse_reset_state(ndr
, NDR_SCALARS
, &r
->reset_browser_state
));
3126 case LocalMasterAnnouncement
: {
3127 NDR_CHECK(ndr_push_nbt_browse_local_master_announcement(ndr
, NDR_SCALARS
, &r
->local_master_announcement
));
3131 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
3134 if (ndr_flags
& NDR_BUFFERS
) {
3135 int level
= ndr_push_get_switch_value(ndr
, r
);
3137 case HostAnnouncement
:
3140 case AnnouncementRequest
:
3146 case GetBackupListReq
:
3149 case GetBackupListResp
:
3155 case DomainAnnouncement
:
3158 case MasterAnnouncement
:
3161 case ResetBrowserState
:
3164 case LocalMasterAnnouncement
:
3168 return ndr_push_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
3171 return NDR_ERR_SUCCESS
;
3174 static enum ndr_err_code
ndr_pull_nbt_browse_payload(struct ndr_pull
*ndr
, int ndr_flags
, union nbt_browse_payload
*r
)
3177 level
= ndr_pull_get_switch_value(ndr
, r
);
3178 if (ndr_flags
& NDR_SCALARS
) {
3180 case HostAnnouncement
: {
3181 NDR_CHECK(ndr_pull_nbt_browse_host_announcement(ndr
, NDR_SCALARS
, &r
->host_annoucement
));
3184 case AnnouncementRequest
: {
3185 NDR_CHECK(ndr_pull_nbt_browse_announcement_request(ndr
, NDR_SCALARS
, &r
->announcement_request
));
3189 NDR_CHECK(ndr_pull_nbt_browse_election_request(ndr
, NDR_SCALARS
, &r
->election_request
));
3192 case GetBackupListReq
: {
3193 NDR_CHECK(ndr_pull_nbt_browse_backup_list_request(ndr
, NDR_SCALARS
, &r
->backup_list_request
));
3196 case GetBackupListResp
: {
3197 NDR_CHECK(ndr_pull_nbt_browse_backup_list_response(ndr
, NDR_SCALARS
, &r
->backup_list_response
));
3200 case BecomeBackup
: {
3201 NDR_CHECK(ndr_pull_nbt_browse_become_backup(ndr
, NDR_SCALARS
, &r
->become_backup
));
3204 case DomainAnnouncement
: {
3205 NDR_CHECK(ndr_pull_nbt_browse_domain_announcement(ndr
, NDR_SCALARS
, &r
->domain_announcement
));
3208 case MasterAnnouncement
: {
3209 NDR_CHECK(ndr_pull_nbt_browse_master_announcement(ndr
, NDR_SCALARS
, &r
->master_announcement
));
3212 case ResetBrowserState
: {
3213 NDR_CHECK(ndr_pull_nbt_browse_reset_state(ndr
, NDR_SCALARS
, &r
->reset_browser_state
));
3216 case LocalMasterAnnouncement
: {
3217 NDR_CHECK(ndr_pull_nbt_browse_local_master_announcement(ndr
, NDR_SCALARS
, &r
->local_master_announcement
));
3221 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
3224 if (ndr_flags
& NDR_BUFFERS
) {
3226 case HostAnnouncement
:
3229 case AnnouncementRequest
:
3235 case GetBackupListReq
:
3238 case GetBackupListResp
:
3244 case DomainAnnouncement
:
3247 case MasterAnnouncement
:
3250 case ResetBrowserState
:
3253 case LocalMasterAnnouncement
:
3257 return ndr_pull_error(ndr
, NDR_ERR_BAD_SWITCH
, "Bad switch value %u", level
);
3260 return NDR_ERR_SUCCESS
;
3263 _PUBLIC_
void ndr_print_nbt_browse_payload(struct ndr_print
*ndr
, const char *name
, const union nbt_browse_payload
*r
)
3266 level
= ndr_print_get_switch_value(ndr
, r
);
3267 ndr_print_union(ndr
, name
, level
, "nbt_browse_payload");
3269 case HostAnnouncement
:
3270 ndr_print_nbt_browse_host_announcement(ndr
, "host_annoucement", &r
->host_annoucement
);
3273 case AnnouncementRequest
:
3274 ndr_print_nbt_browse_announcement_request(ndr
, "announcement_request", &r
->announcement_request
);
3278 ndr_print_nbt_browse_election_request(ndr
, "election_request", &r
->election_request
);
3281 case GetBackupListReq
:
3282 ndr_print_nbt_browse_backup_list_request(ndr
, "backup_list_request", &r
->backup_list_request
);
3285 case GetBackupListResp
:
3286 ndr_print_nbt_browse_backup_list_response(ndr
, "backup_list_response", &r
->backup_list_response
);
3290 ndr_print_nbt_browse_become_backup(ndr
, "become_backup", &r
->become_backup
);
3293 case DomainAnnouncement
:
3294 ndr_print_nbt_browse_domain_announcement(ndr
, "domain_announcement", &r
->domain_announcement
);
3297 case MasterAnnouncement
:
3298 ndr_print_nbt_browse_master_announcement(ndr
, "master_announcement", &r
->master_announcement
);
3301 case ResetBrowserState
:
3302 ndr_print_nbt_browse_reset_state(ndr
, "reset_browser_state", &r
->reset_browser_state
);
3305 case LocalMasterAnnouncement
:
3306 ndr_print_nbt_browse_local_master_announcement(ndr
, "local_master_announcement", &r
->local_master_announcement
);
3310 ndr_print_bad_level(ndr
, name
, level
);
3314 _PUBLIC_
enum ndr_err_code
ndr_push_nbt_browse_packet(struct ndr_push
*ndr
, int ndr_flags
, const struct nbt_browse_packet
*r
)
3317 uint32_t _flags_save_STRUCT
= ndr
->flags
;
3318 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
3319 if (ndr_flags
& NDR_SCALARS
) {
3320 NDR_CHECK(ndr_push_align(ndr
, 4));
3321 NDR_CHECK(ndr_push_nbt_browse_opcode(ndr
, NDR_SCALARS
, r
->opcode
));
3322 NDR_CHECK(ndr_push_set_switch_value(ndr
, &r
->payload
, r
->opcode
));
3323 NDR_CHECK(ndr_push_nbt_browse_payload(ndr
, NDR_SCALARS
, &r
->payload
));
3325 if (ndr_flags
& NDR_BUFFERS
) {
3327 ndr
->flags
= _flags_save_STRUCT
;
3329 return NDR_ERR_SUCCESS
;
3332 _PUBLIC_
enum ndr_err_code
ndr_pull_nbt_browse_packet(struct ndr_pull
*ndr
, int ndr_flags
, struct nbt_browse_packet
*r
)
3335 uint32_t _flags_save_STRUCT
= ndr
->flags
;
3336 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
3337 if (ndr_flags
& NDR_SCALARS
) {
3338 NDR_CHECK(ndr_pull_align(ndr
, 4));
3339 NDR_CHECK(ndr_pull_nbt_browse_opcode(ndr
, NDR_SCALARS
, &r
->opcode
));
3340 NDR_CHECK(ndr_pull_set_switch_value(ndr
, &r
->payload
, r
->opcode
));
3341 NDR_CHECK(ndr_pull_nbt_browse_payload(ndr
, NDR_SCALARS
, &r
->payload
));
3343 if (ndr_flags
& NDR_BUFFERS
) {
3345 ndr
->flags
= _flags_save_STRUCT
;
3347 return NDR_ERR_SUCCESS
;
3350 _PUBLIC_
void ndr_print_nbt_browse_packet(struct ndr_print
*ndr
, const char *name
, const struct nbt_browse_packet
*r
)
3352 ndr_print_struct(ndr
, name
, "nbt_browse_packet");
3354 uint32_t _flags_save_STRUCT
= ndr
->flags
;
3355 ndr_set_flags(&ndr
->flags
, LIBNDR_FLAG_NOALIGN
);
3357 ndr_print_nbt_browse_opcode(ndr
, "opcode", r
->opcode
);
3358 ndr_print_set_switch_value(ndr
, &r
->payload
, r
->opcode
);
3359 ndr_print_nbt_browse_payload(ndr
, "payload", &r
->payload
);
3361 ndr
->flags
= _flags_save_STRUCT
;