1 /* packet-dcerpc-netlogon.c
2 * Routines for SMB \\PIPE\\NETLOGON packet disassembly
3 * Copyright 2001, Tim Potter <tpot@samba.org>
4 * 2002 structure and command dissectors by Ronnie Sahlberg
6 * $Id: packet-dcerpc-netlogon.c,v 1.17 2002/04/20 07:15:19 tpot Exp $
8 * Ethereal - Network traffic analyzer
9 * By Gerald Combs <gerald@ethereal.com>
10 * Copyright 1998 Gerald Combs
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
17 * This program is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
22 * You should have received a copy of the GNU General Public License
23 * along with this program; if not, write to the Free Software
24 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
32 #include <epan/packet.h>
33 #include "packet-dcerpc.h"
34 #include "packet-dcerpc-nt.h"
35 #include "packet-dcerpc-netlogon.h"
36 #include "smb.h" /* for "NT_errors[]" */
37 #include "packet-smb-common.h"
38 #include "packet-dcerpc-lsa.h"
40 static int proto_dcerpc_netlogon = -1;
41 static int hf_netlogon_rc = -1;
42 static int hf_netlogon_len = -1;
43 static int hf_netlogon_status = -1;
44 static int hf_netlogon_attrs = -1;
45 static int hf_netlogon_count = -1;
46 static int hf_netlogon_level = -1;
47 static int hf_netlogon_level_long = -1;
48 static int hf_netlogon_unknown_time = -1;
49 static int hf_netlogon_unknown_string = -1;
50 static int hf_netlogon_unknown_long = -1;
51 static int hf_netlogon_unknown_short = -1;
52 static int hf_netlogon_unknown_char = -1;
53 static int hf_netlogon_logon_time = -1;
54 static int hf_netlogon_logoff_time = -1;
55 static int hf_netlogon_kickoff_time = -1;
56 static int hf_netlogon_pwd_last_set_time = -1;
57 static int hf_netlogon_pwd_can_change_time = -1;
58 static int hf_netlogon_pwd_must_change_time = -1;
59 static int hf_netlogon_timestamp = -1;
60 static int hf_netlogon_nt_chal_resp = -1;
61 static int hf_netlogon_lm_chal_resp = -1;
62 static int hf_netlogon_credential = -1;
63 static int hf_netlogon_cypher_block = -1;
64 static int hf_netlogon_acct_name = -1;
65 static int hf_netlogon_acct_desc = -1;
66 static int hf_netlogon_group_desc = -1;
67 static int hf_netlogon_full_name = -1;
68 static int hf_netlogon_comment = -1;
69 static int hf_netlogon_parameters = -1;
70 static int hf_netlogon_logon_script = -1;
71 static int hf_netlogon_profile_path = -1;
72 static int hf_netlogon_home_dir = -1;
73 static int hf_netlogon_dir_drive = -1;
74 static int hf_netlogon_logon_count = -1;
75 static int hf_netlogon_bad_pw_count = -1;
76 static int hf_netlogon_user_rid = -1;
77 static int hf_netlogon_alias_rid = -1;
78 static int hf_netlogon_group_rid = -1;
79 static int hf_netlogon_logon_srv = -1;
80 static int hf_netlogon_logon_dom = -1;
81 static int hf_netlogon_trusted_domain_name = -1;
82 static int hf_netlogon_num_rids = -1;
83 static int hf_netlogon_num_other_groups = -1;
84 static int hf_netlogon_computer_name = -1;
85 static int hf_netlogon_site_name = -1;
86 static int hf_netlogon_trusted_dc_name = -1;
87 static int hf_netlogon_dc_name = -1;
88 static int hf_netlogon_dc_site_name = -1;
89 static int hf_netlogon_dns_forest_name = -1;
90 static int hf_netlogon_dc_address = -1;
91 static int hf_netlogon_dc_address_type = -1;
92 static int hf_netlogon_client_name = -1;
93 static int hf_netlogon_client_site_name = -1;
94 static int hf_netlogon_workstation_site_name = -1;
95 static int hf_netlogon_workstation_os = -1;
96 static int hf_netlogon_workstations = -1;
97 static int hf_netlogon_workstation_fqdn = -1;
98 static int hf_netlogon_group_name = -1;
99 static int hf_netlogon_alias_name = -1;
100 static int hf_netlogon_cli_name = -1;
101 static int hf_netlogon_country = -1;
102 static int hf_netlogon_codepage = -1;
103 static int hf_netlogon_flags = -1;
104 static int hf_netlogon_user_flags = -1;
105 static int hf_netlogon_pwd_expired = -1;
106 static int hf_netlogon_nt_pwd_present = -1;
107 static int hf_netlogon_lm_pwd_present = -1;
108 static int hf_netlogon_code = -1;
109 static int hf_netlogon_database_id = -1;
110 static int hf_netlogon_max_size = -1;
111 static int hf_netlogon_dns_host = -1;
112 static int hf_netlogon_num_pwd_pairs = -1;
113 static int hf_netlogon_acct_expiry_time = -1;
114 static int hf_netlogon_encrypted_lm_owf_password = -1;
115 static int hf_netlogon_lm_owf_password = -1;
116 static int hf_netlogon_nt_owf_password = -1;
117 static int hf_netlogon_param_ctrl = -1;
118 static int hf_netlogon_logon_id = -1;
119 static int hf_netlogon_num_deltas = -1;
120 static int hf_netlogon_user_session_key = -1;
121 static int hf_netlogon_blob_size = -1;
122 static int hf_netlogon_blob = -1;
123 static int hf_netlogon_logon_attempts = -1;
124 static int hf_netlogon_authoritative = -1;
125 static int hf_netlogon_secure_channel_type = -1;
126 static int hf_netlogon_logonsrv_handle = -1;
128 static gint ett_dcerpc_netlogon = -1;
129 static gint ett_NETLOGON_SECURITY_DESCRIPTOR = -1;
130 static gint ett_TYPE_1 = -1;
131 static gint ett_TYPE_2 = -1;
132 static gint ett_CYPHER_BLOCK = -1;
133 static gint ett_NETLOGON_AUTHENTICATOR = -1;
134 static gint ett_NETLOGON_LOGON_IDENTITY_INFO = -1;
135 static gint ett_NETLOGON_INTERACTIVE_INFO = -1;
136 static gint ett_NETLOGON_NETWORK_INFO = -1;
137 static gint ett_NETLOGON_VALIDATION_SAM_INFO1 = -1;
138 static gint ett_NETLOGON_VALIDATION_SAM_INFO2 = -1;
139 static gint ett_TYPE_16 = -1;
140 static gint ett_NETLOGON_SAM_DOMAIN_INFO = -1;
141 static gint ett_NETLOGON_SAM_GROUP_INFO = -1;
142 static gint ett_TYPE_23 = -1;
143 static gint ett_NETLOGON_SAM_ACCOUNT_INFO = -1;
144 static gint ett_NETLOGON_SAM_GROUP_MEM_INFO = -1;
145 static gint ett_NETLOGON_SAM_ALIAS_INFO = -1;
146 static gint ett_NETLOGON_SAM_ALIAS_MEM_INFO = -1;
147 static gint ett_TYPE_30 = -1;
148 static gint ett_TYPE_29 = -1;
149 static gint ett_TYPE_31 = -1;
150 static gint ett_TYPE_32 = -1;
151 static gint ett_TYPE_33 = -1;
152 static gint ett_TYPE_34 = -1;
153 static gint ett_TYPE_35 = -1;
154 static gint ett_SAM_DELTA = -1;
155 static gint ett_SAM_DELTA_ARRAY = -1;
156 static gint ett_TYPE_36 = -1;
157 static gint ett_NETLOGON_INFO_1 = -1;
158 static gint ett_NETLOGON_INFO_2 = -1;
159 static gint ett_NETLOGON_INFO_3 = -1;
160 static gint ett_NETLOGON_INFO_4 = -1;
161 static gint ett_UNICODE_MULTI = -1;
162 static gint ett_DOMAIN_CONTROLLER_INFO = -1;
163 static gint ett_TYPE_46 = -1;
164 static gint ett_TYPE_48 = -1;
165 static gint ett_UNICODE_STRING_512 = -1;
166 static gint ett_TYPE_50 = -1;
167 static gint ett_TYPE_51 = -1;
168 static gint ett_TYPE_52 = -1;
169 static gint ett_NETLOGON_LEVEL = -1;
170 static gint ett_NETLOGON_VALIDATION = -1;
171 static gint ett_TYPE_19 = -1;
172 static gint ett_NETLOGON_CONTROL_QUERY_INFO = -1;
173 static gint ett_TYPE_44 = -1;
174 static gint ett_TYPE_20 = -1;
175 static gint ett_NETLOGON_INFO = -1;
176 static gint ett_TYPE_45 = -1;
177 static gint ett_TYPE_47 = -1;
178 static gint ett_NETLOGON_CREDENTIAL = -1;
179 static gint ett_GUID = -1;
180 static gint ett_ENC_LM_OWF_PASSWORD = -1;
181 static gint ett_LM_OWF_PASSWORD = -1;
182 static gint ett_NT_OWF_PASSWORD = -1;
183 static gint ett_GROUP_MEMBERSHIP = -1;
184 static gint ett_USER_SESSION_KEY = -1;
185 static gint ett_BLOB = -1;
186 static gint ett_rid_array = -1;
187 static gint ett_attrib_array = -1;
189 static e_uuid_t uuid_dcerpc_netlogon = {
190 0x12345678, 0x1234, 0xabcd,
191 { 0xef, 0x00, 0x01, 0x23, 0x45, 0x67, 0xcf, 0xfb }
194 static guint16 ver_dcerpc_netlogon = 1;
198 netlogon_dissect_pointer_long(tvbuff_t *tvb, int offset,
199 packet_info *pinfo, proto_tree *tree,
204 di=pinfo->private_data;
205 offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
211 netlogon_dissect_pointer_char(tvbuff_t *tvb, int offset,
212 packet_info *pinfo, proto_tree *tree,
217 di=pinfo->private_data;
218 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
224 netlogon_dissect_pointer_STRING(tvbuff_t *tvb, int offset,
225 packet_info *pinfo, proto_tree *tree,
230 di=pinfo->private_data;
231 if(di->conformant_run){
232 /*just a run to handle conformant arrays, nothing to dissect */
236 offset = dissect_ndr_nt_STRING(tvb, offset, pinfo, tree, drep,
242 netlogon_dissect_UNICODE_STRING(tvbuff_t *tvb, int offset,
243 packet_info *pinfo, proto_tree *parent_tree,
244 char *drep, int type, int hf_index, int levels)
246 proto_item *item=NULL;
247 proto_tree *tree=NULL;
248 int old_offset=offset;
252 di=pinfo->private_data;
253 if(di->conformant_run){
254 /*just a run to handle conformant arrays, nothing to dissect */
258 name = proto_registrar_get_name(hf_index);
260 item = proto_tree_add_text(parent_tree, tvb, offset, -1,
262 tree = proto_item_add_subtree(item, ett_nt_unicode_string);
265 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
266 dissect_ndr_nt_UNICODE_STRING_str, type,
267 name, hf_index, levels);
269 proto_item_set_len(item, offset-old_offset);
275 netlogon_dissect_NETLOGON_SECURITY_DESCRIPTOR(tvbuff_t *tvb, int offset,
276 packet_info *pinfo, proto_tree *parent_tree,
279 proto_item *item=NULL;
280 proto_tree *tree=NULL;
281 int old_offset=offset;
284 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
285 "NETLOGON_SECURITY_DESCRIPTOR:");
286 tree = proto_item_add_subtree(item, ett_NETLOGON_SECURITY_DESCRIPTOR);
289 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
290 hf_netlogon_len, NULL);
292 offset = lsa_dissect_LSA_SECURITY_DESCRIPTOR(tvb, offset,
295 proto_item_set_len(item, offset-old_offset);
300 netlogon_dissect_TYPE_1(tvbuff_t *tvb, int offset,
301 packet_info *pinfo, proto_tree *parent_tree,
304 proto_item *item=NULL;
305 proto_tree *tree=NULL;
306 int old_offset=offset;
309 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
311 tree = proto_item_add_subtree(item, ett_TYPE_1);
314 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
315 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
316 "unknown", hf_netlogon_unknown_string, -1);
318 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
319 hf_netlogon_unknown_long, NULL);
321 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
322 hf_netlogon_unknown_long, NULL);
324 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
325 hf_netlogon_unknown_long, NULL);
327 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
328 hf_netlogon_unknown_long, NULL);
330 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
331 hf_netlogon_unknown_long, NULL);
333 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
334 hf_netlogon_unknown_long, NULL);
336 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
337 hf_netlogon_unknown_long, NULL);
339 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
340 hf_netlogon_unknown_long, NULL);
342 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
343 hf_netlogon_unknown_long, NULL);
345 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
346 hf_netlogon_unknown_long, NULL);
348 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
349 hf_netlogon_unknown_long, NULL);
351 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
352 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
353 "unknown", hf_netlogon_unknown_string, -1);
355 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
356 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
357 "unknown", hf_netlogon_unknown_string, -1);
359 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
360 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
361 "unknown", hf_netlogon_unknown_string, -1);
363 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
364 hf_netlogon_unknown_long, NULL);
366 proto_item_set_len(item, offset-old_offset);
371 netlogon_dissect_TYPE_1_ptr(tvbuff_t *tvb, int offset,
372 packet_info *pinfo, proto_tree *tree,
375 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
376 netlogon_dissect_TYPE_1, NDR_POINTER_PTR,
377 "TYPE_1 pointer: ", -1, 0);
382 netlogon_dissect_TYPE_2(tvbuff_t *tvb, int offset,
383 packet_info *pinfo, proto_tree *parent_tree,
386 proto_item *item=NULL;
387 proto_tree *tree=NULL;
388 int old_offset=offset;
391 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
393 tree = proto_item_add_subtree(item, ett_TYPE_2);
396 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
397 hf_netlogon_unknown_long, NULL);
399 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
400 hf_netlogon_unknown_short, NULL);
402 proto_item_set_len(item, offset-old_offset);
407 netlogon_dissect_CYPHER_BLOCK(tvbuff_t *tvb, int offset,
408 packet_info *pinfo, proto_tree *parent_tree,
411 proto_item *item=NULL;
412 proto_tree *tree=NULL;
416 di=pinfo->private_data;
417 if(di->conformant_run){
418 /*just a run to handle conformant arrays, nothing to dissect.*/
423 item = proto_tree_add_text(parent_tree, tvb, offset, 8,
425 tree = proto_item_add_subtree(item, ett_CYPHER_BLOCK);
428 proto_tree_add_item(tree, hf_netlogon_cypher_block, tvb, offset, 8,
436 netlogon_dissect_8_unknown_bytes(tvbuff_t *tvb, int offset,
437 packet_info *pinfo, proto_tree *parent_tree,
440 proto_item *item=NULL;
441 proto_tree *tree=NULL;
445 di=pinfo->private_data;
446 if(di->conformant_run){
447 /*just a run to handle conformant arrays, nothing to dissect.*/
452 item = proto_tree_add_text(parent_tree, tvb, offset, 8,
453 "unknown bytes not in IDL:");
454 tree = proto_item_add_subtree(item, ett_CYPHER_BLOCK);
463 netlogon_dissect_NETLOGON_CREDENTIAL(tvbuff_t *tvb, int offset,
464 packet_info *pinfo, proto_tree *parent_tree,
467 proto_item *item=NULL;
468 proto_tree *tree=NULL;
472 di=pinfo->private_data;
473 if(di->conformant_run){
474 /*just a run to handle conformant arrays, nothing to dissect.*/
479 item = proto_tree_add_text(parent_tree, tvb, offset, 8,
480 "NETLOGON_CREDENTIAL:");
481 tree = proto_item_add_subtree(item, ett_NETLOGON_CREDENTIAL);
484 proto_tree_add_item(tree, hf_netlogon_credential, tvb, offset, 8,
492 netlogon_dissect_NETLOGON_AUTHENTICATOR(tvbuff_t *tvb, int offset,
493 packet_info *pinfo, proto_tree *parent_tree,
496 proto_item *item=NULL;
497 proto_tree *tree=NULL;
498 int old_offset=offset;
501 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
502 "NETLOGON_AUTHENTICATOR:");
503 tree = proto_item_add_subtree(item, ett_NETLOGON_AUTHENTICATOR);
506 offset = netlogon_dissect_NETLOGON_CREDENTIAL(tvb, offset,
509 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
510 hf_netlogon_timestamp, NULL);
512 proto_item_set_len(item, offset-old_offset);
517 netlogon_dissect_USER_SESSION_KEY(tvbuff_t *tvb, int offset,
518 packet_info *pinfo, proto_tree *parent_tree,
521 proto_item *item=NULL;
522 proto_tree *tree=NULL;
525 di=pinfo->private_data;
526 if(di->conformant_run){
527 /*just a run to handle conformant arrays, nothing to dissect.*/
532 item = proto_tree_add_text(parent_tree, tvb, offset, 16,
533 "USER_SESSION_KEY:");
534 tree = proto_item_add_subtree(item, ett_USER_SESSION_KEY);
537 proto_tree_add_item(tree, hf_netlogon_user_session_key, tvb, offset, 16,
545 netlogon_dissect_ENCRYPTED_LM_OWF_PASSWORD(tvbuff_t *tvb, int offset,
546 packet_info *pinfo, proto_tree *parent_tree,
549 proto_item *item=NULL;
550 proto_tree *tree=NULL;
553 di=pinfo->private_data;
554 if(di->conformant_run){
555 /*just a run to handle conformant arrays, nothing to dissect.*/
560 item = proto_tree_add_text(parent_tree, tvb, offset, 16,
561 "ENCRYPTED_LM_OWF_PASSWORD:");
562 tree = proto_item_add_subtree(item, ett_ENC_LM_OWF_PASSWORD);
565 proto_tree_add_item(tree, hf_netlogon_encrypted_lm_owf_password, tvb, offset, 16,
573 netlogon_dissect_LM_OWF_PASSWORD(tvbuff_t *tvb, int offset,
574 packet_info *pinfo, proto_tree *parent_tree,
577 proto_item *item=NULL;
578 proto_tree *tree=NULL;
581 di=pinfo->private_data;
582 if(di->conformant_run){
583 /*just a run to handle conformant arrays, nothing to dissect.*/
588 item = proto_tree_add_text(parent_tree, tvb, offset, 16,
590 tree = proto_item_add_subtree(item, ett_LM_OWF_PASSWORD);
593 proto_tree_add_item(tree, hf_netlogon_lm_owf_password, tvb, offset, 16,
601 netlogon_dissect_NT_OWF_PASSWORD(tvbuff_t *tvb, int offset,
602 packet_info *pinfo, proto_tree *parent_tree,
605 proto_item *item=NULL;
606 proto_tree *tree=NULL;
609 di=pinfo->private_data;
610 if(di->conformant_run){
611 /*just a run to handle conformant arrays, nothing to dissect.*/
616 item = proto_tree_add_text(parent_tree, tvb, offset, 16,
618 tree = proto_item_add_subtree(item, ett_NT_OWF_PASSWORD);
621 proto_tree_add_item(tree, hf_netlogon_nt_owf_password, tvb, offset, 16,
630 netlogon_dissect_NETLOGON_LOGON_IDENTITY_INFO(tvbuff_t *tvb, int offset,
631 packet_info *pinfo, proto_tree *parent_tree,
634 proto_item *item=NULL;
635 proto_tree *tree=NULL;
636 int old_offset=offset;
639 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
640 "NETLOGON_LOGON_IDENTITY_INFO:");
641 tree = proto_item_add_subtree(item, ett_NETLOGON_LOGON_IDENTITY_INFO);
644 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
645 hf_netlogon_logon_dom, 0);
647 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
648 hf_netlogon_param_ctrl, NULL);
650 offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, drep,
651 hf_netlogon_logon_id, NULL);
653 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
654 hf_netlogon_acct_name, 0);
656 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
657 hf_netlogon_computer_name, 0);
659 /* XXX 8 extra bytes here */
660 /* there were 8 extra bytes, either here or in NETWORK_INFO that does not match
661 the idl file. Could be a bug in either the NETLOGON implementation or in the
664 offset = netlogon_dissect_8_unknown_bytes(tvb, offset, pinfo, tree, drep);
670 netlogon_dissect_NETLOGON_INTERACTIVE_INFO(tvbuff_t *tvb, int offset,
671 packet_info *pinfo, proto_tree *parent_tree,
674 proto_item *item=NULL;
675 proto_tree *tree=NULL;
676 int old_offset=offset;
679 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
680 "NETLOGON_INTERACTIVE_INFO:");
681 tree = proto_item_add_subtree(item, ett_NETLOGON_INTERACTIVE_INFO);
684 offset = netlogon_dissect_NETLOGON_LOGON_IDENTITY_INFO(tvb, offset,
687 offset = netlogon_dissect_LM_OWF_PASSWORD(tvb, offset,
690 offset = netlogon_dissect_NT_OWF_PASSWORD(tvb, offset,
693 proto_item_set_len(item, offset-old_offset);
698 netlogon_dissect_NETLOGON_NETWORK_INFO(tvbuff_t *tvb, int offset,
699 packet_info *pinfo, proto_tree *parent_tree,
702 proto_item *item=NULL;
703 proto_tree *tree=NULL;
704 int old_offset=offset;
707 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
708 "NETLOGON_NETWORK_INFO:");
709 tree = proto_item_add_subtree(item, ett_NETLOGON_NETWORK_INFO);
712 offset = netlogon_dissect_NETLOGON_LOGON_IDENTITY_INFO(tvb, offset,
715 offset = dissect_ndr_nt_STRING(tvb, offset, pinfo, tree, drep,
716 hf_netlogon_nt_chal_resp, 0);
718 offset = dissect_ndr_nt_STRING(tvb, offset, pinfo, tree, drep,
719 hf_netlogon_lm_chal_resp, 0);
721 proto_item_set_len(item, offset-old_offset);
726 netlogon_dissect_GROUP_MEMBERSHIP(tvbuff_t *tvb, int offset,
727 packet_info *pinfo, proto_tree *parent_tree,
730 proto_item *item=NULL;
731 proto_tree *tree=NULL;
732 int old_offset=offset;
735 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
736 "GROUP_MEMBERSHIP:");
737 tree = proto_item_add_subtree(item, ett_GROUP_MEMBERSHIP);
740 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
741 hf_netlogon_user_rid, NULL);
743 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
744 hf_netlogon_attrs, NULL);
750 netlogon_dissect_GROUP_MEMBERSHIP_ARRAY(tvbuff_t *tvb, int offset,
751 packet_info *pinfo, proto_tree *tree,
754 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
755 netlogon_dissect_GROUP_MEMBERSHIP);
761 netlogon_dissect_NETLOGON_VALIDATION_SAM_INFO1(tvbuff_t *tvb, int offset,
762 packet_info *pinfo, proto_tree *parent_tree,
765 proto_item *item=NULL;
766 proto_tree *tree=NULL;
767 int old_offset=offset;
771 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
772 "NETLOGON_VALIDATION_SAM_INFO1:");
773 tree = proto_item_add_subtree(item, ett_NETLOGON_VALIDATION_SAM_INFO1);
776 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
777 hf_netlogon_logon_time);
779 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
780 hf_netlogon_logoff_time);
782 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
783 hf_netlogon_kickoff_time);
785 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
786 hf_netlogon_pwd_last_set_time);
788 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
789 hf_netlogon_pwd_can_change_time);
791 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
792 hf_netlogon_pwd_must_change_time);
794 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
795 hf_netlogon_acct_name, 0);
797 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
798 hf_netlogon_full_name, 0);
800 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
801 hf_netlogon_logon_script, 0);
803 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
804 hf_netlogon_profile_path, 0);
806 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
807 hf_netlogon_home_dir, 0);
809 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
810 hf_netlogon_dir_drive, 0);
812 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
813 hf_netlogon_logon_count, NULL);
815 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
816 hf_netlogon_bad_pw_count, NULL);
818 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
819 hf_netlogon_user_rid, NULL);
821 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
822 hf_netlogon_group_rid, NULL);
824 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
825 hf_netlogon_num_rids, NULL);
827 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
828 netlogon_dissect_GROUP_MEMBERSHIP_ARRAY, NDR_POINTER_PTR,
829 "GROUP_MEMBERSHIP_ARRAY", -1, 0);
831 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
832 hf_netlogon_user_flags, NULL);
834 offset = netlogon_dissect_USER_SESSION_KEY(tvb, offset,
837 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
838 hf_netlogon_logon_srv, 0);
840 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
841 hf_netlogon_logon_dom, 0);
843 offset = dissect_ndr_nt_PSID(tvb, offset,
847 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
848 hf_netlogon_unknown_long, NULL);
851 proto_item_set_len(item, offset-old_offset);
856 netlogon_dissect_NETLOGON_VALIDATION_SAM_INFO2(tvbuff_t *tvb, int offset,
857 packet_info *pinfo, proto_tree *parent_tree,
860 proto_item *item=NULL;
861 proto_tree *tree=NULL;
862 int old_offset=offset;
866 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
867 "NETLOGON_VALIDATION_SAM_INFO2:");
868 tree = proto_item_add_subtree(item, ett_NETLOGON_VALIDATION_SAM_INFO2);
871 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
872 hf_netlogon_logon_time);
874 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
875 hf_netlogon_logoff_time);
877 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
878 hf_netlogon_kickoff_time);
880 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
881 hf_netlogon_pwd_last_set_time);
883 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
884 hf_netlogon_pwd_can_change_time);
886 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
887 hf_netlogon_pwd_must_change_time);
889 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
890 hf_netlogon_acct_name, 0);
892 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
893 hf_netlogon_full_name, 0);
895 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
896 hf_netlogon_logon_script, 0);
898 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
899 hf_netlogon_profile_path, 0);
901 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
902 hf_netlogon_home_dir, 0);
904 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
905 hf_netlogon_dir_drive, 0);
907 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
908 hf_netlogon_logon_count, NULL);
910 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
911 hf_netlogon_bad_pw_count, NULL);
913 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
914 hf_netlogon_user_rid, NULL);
916 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
917 hf_netlogon_group_rid, NULL);
919 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
920 hf_netlogon_num_rids, NULL);
922 /* XXX i am not sure about this pointer being UNIQUE, though I am
923 pretty convinced that it is NOT PTR as the idl file suggests.
925 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
926 netlogon_dissect_GROUP_MEMBERSHIP_ARRAY, NDR_POINTER_UNIQUE,
927 "GROUP_MEMBERSHIP_ARRAY", -1, 0);
929 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
930 hf_netlogon_user_flags, NULL);
932 offset = netlogon_dissect_USER_SESSION_KEY(tvb, offset,
935 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
936 hf_netlogon_logon_srv, 0);
938 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
939 hf_netlogon_logon_dom, 0);
941 offset = dissect_ndr_nt_PSID(tvb, offset,
945 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
946 hf_netlogon_unknown_long, NULL);
949 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
950 hf_netlogon_num_other_groups, NULL);
952 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
953 dissect_ndr_nt_SID_AND_ATTRIBUTES_ARRAY, NDR_POINTER_PTR,
954 "SID_AND_ATTRIBUTES_ARRAY:", -1, 0);
956 proto_item_set_len(item, offset-old_offset);
961 netlogon_dissect_TYPE_16(tvbuff_t *tvb, int offset,
962 packet_info *pinfo, proto_tree *parent_tree,
965 proto_item *item=NULL;
966 proto_tree *tree=NULL;
967 int old_offset=offset;
970 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
972 tree = proto_item_add_subtree(item, ett_TYPE_16);
975 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
976 hf_netlogon_unknown_time);
978 proto_item_set_len(item, offset-old_offset);
984 netlogon_dissect_NETLOGON_SAM_DOMAIN_INFO(tvbuff_t *tvb, int offset,
985 packet_info *pinfo, proto_tree *parent_tree,
988 proto_item *item=NULL;
989 proto_tree *tree=NULL;
990 int old_offset=offset;
993 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
994 "NETLOGON_SAM_DOMAIN_INFO:");
995 tree = proto_item_add_subtree(item, ett_NETLOGON_SAM_DOMAIN_INFO);
998 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
999 hf_netlogon_unknown_string, 0);
1001 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1002 hf_netlogon_unknown_string, 0);
1004 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1005 hf_netlogon_unknown_time);
1007 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
1008 hf_netlogon_unknown_short, NULL);
1010 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
1011 hf_netlogon_unknown_short, NULL);
1013 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1014 hf_netlogon_unknown_time);
1016 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1017 hf_netlogon_unknown_time);
1019 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1020 hf_netlogon_unknown_time);
1022 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1023 hf_netlogon_unknown_time);
1025 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1026 hf_netlogon_unknown_string, 0);
1028 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1029 hf_netlogon_unknown_string, 0);
1031 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1032 hf_netlogon_unknown_string, 0);
1034 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1035 hf_netlogon_unknown_string, 0);
1037 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1038 hf_netlogon_unknown_string, 0);
1040 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1041 hf_netlogon_unknown_long, NULL);
1043 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1044 hf_netlogon_unknown_long, NULL);
1046 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1047 hf_netlogon_unknown_long, NULL);
1049 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1050 hf_netlogon_unknown_long, NULL);
1052 proto_item_set_len(item, offset-old_offset);
1058 netlogon_dissect_NETLOGON_SAM_GROUP_INFO(tvbuff_t *tvb, int offset,
1059 packet_info *pinfo, proto_tree *parent_tree,
1062 proto_item *item=NULL;
1063 proto_tree *tree=NULL;
1064 int old_offset=offset;
1067 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1068 "NETLOGON_SAM_GROUP_INFO:");
1069 tree = proto_item_add_subtree(item, ett_NETLOGON_SAM_GROUP_INFO);
1072 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1073 hf_netlogon_group_name, 0);
1075 offset = netlogon_dissect_GROUP_MEMBERSHIP(tvb, offset,
1078 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1079 hf_netlogon_group_desc, 0);
1081 offset = netlogon_dissect_NETLOGON_SECURITY_DESCRIPTOR(tvb, offset,
1084 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1085 hf_netlogon_unknown_string, 0);
1087 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1088 hf_netlogon_unknown_string, 0);
1090 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1091 hf_netlogon_unknown_string, 0);
1093 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1094 hf_netlogon_unknown_string, 0);
1096 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1097 hf_netlogon_unknown_long, NULL);
1099 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1100 hf_netlogon_unknown_long, NULL);
1102 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1103 hf_netlogon_unknown_long, NULL);
1105 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1106 hf_netlogon_unknown_long, NULL);
1108 proto_item_set_len(item, offset-old_offset);
1114 netlogon_dissect_TYPE_23(tvbuff_t *tvb, int offset,
1115 packet_info *pinfo, proto_tree *parent_tree,
1118 proto_item *item=NULL;
1119 proto_tree *tree=NULL;
1120 int old_offset=offset;
1123 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1125 tree = proto_item_add_subtree(item, ett_TYPE_23);
1128 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1129 hf_netlogon_unknown_string, 0);
1131 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1132 hf_netlogon_unknown_string, 0);
1134 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1135 hf_netlogon_unknown_string, 0);
1137 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1138 hf_netlogon_unknown_string, 0);
1140 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1141 hf_netlogon_unknown_string, 0);
1143 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1144 hf_netlogon_unknown_string, 0);
1146 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1147 hf_netlogon_unknown_long, NULL);
1149 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1150 hf_netlogon_unknown_long, NULL);
1152 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1153 hf_netlogon_unknown_long, NULL);
1155 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1156 hf_netlogon_unknown_long, NULL);
1158 proto_item_set_len(item, offset-old_offset);
1164 netlogon_dissect_NETLOGON_SAM_ACCOUNT_INFO(tvbuff_t *tvb, int offset,
1165 packet_info *pinfo, proto_tree *parent_tree,
1168 proto_item *item=NULL;
1169 proto_tree *tree=NULL;
1170 int old_offset=offset;
1173 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1174 "NETLOGON_SAM_ACCOUNT_INFO:");
1175 tree = proto_item_add_subtree(item, ett_NETLOGON_SAM_ACCOUNT_INFO);
1178 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1179 hf_netlogon_acct_name, 0);
1181 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1182 hf_netlogon_full_name, 0);
1184 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1185 hf_netlogon_user_rid, NULL);
1187 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1188 hf_netlogon_group_rid, NULL);
1190 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1191 hf_netlogon_home_dir, 0);
1193 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1194 hf_netlogon_dir_drive, 0);
1196 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1197 hf_netlogon_logon_script, 0);
1199 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1200 hf_netlogon_acct_desc, 0);
1202 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1203 hf_netlogon_workstations, 0);
1205 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1206 hf_netlogon_logon_time);
1208 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1209 hf_netlogon_logoff_time);
1211 offset = dissect_ndr_nt_LOGON_HOURS(tvb, offset, pinfo, tree, drep);
1213 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
1214 hf_netlogon_bad_pw_count, NULL);
1216 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
1217 hf_netlogon_logon_count, NULL);
1219 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1220 hf_netlogon_pwd_last_set_time);
1222 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1223 hf_netlogon_acct_expiry_time);
1225 offset = dissect_ndr_nt_acct_ctrl(tvb, offset, pinfo, tree, drep);
1227 offset = netlogon_dissect_LM_OWF_PASSWORD(tvb, offset,
1230 offset = netlogon_dissect_NT_OWF_PASSWORD(tvb, offset,
1233 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
1234 hf_netlogon_nt_pwd_present, NULL);
1236 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
1237 hf_netlogon_lm_pwd_present, NULL);
1239 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
1240 hf_netlogon_pwd_expired, NULL);
1242 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1243 hf_netlogon_comment, 0);
1245 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1246 hf_netlogon_parameters, 0);
1248 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
1249 hf_netlogon_country, NULL);
1251 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
1252 hf_netlogon_codepage, NULL);
1254 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
1255 hf_netlogon_num_pwd_pairs, NULL);
1257 offset = lsa_dissect_LSA_SECRET(tvb, offset,
1260 offset = netlogon_dissect_NETLOGON_SECURITY_DESCRIPTOR(tvb, offset,
1263 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1264 hf_netlogon_profile_path, 0);
1266 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1267 hf_netlogon_unknown_string, 0);
1269 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1270 hf_netlogon_unknown_string, 0);
1272 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1273 hf_netlogon_unknown_string, 0);
1275 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1276 hf_netlogon_unknown_long, NULL);
1278 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1279 hf_netlogon_unknown_long, NULL);
1281 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1282 hf_netlogon_unknown_long, NULL);
1284 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1285 hf_netlogon_unknown_long, NULL);
1287 proto_item_set_len(item, offset-old_offset);
1293 netlogon_dissect_rid(tvbuff_t *tvb, int offset,
1294 packet_info *pinfo, proto_tree *tree,
1297 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1298 hf_netlogon_user_rid, NULL);
1304 netlogon_dissect_rids_array(tvbuff_t *tvb, int offset,
1305 packet_info *pinfo, proto_tree *parent_tree,
1308 proto_item *item=NULL;
1309 proto_tree *tree=NULL;
1310 int old_offset=offset;
1313 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1315 tree = proto_item_add_subtree(item, ett_rid_array);
1318 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
1319 netlogon_dissect_rid);
1321 proto_item_set_len(item, offset-old_offset);
1326 netlogon_dissect_attrib(tvbuff_t *tvb, int offset,
1327 packet_info *pinfo, proto_tree *tree,
1330 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1331 hf_netlogon_attrs, NULL);
1337 netlogon_dissect_attribs_array(tvbuff_t *tvb, int offset,
1338 packet_info *pinfo, proto_tree *parent_tree,
1341 proto_item *item=NULL;
1342 proto_tree *tree=NULL;
1343 int old_offset=offset;
1346 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1348 tree = proto_item_add_subtree(item, ett_attrib_array);
1351 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
1352 netlogon_dissect_attrib);
1354 proto_item_set_len(item, offset-old_offset);
1359 netlogon_dissect_NETLOGON_SAM_GROUP_MEM_INFO(tvbuff_t *tvb, int offset,
1360 packet_info *pinfo, proto_tree *parent_tree,
1363 proto_item *item=NULL;
1364 proto_tree *tree=NULL;
1365 int old_offset=offset;
1368 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1369 "NETLOGON_SAM_GROUP_MEM_INFO:");
1370 tree = proto_item_add_subtree(item, ett_NETLOGON_SAM_GROUP_MEM_INFO);
1373 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
1374 netlogon_dissect_rids_array, NDR_POINTER_PTR,
1377 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
1378 netlogon_dissect_attribs_array, NDR_POINTER_PTR,
1381 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1382 hf_netlogon_num_rids, NULL);
1384 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1385 hf_netlogon_unknown_long, NULL);
1387 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1388 hf_netlogon_unknown_long, NULL);
1390 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1391 hf_netlogon_unknown_long, NULL);
1393 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1394 hf_netlogon_unknown_long, NULL);
1396 proto_item_set_len(item, offset-old_offset);
1402 netlogon_dissect_NETLOGON_SAM_ALIAS_INFO(tvbuff_t *tvb, int offset,
1403 packet_info *pinfo, proto_tree *parent_tree,
1406 proto_item *item=NULL;
1407 proto_tree *tree=NULL;
1408 int old_offset=offset;
1411 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1412 "NETLOGON_SAM_ALIAS_INFO:");
1413 tree = proto_item_add_subtree(item, ett_NETLOGON_SAM_ALIAS_INFO);
1417 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1418 hf_netlogon_alias_name, 0);
1420 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1421 hf_netlogon_alias_rid, NULL);
1423 offset = netlogon_dissect_NETLOGON_SECURITY_DESCRIPTOR(tvb, offset,
1426 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1427 hf_netlogon_acct_desc, 0);
1429 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1430 hf_netlogon_unknown_string, 0);
1432 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1433 hf_netlogon_unknown_string, 0);
1435 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1436 hf_netlogon_unknown_string, 0);
1438 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1439 hf_netlogon_unknown_long, NULL);
1441 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1442 hf_netlogon_unknown_long, NULL);
1444 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1445 hf_netlogon_unknown_long, NULL);
1447 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1448 hf_netlogon_unknown_long, NULL);
1450 proto_item_set_len(item, offset-old_offset);
1456 netlogon_dissect_NETLOGON_SAM_ALIAS_MEM_INFO(tvbuff_t *tvb, int offset,
1457 packet_info *pinfo, proto_tree *parent_tree,
1460 proto_item *item=NULL;
1461 proto_tree *tree=NULL;
1462 int old_offset=offset;
1465 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1466 "NETLOGON_SAM_ALIAS_MEM_INFO:");
1467 tree = proto_item_add_subtree(item, ett_NETLOGON_SAM_ALIAS_MEM_INFO);
1470 offset = dissect_ndr_nt_PSID_ARRAY(tvb, offset, pinfo, tree, drep);
1472 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1473 hf_netlogon_unknown_long, NULL);
1475 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1476 hf_netlogon_unknown_long, NULL);
1478 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1479 hf_netlogon_unknown_long, NULL);
1481 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1482 hf_netlogon_unknown_long, NULL);
1484 proto_item_set_len(item, offset-old_offset);
1489 netlogon_dissect_TYPE_30(tvbuff_t *tvb, int offset,
1490 packet_info *pinfo, proto_tree *parent_tree,
1493 proto_item *item=NULL;
1494 proto_tree *tree=NULL;
1495 int old_offset=offset;
1498 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1500 tree = proto_item_add_subtree(item, ett_TYPE_30);
1503 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1504 hf_netlogon_unknown_long, NULL);
1506 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1507 hf_netlogon_unknown_long, NULL);
1509 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1510 hf_netlogon_unknown_long, NULL);
1512 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1513 hf_netlogon_unknown_long, NULL);
1515 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1516 hf_netlogon_unknown_long, NULL);
1518 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1519 hf_netlogon_unknown_time);
1521 proto_item_set_len(item, offset-old_offset);
1526 netlogon_dissect_element_422(tvbuff_t *tvb, int offset,
1527 packet_info *pinfo, proto_tree *tree,
1530 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1531 hf_netlogon_unknown_long, NULL);
1537 netlogon_dissect_element_422_array(tvbuff_t *tvb, int offset,
1538 packet_info *pinfo, proto_tree *tree,
1541 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
1542 netlogon_dissect_element_422);
1549 netlogon_dissect_TYPE_29(tvbuff_t *tvb, int offset,
1550 packet_info *pinfo, proto_tree *parent_tree,
1553 proto_item *item=NULL;
1554 proto_tree *tree=NULL;
1555 int old_offset=offset;
1558 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1560 tree = proto_item_add_subtree(item, ett_TYPE_29);
1563 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1564 hf_netlogon_unknown_long, NULL);
1566 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1567 hf_netlogon_unknown_time);
1569 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
1570 hf_netlogon_unknown_char, NULL);
1572 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1573 hf_netlogon_unknown_long, NULL);
1575 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
1576 netlogon_dissect_element_422_array, NDR_POINTER_PTR,
1579 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1580 hf_netlogon_unknown_string, 0);
1582 offset = dissect_ndr_nt_PSID(tvb, offset,
1585 offset = netlogon_dissect_TYPE_30(tvb, offset,
1588 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1589 hf_netlogon_unknown_time);
1591 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1592 hf_netlogon_unknown_time);
1594 offset = netlogon_dissect_NETLOGON_SECURITY_DESCRIPTOR(tvb, offset,
1597 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1598 hf_netlogon_unknown_string, 0);
1600 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1601 hf_netlogon_unknown_string, 0);
1603 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1604 hf_netlogon_unknown_string, 0);
1606 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1607 hf_netlogon_unknown_string, 0);
1609 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1610 hf_netlogon_unknown_long, NULL);
1612 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1613 hf_netlogon_unknown_long, NULL);
1615 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1616 hf_netlogon_unknown_long, NULL);
1618 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1619 hf_netlogon_unknown_long, NULL);
1621 proto_item_set_len(item, offset-old_offset);
1627 netlogon_dissect_TYPE_31(tvbuff_t *tvb, int offset,
1628 packet_info *pinfo, proto_tree *parent_tree,
1631 proto_item *item=NULL;
1632 proto_tree *tree=NULL;
1633 int old_offset=offset;
1636 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1638 tree = proto_item_add_subtree(item, ett_TYPE_31);
1641 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1642 hf_netlogon_unknown_string, 0);
1644 offset = dissect_ndr_nt_STRING(tvb, offset, pinfo, tree, drep,
1645 hf_netlogon_unknown_string, 0);
1647 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1648 hf_netlogon_unknown_long, NULL);
1650 offset = dissect_ndr_nt_STRING(tvb, offset, pinfo, tree, drep,
1651 hf_netlogon_unknown_string, 0);
1653 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1654 hf_netlogon_unknown_string, 0);
1656 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1657 hf_netlogon_unknown_string, 0);
1659 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1660 hf_netlogon_unknown_string, 0);
1662 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1663 hf_netlogon_unknown_string, 0);
1665 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1666 hf_netlogon_unknown_long, NULL);
1668 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1669 hf_netlogon_unknown_long, NULL);
1671 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1672 hf_netlogon_unknown_long, NULL);
1674 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1675 hf_netlogon_unknown_long, NULL);
1677 proto_item_set_len(item, offset-old_offset);
1683 netlogon_dissect_TYPE_32(tvbuff_t *tvb, int offset,
1684 packet_info *pinfo, proto_tree *parent_tree,
1687 proto_item *item=NULL;
1688 proto_tree *tree=NULL;
1689 int old_offset=offset;
1692 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1694 tree = proto_item_add_subtree(item, ett_TYPE_32);
1697 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1698 hf_netlogon_unknown_string, 0);
1700 proto_item_set_len(item, offset-old_offset);
1706 netlogon_dissect_attrs(tvbuff_t *tvb, int offset,
1707 packet_info *pinfo, proto_tree *tree,
1710 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1711 hf_netlogon_attrs, NULL);
1717 netlogon_dissect_attrs_array(tvbuff_t *tvb, int offset,
1718 packet_info *pinfo, proto_tree *tree,
1721 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
1722 netlogon_dissect_attrs);
1729 netlogon_dissect_TYPE_33(tvbuff_t *tvb, int offset,
1730 packet_info *pinfo, proto_tree *parent_tree,
1733 proto_item *item=NULL;
1734 proto_tree *tree=NULL;
1735 int old_offset=offset;
1738 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1740 tree = proto_item_add_subtree(item, ett_TYPE_33);
1744 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1745 hf_netlogon_count, NULL);
1747 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1748 hf_netlogon_unknown_long, NULL);
1750 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
1751 netlogon_dissect_attrs_array, NDR_POINTER_PTR,
1752 "ATTRS_ARRAY:", -1, 0);
1754 offset = netlogon_dissect_TYPE_30(tvb, offset,
1757 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1758 hf_netlogon_unknown_long, NULL);
1760 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1761 hf_netlogon_unknown_long, NULL);
1763 offset = dissect_ndr_nt_STRING(tvb, offset, pinfo, tree, drep,
1764 hf_netlogon_unknown_string, 0);
1766 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1767 hf_netlogon_unknown_string, 0);
1769 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1770 hf_netlogon_unknown_string, 0);
1772 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1773 hf_netlogon_unknown_string, 0);
1775 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1776 hf_netlogon_unknown_string, 0);
1778 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1779 hf_netlogon_unknown_long, NULL);
1781 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1782 hf_netlogon_unknown_long, NULL);
1784 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1785 hf_netlogon_unknown_long, NULL);
1787 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1788 hf_netlogon_unknown_long, NULL);
1790 proto_item_set_len(item, offset-old_offset);
1796 netlogon_dissect_TYPE_34(tvbuff_t *tvb, int offset,
1797 packet_info *pinfo, proto_tree *parent_tree,
1800 proto_item *item=NULL;
1801 proto_tree *tree=NULL;
1802 int old_offset=offset;
1805 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1807 tree = proto_item_add_subtree(item, ett_TYPE_34);
1810 offset = dissect_ndr_nt_STRING(tvb, offset, pinfo, tree, drep,
1811 hf_netlogon_unknown_string, 0);
1813 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1814 hf_netlogon_unknown_time);
1816 offset = dissect_ndr_nt_STRING(tvb, offset, pinfo, tree, drep,
1817 hf_netlogon_unknown_string, 0);
1819 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1820 hf_netlogon_unknown_time);
1822 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1823 hf_netlogon_unknown_long, NULL);
1825 offset = dissect_ndr_nt_STRING(tvb, offset, pinfo, tree, drep,
1826 hf_netlogon_unknown_string, 0);
1828 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1829 hf_netlogon_unknown_string, 0);
1831 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1832 hf_netlogon_unknown_string, 0);
1834 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1835 hf_netlogon_unknown_string, 0);
1837 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1838 hf_netlogon_unknown_string, 0);
1840 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1841 hf_netlogon_unknown_long, NULL);
1843 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1844 hf_netlogon_unknown_long, NULL);
1846 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1847 hf_netlogon_unknown_long, NULL);
1849 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1850 hf_netlogon_unknown_long, NULL);
1852 proto_item_set_len(item, offset-old_offset);
1857 netlogon_dissect_TYPE_35(tvbuff_t *tvb, int offset,
1858 packet_info *pinfo, proto_tree *parent_tree,
1861 proto_item *item=NULL;
1862 proto_tree *tree=NULL;
1863 int old_offset=offset;
1866 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1868 tree = proto_item_add_subtree(item, ett_TYPE_35);
1871 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
1872 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
1873 "unknown", hf_netlogon_unknown_string, -1);
1875 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1876 hf_netlogon_unknown_string, 0);
1878 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1879 hf_netlogon_unknown_string, 0);
1881 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1882 hf_netlogon_unknown_string, 0);
1884 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1885 hf_netlogon_unknown_string, 0);
1887 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1888 hf_netlogon_unknown_long, NULL);
1890 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1891 hf_netlogon_unknown_long, NULL);
1893 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1894 hf_netlogon_unknown_long, NULL);
1896 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1897 hf_netlogon_unknown_long, NULL);
1899 proto_item_set_len(item, offset-old_offset);
1904 netlogon_dissect_WCHAR_ptr(tvbuff_t *tvb, int offset,
1905 packet_info *pinfo, proto_tree *tree,
1908 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
1909 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
1910 "unknown string", hf_netlogon_unknown_string, -1);
1916 netlogon_dissect_TYPE_36(tvbuff_t *tvb, int offset,
1917 packet_info *pinfo, proto_tree *parent_tree,
1920 proto_item *item=NULL;
1921 proto_tree *tree=NULL;
1922 int old_offset=offset;
1926 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1928 tree = proto_item_add_subtree(item, ett_TYPE_36);
1932 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
1933 hf_netlogon_unknown_char, NULL);
1936 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1937 hf_netlogon_unknown_long, NULL);
1939 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1940 hf_netlogon_unknown_long, NULL);
1942 proto_item_set_len(item, offset-old_offset);
1947 netlogon_dissect_NETLOGON_INFO_1(tvbuff_t *tvb, int offset,
1948 packet_info *pinfo, proto_tree *parent_tree,
1951 proto_item *item=NULL;
1952 proto_tree *tree=NULL;
1953 int old_offset=offset;
1956 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1957 "NETLOGON_INFO_1:");
1958 tree = proto_item_add_subtree(item, ett_NETLOGON_INFO_1);
1961 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1962 hf_netlogon_flags, NULL);
1964 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1965 hf_netlogon_status, NULL);
1967 proto_item_set_len(item, offset-old_offset);
1972 netlogon_dissect_NETLOGON_INFO_2(tvbuff_t *tvb, int offset,
1973 packet_info *pinfo, proto_tree *parent_tree,
1976 proto_item *item=NULL;
1977 proto_tree *tree=NULL;
1978 int old_offset=offset;
1981 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1982 "NETLOGON_INFO_2:");
1983 tree = proto_item_add_subtree(item, ett_NETLOGON_INFO_2);
1986 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1987 hf_netlogon_unknown_long, NULL);
1989 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1990 hf_netlogon_unknown_long, NULL);
1992 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
1993 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
1994 "unknown", hf_netlogon_unknown_string, -1);
1996 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1997 hf_netlogon_unknown_long, NULL);
1999 proto_item_set_len(item, offset-old_offset);
2004 netlogon_dissect_NETLOGON_INFO_3(tvbuff_t *tvb, int offset,
2005 packet_info *pinfo, proto_tree *parent_tree,
2008 proto_item *item=NULL;
2009 proto_tree *tree=NULL;
2010 int old_offset=offset;
2013 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2014 "NETLOGON_INFO_3:");
2015 tree = proto_item_add_subtree(item, ett_NETLOGON_INFO_3);
2018 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2019 hf_netlogon_flags, NULL);
2021 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2022 hf_netlogon_logon_attempts, NULL);
2024 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2025 hf_netlogon_unknown_long, NULL);
2027 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2028 hf_netlogon_unknown_long, NULL);
2030 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2031 hf_netlogon_unknown_long, NULL);
2033 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2034 hf_netlogon_unknown_long, NULL);
2036 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2037 hf_netlogon_unknown_long, NULL);
2039 proto_item_set_len(item, offset-old_offset);
2044 netlogon_dissect_NETLOGON_INFO_4(tvbuff_t *tvb, int offset,
2045 packet_info *pinfo, proto_tree *parent_tree,
2048 proto_item *item=NULL;
2049 proto_tree *tree=NULL;
2050 int old_offset=offset;
2053 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2054 "NETLOGON_INFO_4:");
2055 tree = proto_item_add_subtree(item, ett_NETLOGON_INFO_4);
2058 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2059 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2060 "unknown", hf_netlogon_trusted_dc_name, -1);
2062 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2063 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2064 "unknown", hf_netlogon_trusted_domain_name, -1);
2066 proto_item_set_len(item, offset-old_offset);
2071 netlogon_dissect_UNICODE_MULTI_byte(tvbuff_t *tvb, int offset,
2072 packet_info *pinfo, proto_tree *tree,
2075 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
2076 hf_netlogon_unknown_char, NULL);
2082 netlogon_dissect_UNICODE_MULTI_array(tvbuff_t *tvb, int offset,
2083 packet_info *pinfo, proto_tree *tree,
2086 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
2087 netlogon_dissect_UNICODE_MULTI_byte);
2093 netlogon_dissect_BYTE_byte(tvbuff_t *tvb, int offset,
2094 packet_info *pinfo, proto_tree *tree,
2097 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
2098 hf_netlogon_unknown_char, NULL);
2104 netlogon_dissect_BYTE_array(tvbuff_t *tvb, int offset,
2105 packet_info *pinfo, proto_tree *tree,
2108 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
2109 netlogon_dissect_BYTE_byte);
2115 netlogon_dissect_UNICODE_MULTI(tvbuff_t *tvb, int offset,
2116 packet_info *pinfo, proto_tree *parent_tree,
2119 proto_item *item=NULL;
2120 proto_tree *tree=NULL;
2121 int old_offset=offset;
2124 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2126 tree = proto_item_add_subtree(item, ett_UNICODE_MULTI);
2129 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2130 hf_netlogon_len, NULL);
2132 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2133 netlogon_dissect_UNICODE_MULTI_array, NDR_POINTER_PTR,
2134 "unknown", hf_netlogon_unknown_string, 0);
2136 proto_item_set_len(item, offset-old_offset);
2141 dissect_nt_GUID(tvbuff_t *tvb, int offset,
2142 packet_info *pinfo, proto_tree *parent_tree,
2145 proto_item *item=NULL;
2146 proto_tree *tree=NULL;
2147 int old_offset=offset;
2151 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2153 tree = proto_item_add_subtree(item, ett_GUID);
2156 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2157 hf_netlogon_unknown_long, NULL);
2159 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
2160 hf_netlogon_unknown_short, NULL);
2162 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
2163 hf_netlogon_unknown_short, NULL);
2166 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
2167 hf_netlogon_unknown_char, NULL);
2170 proto_item_set_len(item, offset-old_offset);
2175 netlogon_dissect_DOMAIN_CONTROLLER_INFO(tvbuff_t *tvb, int offset,
2176 packet_info *pinfo, proto_tree *parent_tree,
2179 proto_item *item=NULL;
2180 proto_tree *tree=NULL;
2181 int old_offset=offset;
2184 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2185 "DOMAIN_CONTROLLER_INFO:");
2186 tree = proto_item_add_subtree(item, ett_DOMAIN_CONTROLLER_INFO);
2189 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2190 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2191 "unknown", hf_netlogon_dc_name, -1);
2193 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2194 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2195 "unknown", hf_netlogon_dc_address, -1);
2197 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2198 hf_netlogon_dc_address_type, NULL);
2200 offset = dissect_nt_GUID(tvb, offset,
2203 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2204 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2205 "unknown", hf_netlogon_logon_dom, -1);
2207 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2208 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2209 "unknown", hf_netlogon_dns_forest_name, -1);
2211 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2212 hf_netlogon_flags, NULL);
2214 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2215 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2216 "unknown", hf_netlogon_dc_site_name, -1);
2218 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2219 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2220 "unknown", hf_netlogon_client_site_name, -1);
2222 proto_item_set_len(item, offset-old_offset);
2227 netlogon_dissect_DOMAIN_CONTROLLER_INFO_ptr(tvbuff_t *tvb, int offset,
2228 packet_info *pinfo, proto_tree *tree,
2231 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2232 netlogon_dissect_DOMAIN_CONTROLLER_INFO, NDR_POINTER_PTR,
2233 "DOMAIN_CONTROLLER_INFO pointer: info", -1, 0);
2239 netlogon_dissect_DOMAIN_CONTROLLER_INFO_ptr_ptr(tvbuff_t *tvb, int offset,
2240 packet_info *pinfo, proto_tree *tree,
2243 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2244 netlogon_dissect_DOMAIN_CONTROLLER_INFO_ptr, NDR_POINTER_PTR,
2245 "DOMAIN_CONTROLLER_INFO pointer: info", -1, 0);
2251 netlogon_dissect_BLOB_array(tvbuff_t *tvb, int offset,
2252 packet_info *pinfo, proto_tree *tree,
2258 di=pinfo->private_data;
2259 if(di->conformant_run){
2260 /*just a run to handle conformant arrays, nothing to dissect.*/
2264 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2265 hf_netlogon_blob_size, &len);
2267 proto_tree_add_item(tree, hf_netlogon_blob, tvb, offset, len,
2275 netlogon_dissect_BLOB(tvbuff_t *tvb, int offset,
2276 packet_info *pinfo, proto_tree *parent_tree,
2279 proto_item *item=NULL;
2280 proto_tree *tree=NULL;
2281 int old_offset=offset;
2284 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2286 tree = proto_item_add_subtree(item, ett_BLOB);
2289 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2290 hf_netlogon_blob_size, NULL);
2292 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2293 netlogon_dissect_BLOB_array, NDR_POINTER_PTR,
2300 netlogon_dissect_BLOB_ptr(tvbuff_t *tvb, int offset,
2301 packet_info *pinfo, proto_tree *tree,
2304 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2305 netlogon_dissect_BLOB, NDR_POINTER_PTR,
2306 "BLOB pointer:", -1, 0);
2312 netlogon_dissect_TYPE_46(tvbuff_t *tvb, int offset,
2313 packet_info *pinfo, proto_tree *parent_tree,
2316 proto_item *item=NULL;
2317 proto_tree *tree=NULL;
2318 int old_offset=offset;
2321 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2323 tree = proto_item_add_subtree(item, ett_TYPE_46);
2326 offset = netlogon_dissect_BLOB(tvb, offset,
2329 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2330 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2331 "unknown", hf_netlogon_workstation_fqdn, -1);
2333 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2334 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2335 "unknown", hf_netlogon_workstation_site_name, -1);
2337 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2338 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2339 "unknown", hf_netlogon_workstation_os, -1);
2341 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2342 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2343 "unknown", hf_netlogon_unknown_string, -1);
2345 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2346 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2347 "unknown", hf_netlogon_unknown_string, -1);
2349 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2350 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2351 "unknown", hf_netlogon_unknown_string, -1);
2353 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2354 hf_netlogon_unknown_string, 0);
2356 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2357 hf_netlogon_unknown_string, 0);
2359 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2360 hf_netlogon_unknown_string, 0);
2362 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2363 hf_netlogon_unknown_string, 0);
2365 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2366 hf_netlogon_unknown_long, NULL);
2368 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2369 hf_netlogon_unknown_long, NULL);
2371 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2372 hf_netlogon_unknown_long, NULL);
2374 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2375 hf_netlogon_unknown_long, NULL);
2377 proto_item_set_len(item, offset-old_offset);
2382 netlogon_dissect_TYPE_48(tvbuff_t *tvb, int offset,
2383 packet_info *pinfo, proto_tree *parent_tree,
2386 proto_item *item=NULL;
2387 proto_tree *tree=NULL;
2388 int old_offset=offset;
2391 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2393 tree = proto_item_add_subtree(item, ett_TYPE_48);
2396 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2397 hf_netlogon_unknown_string, 0);
2399 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2400 hf_netlogon_unknown_string, 0);
2402 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2403 hf_netlogon_unknown_string, 0);
2405 offset = dissect_nt_GUID(tvb, offset,
2408 offset = dissect_ndr_nt_PSID(tvb, offset,
2411 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2412 hf_netlogon_unknown_string, 0);
2414 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2415 hf_netlogon_unknown_string, 0);
2417 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2418 hf_netlogon_unknown_string, 0);
2420 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2421 hf_netlogon_unknown_string, 0);
2423 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2424 hf_netlogon_unknown_long, NULL);
2426 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2427 hf_netlogon_unknown_long, NULL);
2429 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2430 hf_netlogon_unknown_long, NULL);
2432 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2433 hf_netlogon_unknown_long, NULL);
2435 offset = netlogon_dissect_BLOB(tvb, offset,
2438 offset = netlogon_dissect_BLOB(tvb, offset,
2441 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2442 hf_netlogon_unknown_string, 0);
2444 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2445 hf_netlogon_unknown_string, 0);
2447 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2448 hf_netlogon_unknown_string, 0);
2450 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2451 hf_netlogon_unknown_string, 0);
2453 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2454 hf_netlogon_unknown_long, NULL);
2456 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2457 hf_netlogon_unknown_long, NULL);
2459 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2460 hf_netlogon_unknown_long, NULL);
2462 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2463 hf_netlogon_unknown_long, NULL);
2465 proto_item_set_len(item, offset-old_offset);
2470 netlogon_dissect_UNICODE_STRING_512(tvbuff_t *tvb, int offset,
2471 packet_info *pinfo, proto_tree *parent_tree,
2474 proto_item *item=NULL;
2475 proto_tree *tree=NULL;
2476 int old_offset=offset;
2480 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2481 "UNICODE_STRING_512:");
2482 tree = proto_item_add_subtree(item, ett_UNICODE_STRING_512);
2486 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
2487 hf_netlogon_unknown_short, NULL);
2490 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2491 hf_netlogon_unknown_long, NULL);
2493 proto_item_set_len(item, offset-old_offset);
2498 netlogon_dissect_NETLOGON_SECURE_CHANNEL_TYPE(tvbuff_t *tvb, int offset,
2499 packet_info *pinfo, proto_tree *tree,
2502 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
2503 hf_netlogon_secure_channel_type, NULL);
2509 netlogon_dissect_element_844_byte(tvbuff_t *tvb, int offset,
2510 packet_info *pinfo, proto_tree *tree,
2513 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
2514 hf_netlogon_unknown_char, NULL);
2520 netlogon_dissect_element_844_array(tvbuff_t *tvb, int offset,
2521 packet_info *pinfo, proto_tree *tree,
2524 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
2525 netlogon_dissect_element_844_byte);
2531 netlogon_dissect_TYPE_50(tvbuff_t *tvb, int offset,
2532 packet_info *pinfo, proto_tree *parent_tree,
2535 proto_item *item=NULL;
2536 proto_tree *tree=NULL;
2537 int old_offset=offset;
2540 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2542 tree = proto_item_add_subtree(item, ett_TYPE_50);
2545 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2546 hf_netlogon_unknown_long, NULL);
2548 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2549 netlogon_dissect_element_844_array, NDR_POINTER_UNIQUE,
2550 "unknown", hf_netlogon_unknown_string, 0);
2552 proto_item_set_len(item, offset-old_offset);
2557 netlogon_dissect_TYPE_50_ptr(tvbuff_t *tvb, int offset,
2558 packet_info *pinfo, proto_tree *tree,
2561 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2562 netlogon_dissect_TYPE_50, NDR_POINTER_PTR,
2563 "TYPE_50 pointer: unknown_TYPE_50", -1, 0);
2569 netlogon_dissect_TYPE_50_ptr_ptr(tvbuff_t *tvb, int offset,
2570 packet_info *pinfo, proto_tree *tree,
2573 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2574 netlogon_dissect_TYPE_50_ptr, NDR_POINTER_PTR,
2575 "TYPE_50* pointer: unknown_TYPE_50", -1, 0);
2581 netlogon_dissect_element_861_byte(tvbuff_t *tvb, int offset,
2582 packet_info *pinfo, proto_tree *tree,
2585 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
2586 hf_netlogon_unknown_char, NULL);
2592 netlogon_dissect_element_861_array(tvbuff_t *tvb, int offset,
2593 packet_info *pinfo, proto_tree *tree,
2596 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
2597 netlogon_dissect_element_861_byte);
2603 netlogon_dissect_TYPE_51(tvbuff_t *tvb, int offset,
2604 packet_info *pinfo, proto_tree *parent_tree,
2607 proto_item *item=NULL;
2608 proto_tree *tree=NULL;
2609 int old_offset=offset;
2612 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2614 tree = proto_item_add_subtree(item, ett_TYPE_51);
2617 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2618 hf_netlogon_unknown_long, NULL);
2620 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2621 netlogon_dissect_element_861_array, NDR_POINTER_UNIQUE,
2622 "unknown", hf_netlogon_unknown_string, 0);
2624 proto_item_set_len(item, offset-old_offset);
2629 netlogon_dissect_element_865_byte(tvbuff_t *tvb, int offset,
2630 packet_info *pinfo, proto_tree *tree,
2633 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
2634 hf_netlogon_unknown_char, NULL);
2640 netlogon_dissect_element_865_array(tvbuff_t *tvb, int offset,
2641 packet_info *pinfo, proto_tree *tree,
2644 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
2645 netlogon_dissect_element_865_byte);
2651 netlogon_dissect_element_866_byte(tvbuff_t *tvb, int offset,
2652 packet_info *pinfo, proto_tree *tree,
2655 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
2656 hf_netlogon_unknown_char, NULL);
2662 netlogon_dissect_element_866_array(tvbuff_t *tvb, int offset,
2663 packet_info *pinfo, proto_tree *tree,
2666 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
2667 netlogon_dissect_element_866_byte);
2673 netlogon_dissect_TYPE_52(tvbuff_t *tvb, int offset,
2674 packet_info *pinfo, proto_tree *parent_tree,
2677 proto_item *item=NULL;
2678 proto_tree *tree=NULL;
2679 int old_offset=offset;
2682 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2684 tree = proto_item_add_subtree(item, ett_TYPE_52);
2687 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2688 hf_netlogon_unknown_long, NULL);
2690 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2691 netlogon_dissect_element_865_array, NDR_POINTER_UNIQUE,
2692 "unknown", hf_netlogon_unknown_string, 0);
2694 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2695 netlogon_dissect_element_866_array, NDR_POINTER_UNIQUE,
2696 "unknown", hf_netlogon_unknown_string, 0);
2698 proto_item_set_len(item, offset-old_offset);
2703 netlogon_dissect_TYPE_52_ptr(tvbuff_t *tvb, int offset,
2704 packet_info *pinfo, proto_tree *tree,
2707 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2708 netlogon_dissect_TYPE_52, NDR_POINTER_PTR,
2709 "TYPE_52 pointer: unknown_TYPE_52", -1, 0);
2714 netlogon_dissect_TYPE_52_ptr_ptr(tvbuff_t *tvb, int offset,
2715 packet_info *pinfo, proto_tree *tree,
2718 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2719 netlogon_dissect_TYPE_52_ptr, NDR_POINTER_PTR,
2720 "TYPE_52* pointer: unknown_TYPE_52", -1, 0);
2725 netlogon_dissect_NETLOGON_LEVEL(tvbuff_t *tvb, int offset,
2726 packet_info *pinfo, proto_tree *parent_tree,
2729 proto_item *item=NULL;
2730 proto_tree *tree=NULL;
2731 int old_offset=offset;
2735 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2737 tree = proto_item_add_subtree(item, ett_NETLOGON_LEVEL);
2740 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
2741 hf_netlogon_level, &level);
2746 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2747 netlogon_dissect_NETLOGON_INTERACTIVE_INFO, NDR_POINTER_PTR,
2748 "INTERACTIVE_INFO pointer:", -1, 0);
2751 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2752 netlogon_dissect_NETLOGON_NETWORK_INFO, NDR_POINTER_PTR,
2753 "NETWORK_INFO pointer:", -1, 0);
2756 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2757 netlogon_dissect_NETLOGON_INTERACTIVE_INFO, NDR_POINTER_PTR,
2758 "INTERACTIVE_INFO pointer:", -1, 0);
2761 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2762 netlogon_dissect_NETLOGON_INTERACTIVE_INFO, NDR_POINTER_PTR,
2763 "INTERACTIVE_INFO pointer:", -1, 0);
2766 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2767 netlogon_dissect_NETLOGON_NETWORK_INFO, NDR_POINTER_PTR,
2768 "NETWORK_INFO pointer:", -1, 0);
2771 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2772 netlogon_dissect_NETLOGON_INTERACTIVE_INFO, NDR_POINTER_PTR,
2773 "INTERACTIVE_INFO pointer:", -1, 0);
2777 proto_item_set_len(item, offset-old_offset);
2782 netlogon_dissect_NETLOGON_VALIDATION(tvbuff_t *tvb, int offset,
2783 packet_info *pinfo, proto_tree *parent_tree,
2786 proto_item *item=NULL;
2787 proto_tree *tree=NULL;
2788 int old_offset=offset;
2792 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2793 "NETLOGON_VALIDATION:");
2794 tree = proto_item_add_subtree(item, ett_NETLOGON_VALIDATION);
2797 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
2798 hf_netlogon_level, &level);
2800 /* XXX i am not sure about these pointers being UNIQUE, though I am
2801 pretty convinced that they are NOT PTR as the idl file suggests.
2806 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2807 netlogon_dissect_NETLOGON_VALIDATION_SAM_INFO1, NDR_POINTER_UNIQUE,
2808 "NETLOGON_VALIDATION_SAM_INFO1 pointer:", -1, 0);
2811 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2812 netlogon_dissect_NETLOGON_VALIDATION_SAM_INFO2, NDR_POINTER_UNIQUE,
2813 "NETLOGON_VALIDATION_SAM_INFO2 pointer:", -1, 0);
2816 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2817 netlogon_dissect_pointer_STRING, NDR_POINTER_UNIQUE,
2818 "STRING pointer:", -1, 0);
2821 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2822 netlogon_dissect_BLOB_ptr, NDR_POINTER_UNIQUE,
2823 "BLOB pointer:", -1, 0);
2827 proto_item_set_len(item, offset-old_offset);
2833 netlogon_dissect_TYPE_19(tvbuff_t *tvb, int offset,
2834 packet_info *pinfo, proto_tree *parent_tree,
2837 proto_item *item=NULL;
2838 proto_tree *tree=NULL;
2839 int old_offset=offset;
2843 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2845 tree = proto_item_add_subtree(item, ett_TYPE_19);
2848 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
2849 hf_netlogon_level, &level);
2854 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2855 hf_netlogon_unknown_long, NULL);
2858 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2859 hf_netlogon_unknown_long, NULL);
2862 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2863 hf_netlogon_unknown_long, NULL);
2866 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2867 hf_netlogon_unknown_long, NULL);
2870 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2871 hf_netlogon_unknown_long, NULL);
2874 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2875 hf_netlogon_unknown_long, NULL);
2878 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2879 hf_netlogon_unknown_long, NULL);
2882 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2883 hf_netlogon_unknown_long, NULL);
2886 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2887 hf_netlogon_unknown_long, NULL);
2890 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2891 hf_netlogon_unknown_long, NULL);
2894 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2895 hf_netlogon_unknown_long, NULL);
2898 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2899 hf_netlogon_unknown_long, NULL);
2902 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2903 hf_netlogon_unknown_long, NULL);
2906 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2907 hf_netlogon_unknown_long, NULL);
2910 offset = dissect_ndr_nt_PSID(tvb, offset,
2914 offset = dissect_ndr_nt_PSID(tvb, offset,
2918 offset = dissect_ndr_nt_PSID(tvb, offset,
2922 offset = dissect_ndr_nt_PSID(tvb, offset,
2926 offset = dissect_ndr_nt_PSID(tvb, offset,
2930 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2931 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2932 "unknown", hf_netlogon_unknown_string, -1);
2935 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2936 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2937 "unknown", hf_netlogon_unknown_string, -1);
2941 proto_item_set_len(item, offset-old_offset);
2947 netlogon_dissect_NETLOGON_CONTROL_QUERY_INFO(tvbuff_t *tvb, int offset,
2948 packet_info *pinfo, proto_tree *parent_tree,
2951 proto_item *item=NULL;
2952 proto_tree *tree=NULL;
2953 int old_offset=offset;
2957 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2958 "NETLOGON_CONTROL_QUERY_INFO:");
2959 tree = proto_item_add_subtree(item, ett_NETLOGON_CONTROL_QUERY_INFO);
2962 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2963 hf_netlogon_level_long, &level);
2968 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2969 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2970 "unknown", hf_netlogon_unknown_string, -1);
2973 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2974 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2975 "unknown", hf_netlogon_unknown_string, -1);
2978 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2979 hf_netlogon_unknown_long, NULL);
2982 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2983 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2984 "unknown", hf_netlogon_unknown_string, -1);
2988 proto_item_set_len(item, offset-old_offset);
2994 netlogon_dissect_TYPE_44(tvbuff_t *tvb, int offset,
2995 packet_info *pinfo, proto_tree *parent_tree,
2998 proto_item *item=NULL;
2999 proto_tree *tree=NULL;
3000 int old_offset=offset;
3004 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
3006 tree = proto_item_add_subtree(item, ett_TYPE_44);
3009 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3010 hf_netlogon_level_long, &level);
3015 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3016 hf_netlogon_unknown_long, NULL);
3020 proto_item_set_len(item, offset-old_offset);
3025 netlogon_dissect_TYPE_20(tvbuff_t *tvb, int offset,
3026 packet_info *pinfo, proto_tree *parent_tree,
3029 proto_item *item=NULL;
3030 proto_tree *tree=NULL;
3031 int old_offset=offset;
3035 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
3037 tree = proto_item_add_subtree(item, ett_TYPE_20);
3040 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
3041 hf_netlogon_level, &level);
3046 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3047 netlogon_dissect_NETLOGON_SAM_DOMAIN_INFO, NDR_POINTER_PTR,
3048 "NETLOGON_SAM_DOMAIN_INFO pointer:", -1, 0);
3051 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3052 netlogon_dissect_NETLOGON_SAM_GROUP_INFO, NDR_POINTER_PTR,
3053 "NETLOGON_SAM_GROUP_INFO pointer:", -1, 0);
3056 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3057 netlogon_dissect_TYPE_23, NDR_POINTER_PTR,
3058 "TYPE_23 pointer:", -1, 0);
3061 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3062 netlogon_dissect_NETLOGON_SAM_ACCOUNT_INFO, NDR_POINTER_PTR,
3063 "NETLOGON_SAM_ACCOUNT_INFO pointer:", -1, 0);
3066 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3067 netlogon_dissect_TYPE_23, NDR_POINTER_PTR,
3068 "TYPE_23 pointer:", -1, 0);
3071 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3072 netlogon_dissect_NETLOGON_SAM_GROUP_MEM_INFO, NDR_POINTER_PTR,
3073 "NETLOGON_SAM_GROUP_MEM_INFO pointer:", -1, 0);
3076 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3077 netlogon_dissect_NETLOGON_SAM_ALIAS_INFO, NDR_POINTER_PTR,
3078 "NETLOGON_SAM_ALIAS_INFO pointer:", -1, 0);
3081 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3082 netlogon_dissect_TYPE_23, NDR_POINTER_PTR,
3083 "TYPE_23 pointer:", -1, 0);
3086 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3087 netlogon_dissect_NETLOGON_SAM_ALIAS_MEM_INFO, NDR_POINTER_PTR,
3088 "NETLOGON_SAM_ALIAS_MEM_INFO pointer:", -1, 0);
3091 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3092 netlogon_dissect_TYPE_29, NDR_POINTER_PTR,
3093 "TYPE_29 pointer:", -1, 0);
3096 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3097 netlogon_dissect_TYPE_31, NDR_POINTER_PTR,
3098 "TYPE_31 pointer:", -1, 0);
3101 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3102 netlogon_dissect_TYPE_33, NDR_POINTER_PTR,
3103 "TYPE_33 pointer:", -1, 0);
3106 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3107 netlogon_dissect_TYPE_34, NDR_POINTER_PTR,
3108 "TYPE_34 pointer:", -1, 0);
3111 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3112 netlogon_dissect_TYPE_35, NDR_POINTER_PTR,
3113 "TYPE_35 pointer:", -1, 0);
3116 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3117 netlogon_dissect_TYPE_35, NDR_POINTER_PTR,
3118 "TYPE_35 pointer:", -1, 0);
3121 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3122 netlogon_dissect_TYPE_16, NDR_POINTER_PTR,
3123 "TYPE_16 pointer:", -1, 0);
3127 proto_item_set_len(item, offset-old_offset);
3132 netlogon_dissect_SAM_DELTA(tvbuff_t *tvb, int offset,
3133 packet_info *pinfo, proto_tree *parent_tree,
3136 proto_item *item=NULL;
3137 proto_tree *tree=NULL;
3138 int old_offset=offset;
3141 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
3143 tree = proto_item_add_subtree(item, ett_SAM_DELTA);
3146 offset = netlogon_dissect_TYPE_19(tvb, offset,
3149 offset = netlogon_dissect_TYPE_20(tvb, offset,
3152 proto_item_set_len(item, offset-old_offset);
3157 netlogon_dissect_SAM_DELTA_array(tvbuff_t *tvb, int offset,
3158 packet_info *pinfo, proto_tree *tree,
3161 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
3162 netlogon_dissect_SAM_DELTA);
3168 netlogon_dissect_SAM_DELTA_ARRAY(tvbuff_t *tvb, int offset,
3169 packet_info *pinfo, proto_tree *parent_tree,
3172 proto_item *item=NULL;
3173 proto_tree *tree=NULL;
3174 int old_offset=offset;
3177 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
3178 "SAM_DELTA_ARRAY:");
3179 tree = proto_item_add_subtree(item, ett_SAM_DELTA_ARRAY);
3182 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3183 hf_netlogon_num_deltas, NULL);
3185 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3186 netlogon_dissect_SAM_DELTA_array, NDR_POINTER_UNIQUE,
3189 proto_item_set_len(item, offset-old_offset);
3194 netlogon_dissect_SAM_DELTA_ARRAY_ptr(tvbuff_t *tvb, int offset,
3195 packet_info *pinfo, proto_tree *tree,
3198 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3199 netlogon_dissect_SAM_DELTA_ARRAY, NDR_POINTER_PTR,
3200 "SAM_DELTA_ARRAY pointer: deltas", -1, 0);
3206 netlogon_dissect_LOGONSRV_HANDLE(tvbuff_t *tvb, int offset,
3207 packet_info *pinfo, proto_tree *tree,
3210 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3211 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
3212 "Handle", hf_netlogon_logonsrv_handle, 0);
3218 netlogon_dissect_NETLOGON_INFO(tvbuff_t *tvb, int offset,
3219 packet_info *pinfo, proto_tree *parent_tree,
3222 proto_item *item=NULL;
3223 proto_tree *tree=NULL;
3224 int old_offset=offset;
3228 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
3230 tree = proto_item_add_subtree(item, ett_NETLOGON_INFO);
3233 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3234 hf_netlogon_level_long, &level);
3239 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3240 netlogon_dissect_NETLOGON_INFO_1, NDR_POINTER_PTR,
3241 "NETLOGON_INFO_1 pointer:", -1, 0);
3244 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3245 netlogon_dissect_NETLOGON_INFO_2, NDR_POINTER_PTR,
3246 "NETLOGON_INFO_2 pointer:", -1, 0);
3249 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3250 netlogon_dissect_NETLOGON_INFO_3, NDR_POINTER_PTR,
3251 "NETLOGON_INFO_3 pointer:", -1, 0);
3254 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3255 netlogon_dissect_NETLOGON_INFO_4, NDR_POINTER_PTR,
3256 "NETLOGON_INFO_4 pointer:", -1, 0);
3260 proto_item_set_len(item, offset-old_offset);
3265 netlogon_dissect_TYPE_45(tvbuff_t *tvb, int offset,
3266 packet_info *pinfo, proto_tree *parent_tree,
3269 proto_item *item=NULL;
3270 proto_tree *tree=NULL;
3271 int old_offset=offset;
3275 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
3277 tree = proto_item_add_subtree(item, ett_TYPE_45);
3280 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3281 hf_netlogon_level_long, &level);
3286 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3287 netlogon_dissect_TYPE_46, NDR_POINTER_PTR,
3288 "TYPE_46 pointer:", -1, 0);
3291 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3292 netlogon_dissect_TYPE_46, NDR_POINTER_PTR,
3293 "TYPE_46 pointer:", -1, 0);
3297 proto_item_set_len(item, offset-old_offset);
3302 netlogon_dissect_TYPE_47(tvbuff_t *tvb, int offset,
3303 packet_info *pinfo, proto_tree *parent_tree,
3306 proto_item *item=NULL;
3307 proto_tree *tree=NULL;
3308 int old_offset=offset;
3312 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
3314 tree = proto_item_add_subtree(item, ett_TYPE_47);
3317 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3318 hf_netlogon_level_long, &level);
3323 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3324 netlogon_dissect_TYPE_48, NDR_POINTER_PTR,
3325 "TYPE_48 pointer:", -1, 0);
3328 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3329 netlogon_dissect_UNICODE_MULTI, NDR_POINTER_PTR,
3330 "UNICODE_MULTI pointer:", -1, 0);
3334 proto_item_set_len(item, offset-old_offset);
3340 netlogon_dissect_function_00_rqst(tvbuff_t *tvb, int offset,
3341 packet_info *pinfo, proto_tree *tree, char *drep)
3343 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3346 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3347 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_REF,
3348 "unknown string", hf_netlogon_unknown_string, -1);
3350 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3351 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_REF,
3352 "unknown string", hf_netlogon_unknown_string, -1);
3359 netlogon_dissect_function_00_reply(tvbuff_t *tvb, int offset,
3360 packet_info *pinfo, proto_tree *tree, char *drep)
3362 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3363 netlogon_dissect_TYPE_1_ptr, NDR_POINTER_REF,
3364 "TYPE_1* pointer: unknown_TYPE_1", -1, 0);
3366 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
3367 hf_netlogon_rc, NULL);
3373 netlogon_dissect_function_01_rqst(tvbuff_t *tvb, int offset,
3374 packet_info *pinfo, proto_tree *tree, char *drep)
3376 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3379 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3380 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_REF,
3381 "unknown string", hf_netlogon_unknown_string, -1);
3383 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3384 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_REF,
3385 "unknown string", hf_netlogon_unknown_string, -1);
3392 netlogon_dissect_function_01_reply(tvbuff_t *tvb, int offset,
3393 packet_info *pinfo, proto_tree *tree, char *drep)
3395 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3396 netlogon_dissect_TYPE_2, NDR_POINTER_REF,
3397 "TYPE_2 pointer: unknown_TYPE_2", -1, 0);
3399 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
3400 hf_netlogon_rc, NULL);
3406 netlogon_dissect_netlogonsamlogon_rqst(tvbuff_t *tvb, int offset,
3407 packet_info *pinfo, proto_tree *tree, char *drep)
3409 if (check_col(pinfo->cinfo, COL_INFO))
3410 col_set_str(pinfo->cinfo, COL_INFO, "SamLogon request");
3412 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3415 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3416 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
3417 "Computer Name", hf_netlogon_computer_name, 0);
3419 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3420 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_UNIQUE,
3421 "NETLOGON_AUTHENTICATOR pointer: client_cred", -1, 0);
3423 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3424 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_UNIQUE,
3425 "NETLOGON_AUTHENTICATOR pointer: server_cred", -1, 0);
3427 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3428 netlogon_dissect_NETLOGON_LEVEL, NDR_POINTER_REF,
3429 "NETLOGON_LEVEL pointer: id_ctr", -1, 0);
3436 netlogon_dissect_netlogonsamlogon_reply(tvbuff_t *tvb, int offset,
3437 packet_info *pinfo, proto_tree *tree, char *drep)
3439 if (check_col(pinfo->cinfo, COL_INFO))
3440 col_set_str(pinfo->cinfo, COL_INFO, "SamLogon response");
3442 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3443 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_UNIQUE,
3444 "NETLOGON_AUTHENTICATOR pointer: server_cred", -1, 0);
3446 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3447 netlogon_dissect_NETLOGON_VALIDATION, NDR_POINTER_REF,
3448 "NETLOGON_VALIDATION pointer: ctr", -1, 0);
3450 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3451 netlogon_dissect_pointer_char, NDR_POINTER_REF,
3452 "BOOLEAN pointer: Authoritative", hf_netlogon_authoritative, 0);
3454 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
3455 hf_netlogon_rc, NULL);
3461 netlogon_dissect_netlogonsamlogoff_rqst(tvbuff_t *tvb, int offset,
3462 packet_info *pinfo, proto_tree *tree, char *drep)
3464 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3467 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3468 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
3469 "unknown string", hf_netlogon_unknown_string, 0);
3471 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3472 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_UNIQUE,
3473 "NETLOGON_AUTHENTICATOR pointer: client_cred", -1, 0);
3475 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3476 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_UNIQUE,
3477 "NETLOGON_AUTHENTICATOR pointer: server_cred", -1, 0);
3479 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3480 netlogon_dissect_NETLOGON_LEVEL, NDR_POINTER_REF,
3481 "NETLOGON_LEVEL pointer: id_ctr", -1, 0);
3488 netlogon_dissect_netlogonsamlogoff_reply(tvbuff_t *tvb, int offset,
3489 packet_info *pinfo, proto_tree *tree, char *drep)
3492 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3493 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_UNIQUE,
3494 "NETLOGON_AUTHENTICATOR pointer: server_cred", -1, 0);
3496 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
3497 hf_netlogon_rc, NULL);
3503 netlogon_dissect_netserverreqchallenge_rqst(tvbuff_t *tvb, int offset,
3504 packet_info *pinfo, proto_tree *tree, char *drep)
3506 if (check_col(pinfo->cinfo, COL_INFO))
3507 col_set_str(pinfo->cinfo, COL_INFO,
3508 "RequestChallenge request");
3510 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3513 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3514 NDR_POINTER_REF, hf_netlogon_client_name, 0);
3516 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3517 netlogon_dissect_NETLOGON_CREDENTIAL, NDR_POINTER_REF,
3518 "NETLOGON_CREDENTIAL pointer: client_chal", -1, 0);
3525 netlogon_dissect_netserverreqchallenge_reply(tvbuff_t *tvb, int offset,
3526 packet_info *pinfo, proto_tree *tree, char *drep)
3528 if (check_col(pinfo->cinfo, COL_INFO))
3529 col_set_str(pinfo->cinfo, COL_INFO,
3530 "RequestChallenge response");
3532 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3533 netlogon_dissect_NETLOGON_CREDENTIAL, NDR_POINTER_REF,
3534 "NETLOGON_CREDENTIAL pointer: server_chal", -1, 0);
3536 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
3537 hf_netlogon_rc, NULL);
3543 netlogon_dissect_netserverauthenticate_rqst(tvbuff_t *tvb, int offset,
3544 packet_info *pinfo, proto_tree *tree, char *drep)
3546 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3549 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3550 NDR_POINTER_REF, hf_netlogon_acct_name, 0);
3552 offset = netlogon_dissect_NETLOGON_SECURE_CHANNEL_TYPE(tvb, offset,
3555 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3556 NDR_POINTER_REF, hf_netlogon_computer_name, 0);
3558 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3559 netlogon_dissect_NETLOGON_CREDENTIAL, NDR_POINTER_REF,
3560 "NETLOGON_CREDENTIAL pointer: client_chal", -1, 0);
3567 netlogon_dissect_netserverauthenticate_reply(tvbuff_t *tvb, int offset,
3568 packet_info *pinfo, proto_tree *tree, char *drep)
3570 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3571 netlogon_dissect_NETLOGON_CREDENTIAL, NDR_POINTER_REF,
3572 "NETLOGON_CREDENTIAL pointer: server_chal", -1, 0);
3574 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
3575 hf_netlogon_rc, NULL);
3581 netlogon_dissect_netserverpasswordset_rqst(tvbuff_t *tvb, int offset,
3582 packet_info *pinfo, proto_tree *tree, char *drep)
3584 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3587 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3588 NDR_POINTER_REF, hf_netlogon_acct_name, 0);
3590 offset = netlogon_dissect_NETLOGON_SECURE_CHANNEL_TYPE(tvb, offset,
3593 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3594 NDR_POINTER_REF, hf_netlogon_computer_name, 0);
3596 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3597 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3598 "NETLOGON_AUTHENTICATOR pointer: client_cred", -1, 0);
3600 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3601 netlogon_dissect_ENCRYPTED_LM_OWF_PASSWORD, NDR_POINTER_REF,
3602 "ENCRYPTED_LM_OWF_PASSWORD pointer: hashed_pwd", -1, 0);
3609 netlogon_dissect_netserverpasswordset_reply(tvbuff_t *tvb, int offset,
3610 packet_info *pinfo, proto_tree *tree, char *drep)
3612 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3613 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3614 "NETLOGON_AUTHENTICATOR pointer: server_cred", -1, 0);
3616 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
3617 hf_netlogon_rc, NULL);
3623 netlogon_dissect_netsamdeltas_rqst(tvbuff_t *tvb, int offset,
3624 packet_info *pinfo, proto_tree *tree, char *drep)
3626 /* XXX idl file has LOGONSRV_HANDLE here, ms capture has string srv_name */
3627 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3628 NDR_POINTER_REF, hf_netlogon_logon_srv, 0);
3630 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3631 NDR_POINTER_REF, hf_netlogon_cli_name, 0);
3633 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3634 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3635 "NETLOGON_AUTHENTICATOR pointer: client_creds", -1, 0);
3637 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3638 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3639 "NETLOGON_AUTHENTICATOR pointer: server_creds", -1, 0);
3641 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3642 hf_netlogon_database_id, NULL);
3644 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3645 netlogon_dissect_TYPE_16, NDR_POINTER_REF,
3646 "TYPE_16 pointer: dom_mod_count", -1, 0);
3648 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3649 hf_netlogon_max_size, NULL);
3655 netlogon_dissect_netsamdeltas_reply(tvbuff_t *tvb, int offset,
3656 packet_info *pinfo, proto_tree *tree, char *drep)
3658 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3659 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3660 "NETLOGON_AUTHENTICATOR pointer: server_creds", -1, 0);
3662 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3663 netlogon_dissect_TYPE_16, NDR_POINTER_REF,
3664 "TYPE_16 pointer: dom_mod_count", -1, 0);
3666 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3667 netlogon_dissect_SAM_DELTA_ARRAY_ptr, NDR_POINTER_REF,
3668 "SAM_DELTA_ARRAY_ptr pointer: deltas", -1, 0);
3670 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
3671 hf_netlogon_rc, NULL);
3677 netlogon_dissect_function_08_rqst(tvbuff_t *tvb, int offset,
3678 packet_info *pinfo, proto_tree *tree, char *drep)
3680 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3681 NDR_POINTER_REF, hf_netlogon_logon_srv, 0);
3683 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3684 NDR_POINTER_REF, hf_netlogon_cli_name, 0);
3686 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3687 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3688 "NETLOGON_AUTHENTICATOR pointer: client_creds", -1, 0);
3690 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3691 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3692 "NETLOGON_AUTHENTICATOR pointer: server_creds", -1, 0);
3694 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3695 hf_netlogon_unknown_long, NULL);
3697 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3698 netlogon_dissect_pointer_long, NDR_POINTER_REF,
3699 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
3701 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3702 hf_netlogon_unknown_long, NULL);
3708 netlogon_dissect_function_08_reply(tvbuff_t *tvb, int offset,
3709 packet_info *pinfo, proto_tree *tree, char *drep)
3711 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3712 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3713 "NETLOGON_AUTHENTICATOR pointer: server_creds", -1, 0);
3715 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3716 netlogon_dissect_pointer_long, NDR_POINTER_REF,
3717 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
3719 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3720 netlogon_dissect_SAM_DELTA_ARRAY_ptr, NDR_POINTER_REF,
3721 "SAM_DELTA_ARRAY* pointer: unknown_SAM_DELTA_ARRAY", -1, 0);
3723 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
3724 hf_netlogon_rc, NULL);
3730 netlogon_dissect_function_09_rqst(tvbuff_t *tvb, int offset,
3731 packet_info *pinfo, proto_tree *tree, char *drep)
3733 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3736 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3737 NDR_POINTER_REF, hf_netlogon_unknown_string, 0);
3739 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3740 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3741 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
3743 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3744 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3745 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
3747 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3748 netlogon_dissect_TYPE_36, NDR_POINTER_REF,
3749 "TYPE_36 pointer: unknown_TYPE_36", -1, 0);
3751 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3752 hf_netlogon_unknown_long, NULL);
3754 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3755 hf_netlogon_unknown_long, NULL);
3757 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3758 hf_netlogon_unknown_long, NULL);
3764 netlogon_dissect_function_09_reply(tvbuff_t *tvb, int offset,
3765 packet_info *pinfo, proto_tree *tree, char *drep)
3767 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3768 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3769 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
3771 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3772 netlogon_dissect_BYTE_array, NDR_POINTER_REF,
3773 "BYTE_array pointer: unknown_BYTE", -1, 0);
3775 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3776 netlogon_dissect_pointer_long, NDR_POINTER_REF,
3777 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
3779 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3780 netlogon_dissect_pointer_long, NDR_POINTER_REF,
3781 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
3783 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3784 netlogon_dissect_TYPE_36, NDR_POINTER_REF,
3785 "TYPE_36 pointer: unknown_TYPE_36", -1, 0);
3787 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
3788 hf_netlogon_rc, NULL);
3794 netlogon_dissect_function_0a_rqst(tvbuff_t *tvb, int offset,
3795 packet_info *pinfo, proto_tree *tree, char *drep)
3797 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3800 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3801 NDR_POINTER_REF, hf_netlogon_unknown_string, 0);
3803 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3804 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3805 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
3807 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3808 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3809 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
3811 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3812 hf_netlogon_unknown_long, NULL);
3814 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3815 hf_netlogon_unknown_long, NULL);
3817 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3818 hf_netlogon_unknown_long, NULL);
3825 netlogon_dissect_function_0a_reply(tvbuff_t *tvb, int offset,
3826 packet_info *pinfo, proto_tree *tree, char *drep)
3828 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3829 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3830 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
3832 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3833 netlogon_dissect_BYTE_array, NDR_POINTER_REF,
3834 "BYTE_array pointer: unknown_BYTE", -1, 0);
3836 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3837 netlogon_dissect_pointer_long, NDR_POINTER_REF,
3838 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
3840 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3841 netlogon_dissect_pointer_long, NDR_POINTER_REF,
3842 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
3844 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3845 netlogon_dissect_pointer_long, NDR_POINTER_REF,
3846 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
3848 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3849 netlogon_dissect_TYPE_36, NDR_POINTER_REF,
3850 "TYPE_36 pointer: unknown_TYPE_36", -1, 0);
3852 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
3853 hf_netlogon_rc, NULL);
3859 netlogon_dissect_function_0b_rqst(tvbuff_t *tvb, int offset,
3860 packet_info *pinfo, proto_tree *tree, char *drep)
3863 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3864 NDR_POINTER_REF, hf_netlogon_unknown_string, 0);
3866 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3867 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
3868 "unknown string", hf_netlogon_unknown_string, 0);
3870 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3871 netlogon_dissect_WCHAR_ptr, NDR_POINTER_REF,
3872 "WCHAR* pointer: unknown string", -1, 0);
3878 netlogon_dissect_function_0b_reply(tvbuff_t *tvb, int offset,
3879 packet_info *pinfo, proto_tree *tree, char *drep)
3881 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3882 netlogon_dissect_WCHAR_ptr, NDR_POINTER_REF,
3883 "WCHAR* pointer: unknown string", -1, 0);
3885 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
3886 hf_netlogon_rc, NULL);
3892 netlogon_dissect_netlogoncontrol_rqst(tvbuff_t *tvb, int offset,
3893 packet_info *pinfo, proto_tree *tree, char *drep)
3895 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3898 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3899 hf_netlogon_code, NULL);
3901 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3902 hf_netlogon_level, NULL);
3909 netlogon_dissect_netlogoncontrol_reply(tvbuff_t *tvb, int offset,
3910 packet_info *pinfo, proto_tree *tree, char *drep)
3912 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3913 netlogon_dissect_NETLOGON_INFO, NDR_POINTER_REF,
3914 "NETLOGON_INFO pointer: unknown_NETLOGON_INFO", -1, 0);
3916 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
3917 hf_netlogon_rc, NULL);
3923 netlogon_dissect_function_0d_rqst(tvbuff_t *tvb, int offset,
3924 packet_info *pinfo, proto_tree *tree, char *drep)
3926 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3929 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3930 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
3931 "unknown string", hf_netlogon_unknown_string, 0);
3933 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3934 netlogon_dissect_WCHAR_ptr, NDR_POINTER_REF,
3935 "WCHAR* pointer: unknown string", -1, 0);
3941 netlogon_dissect_function_0d_reply(tvbuff_t *tvb, int offset,
3942 packet_info *pinfo, proto_tree *tree, char *drep)
3944 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3945 netlogon_dissect_WCHAR_ptr, NDR_POINTER_REF,
3946 "WCHAR* pointer: unknown string", -1, 0);
3948 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
3949 hf_netlogon_rc, NULL);
3955 netlogon_dissect_netlogoncontrol2_rqst(tvbuff_t *tvb, int offset,
3956 packet_info *pinfo, proto_tree *tree, char *drep)
3958 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3961 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3962 hf_netlogon_code, NULL);
3964 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3965 hf_netlogon_level, NULL);
3967 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3968 netlogon_dissect_NETLOGON_CONTROL_QUERY_INFO, NDR_POINTER_REF,
3969 "NETLOGON_CONTROL_QUERY_INFO pointer: unknown_NETLOGON_CONTROL_QUERY_INFO", -1, 0);
3976 netlogon_dissect_netlogoncontrol2_reply(tvbuff_t *tvb, int offset,
3977 packet_info *pinfo, proto_tree *tree, char *drep)
3979 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3980 netlogon_dissect_NETLOGON_INFO, NDR_POINTER_REF,
3981 "NETLOGON_INFO pointer: unknown_NETLOGON_INFO", -1, 0);
3983 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
3984 hf_netlogon_rc, NULL);
3990 netlogon_dissect_netserverauthenticate2_rqst(tvbuff_t *tvb, int offset,
3991 packet_info *pinfo, proto_tree *tree, char *drep)
3993 if (check_col(pinfo->cinfo, COL_INFO))
3994 col_set_str(pinfo->cinfo, COL_INFO, "Auth2 request");
3996 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3999 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
4000 NDR_POINTER_REF, hf_netlogon_acct_name, 0);
4002 offset = netlogon_dissect_NETLOGON_SECURE_CHANNEL_TYPE(tvb, offset,
4005 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
4006 NDR_POINTER_REF, hf_netlogon_computer_name, 0);
4008 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4009 netlogon_dissect_NETLOGON_CREDENTIAL, NDR_POINTER_REF,
4010 "NETLOGON_CREDENTIAL pointer: client_chal", -1, 0);
4012 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4013 netlogon_dissect_pointer_long, NDR_POINTER_REF,
4014 "ULONG pointer: neg_flags", hf_netlogon_unknown_long, 0);
4020 netlogon_dissect_netserverauthenticate2_reply(tvbuff_t *tvb, int offset,
4021 packet_info *pinfo, proto_tree *tree, char *drep)
4023 if (check_col(pinfo->cinfo, COL_INFO))
4024 col_set_str(pinfo->cinfo, COL_INFO, "Auth2 response");
4026 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4027 netlogon_dissect_NETLOGON_CREDENTIAL, NDR_POINTER_REF,
4028 "NETLOGON_CREDENTIAL pointer: server_chal", -1, 0);
4030 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4031 netlogon_dissect_pointer_long, NDR_POINTER_REF,
4032 "ULONG pointer: neg_flags", hf_netlogon_unknown_long, 0);
4034 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4035 hf_netlogon_rc, NULL);
4041 netlogon_dissect_netdatabasesync2_rqst(tvbuff_t *tvb, int offset,
4042 packet_info *pinfo, proto_tree *tree, char *drep)
4044 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4047 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
4048 NDR_POINTER_REF, hf_netlogon_unknown_string, 0);
4050 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4051 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
4052 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4054 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4055 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
4056 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4058 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4059 hf_netlogon_unknown_long, NULL);
4061 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
4062 hf_netlogon_unknown_short, NULL);
4064 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4065 netlogon_dissect_pointer_long, NDR_POINTER_REF,
4066 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
4068 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4069 hf_netlogon_unknown_long, NULL);
4076 netlogon_dissect_netdatabasesync2_reply(tvbuff_t *tvb, int offset,
4077 packet_info *pinfo, proto_tree *tree, char *drep)
4079 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4080 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
4081 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4083 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4084 netlogon_dissect_pointer_long, NDR_POINTER_REF,
4085 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
4087 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4088 netlogon_dissect_SAM_DELTA_ARRAY_ptr, NDR_POINTER_REF,
4089 "SAM_DELTA_ARRAY* pointer: unknown_SAM_DELTA_ARRAY", -1, 0);
4091 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4092 hf_netlogon_rc, NULL);
4098 netlogon_dissect_function_11_rqst(tvbuff_t *tvb, int offset,
4099 packet_info *pinfo, proto_tree *tree, char *drep)
4101 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
4102 NDR_POINTER_REF, hf_netlogon_unknown_string, 0);
4104 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
4105 NDR_POINTER_REF, hf_netlogon_unknown_string, 0);
4107 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4108 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
4109 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4111 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4112 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
4113 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4115 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4116 netlogon_dissect_BYTE_array, NDR_POINTER_REF,
4117 "BYTE pointer: unknown_BYTE", -1, 0);
4119 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4120 hf_netlogon_unknown_long, NULL);
4127 netlogon_dissect_function_11_reply(tvbuff_t *tvb, int offset,
4128 packet_info *pinfo, proto_tree *tree, char *drep)
4130 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4131 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
4132 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4134 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4135 netlogon_dissect_SAM_DELTA_ARRAY_ptr, NDR_POINTER_REF,
4136 "SAM_DELTA_ARRAY* pointer: unknown_SAM_DELTA_ARRAY", -1, 0);
4138 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4139 hf_netlogon_rc, NULL);
4145 netlogon_dissect_function_12_rqst(tvbuff_t *tvb, int offset,
4146 packet_info *pinfo, proto_tree *tree, char *drep)
4148 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4151 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4152 hf_netlogon_unknown_long, NULL);
4154 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4155 hf_netlogon_level, NULL);
4157 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4158 netlogon_dissect_NETLOGON_CONTROL_QUERY_INFO, NDR_POINTER_REF,
4159 "NETLOGON_CONTROL_QUERY_INFO pointer: unknown_NETLOGON_CONTROL_QUERY_INFO", -1, 0);
4166 netlogon_dissect_function_12_reply(tvbuff_t *tvb, int offset,
4167 packet_info *pinfo, proto_tree *tree, char *drep)
4169 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4170 netlogon_dissect_NETLOGON_INFO, NDR_POINTER_REF,
4171 "NETLOGON_INFO pointer: unknown_NETLOGON_INFO", -1, 0);
4173 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4174 hf_netlogon_rc, NULL);
4180 netlogon_dissect_nettrusteddomainlist_rqst(tvbuff_t *tvb, int offset,
4181 packet_info *pinfo, proto_tree *tree, char *drep)
4183 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4191 netlogon_dissect_nettrusteddomainlist_reply(tvbuff_t *tvb, int offset,
4192 packet_info *pinfo, proto_tree *tree, char *drep)
4194 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4195 netlogon_dissect_UNICODE_MULTI, NDR_POINTER_REF,
4196 "UNICODE_MULTI pointer: trust_dom_name_list", -1, 0);
4198 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4199 hf_netlogon_rc, NULL);
4205 netlogon_dissect_dsrgetdcname2_rqst(tvbuff_t *tvb, int offset,
4206 packet_info *pinfo, proto_tree *tree, char *drep)
4208 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4211 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4212 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4213 "Domain", hf_netlogon_logon_dom, 0);
4215 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4216 dissect_nt_GUID, NDR_POINTER_UNIQUE,
4217 "GUID pointer: domain_guid", -1, 0);
4219 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4220 dissect_nt_GUID, NDR_POINTER_UNIQUE,
4221 "GUID pointer: site_guid", -1, 0);
4223 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4224 hf_netlogon_flags, NULL);
4231 netlogon_dissect_dsrgetdcname2_reply(tvbuff_t *tvb, int offset,
4232 packet_info *pinfo, proto_tree *tree, char *drep)
4234 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4235 netlogon_dissect_DOMAIN_CONTROLLER_INFO_ptr, NDR_POINTER_REF,
4236 "DOMAIN_CONTROLLER_INFO* pointer: info", -1, 0);
4238 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4239 hf_netlogon_rc, NULL);
4245 netlogon_dissect_function_15_rqst(tvbuff_t *tvb, int offset,
4246 packet_info *pinfo, proto_tree *tree, char *drep)
4248 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4251 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4252 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4253 "unknown string", hf_netlogon_unknown_string, 0);
4255 offset = netlogon_dissect_NETLOGON_AUTHENTICATOR(tvb, offset,
4258 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4259 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_PTR,
4260 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4262 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4263 hf_netlogon_unknown_long, NULL);
4270 netlogon_dissect_function_15_reply(tvbuff_t *tvb, int offset,
4271 packet_info *pinfo, proto_tree *tree, char *drep)
4273 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4274 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_PTR,
4275 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4277 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4278 netlogon_dissect_TYPE_44, NDR_POINTER_PTR,
4279 "TYPE_44 pointer: unknown_TYPE_44", -1, 0);
4281 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4282 hf_netlogon_rc, NULL);
4288 netlogon_dissect_function_16_rqst(tvbuff_t *tvb, int offset,
4289 packet_info *pinfo, proto_tree *tree, char *drep)
4291 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4294 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4295 hf_netlogon_unknown_long, NULL);
4297 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4298 hf_netlogon_unknown_long, NULL);
4305 netlogon_dissect_function_16_reply(tvbuff_t *tvb, int offset,
4306 packet_info *pinfo, proto_tree *tree, char *drep)
4308 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4309 hf_netlogon_rc, NULL);
4315 netlogon_dissect_function_17_rqst(tvbuff_t *tvb, int offset,
4316 packet_info *pinfo, proto_tree *tree, char *drep)
4318 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4321 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4322 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4323 "unknown string", hf_netlogon_unknown_string, 0);
4330 netlogon_dissect_function_17_reply(tvbuff_t *tvb, int offset,
4331 packet_info *pinfo, proto_tree *tree, char *drep)
4333 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4334 netlogon_dissect_pointer_long, NDR_POINTER_PTR,
4335 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
4337 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4338 hf_netlogon_rc, NULL);
4344 netlogon_dissect_function_18_rqst(tvbuff_t *tvb, int offset,
4345 packet_info *pinfo, proto_tree *tree, char *drep)
4347 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4350 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4351 hf_netlogon_unknown_long, NULL);
4353 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4354 netlogon_dissect_BYTE_array, NDR_POINTER_PTR,
4355 "BYTE pointer: unknown_BYTE", -1, 0);
4357 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4358 hf_netlogon_unknown_long, NULL);
4364 netlogon_dissect_BYTE_16_array(tvbuff_t *tvb, int offset,
4365 packet_info *pinfo, proto_tree *tree, char *drep)
4370 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
4371 hf_netlogon_unknown_char, NULL);
4378 netlogon_dissect_function_18_reply(tvbuff_t *tvb, int offset,
4379 packet_info *pinfo, proto_tree *tree, char *drep)
4381 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4382 netlogon_dissect_BYTE_16_array, NDR_POINTER_PTR,
4383 "BYTE pointer: unknown_BYTE", -1, 0);
4385 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4386 hf_netlogon_rc, NULL);
4392 netlogon_dissect_function_19_rqst(tvbuff_t *tvb, int offset,
4393 packet_info *pinfo, proto_tree *tree, char *drep)
4395 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4398 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4399 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4400 "unknown string", hf_netlogon_unknown_string, 0);
4402 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4403 netlogon_dissect_BYTE_array, NDR_POINTER_PTR,
4404 "BYTE pointer: unknown_BYTE", -1, 0);
4406 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4407 hf_netlogon_unknown_long, NULL);
4414 netlogon_dissect_function_19_reply(tvbuff_t *tvb, int offset,
4415 packet_info *pinfo, proto_tree *tree, char *drep)
4417 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4418 netlogon_dissect_BYTE_16_array, NDR_POINTER_PTR,
4419 "BYTE pointer: unknown_BYTE", -1, 0);
4421 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4422 hf_netlogon_rc, NULL);
4428 netlogon_dissect_netserverauthenticate3_rqst(tvbuff_t *tvb, int offset,
4429 packet_info *pinfo, proto_tree *tree, char *drep)
4431 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4434 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4435 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4436 "Acct Name", hf_netlogon_acct_name, 0);
4438 offset = netlogon_dissect_NETLOGON_SECURE_CHANNEL_TYPE(tvb, offset,
4441 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4442 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4443 "Computer Name", hf_netlogon_computer_name, 0);
4445 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4446 netlogon_dissect_NETLOGON_CREDENTIAL, NDR_POINTER_REF,
4447 "NETLOGON_CREDENTIAL pointer: authenticator", -1, 0);
4449 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4450 netlogon_dissect_pointer_long, NDR_POINTER_PTR,
4451 "ULONG pointer: negotiate_flags", hf_netlogon_unknown_long, 0);
4458 netlogon_dissect_netserverauthenticate3_reply(tvbuff_t *tvb, int offset,
4459 packet_info *pinfo, proto_tree *tree, char *drep)
4461 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4462 netlogon_dissect_NETLOGON_CREDENTIAL, NDR_POINTER_REF,
4463 "NETLOGON_CREDENTIAL pointer: unknown_NETLOGON_CREDENTIAL", -1, 0);
4465 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4466 netlogon_dissect_pointer_long, NDR_POINTER_PTR,
4467 "ULONG pointer: negotiate_flags", hf_netlogon_unknown_long, 0);
4469 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4470 netlogon_dissect_pointer_long, NDR_POINTER_PTR,
4471 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
4473 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4474 hf_netlogon_rc, NULL);
4480 netlogon_dissect_dsrgetdcname_rqst(tvbuff_t *tvb, int offset,
4481 packet_info *pinfo, proto_tree *tree, char *drep)
4483 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4486 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4487 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4488 "Domain", hf_netlogon_logon_dom, 0);
4490 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4491 dissect_nt_GUID, NDR_POINTER_UNIQUE,
4492 "GUID pointer: domain_guid", -1, 0);
4494 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4495 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4496 "Site Name", hf_netlogon_site_name, 0);
4498 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4499 hf_netlogon_flags, NULL);
4506 netlogon_dissect_dsrgetdcname_reply(tvbuff_t *tvb, int offset,
4507 packet_info *pinfo, proto_tree *tree, char *drep)
4509 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4510 netlogon_dissect_DOMAIN_CONTROLLER_INFO_ptr, NDR_POINTER_REF,
4511 "DOMAIN_CONTROLLER_INFO* pointer: info", -1, 0);
4513 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4514 hf_netlogon_rc, NULL);
4520 netlogon_dissect_dsrgetsitename_rqst(tvbuff_t *tvb, int offset,
4521 packet_info *pinfo, proto_tree *tree, char *drep)
4523 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4531 netlogon_dissect_dsrgetsitename_reply(tvbuff_t *tvb, int offset,
4532 packet_info *pinfo, proto_tree *tree, char *drep)
4535 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
4536 NDR_POINTER_REF, hf_netlogon_site_name, 0);
4538 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4539 hf_netlogon_rc, NULL);
4545 netlogon_dissect_function_1d_rqst(tvbuff_t *tvb, int offset,
4546 packet_info *pinfo, proto_tree *tree, char *drep)
4548 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4551 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4552 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4553 "Computer Name", hf_netlogon_computer_name, 0);
4555 offset = netlogon_dissect_NETLOGON_AUTHENTICATOR(tvb, offset,
4558 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4559 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_PTR,
4560 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4562 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4563 hf_netlogon_unknown_long, NULL);
4565 offset = netlogon_dissect_TYPE_45(tvb, offset,
4573 netlogon_dissect_function_1d_reply(tvbuff_t *tvb, int offset,
4574 packet_info *pinfo, proto_tree *tree, char *drep)
4576 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4577 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_PTR,
4578 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4580 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4581 netlogon_dissect_TYPE_47, NDR_POINTER_PTR,
4582 "TYPE_47 pointer: unknown_TYPE_47", -1, 0);
4584 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4585 hf_netlogon_rc, NULL);
4591 netlogon_dissect_function_1e_rqst(tvbuff_t *tvb, int offset,
4592 packet_info *pinfo, proto_tree *tree, char *drep)
4594 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4597 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4598 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4599 "unknown string", hf_netlogon_unknown_string, 0);
4601 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
4602 hf_netlogon_unknown_short, NULL);
4604 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4605 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4606 "unknown string", hf_netlogon_unknown_string, 0);
4608 offset = netlogon_dissect_NETLOGON_AUTHENTICATOR(tvb, offset,
4611 offset = netlogon_dissect_UNICODE_STRING_512(tvb, offset,
4619 netlogon_dissect_function_1e_reply(tvbuff_t *tvb, int offset,
4620 packet_info *pinfo, proto_tree *tree, char *drep)
4622 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4623 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_PTR,
4624 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4626 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4627 hf_netlogon_rc, NULL);
4633 netlogon_dissect_netserverpasswordset2_rqst(tvbuff_t *tvb, int offset,
4634 packet_info *pinfo, proto_tree *tree, char *drep)
4636 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4639 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4640 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4641 "Acct Name", hf_netlogon_acct_name, 0);
4643 offset = netlogon_dissect_NETLOGON_SECURE_CHANNEL_TYPE(tvb, offset,
4646 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4647 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4648 "Computer Name", hf_netlogon_computer_name, 0);
4650 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4651 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
4652 "NETLOGON_AUTHENTICATOR pointer: client_cred", -1, 0);
4659 netlogon_dissect_netserverpasswordset2_reply(tvbuff_t *tvb, int offset,
4660 packet_info *pinfo, proto_tree *tree, char *drep)
4662 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4663 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
4664 "NETLOGON_AUTHENTICATOR pointer: server_cred", -1, 0);
4666 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4667 netlogon_dissect_LM_OWF_PASSWORD, NDR_POINTER_REF,
4668 "LM_OWF_PASSWORD pointer: server_pwd", -1, 0);
4670 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4671 hf_netlogon_rc, NULL);
4677 netlogon_dissect_function_20_rqst(tvbuff_t *tvb, int offset,
4678 packet_info *pinfo, proto_tree *tree, char *drep)
4680 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4683 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4684 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
4685 "unknown string", hf_netlogon_unknown_string, -1);
4687 offset = netlogon_dissect_NETLOGON_AUTHENTICATOR(tvb, offset,
4690 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4691 netlogon_dissect_BYTE_array, NDR_POINTER_PTR,
4692 "BYTE pointer: unknown_BYTE", -1, 0);
4694 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4695 hf_netlogon_unknown_long, NULL);
4702 netlogon_dissect_function_20_reply(tvbuff_t *tvb, int offset,
4703 packet_info *pinfo, proto_tree *tree, char *drep)
4705 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4706 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_PTR,
4707 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4709 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4710 hf_netlogon_rc, NULL);
4716 netlogon_dissect_function_21_rqst(tvbuff_t *tvb, int offset,
4717 packet_info *pinfo, proto_tree *tree, char *drep)
4719 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4722 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4723 hf_netlogon_unknown_long, NULL);
4725 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4726 netlogon_dissect_BYTE_array, NDR_POINTER_PTR,
4727 "BYTE pointer: unknown_BYTE", -1, 0);
4734 netlogon_dissect_function_21_reply(tvbuff_t *tvb, int offset,
4735 packet_info *pinfo, proto_tree *tree, char *drep)
4737 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4738 netlogon_dissect_TYPE_50_ptr_ptr, NDR_POINTER_REF,
4739 "TYPE_50** pointer: unknown_TYPE_50", -1, 0);
4741 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4742 hf_netlogon_rc, NULL);
4748 netlogon_dissect_function_22_rqst(tvbuff_t *tvb, int offset,
4749 packet_info *pinfo, proto_tree *tree, char *drep)
4751 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4754 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4755 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4756 "unknown string", hf_netlogon_unknown_string, 0);
4758 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4759 hf_netlogon_unknown_long, NULL);
4761 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4762 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4763 "unknown string", hf_netlogon_unknown_string, 0);
4765 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4766 dissect_nt_GUID, NDR_POINTER_UNIQUE,
4767 "GUID pointer: unknown_GUID", -1, 0);
4769 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4770 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4771 "unknown string", hf_netlogon_unknown_string, 0);
4773 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4774 hf_netlogon_unknown_long, NULL);
4781 netlogon_dissect_function_22_reply(tvbuff_t *tvb, int offset,
4782 packet_info *pinfo, proto_tree *tree, char *drep)
4784 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4785 netlogon_dissect_DOMAIN_CONTROLLER_INFO_ptr_ptr, NDR_POINTER_REF,
4786 "DOMAIN_CONTROLLER_INFO** pointer: unknown_DOMAIN_CONTROLLER_INFO", -1, 0);
4788 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4789 hf_netlogon_rc, NULL);
4795 netlogon_dissect_function_23_rqst(tvbuff_t *tvb, int offset,
4796 packet_info *pinfo, proto_tree *tree, char *drep)
4798 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4806 netlogon_dissect_function_23_reply(tvbuff_t *tvb, int offset,
4807 packet_info *pinfo, proto_tree *tree, char *drep)
4809 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4810 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
4811 "unknown string", hf_netlogon_unknown_string, -1);
4813 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4814 netlogon_dissect_pointer_long, NDR_POINTER_PTR,
4815 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
4817 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4818 hf_netlogon_rc, NULL);
4824 netlogon_dissect_function_24_rqst(tvbuff_t *tvb, int offset,
4825 packet_info *pinfo, proto_tree *tree, char *drep)
4827 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4835 netlogon_dissect_function_24_reply(tvbuff_t *tvb, int offset,
4836 packet_info *pinfo, proto_tree *tree, char *drep)
4838 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4839 netlogon_dissect_TYPE_51, NDR_POINTER_PTR,
4840 "TYPE_51 pointer: unknown_TYPE_51", -1, 0);
4842 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4843 hf_netlogon_rc, NULL);
4849 netlogon_dissect_function_25_rqst(tvbuff_t *tvb, int offset,
4850 packet_info *pinfo, proto_tree *tree, char *drep)
4852 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4855 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4856 hf_netlogon_unknown_long, NULL);
4858 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4859 netlogon_dissect_BYTE_array, NDR_POINTER_PTR,
4860 "BYTE pointer: unknown_BYTE", -1, 0);
4867 netlogon_dissect_function_25_reply(tvbuff_t *tvb, int offset,
4868 packet_info *pinfo, proto_tree *tree, char *drep)
4870 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4871 netlogon_dissect_TYPE_52_ptr_ptr, NDR_POINTER_REF,
4872 "TYPE_52** pointer: unknown_TYPE_52", -1, 0);
4874 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4875 hf_netlogon_rc, NULL);
4882 netlogon_dissect_function_26_rqst(tvbuff_t *tvb, int offset,
4883 packet_info *pinfo, proto_tree *tree, char *drep)
4885 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4886 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4887 "unknown string", hf_netlogon_unknown_string, 0);
4894 netlogon_dissect_function_26_reply(tvbuff_t *tvb, int offset,
4895 packet_info *pinfo, proto_tree *tree, char *drep)
4897 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4898 netlogon_dissect_TYPE_50_ptr_ptr, NDR_POINTER_REF,
4899 "TYPE_50** pointer: unknown_TYPE_50", -1, 0);
4901 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4902 hf_netlogon_rc, NULL);
4908 netlogon_dissect_function_27_rqst(tvbuff_t *tvb, int offset,
4909 packet_info *pinfo, proto_tree *tree, char *drep)
4911 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4912 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4913 "unknown string", hf_netlogon_unknown_string, 0);
4915 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4916 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4917 "unknown string", hf_netlogon_unknown_string, 0);
4919 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
4920 hf_netlogon_unknown_short, NULL);
4922 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4923 netlogon_dissect_NETLOGON_LEVEL, NDR_POINTER_PTR,
4924 "NETLOGON_LEVEL pointer: unknown_NETLOGON_LEVEL", -1, 0);
4926 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
4927 hf_netlogon_unknown_short, NULL);
4929 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4930 netlogon_dissect_pointer_long, NDR_POINTER_PTR,
4931 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
4937 netlogon_dissect_function_27_reply(tvbuff_t *tvb, int offset,
4938 packet_info *pinfo, proto_tree *tree, char *drep)
4940 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4941 netlogon_dissect_NETLOGON_VALIDATION, NDR_POINTER_PTR,
4942 "NETLOGON_VALIDATION pointer: unknown_NETLOGON_VALIDATION", -1, 0);
4944 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4945 netlogon_dissect_pointer_char, NDR_POINTER_PTR,
4946 "BOOLEAN pointer: unknown_BOOLEAN", hf_netlogon_unknown_char, 0);
4948 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4949 netlogon_dissect_pointer_long, NDR_POINTER_PTR,
4950 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
4952 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4953 hf_netlogon_rc, NULL);
4959 netlogon_dissect_dsrrolegetprimarydomaininformation_rqst(tvbuff_t *tvb, int offset,
4960 packet_info *pinfo, proto_tree *tree, char *drep)
4962 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4965 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4966 hf_netlogon_unknown_long, NULL);
4973 netlogon_dissect_dsrrolegetprimarydomaininformation_reply(tvbuff_t *tvb, int offset,
4974 packet_info *pinfo, proto_tree *tree, char *drep)
4976 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4977 netlogon_dissect_TYPE_51, NDR_POINTER_PTR,
4978 "TYPE_51 pointer: unknown_TYPE_51", -1, 0);
4980 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
4981 hf_netlogon_rc, NULL);
4987 netlogon_dissect_dsrderegisterdnshostrecords_rqst(tvbuff_t *tvb, int offset,
4988 packet_info *pinfo, proto_tree *tree, char *drep)
4990 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4993 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4994 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4995 "Domain", hf_netlogon_logon_dom, 0);
4997 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4998 dissect_nt_GUID, NDR_POINTER_UNIQUE,
4999 "GUID pointer: domain_guid", -1, 0);
5001 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
5002 dissect_nt_GUID, NDR_POINTER_UNIQUE,
5003 "GUID pointer: dsa_guid", -1, 0);
5005 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
5006 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
5007 "dns_host", hf_netlogon_dns_host, -1);
5014 netlogon_dissect_dsrderegisterdnshostrecords_reply(tvbuff_t *tvb, int offset,
5015 packet_info *pinfo, proto_tree *tree, char *drep)
5017 offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
5018 hf_netlogon_rc, NULL);
5025 static dcerpc_sub_dissector dcerpc_netlogon_dissectors[] = {
5026 { NETLOGON_FUNCTION_00, "FUNCTION_00",
5027 netlogon_dissect_function_00_rqst,
5028 netlogon_dissect_function_00_reply },
5029 { NETLOGON_FUNCTION_01, "FUNCTION_01",
5030 netlogon_dissect_function_01_rqst,
5031 netlogon_dissect_function_01_reply },
5032 { NETLOGON_NETLOGONSAMLOGON, "NETLOGONSAMLOGON",
5033 netlogon_dissect_netlogonsamlogon_rqst,
5034 netlogon_dissect_netlogonsamlogon_reply },
5035 { NETLOGON_NETLOGONSAMLOGOFF, "NETLOGONSAMLOGOFF",
5036 netlogon_dissect_netlogonsamlogoff_rqst,
5037 netlogon_dissect_netlogonsamlogoff_reply },
5038 { NETLOGON_NETSERVERREQCHALLENGE, "NETSERVERREQCHALLENGE",
5039 netlogon_dissect_netserverreqchallenge_rqst,
5040 netlogon_dissect_netserverreqchallenge_reply },
5041 { NETLOGON_NETSERVERAUTHENTICATE, "NETSERVERAUTHENTICATE",
5042 netlogon_dissect_netserverauthenticate_rqst,
5043 netlogon_dissect_netserverauthenticate_reply },
5044 { NETLOGON_NETSERVERPASSWORDSET, "NETSERVERPASSWORDSET",
5045 netlogon_dissect_netserverpasswordset_rqst,
5046 netlogon_dissect_netserverpasswordset_reply },
5047 { NETLOGON_NETSAMDELTAS, "NETSAMDELTAS",
5048 netlogon_dissect_netsamdeltas_rqst,
5049 netlogon_dissect_netsamdeltas_reply },
5050 { NETLOGON_FUNCTION_08, "FUNCTION_08",
5051 netlogon_dissect_function_08_rqst,
5052 netlogon_dissect_function_08_reply },
5053 { NETLOGON_FUNCTION_09, "FUNCTION_09",
5054 netlogon_dissect_function_09_rqst,
5055 netlogon_dissect_function_09_reply },
5056 { NETLOGON_FUNCTION_0A, "FUNCTION_0A",
5057 netlogon_dissect_function_0a_rqst,
5058 netlogon_dissect_function_0a_reply },
5059 { NETLOGON_FUNCTION_0B, "FUNCTION_0B",
5060 netlogon_dissect_function_0b_rqst,
5061 netlogon_dissect_function_0b_reply },
5062 { NETLOGON_NETLOGONCONTROL, "NETLOGONCONTROL",
5063 netlogon_dissect_netlogoncontrol_rqst,
5064 netlogon_dissect_netlogoncontrol_reply },
5065 { NETLOGON_FUNCTION_0D, "FUNCTION_0D",
5066 netlogon_dissect_function_0d_rqst,
5067 netlogon_dissect_function_0d_reply },
5068 { NETLOGON_NETLOGONCONTROL2, "NETLOGONCONTROL2",
5069 netlogon_dissect_netlogoncontrol2_rqst,
5070 netlogon_dissect_netlogoncontrol2_reply },
5071 { NETLOGON_NETSERVERAUTHENTICATE2, "NETSERVERAUTHENTICATE2",
5072 netlogon_dissect_netserverauthenticate2_rqst,
5073 netlogon_dissect_netserverauthenticate2_reply },
5074 { NETLOGON_NETDATABASESYNC2, "NETDATABASESYNC2",
5075 netlogon_dissect_netdatabasesync2_rqst,
5076 netlogon_dissect_netdatabasesync2_reply },
5077 { NETLOGON_FUNCTION_11, "FUNCTION_11",
5078 netlogon_dissect_function_11_rqst,
5079 netlogon_dissect_function_11_reply },
5080 { NETLOGON_FUNCTION_12, "FUNCTION_12",
5081 netlogon_dissect_function_12_rqst,
5082 netlogon_dissect_function_12_reply },
5083 { NETLOGON_NETTRUSTEDDOMAINLIST, "NETTRUSTEDDOMAINLIST",
5084 netlogon_dissect_nettrusteddomainlist_rqst,
5085 netlogon_dissect_nettrusteddomainlist_reply },
5086 { NETLOGON_DSRGETDCNAME2, "DSRGETDCNAME2",
5087 netlogon_dissect_dsrgetdcname2_rqst,
5088 netlogon_dissect_dsrgetdcname2_reply },
5089 { NETLOGON_FUNCTION_15, "FUNCTION_15",
5090 netlogon_dissect_function_15_rqst,
5091 netlogon_dissect_function_15_reply },
5092 { NETLOGON_FUNCTION_16, "FUNCTION_16",
5093 netlogon_dissect_function_16_rqst,
5094 netlogon_dissect_function_16_reply },
5095 { NETLOGON_FUNCTION_17, "FUNCTION_17",
5096 netlogon_dissect_function_17_rqst,
5097 netlogon_dissect_function_17_reply },
5098 { NETLOGON_FUNCTION_18, "FUNCTION_18",
5099 netlogon_dissect_function_18_rqst,
5100 netlogon_dissect_function_18_reply },
5101 { NETLOGON_FUNCTION_19, "FUNCTION_19",
5102 netlogon_dissect_function_19_rqst,
5103 netlogon_dissect_function_19_reply },
5104 { NETLOGON_NETSERVERAUTHENTICATE3, "NETSERVERAUTHENTICATE3",
5105 netlogon_dissect_netserverauthenticate3_rqst,
5106 netlogon_dissect_netserverauthenticate3_reply },
5107 { NETLOGON_DSRGETDCNAME, "DSRGETDCNAME",
5108 netlogon_dissect_dsrgetdcname_rqst,
5109 netlogon_dissect_dsrgetdcname_reply },
5110 { NETLOGON_DSRGETSITENAME, "DSRGETSITENAME",
5111 netlogon_dissect_dsrgetsitename_rqst,
5112 netlogon_dissect_dsrgetsitename_reply },
5113 { NETLOGON_FUNCTION_1D, "FUNCTION_1D",
5114 netlogon_dissect_function_1d_rqst,
5115 netlogon_dissect_function_1d_reply },
5116 { NETLOGON_FUNCTION_1E, "FUNCTION_1E",
5117 netlogon_dissect_function_1e_rqst,
5118 netlogon_dissect_function_1e_reply },
5119 { NETLOGON_NETSERVERPASSWORDSET2, "NETSERVERPASSWORDSET2",
5120 netlogon_dissect_netserverpasswordset2_rqst,
5121 netlogon_dissect_netserverpasswordset2_reply },
5122 { NETLOGON_FUNCTION_20, "FUNCTION_20",
5123 netlogon_dissect_function_20_rqst,
5124 netlogon_dissect_function_20_reply },
5125 { NETLOGON_FUNCTION_21, "FUNCTION_21",
5126 netlogon_dissect_function_21_rqst,
5127 netlogon_dissect_function_21_reply },
5128 { NETLOGON_FUNCTION_22, "FUNCTION_22",
5129 netlogon_dissect_function_22_rqst,
5130 netlogon_dissect_function_22_reply },
5131 { NETLOGON_FUNCTION_23, "FUNCTION_23",
5132 netlogon_dissect_function_23_rqst,
5133 netlogon_dissect_function_23_reply },
5134 { NETLOGON_FUNCTION_24, "FUNCTION_24",
5135 netlogon_dissect_function_24_rqst,
5136 netlogon_dissect_function_24_reply },
5137 { NETLOGON_FUNCTION_25, "FUNCTION_25",
5138 netlogon_dissect_function_25_rqst,
5139 netlogon_dissect_function_25_reply },
5140 { NETLOGON_FUNCTION_26, "FUNCTION_26",
5141 netlogon_dissect_function_26_rqst,
5142 netlogon_dissect_function_26_reply },
5143 { NETLOGON_FUNCTION_27, "FUNCTION_27",
5144 netlogon_dissect_function_27_rqst,
5145 netlogon_dissect_function_27_reply },
5146 { NETLOGON_DSRROLEGETPRIMARYDOMAININFORMATION, "DSRROLEGETPRIMARYDOMAININFORMATION",
5147 netlogon_dissect_dsrrolegetprimarydomaininformation_rqst,
5148 netlogon_dissect_dsrrolegetprimarydomaininformation_reply },
5149 { NETLOGON_DSRDEREGISTERDNSHOSTRECORDS, "DSRDEREGISTERDNSHOSTRECORDS",
5150 netlogon_dissect_dsrderegisterdnshostrecords_rqst,
5151 netlogon_dissect_dsrderegisterdnshostrecords_reply },
5152 {0, NULL, NULL, NULL },
5156 proto_register_dcerpc_netlogon(void)
5159 static hf_register_info hf[] = {
5160 { &hf_netlogon_rc, {
5161 "Return code", "netlogon.rc", FT_UINT32, BASE_HEX,
5162 VALS(NT_errors), 0x0, "Netlogon return code", HFILL }},
5164 { &hf_netlogon_param_ctrl, {
5165 "Param Ctrl", "netlogon.param_ctrl", FT_UINT32, BASE_HEX,
5166 NULL, 0x0, "Param ctrl", HFILL }},
5168 { &hf_netlogon_logon_id, {
5169 "Logon ID", "netlogon.logon_id", FT_UINT64, BASE_DEC,
5170 NULL, 0x0, "Logon ID", HFILL }},
5172 { &hf_netlogon_count, {
5173 "Count", "netlogon.count", FT_UINT16, BASE_DEC,
5174 NULL, 0x0, "", HFILL }},
5176 { &hf_netlogon_credential, {
5177 "Credential", "netlogon.credential", FT_BYTES, BASE_HEX,
5178 NULL, 0x0, "Netlogon credential", HFILL }},
5180 { &hf_netlogon_cypher_block, {
5181 "Cypher Block", "netlogon.cypher_block", FT_BYTES, BASE_HEX,
5182 NULL, 0x0, "Netlogon cypher block", HFILL }},
5184 { &hf_netlogon_lm_owf_password, {
5185 "LM Pwd", "netlogon.lm_owf_pwd", FT_BYTES, BASE_HEX,
5186 NULL, 0x0, "LanManager OWF Password", HFILL }},
5188 { &hf_netlogon_user_session_key, {
5189 "User Session Key", "netlogon.user_session_key", FT_BYTES, BASE_HEX,
5190 NULL, 0x0, "User Session Key", HFILL }},
5192 { &hf_netlogon_encrypted_lm_owf_password, {
5193 "Encrypted LM Pwd", "netlogon.lm_owf_pwd.encrypted", FT_BYTES, BASE_HEX,
5194 NULL, 0x0, "Encrypted LanManager OWF Password", HFILL }},
5196 { &hf_netlogon_nt_owf_password, {
5197 "NT Pwd", "netlogon.nt_owf_pwd", FT_BYTES, BASE_HEX,
5198 NULL, 0x0, "NT OWF Password", HFILL }},
5200 { &hf_netlogon_blob, {
5201 "BLOB", "netlogon.blob", FT_BYTES, BASE_HEX,
5202 NULL, 0x0, "BLOB", HFILL }},
5204 { &hf_netlogon_len, {
5205 "Len", "netlogon.len", FT_UINT32, BASE_DEC,
5206 NULL, 0, "Length", HFILL }},
5208 { &hf_netlogon_status, {
5209 "Status", "netlogon.status", FT_UINT32, BASE_DEC,
5210 NULL, 0, "Status", HFILL }},
5212 { &hf_netlogon_attrs, {
5213 "Attributes", "netlogon.attrs", FT_UINT32, BASE_HEX,
5214 NULL, 0, "Attributes", HFILL }},
5216 { &hf_netlogon_unknown_string,
5217 { "Unknown string", "netlogon.unknown_string", FT_STRING, BASE_NONE,
5218 NULL, 0, "Unknown string. If you know what this is, contact ethereal developers.", HFILL }},
5219 { &hf_netlogon_unknown_long,
5220 { "Unknown long", "netlogon.unknown.long", FT_UINT32, BASE_HEX,
5221 NULL, 0x0, "Unknown long. If you know what this is, contact ethereal developers.", HFILL }},
5222 { &hf_netlogon_unknown_short,
5223 { "Unknown short", "netlogon.unknown.short", FT_UINT16, BASE_HEX,
5224 NULL, 0x0, "Unknown short. If you know what this is, contact ethereal developers.", HFILL }},
5226 { &hf_netlogon_unknown_char,
5227 { "Unknown char", "netlogon.unknown.char", FT_UINT8, BASE_HEX,
5228 NULL, 0x0, "Unknown char. If you know what this is, contact ethereal developers.", HFILL }},
5230 { &hf_netlogon_unknown_time,
5231 { "Unknown time", "netlogon.unknown.time", FT_ABSOLUTE_TIME, BASE_NONE,
5232 NULL, 0x0, "Unknown time. If you know what this is, contact ethereal developers.", HFILL }},
5234 { &hf_netlogon_acct_expiry_time,
5235 { "Acct Expiry Time", "netlogon.acct.expiry_time", FT_ABSOLUTE_TIME, BASE_NONE,
5236 NULL, 0x0, "When this account will expire", HFILL }},
5238 { &hf_netlogon_nt_pwd_present,
5239 { "NT PWD Present", "netlogon.nt_pwd_present", FT_UINT8, BASE_HEX,
5240 NULL, 0x0, "Is NT password present for this account?", HFILL }},
5242 { &hf_netlogon_lm_pwd_present,
5243 { "LM PWD Present", "netlogon.lm_pwd_present", FT_UINT8, BASE_HEX,
5244 NULL, 0x0, "Is LanManager password present for this account?", HFILL }},
5246 { &hf_netlogon_pwd_expired,
5247 { "PWD Expired", "netlogon.pwd_expired", FT_UINT8, BASE_HEX,
5248 NULL, 0x0, "Whether this password has expired or not", HFILL }},
5250 { &hf_netlogon_num_pwd_pairs,
5251 { "Num PWD Pairs", "netlogon.num_pwd_pairs", FT_UINT8, BASE_DEC,
5252 NULL, 0x0, "Number of password pairs. Password history length?", HFILL }},
5254 { &hf_netlogon_authoritative,
5255 { "Authoritative", "netlogon.authoritative", FT_UINT8, BASE_DEC,
5256 NULL, 0x0, "", HFILL }},
5258 { &hf_netlogon_nt_chal_resp,
5259 { "NT Chal resp", "netlogon.nt_chal_resp", FT_BYTES, BASE_HEX,
5260 NULL, 0, "Challenge response for NT authentication", HFILL }},
5262 { &hf_netlogon_lm_chal_resp,
5263 { "LM Chal resp", "netlogon.lm_chal_resp", FT_BYTES, BASE_HEX,
5264 NULL, 0, "Challenge response for LM authentication", HFILL }},
5266 { &hf_netlogon_acct_name,
5267 { "Acct Name", "netlogon.acct_name", FT_STRING, BASE_NONE,
5268 NULL, 0, "Account Name", HFILL }},
5270 { &hf_netlogon_acct_desc,
5271 { "Acct Desc", "netlogon.acct_desc", FT_STRING, BASE_NONE,
5272 NULL, 0, "Account Description", HFILL }},
5274 { &hf_netlogon_group_desc,
5275 { "Group Desc", "netlogon.group_desc", FT_STRING, BASE_NONE,
5276 NULL, 0, "Group Description", HFILL }},
5278 { &hf_netlogon_full_name,
5279 { "Full Name", "netlogon.full_name", FT_STRING, BASE_NONE,
5280 NULL, 0, "Full Name", HFILL }},
5282 { &hf_netlogon_comment,
5283 { "Comment", "netlogon.comment", FT_STRING, BASE_NONE,
5284 NULL, 0, "Comment", HFILL }},
5286 { &hf_netlogon_parameters,
5287 { "Parameters", "netlogon.parameters", FT_STRING, BASE_NONE,
5288 NULL, 0, "Parameters", HFILL }},
5290 { &hf_netlogon_logon_script,
5291 { "Logon Script", "netlogon.logon_script", FT_STRING, BASE_NONE,
5292 NULL, 0, "Logon Script", HFILL }},
5294 { &hf_netlogon_profile_path,
5295 { "Profile Path", "netlogon.profile_path", FT_STRING, BASE_NONE,
5296 NULL, 0, "Profile Path", HFILL }},
5298 { &hf_netlogon_home_dir,
5299 { "Home Dir", "netlogon.home_dir", FT_STRING, BASE_NONE,
5300 NULL, 0, "Home Directory", HFILL }},
5302 { &hf_netlogon_dir_drive,
5303 { "Dir Drive", "netlogon.dir_drive", FT_STRING, BASE_NONE,
5304 NULL, 0, "Drive letter for home directory", HFILL }},
5306 { &hf_netlogon_logon_srv,
5307 { "Server", "netlogon.server", FT_STRING, BASE_NONE,
5308 NULL, 0, "Server", HFILL }},
5310 { &hf_netlogon_logon_dom,
5311 { "Domain", "netlogon.domain", FT_STRING, BASE_NONE,
5312 NULL, 0, "Domain", HFILL }},
5314 { &hf_netlogon_computer_name,
5315 { "Computer Name", "netlogon.computer_name", FT_STRING, BASE_NONE,
5316 NULL, 0, "Computer Name", HFILL }},
5318 { &hf_netlogon_site_name,
5319 { "Site Name", "netlogon.site_name", FT_STRING, BASE_NONE,
5320 NULL, 0, "Site Name", HFILL }},
5322 { &hf_netlogon_dc_name,
5323 { "DC Name", "netlogon.dc.name", FT_STRING, BASE_NONE,
5324 NULL, 0, "DC Name", HFILL }},
5326 { &hf_netlogon_dc_site_name,
5327 { "DC Site Name", "netlogon.dc.site_name", FT_STRING, BASE_NONE,
5328 NULL, 0, "DC Site Name", HFILL }},
5330 { &hf_netlogon_dns_forest_name,
5331 { "DNS Forest Name", "netlogon.dns.forest_name", FT_STRING, BASE_NONE,
5332 NULL, 0, "DNS Forest Name", HFILL }},
5334 { &hf_netlogon_dc_address,
5335 { "DC Address", "netlogon.dc.address", FT_STRING, BASE_NONE,
5336 NULL, 0, "DC Address", HFILL }},
5338 { &hf_netlogon_dc_address_type,
5339 { "DC Address Type", "netlogon.dc.address_type", FT_UINT32, BASE_DEC,
5340 NULL, 0, "DC Address Type", HFILL }},
5342 { &hf_netlogon_client_name,
5343 { "Client Name", "netlogon.client.name", FT_STRING, BASE_NONE,
5344 NULL, 0, "Client Name", HFILL }},
5346 { &hf_netlogon_client_site_name,
5347 { "Client Site Name", "netlogon.client.site_name", FT_STRING, BASE_NONE,
5348 NULL, 0, "Client Site Name", HFILL }},
5350 { &hf_netlogon_workstation_site_name,
5351 { "Wkst Site Name", "netlogon.wkst.site_name", FT_STRING, BASE_NONE,
5352 NULL, 0, "Workstation Site Name", HFILL }},
5354 { &hf_netlogon_workstation_os,
5355 { "Wkst OS", "netlogon.wkst.os", FT_STRING, BASE_NONE,
5356 NULL, 0, "Workstation OS", HFILL }},
5358 { &hf_netlogon_workstations,
5359 { "Workstations", "netlogon.wksts", FT_STRING, BASE_NONE,
5360 NULL, 0, "Workstations", HFILL }},
5362 { &hf_netlogon_workstation_fqdn,
5363 { "Wkst FQDN", "netlogon.wkst.fqdn", FT_STRING, BASE_NONE,
5364 NULL, 0, "Workstation FQDN", HFILL }},
5366 { &hf_netlogon_group_name,
5367 { "Group Name", "netlogon.group_name", FT_STRING, BASE_NONE,
5368 NULL, 0, "Group Name", HFILL }},
5370 { &hf_netlogon_alias_name,
5371 { "Alias Name", "netlogon.alias_name", FT_STRING, BASE_NONE,
5372 NULL, 0, "Alias Name", HFILL }},
5374 { &hf_netlogon_cli_name,
5375 { "CLI Name", "netlogon.cli_name", FT_STRING, BASE_NONE,
5376 NULL, 0, "CLI Name", HFILL }},
5378 { &hf_netlogon_dns_host,
5379 { "DNS Host", "netlogon.dns_host", FT_STRING, BASE_NONE,
5380 NULL, 0, "DNS Host", HFILL }},
5382 { &hf_netlogon_trusted_domain_name,
5383 { "Trusted Domain", "netlogon.trusted_domain", FT_STRING, BASE_NONE,
5384 NULL, 0, "Trusted Domain Name", HFILL }},
5386 { &hf_netlogon_trusted_dc_name,
5387 { "Trusted DC", "netlogon.trusted_dc", FT_STRING, BASE_NONE,
5388 NULL, 0, "Trusted DC", HFILL }},
5390 { &hf_netlogon_logonsrv_handle,
5391 { "Handle", "netlogon.handle", FT_STRING, BASE_NONE,
5392 NULL, 0, "Logon Srv Handle", HFILL }},
5394 { &hf_netlogon_logon_count,
5395 { "Logon Count", "netlogon.logon_count", FT_UINT16, BASE_DEC,
5396 NULL, 0x0, "Number of successful logins", HFILL }},
5398 { &hf_netlogon_bad_pw_count,
5399 { "Bad PW Count", "netlogon.bad_pw_count", FT_UINT16, BASE_DEC,
5400 NULL, 0x0, "Number of failed logins", HFILL }},
5402 { &hf_netlogon_country,
5403 { "Country", "netlogon.country", FT_UINT16, BASE_DEC,
5404 VALS(ms_country_codes), 0x0, "Country setting for this account", HFILL }},
5406 { &hf_netlogon_codepage,
5407 { "Codepage", "netlogon.codepage", FT_UINT16, BASE_DEC,
5408 NULL, 0x0, "Codepage setting for this account", HFILL }},
5410 { &hf_netlogon_level,
5411 { "Level", "netlogon.level", FT_UINT16, BASE_DEC,
5412 NULL, 0x0, "Which option of the union is represented here", HFILL }},
5414 { &hf_netlogon_secure_channel_type,
5415 { "Sec Chn Type", "netlogon.sec_chn_type", FT_UINT16, BASE_DEC,
5416 NULL, 0x0, "Secure Channel Type", HFILL }},
5418 { &hf_netlogon_blob_size,
5419 { "Size", "netlogon.blob.size", FT_UINT32, BASE_DEC,
5420 NULL, 0x0, "Size in bytes of BLOB", HFILL }},
5422 { &hf_netlogon_code,
5423 { "Code", "netlogon.code", FT_UINT32, BASE_HEX,
5424 NULL, 0x0, "Code", HFILL }},
5426 { &hf_netlogon_level_long,
5427 { "Level", "netlogon.level32", FT_UINT32, BASE_DEC,
5428 NULL, 0x0, "Which option of the union is represented here", HFILL }},
5430 { &hf_netlogon_timestamp,
5431 { "Timestamp", "netlogon.timestamp", FT_UINT32, BASE_HEX,
5432 NULL, 0x0, "Some sort of timestamp", HFILL }},
5434 { &hf_netlogon_user_rid,
5435 { "User RID", "netlogon.rid", FT_UINT32, BASE_DEC,
5436 NULL, 0x0, "", HFILL }},
5438 { &hf_netlogon_alias_rid,
5439 { "Alias RID", "netlogon.alias_rid", FT_UINT32, BASE_DEC,
5440 NULL, 0x0, "", HFILL }},
5442 { &hf_netlogon_group_rid,
5443 { "Group RID", "netlogon.group_rid", FT_UINT32, BASE_DEC,
5444 NULL, 0x0, "", HFILL }},
5446 { &hf_netlogon_num_rids,
5447 { "Num RIDs", "netlogon.num_rids", FT_UINT32, BASE_DEC,
5448 NULL, 0x0, "Number of RIDs", HFILL }},
5450 { &hf_netlogon_num_other_groups,
5451 { "Num Other Groups", "netlogon.num_other_groups", FT_UINT32, BASE_DEC,
5452 NULL, 0x0, "", HFILL }},
5454 { &hf_netlogon_flags,
5455 { "Flags", "netlogon.flags", FT_UINT32, BASE_HEX,
5456 NULL, 0x0, "", HFILL }},
5458 { &hf_netlogon_user_flags,
5459 { "User Flags", "netlogon.user_flags", FT_UINT32, BASE_HEX,
5460 NULL, 0x0, "", HFILL }},
5462 { &hf_netlogon_database_id,
5463 { "Database Id", "netlogon.database_id", FT_UINT32, BASE_DEC,
5464 NULL, 0x0, "Database Id", HFILL }},
5466 { &hf_netlogon_max_size,
5467 { "Max Size", "netlogon.max_size", FT_UINT32, BASE_DEC,
5468 NULL, 0x0, "Max Size of database", HFILL }},
5470 { &hf_netlogon_num_deltas,
5471 { "Num Deltas", "netlogon.num_deltas", FT_UINT32, BASE_DEC,
5472 NULL, 0x0, "Number of SAM Deltas in array", HFILL }},
5474 { &hf_netlogon_logon_attempts,
5475 { "Logon Attempts", "netlogon.logon_attempts", FT_UINT32, BASE_DEC,
5476 NULL, 0x0, "Number of logon attempts", HFILL }},
5478 { &hf_netlogon_logon_time,
5479 { "Logon Time", "netlogon.logon_time", FT_ABSOLUTE_TIME, BASE_NONE,
5480 NULL, 0, "Time for last time this user logged on", HFILL }},
5482 { &hf_netlogon_kickoff_time,
5483 { "Kickoff Time", "netlogon.kickoff_time", FT_ABSOLUTE_TIME, BASE_NONE,
5484 NULL, 0, "Time when this user will be kicked off", HFILL }},
5486 { &hf_netlogon_logoff_time,
5487 { "Logoff Time", "netlogon.logoff_time", FT_ABSOLUTE_TIME, BASE_NONE,
5488 NULL, 0, "Time for last time this user logged off", HFILL }},
5490 { &hf_netlogon_pwd_last_set_time,
5491 { "PWD Last Set", "netlogon.pwd_last_set_time", FT_ABSOLUTE_TIME, BASE_NONE,
5492 NULL, 0, "Last time this users password was changed", HFILL }},
5494 { &hf_netlogon_pwd_can_change_time,
5495 { "PWD Can Change", "netlogon.pwd_can_change_time", FT_ABSOLUTE_TIME, BASE_NONE,
5496 NULL, 0, "When this users password may be changed", HFILL }},
5498 { &hf_netlogon_pwd_must_change_time,
5499 { "PWD Must Change", "netlogon.pwd_must_change_time", FT_ABSOLUTE_TIME, BASE_NONE,
5500 NULL, 0, "When this users password must be changed", HFILL }},
5504 static gint *ett[] = {
5505 &ett_dcerpc_netlogon,
5506 &ett_NETLOGON_SECURITY_DESCRIPTOR,
5510 &ett_NETLOGON_AUTHENTICATOR,
5511 &ett_NETLOGON_LOGON_IDENTITY_INFO,
5512 &ett_NETLOGON_INTERACTIVE_INFO,
5513 &ett_NETLOGON_NETWORK_INFO,
5514 &ett_NETLOGON_VALIDATION_SAM_INFO1,
5515 &ett_NETLOGON_VALIDATION_SAM_INFO2,
5517 &ett_NETLOGON_SAM_DOMAIN_INFO,
5518 &ett_NETLOGON_SAM_GROUP_INFO,
5520 &ett_NETLOGON_SAM_ACCOUNT_INFO,
5521 &ett_NETLOGON_SAM_GROUP_MEM_INFO,
5522 &ett_NETLOGON_SAM_ALIAS_INFO,
5523 &ett_NETLOGON_SAM_ALIAS_MEM_INFO,
5532 &ett_SAM_DELTA_ARRAY,
5534 &ett_NETLOGON_INFO_1,
5535 &ett_NETLOGON_INFO_2,
5536 &ett_NETLOGON_INFO_3,
5537 &ett_NETLOGON_INFO_4,
5539 &ett_DOMAIN_CONTROLLER_INFO,
5542 &ett_UNICODE_STRING_512,
5546 &ett_NETLOGON_LEVEL,
5547 &ett_NETLOGON_VALIDATION,
5549 &ett_NETLOGON_CONTROL_QUERY_INFO,
5555 &ett_NETLOGON_CREDENTIAL,
5557 &ett_ENC_LM_OWF_PASSWORD,
5558 &ett_LM_OWF_PASSWORD,
5559 &ett_NT_OWF_PASSWORD,
5560 &ett_GROUP_MEMBERSHIP,
5561 &ett_USER_SESSION_KEY,
5567 proto_dcerpc_netlogon = proto_register_protocol(
5568 "Microsoft Network Logon", "NETLOGON", "rpc_netlogon");
5570 proto_register_field_array(proto_dcerpc_netlogon, hf,
5572 proto_register_subtree_array(ett, array_length(ett));
5576 proto_reg_handoff_dcerpc_netlogon(void)
5578 /* Register protocol as dcerpc */
5580 dcerpc_init_uuid(proto_dcerpc_netlogon, ett_dcerpc_netlogon,
5581 &uuid_dcerpc_netlogon, ver_dcerpc_netlogon,
5582 dcerpc_netlogon_dissectors);