Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / packet-dcerpc-fileexp.c
blob59315c158ed02bdbbb5a3ac3a536b9dd0e40ae67
1 /* packet-dcerpc-fileexp.c
3 * Routines for DCE DFS File Exporter dissection
4 * Copyright 2002, Jaime Fournier <Jaime.Fournier@hush.com>
5 * This information is based off the released idl files from opengroup.
6 * ftp://ftp.opengroup.org/pub/dce122/dce/src/file.tar.gz file/fsint/afs4int.idl
8 * Wireshark - Network traffic analyzer
9 * By Gerald Combs <gerald@wireshark.org>
10 * Copyright 1998 Gerald Combs
12 * SPDX-License-Identifier: GPL-2.0-or-later
15 #include "config.h"
17 #include <epan/packet.h>
18 #include <epan/exceptions.h>
20 #include "packet-dcerpc.h"
21 #include "packet-dcerpc-dce122.h"
23 void proto_register_fileexp (void);
24 void proto_reg_handoff_fileexp (void);
26 #define AFS_SETMODTIME 0x001
27 #define AFS_SETOWNER 0x002
28 #define AFS_SETGROUP 0x004
29 #define AFS_SETMODE 0x008
30 #define AFS_SETACCESSTIME 0x010
31 #define AFS_SETCHANGETIME 0x020
32 #define AFS_SETLENGTH 0x040
33 #define AFS_SETTYPEUUID 0x080
34 #define AFS_SETDEVNUM 0x100
35 #define AFS_SETMODEXACT 0x200
36 #define AFS_SETTRUNCLENGTH 0x400
37 #define AFS_SETCLIENTSPARE 0x800
39 #define TKN_LOCK_READ 0x00001
40 #define TKN_LOCK_WRITE 0x00002
41 #define TKN_DATA_READ 0x00004
42 #define TKN_DATA_WRITE 0x00008
43 #define TKN_OPEN_READ 0x00010
44 #define TKN_OPEN_WRITE 0x00020
45 #define TKN_OPEN_SHARED 0x00040
46 #define TKN_OPEN_EXCLUSIVE 0x00080
47 #define TKN_OPEN_DELETE 0x00100
48 #define TKN_OPEN_PRESERVE 0x00200
49 #define TKN_STATUS_READ 0x00400
50 #define TKN_STATUS_WRITE 0x00800
51 #define TKN_OPEN_UNLINK 0x01000
52 #define TKN_SPOT_HERE 0x02000
53 #define TKN_SPOT_THERE 0x04000
54 #define TKN_OPEN_NO_READ 0x08000
55 #define TKN_OPEN_NO_WRITE 0x10000
56 #define TKN_OPEN_NO_UNLINK 0x20000
58 #define AFS_CONN_PARAM_HOSTLIFE 0
59 #define AFS_CONN_PARAM_HOSTRPC 1
60 #define AFS_CONN_PARAM_DEADSERVER 2
61 #define AFS_CONN_PARAM_EPOCH 3
62 #define AFS_CONN_PARAM_MAXFILE_CLIENT 4
63 #define AFS_CONN_PARAM_MAXFILE_SERVER 5
64 #define AFS_CONN_PARAM_HOST_TYPE_CLIENT 6
65 #define AFS_CONN_PARAM_HOST_TYPE_SERVER 7
66 #define AFS_CONN_PARAM_FT_MASK_CLIENT 8
67 #define AFS_CONN_PARAM_FT_MASK_SERVER 9
69 #define AFS_CONN_PARAM_SUPPORTS_64BITS 0x10000
70 #define AFS_CONN_PARAM_512BYTE_BLOCKS 0x20000
72 #define AFS_FLAG_SEC_SERVICE 0x01
73 #define AFS_FLAG_CONTEXT_NEW_IF 0x02
74 #define AFS_FLAG_CONTEXT_DO_RESET 0x04
75 #define AFS_FLAG_CONTEXT_NEW_ACL_IF 0x08
76 #define AFS_FLAG_CONTEXT_NEW_TKN_TYPES 0x10
78 #define AFS_FLAG_RETURNTOKEN 0x00001
79 #define AFS_FLAG_TOKENJUMPQUEUE 0x00002
80 #define AFS_FLAG_SKIPTOKEN 0x00004
81 #define AFS_FLAG_NOOPTIMISM 0x00008
82 #define AFS_FLAG_TOKENID 0x00010
83 #define AFS_FLAG_RETURNBLOCKER 0x00020
84 #define AFS_FLAG_ASYNCGRANT 0x00040
85 #define AFS_FLAG_NOREVOKE 0x00080
86 #define AFS_FLAG_MOVE_REESTABLISH 0x00100
87 #define AFS_FLAG_SERVER_REESTABLISH 0x00200
88 #define AFS_FLAG_NO_NEW_EPOCH 0x00400
89 #define AFS_FLAG_MOVE_SOURCE_OK 0x00800
90 #define AFS_FLAG_SYNC 0x01000
91 #define AFS_FLAG_ZERO 0x02000
92 #define AFS_FLAG_SKIPSTATUS 0x04000
93 #define AFS_FLAG_FORCEREVOCATIONS 0x08000
94 #define AFS_FLAG_FORCEVOLQUIESCE 0x10000
95 #define AFS_FLAG_FORCEREVOCATIONDOWN 0x20000
97 static int hf_fileexp_opnum;
100 static int hf_fileexp_afsFid_cell_high;
101 static int hf_fileexp_afsuuid_uuid;
102 static int hf_fileexp_fetchdata_pipe_t_size;
103 static int hf_fileexp_afsNameString_t_principalName_string;
104 static int hf_fileexp_afsFid_cell_low;
105 static int hf_fileexp_afsFid_volume_high;
106 static int hf_fileexp_afsFid_volume_low;
107 static int hf_fileexp_afsFid_Vnode;
108 static int hf_fileexp_afsFid_Unique;
109 static int hf_fileexp_interfaceversion;
110 static int hf_fileexp_filetype;
111 static int hf_fileexp_linkcount;
112 static int hf_fileexp_length_high;
113 static int hf_fileexp_length_low;
114 static int hf_fileexp_dataversion_high;
115 static int hf_fileexp_dataversion_low;
116 static int hf_fileexp_author;
117 static int hf_fileexp_owner;
118 static int hf_fileexp_group;
119 static int hf_fileexp_calleraccess;
120 static int hf_fileexp_anonymousaccess;
121 static int hf_fileexp_aclexpirationtime;
122 static int hf_fileexp_mode;
123 static int hf_fileexp_parentvnode;
124 static int hf_fileexp_parentunique;
125 static int hf_fileexp_modtime_sec;
126 static int hf_fileexp_modtime_msec;
127 static int hf_fileexp_changetime_sec;
128 static int hf_fileexp_changetime_msec;
129 static int hf_fileexp_accesstime_sec;
130 static int hf_fileexp_accesstime_msec;
131 static int hf_fileexp_servermodtime_sec;
132 static int hf_fileexp_servermodtime_msec;
133 static int hf_fileexp_typeuuid;
134 static int hf_fileexp_objectuuid;
135 static int hf_fileexp_devicenumber;
136 static int hf_fileexp_blocksused;
137 static int hf_fileexp_clientspare1;
138 static int hf_fileexp_devicenumberhighbits;
139 static int hf_fileexp_agtypeunique;
140 static int hf_fileexp_himaxspare;
141 static int hf_fileexp_lomaxspare;
142 static int hf_fileexp_pathconfspare;
143 static int hf_fileexp_spare4;
144 static int hf_fileexp_spare5;
145 static int hf_fileexp_spare6;
146 static int hf_fileexp_volid_hi;
147 static int hf_fileexp_volid_low;
148 static int hf_fileexp_vvage;
149 static int hf_fileexp_vv_hi;
150 static int hf_fileexp_vv_low;
151 static int hf_fileexp_vvpingage;
152 static int hf_fileexp_vvspare1;
153 static int hf_fileexp_vvspare2;
154 static int hf_fileexp_beginrange;
155 static int hf_fileexp_beginrangeext;
156 static int hf_fileexp_endrange;
157 static int hf_fileexp_endrangeext;
158 static int hf_fileexp_expirationtime;
159 static int hf_fileexp_tokenid_hi;
160 static int hf_fileexp_tokenid_low;
161 static int hf_fileexp_type_hi;
162 static int hf_fileexp_type_low;
163 static int hf_fileexp_tn_length;
164 static int hf_fileexp_storestatus_accesstime_sec;
165 static int hf_fileexp_storestatus_accesstime_usec;
166 static int hf_fileexp_storestatus_changetime_sec;
167 static int hf_fileexp_storestatus_changetime_usec;
168 static int hf_fileexp_storestatus_clientspare1;
169 static int hf_fileexp_storestatus_cmask;
170 static int hf_fileexp_storestatus_devicenumber;
171 static int hf_fileexp_storestatus_devicenumberhighbits;
172 static int hf_fileexp_storestatus_devicetype;
173 static int hf_fileexp_storestatus_group;
174 static int hf_fileexp_storestatus_length_high;
175 static int hf_fileexp_storestatus_length_low;
176 static int hf_fileexp_storestatus_mask;
177 static int hf_fileexp_storestatus_mode;
178 static int hf_fileexp_storestatus_modtime_sec;
179 static int hf_fileexp_storestatus_modtime_usec;
180 static int hf_fileexp_storestatus_owner;
181 static int hf_fileexp_storestatus_spare1;
182 static int hf_fileexp_storestatus_spare2;
183 static int hf_fileexp_storestatus_spare3;
184 static int hf_fileexp_storestatus_spare4;
185 static int hf_fileexp_storestatus_spare5;
186 static int hf_fileexp_storestatus_spare6;
187 static int hf_fileexp_storestatus_trunc_high;
188 static int hf_afsconnparams_mask;
189 static int hf_fileexp_storestatus_trunc_low;
190 static int hf_fileexp_storestatus_typeuuid;
191 static int hf_fileexp_l_end_pos;
192 static int hf_fileexp_l_end_pos_ext;
193 static int hf_fileexp_l_fstype;
194 static int hf_fileexp_l_pid;
195 static int hf_fileexp_l_start_pos;
196 static int hf_fileexp_l_start_pos_ext;
197 static int hf_fileexp_l_sysid;
198 static int hf_fileexp_l_type;
199 static int hf_fileexp_l_whence;
200 static int hf_fileexp_acl_len;
201 static int hf_fileexp_setcontext_rqst_epochtime;
202 static int hf_fileexp_setcontext_rqst_clientsizesattrs;
203 static int hf_fileexp_setcontext_rqst_parm7;
204 static int hf_fileexp_afsNetAddr_type;
205 static int hf_fileexp_afsNetAddr_data;
206 static int hf_fileexp_returntokenidp_high;
207 static int hf_fileexp_minvvp_low;
208 static int hf_fileexp_position_high;
209 static int hf_fileexp_position_low;
210 static int hf_fileexp_offsetp_high;
211 static int hf_fileexp_nextoffsetp_low;
212 static int hf_fileexp_cellidp_high;
213 static int hf_afserrorstatus_st;
214 static int hf_fileexp_length;
215 static int hf_afsconnparams_values;
216 static int hf_fileexp_acltype;
217 static int hf_fileexp_afsTaggedPath_tp_chars;
218 static int hf_fileexp_afsTaggedPath_tp_tag;
219 static int hf_fileexp_afsacl_uuid1;
220 static int hf_fileexp_bulkfetchstatus_size;
221 static int hf_fileexp_flags;
222 static int hf_fileexp_afsreturndesc_tokenid_high;
223 static int hf_fileexp_afsreturndesc_tokenid_low;
224 static int hf_fileexp_afsreturndesc_type_high;
225 static int hf_fileexp_afsreturndesc_type_low;
226 static int hf_fileexp_returntokenidp_low;
227 static int hf_fileexp_minvvp_high;
228 static int hf_fileexp_offsetp_low;
229 static int hf_fileexp_nextoffsetp_high;
230 static int hf_fileexp_cellidp_low;
231 static int hf_fileexp_tn_tag;
232 static int hf_fileexp_tn_string;
233 static int hf_fileexp_bulkfetchvv_numvols;
234 static int hf_fileexp_bulkfetchvv_spare1;
235 static int hf_fileexp_bulkfetchvv_spare2;
236 static int hf_fileexp_bulkkeepalive_numexecfids;
237 static int hf_fileexp_bulkkeepalive_spare4;
238 static int hf_fileexp_bulkkeepalive_spare2;
239 static int hf_fileexp_bulkkeepalive_spare1;
240 static int hf_fileexp_afsacl_defaultcell_uuid;
241 static int hf_fileexp_gettime_syncdispersion;
242 static int hf_fileexp_gettime_syncdistance;
243 static int hf_fileexp_gettime_usecondsp;
244 static int hf_fileexp_readdir_size;
245 static int hf_fileexp_afsNameString_t_principalName_size;
246 static int hf_fileexp_afsTaggedPath_tp_length;
247 static int hf_fileexp_fstype;
248 static int hf_fileexp_gettime_secondsp;
250 static int proto_fileexp;
252 static int ett_fileexp;
253 static int ett_fileexp_afsFid;
254 static int ett_fileexp_afsReturnDesc;
255 static int ett_fileexp_afsNetAddr;
256 static int ett_fileexp_fetchstatus;
257 static int ett_fileexp_afsflags;
258 static int ett_fileexp_volsync;
259 static int ett_fileexp_minvvp;
260 static int ett_fileexp_afsfidtaggedname;
261 static int ett_fileexp_afstaggedname;
262 static int ett_fileexp_afstoken;
263 static int ett_fileexp_afsstorestatus;
264 static int ett_fileexp_afsRecordLock;
265 static int ett_fileexp_afsAcl;
266 static int ett_fileexp_afsNameString_t;
267 static int ett_fileexp_afsConnParams;
268 static int ett_fileexp_afsErrorStatus;
269 static int ett_fileexp_afsNetData;
270 static int ett_fileexp_afsTaggedPath;
271 static int ett_fileexp_afsBulkStat;
272 static int ett_fileexp_afsuuid;
273 static int ett_fileexp_offsetp;
274 static int ett_fileexp_returntokenidp;
275 static int ett_fileexp_afsbundled_stat;
278 /* vars for our macro(s) */
279 static int hf_error_st;
281 static e_guid_t uuid_fileexp =
282 { 0x4d37f2dd, 0xed93, 0x0000, {0x02, 0xc0, 0x37, 0xcf, 0x1e, 0x00, 0x00, 0x00}
284 static uint16_t ver_fileexp = 4;
286 /* XXX the only macro that I could not find the right way to convert easily.
287 The reason is because we reset col_info if st is non zero for many rpcs.
288 This is because on error, many structures are filled with garbage.
289 We end up not knowing if data is valid until we get the st var at the very end of the stubdata..
290 We can not just jump to the end, because more often than not an extra buffer exists in payload
291 after st. Thus we have to advance on each item until we read in ST, then we clear col_info. on error
292 A good example is FetchStatus() on a file that returns ENOEXIST.
293 inode, volume, etc all will be garbage.
296 #define MACRO_ST_CLEAR(name) \
298 uint32_t st; \
299 const char *st_str; \
300 offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_error_st, &st); \
301 st_str = val_to_str_ext (st, &dce_error_vals_ext, "%u"); \
302 if (st) { \
303 col_add_fstr (pinfo->cinfo, COL_INFO, "%s st:%s ", name, st_str); \
304 } else { \
305 col_append_fstr (pinfo->cinfo, COL_INFO, " st:%s ", st_str); \
309 static int
310 dissect_afsFid (tvbuff_t *tvb, int offset,
311 packet_info *pinfo, proto_tree *parent_tree,
312 dcerpc_info *di, uint8_t *drep)
315 afsHyper Cell;
316 afsHyper Volume;
317 unsigned32 Vnode;
318 unsigned32 Unique;
321 proto_item *item = NULL;
322 proto_tree *tree = NULL;
323 int old_offset = offset;
324 uint32_t volume_low, unique, vnode, inode;
326 if (di->conformant_run)
328 return offset;
331 if (parent_tree)
333 tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_afsFid, &item, "afsFid:");
336 offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
337 hf_fileexp_afsFid_cell_high, NULL);
339 offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
340 hf_fileexp_afsFid_cell_low, NULL);
342 offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
343 hf_fileexp_afsFid_volume_high, NULL);
345 offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
346 hf_fileexp_afsFid_volume_low, &volume_low);
348 offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
349 hf_fileexp_afsFid_Vnode, &vnode);
351 offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
352 hf_fileexp_afsFid_Unique, &unique);
354 col_append_fstr (pinfo->cinfo, COL_INFO, " :FSID:%u ", volume_low);
356 if ((vnode == 1) || (vnode == 2))
358 col_append_str (pinfo->cinfo, COL_INFO, " InFS ");
360 else
362 inode = ((volume_low << 16) + vnode) & 0x7fffffff;
363 col_append_fstr (pinfo->cinfo, COL_INFO, " inode:%u ", inode);
366 proto_item_set_len (item, offset - old_offset);
367 return offset;
370 static int
371 dissect_afsConnParams (tvbuff_t *tvb, int offset,
372 packet_info *pinfo, proto_tree *parent_tree,
373 dcerpc_info *di, uint8_t *drep)
376 unsigned32 Mask;
377 unsigned32 Values[20];
380 proto_item *item = NULL;
381 proto_tree *tree = NULL;
382 int old_offset = offset;
383 uint32_t mask, Values[20];
385 if (di->conformant_run)
387 return offset;
390 if (parent_tree)
392 tree =
393 proto_tree_add_subtree (parent_tree, tvb, offset, -1,
394 ett_fileexp_afsConnParams, &item, "afsConnParams_t:");
396 offset =
397 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
398 hf_afsconnparams_mask, &mask);
399 offset =
400 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
401 hf_afsconnparams_values, &Values[0]);
402 offset =
403 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
404 hf_afsconnparams_values, &Values[1]);
405 offset =
406 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
407 hf_afsconnparams_values, &Values[2]);
408 offset =
409 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
410 hf_afsconnparams_values, &Values[3]);
411 offset =
412 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
413 hf_afsconnparams_values, &Values[4]);
414 offset =
415 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
416 hf_afsconnparams_values, &Values[5]);
417 offset =
418 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
419 hf_afsconnparams_values, &Values[6]);
420 offset =
421 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
422 hf_afsconnparams_values, &Values[7]);
423 offset =
424 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
425 hf_afsconnparams_values, &Values[8]);
426 offset =
427 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
428 hf_afsconnparams_values, &Values[9]);
429 offset =
430 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
431 hf_afsconnparams_values, &Values[10]);
432 offset =
433 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
434 hf_afsconnparams_values, &Values[11]);
435 offset =
436 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
437 hf_afsconnparams_values, &Values[12]);
438 offset =
439 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
440 hf_afsconnparams_values, &Values[13]);
441 offset =
442 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
443 hf_afsconnparams_values, &Values[14]);
444 offset =
445 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
446 hf_afsconnparams_values, &Values[15]);
447 offset =
448 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
449 hf_afsconnparams_values, &Values[16]);
450 offset =
451 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
452 hf_afsconnparams_values, &Values[17]);
453 offset =
454 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
455 hf_afsconnparams_values, &Values[18]);
456 offset =
457 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
458 hf_afsconnparams_values, &Values[19]);
459 if ((mask & AFS_CONN_PARAM_HOSTLIFE) == AFS_CONN_PARAM_HOSTLIFE)
461 col_append_str (pinfo->cinfo, COL_INFO, ":HOSTLIFE");
463 if ((mask & AFS_CONN_PARAM_HOSTRPC) == AFS_CONN_PARAM_HOSTRPC)
465 col_append_str (pinfo->cinfo, COL_INFO, ":HOSTRPC");
467 if ((mask & AFS_CONN_PARAM_DEADSERVER) == AFS_CONN_PARAM_DEADSERVER)
469 col_append_str (pinfo->cinfo, COL_INFO, ":DEADSERVER");
471 if ((mask & AFS_CONN_PARAM_EPOCH) == AFS_CONN_PARAM_EPOCH)
473 col_append_str (pinfo->cinfo, COL_INFO, ":EPOCH");
475 if ((mask & AFS_CONN_PARAM_MAXFILE_CLIENT) == AFS_CONN_PARAM_MAXFILE_CLIENT)
477 col_append_str (pinfo->cinfo, COL_INFO, ":MAXFILE_CLIENT");
479 if ((mask & AFS_CONN_PARAM_MAXFILE_SERVER) == AFS_CONN_PARAM_MAXFILE_SERVER)
481 col_append_str (pinfo->cinfo, COL_INFO, ":MAXFILE_SERVER");
483 if ((mask & AFS_CONN_PARAM_HOST_TYPE_CLIENT) ==
484 AFS_CONN_PARAM_HOST_TYPE_CLIENT)
486 col_append_str (pinfo->cinfo, COL_INFO, ":HOST_TYPE_CLIENT");
488 if ((mask & AFS_CONN_PARAM_HOST_TYPE_SERVER) ==
489 AFS_CONN_PARAM_HOST_TYPE_SERVER)
491 col_append_str (pinfo->cinfo, COL_INFO, ":HOST_TYPE_SERVER");
493 if ((mask & AFS_CONN_PARAM_FT_MASK_CLIENT) == AFS_CONN_PARAM_FT_MASK_CLIENT)
495 col_append_str (pinfo->cinfo, COL_INFO, ":FT_MASK_CLIENT");
497 if ((mask & AFS_CONN_PARAM_FT_MASK_SERVER) == AFS_CONN_PARAM_FT_MASK_SERVER)
499 col_append_str (pinfo->cinfo, COL_INFO, ":FT_MASK_SERVER");
501 if ((mask & AFS_CONN_PARAM_SUPPORTS_64BITS) ==
502 AFS_CONN_PARAM_SUPPORTS_64BITS)
504 col_append_str (pinfo->cinfo, COL_INFO, ":SUPPORTS_64BITS");
506 if ((mask & AFS_CONN_PARAM_512BYTE_BLOCKS) == AFS_CONN_PARAM_512BYTE_BLOCKS)
508 col_append_str (pinfo->cinfo, COL_INFO, ":512BYTE_BLOCKS");
510 col_append_fstr (pinfo->cinfo, COL_INFO,
511 " Values:%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u",
512 Values[0], Values[1], Values[2], Values[3],
513 Values[4], Values[5], Values[6], Values[7], Values[8],
514 Values[9], Values[10], Values[11], Values[12],
515 Values[13], Values[14], Values[15], Values[16],
516 Values[17], Values[18], Values[19]);
518 proto_item_set_len (item, offset - old_offset);
519 return offset;
522 static int
523 dissect_afsNameString_t (tvbuff_t *tvb, int offset,
524 packet_info *pinfo, proto_tree *parent_tree,
525 dcerpc_info *di, uint8_t *drep)
528 typedef [string] byte NameString_t[AFS_NAMEMAX];
531 proto_item *item = NULL;
532 proto_tree *tree = NULL;
533 int old_offset = offset;
534 #define AFS_NAMEMAX 256
535 uint32_t string_size;
536 const uint8_t *namestring;
538 if (di->conformant_run)
540 return offset;
543 if (parent_tree)
545 tree =
546 proto_tree_add_subtree (parent_tree, tvb, offset, -1,
547 ett_fileexp_afsNameString_t, &item, "afsNameString_t:");
550 offset =
551 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
552 hf_fileexp_afsNameString_t_principalName_size,
553 &string_size);
554 col_append_fstr (pinfo->cinfo, COL_INFO, " String_size:%u", string_size);
555 if (string_size < AFS_NAMEMAX)
557 proto_tree_add_item_ret_string(tree, hf_fileexp_afsNameString_t_principalName_string, tvb, offset, string_size, ENC_ASCII|ENC_NA, pinfo->pool, &namestring);
558 offset += string_size;
559 col_append_fstr (pinfo->cinfo, COL_INFO, " Principal:%s", namestring);
561 else
563 col_append_fstr (pinfo->cinfo, COL_INFO,
564 " :FIXME!: Invalid string length of %u",
565 string_size);
568 proto_item_set_len (item, offset - old_offset);
569 return offset;
573 static int
574 dissect_afsNetAddr (tvbuff_t *tvb, int offset,
575 packet_info *pinfo, proto_tree *parent_tree,
576 dcerpc_info *di, uint8_t *drep)
578 /* unsigned16 type;
579 unsigned8 data[14];
582 proto_item *item = NULL;
583 proto_tree *tree = NULL;
584 int old_offset = offset;
585 uint16_t type;
586 uint8_t data;
587 int i;
589 if (di->conformant_run)
591 return offset;
594 if (parent_tree)
596 tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
597 ett_fileexp_afsNetAddr, &item, "afsNetAddr:");
600 offset =
601 dissect_ndr_uint16 (tvb, offset, pinfo, tree, di, drep,
602 hf_fileexp_afsNetAddr_type, &type);
604 if (type)
606 col_append_fstr (pinfo->cinfo, COL_INFO, " Type:%u ", type);
609 for (i = 0; i < 14; i++)
612 offset =
613 dissect_ndr_uint8 (tvb, offset, pinfo, tree, di, drep,
614 hf_fileexp_afsNetAddr_data, &data);
617 switch (i)
619 case 1:
620 if (data)
622 col_append_fstr (pinfo->cinfo, COL_INFO, " Port:%u",
623 data);
625 break;
626 case 2:
627 col_append_fstr (pinfo->cinfo, COL_INFO, " IP:%u.", data);
628 break;
629 case 3:
630 col_append_fstr (pinfo->cinfo, COL_INFO, "%u.", data);
631 break;
632 case 4:
633 col_append_fstr (pinfo->cinfo, COL_INFO, "%u.", data);
634 break;
635 case 5:
636 col_append_fstr (pinfo->cinfo, COL_INFO, "%u", data);
637 break;
643 else
646 offset += 14; /* space left after reading in type for the array. */
650 proto_item_set_len (item, offset - old_offset);
651 return offset;
655 static int
656 dissect_afsNetData (tvbuff_t *tvb, int offset,
657 packet_info *pinfo, proto_tree *parent_tree,
658 dcerpc_info *di, uint8_t *drep)
661 afsNetAddr sockAddr;
662 NameString_t principalName;
664 proto_item *item = NULL;
665 proto_tree *tree = NULL;
666 int old_offset = offset;
668 if (di->conformant_run)
670 return offset;
673 if (parent_tree)
675 tree =
676 proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_afsNetData, &item, "afsNetData:");
679 offset = dissect_afsNetAddr ( tvb, offset, pinfo, tree, di, drep);
680 offset += 4; /* buffer */
681 offset = dissect_afsNameString_t ( tvb, offset, pinfo, tree, di, drep);
683 proto_item_set_len (item, offset - old_offset);
684 return offset;
688 static int
689 dissect_afsTaggedPath (tvbuff_t *tvb, int offset,
690 packet_info *pinfo, proto_tree *parent_tree,
691 dcerpc_info *di, uint8_t *drep)
694 codesetTag tp_tag;
695 unsigned16 tp_length;
696 byte tp_chars[AFS_PATHMAX+1]; 1024+1
699 proto_item *item = NULL;
700 proto_tree *tree = NULL;
701 int old_offset = offset;
702 uint32_t tp_tag;
703 uint16_t tp_length;
704 const uint8_t *tp_chars;
706 if (di->conformant_run)
708 return offset;
711 if (parent_tree)
713 tree =
714 proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_afsTaggedPath, &item, "afsTaggedPath");
717 offset =
718 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
719 hf_fileexp_afsTaggedPath_tp_tag, &tp_tag);
720 offset =
721 dissect_ndr_uint16 (tvb, offset, pinfo, tree, di, drep,
722 hf_fileexp_afsTaggedPath_tp_length, &tp_length);
723 proto_tree_add_item (tree, hf_fileexp_afsTaggedPath_tp_chars, tvb, offset,
724 tp_length, ENC_ASCII);
725 tp_chars = tvb_get_string_enc (pinfo->pool, tvb, offset, 1025, ENC_ASCII);
726 offset += 1025;
727 col_append_fstr (pinfo->cinfo, COL_INFO, " :tp_chars %s", tp_chars);
729 proto_item_set_len (item, offset - old_offset);
730 return offset;
733 static int
734 dissect_afsAcl (tvbuff_t *tvb, int offset,
735 packet_info *pinfo, proto_tree *parent_tree,
736 dcerpc_info *di, uint8_t *drep)
739 unsigned32 afsACL_len;
740 [length_is(afsACL_len)] byte afsACL_val[AFS_ACLMAX];
743 proto_item *item = NULL;
744 proto_tree *tree;
745 int old_offset = offset;
746 uint32_t acl_len;
747 e_guid_t uuid1, defaultcell;
749 if (di->conformant_run)
751 return offset;
754 tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_afsAcl, &item, "afsAcl");
756 offset =
757 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_acl_len,
758 &acl_len);
759 offset += 8; /* bypass spare and duplicate acl_len */
760 offset =
761 dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep,
762 hf_fileexp_afsacl_uuid1, &uuid1);
763 col_append_fstr (pinfo->cinfo, COL_INFO,
764 " - %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
765 uuid1.data1, uuid1.data2, uuid1.data3, uuid1.data4[0],
766 uuid1.data4[1], uuid1.data4[2], uuid1.data4[3],
767 uuid1.data4[4], uuid1.data4[5], uuid1.data4[6],
768 uuid1.data4[7]);
770 offset =
771 dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep,
772 hf_fileexp_afsacl_defaultcell_uuid, &defaultcell);
773 col_append_fstr (pinfo->cinfo, COL_INFO,
774 " %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
775 defaultcell.data1, defaultcell.data2, defaultcell.data3,
776 defaultcell.data4[0], defaultcell.data4[1],
777 defaultcell.data4[2], defaultcell.data4[3],
778 defaultcell.data4[4], defaultcell.data4[5],
779 defaultcell.data4[6], defaultcell.data4[7]);
781 if (acl_len < 38)
783 /* XXX - exception */
784 return offset;
787 offset += (acl_len - 38);
789 proto_item_set_len (item, offset-old_offset);
790 return offset;
794 static int
795 dissect_afsErrorStatus (tvbuff_t *tvb, int offset,
796 packet_info *pinfo, proto_tree *parent_tree,
797 dcerpc_info *di, uint8_t *drep)
799 proto_item *item = NULL;
800 proto_tree *tree = NULL;
801 int old_offset = offset;
802 uint32_t st;
803 const char *st_str;
805 if (di->conformant_run)
807 return offset;
810 if (parent_tree)
812 tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
813 ett_fileexp_afsErrorStatus, &item, "afsErrorStatus");
816 offset =
817 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_afserrorstatus_st,
818 &st);
819 st_str = val_to_str_ext (st, &dce_error_vals_ext, "%u");
821 col_append_fstr (pinfo->cinfo, COL_INFO, " st:%s ", st_str);
823 proto_item_set_len (item, offset - old_offset);
824 return offset;
827 static int
828 dissect_afsRecordLock (tvbuff_t *tvb, int offset,
829 packet_info *pinfo, proto_tree *parent_tree,
830 dcerpc_info *di, uint8_t *drep)
833 signed16 l_type;
834 signed16 l_whence;
835 unsigned32 l_start_pos;
836 unsigned32 l_end_pos;
837 unsigned32 l_pid;
838 unsigned32 l_sysid;
839 unsigned32 l_fstype;
840 unsigned32 l_start_pos_ext; was l_spare0: high 32b of l_start_pos
841 unsigned32 l_end_pos_ext; was l_spare1: high 32b of l_end_pos
844 proto_item *item = NULL;
845 proto_tree *tree = NULL;
846 int old_offset = offset;
847 uint16_t l_type, l_whence;
848 uint32_t l_start_pos, l_end_pos, l_pid, l_sysid, l_fstype;
849 uint32_t l_start_pos_ext, l_end_pos_ext;
851 if (di->conformant_run)
853 return offset;
856 if (parent_tree)
858 tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
859 ett_fileexp_afsRecordLock, &item, "afsRecordLock:");
862 offset =
863 dissect_ndr_uint16 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_l_type,
864 &l_type);
865 offset =
866 dissect_ndr_uint16 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_l_whence,
867 &l_whence);
868 offset =
869 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
870 hf_fileexp_l_start_pos, &l_start_pos);
871 offset =
872 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_l_end_pos,
873 &l_end_pos);
874 offset =
875 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_l_pid,
876 &l_pid);
877 offset =
878 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_l_sysid,
879 &l_sysid);
880 offset =
881 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_l_fstype,
882 &l_fstype);
883 offset =
884 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
885 hf_fileexp_l_start_pos_ext, &l_start_pos_ext);
886 offset =
887 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
888 hf_fileexp_l_end_pos_ext, &l_end_pos_ext);
890 proto_item_set_len (item, offset - old_offset);
891 return offset;
894 static int
895 dissect_afsstorestatus (tvbuff_t *tvb, int offset,
896 packet_info *pinfo, proto_tree *parent_tree,
897 dcerpc_info *di, uint8_t *drep)
900 unsigned32 mask;
901 afsTimeval modTime;
902 afsTimeval accessTime;
903 afsTimeval changeTime;
904 unsigned32 owner;
905 unsigned32 group;
906 unsigned32 mode;
907 afsHyper truncLength; applied first
908 afsHyper length;
909 afsUUID typeUUID;
910 unsigned32 deviceType; character or block
911 unsigned32 deviceNumber;
912 unsigned32 cmask;
913 unsigned32 clientSpare1; client-only attrs
914 unsigned32 deviceNumberHighBits;
915 unsigned32 spare1;
916 unsigned32 spare2;
917 unsigned32 spare3;
918 unsigned32 spare4;
919 unsigned32 spare5;
920 unsigned32 spare6;
923 proto_item *item = NULL;
924 proto_tree *tree = NULL;
925 int old_offset = offset;
926 uint32_t mask, modtime_sec, changetime_sec, accesstime_sec, devicenumber;
927 uint32_t clientspare1, devicenumberhighbits, spare1, spare2, spare3, spare4;
928 uint32_t spare5, spare6, accesstime_usec, changetime_usec, owner, group, mode;
929 uint32_t trunc_high, trunc_low, length_high, length_low, devicetype;
930 uint32_t cmask, modtime_usec;
931 e_guid_t typeuuid;
933 if (di->conformant_run)
935 return offset;
938 if (parent_tree)
940 tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
941 ett_fileexp_afsstorestatus, &item, "afsStoreStatus:");
944 offset =
945 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
946 hf_fileexp_storestatus_mask, &mask);
947 offset =
948 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
949 hf_fileexp_storestatus_modtime_sec, &modtime_sec);
950 offset =
951 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
952 hf_fileexp_storestatus_modtime_usec, &modtime_usec);
953 offset =
954 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
955 hf_fileexp_storestatus_accesstime_sec,
956 &accesstime_sec);
957 offset =
958 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
959 hf_fileexp_storestatus_accesstime_usec,
960 &accesstime_usec);
961 offset =
962 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
963 hf_fileexp_storestatus_changetime_sec,
964 &changetime_sec);
965 offset =
966 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
967 hf_fileexp_storestatus_changetime_usec,
968 &changetime_usec);
969 offset =
970 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
971 hf_fileexp_storestatus_owner, &owner);
972 offset =
973 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
974 hf_fileexp_storestatus_group, &group);
975 offset =
976 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
977 hf_fileexp_storestatus_mode, &mode);
978 offset =
979 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
980 hf_fileexp_storestatus_trunc_high, &trunc_high);
981 offset =
982 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
983 hf_fileexp_storestatus_trunc_low, &trunc_low);
984 offset =
985 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
986 hf_fileexp_storestatus_length_high, &length_high);
987 offset =
988 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
989 hf_fileexp_storestatus_length_low, &length_low);
990 offset =
991 dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep,
992 hf_fileexp_storestatus_typeuuid, &typeuuid);
993 offset =
994 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
995 hf_fileexp_storestatus_devicetype, &devicetype);
996 offset =
997 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
998 hf_fileexp_storestatus_devicenumber, &devicenumber);
999 offset =
1000 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1001 hf_fileexp_storestatus_cmask, &cmask);
1002 offset =
1003 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1004 hf_fileexp_storestatus_clientspare1, &clientspare1);
1005 offset =
1006 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1007 hf_fileexp_storestatus_devicenumberhighbits,
1008 &devicenumberhighbits);
1009 offset =
1010 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1011 hf_fileexp_storestatus_spare1, &spare1);
1012 offset =
1013 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1014 hf_fileexp_storestatus_spare2, &spare2);
1015 offset =
1016 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1017 hf_fileexp_storestatus_spare3, &spare3);
1018 offset =
1019 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1020 hf_fileexp_storestatus_spare4, &spare4);
1021 offset =
1022 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1023 hf_fileexp_storestatus_spare5, &spare5);
1024 offset =
1025 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1026 hf_fileexp_storestatus_spare6, &spare6);
1028 col_append_str (pinfo->cinfo, COL_INFO, " Mask=");
1029 if ((mask & AFS_SETMODTIME) == AFS_SETMODTIME)
1031 col_append_fstr (pinfo->cinfo, COL_INFO, ":SETMODTIME-%u.%u",
1032 modtime_sec, modtime_usec);
1034 if ((mask & AFS_SETOWNER) == AFS_SETOWNER)
1036 col_append_fstr (pinfo->cinfo, COL_INFO, ":SETOWNER-%u", owner);
1038 if ((mask & AFS_SETGROUP) == AFS_SETGROUP)
1040 col_append_fstr (pinfo->cinfo, COL_INFO, ":SETGROUP-%u", group);
1042 if ((mask & AFS_SETMODE) == AFS_SETMODE)
1044 col_append_fstr (pinfo->cinfo, COL_INFO, ":SETMODE-%o", mode);
1046 if ((mask & AFS_SETACCESSTIME) == AFS_SETACCESSTIME)
1048 col_append_fstr (pinfo->cinfo, COL_INFO, ":SETACCESSTIME-%u.%u",
1049 accesstime_sec, accesstime_usec);
1051 if ((mask & AFS_SETCHANGETIME) == AFS_SETCHANGETIME)
1053 col_append_fstr (pinfo->cinfo, COL_INFO, ":SETCHANGETIME-%u.%u",
1054 changetime_sec, changetime_usec);
1056 if ((mask & AFS_SETLENGTH) == AFS_SETLENGTH)
1058 col_append_str (pinfo->cinfo, COL_INFO, ":SETLENGTH");
1060 if ((mask & AFS_SETTYPEUUID) == AFS_SETTYPEUUID)
1062 col_append_str (pinfo->cinfo, COL_INFO, ":SETTYPEUUID");
1064 if ((mask & AFS_SETDEVNUM) == AFS_SETDEVNUM)
1066 col_append_str (pinfo->cinfo, COL_INFO, ":SETDEVNUM");
1068 if ((mask & AFS_SETMODEXACT) == AFS_SETMODEXACT)
1070 col_append_str (pinfo->cinfo, COL_INFO, ":SETMODEXACT");
1072 if ((mask & AFS_SETTRUNCLENGTH) == AFS_SETTRUNCLENGTH)
1074 col_append_str (pinfo->cinfo, COL_INFO, ":SETTRUNCLENGTH");
1076 if ((mask & AFS_SETCLIENTSPARE) == AFS_SETCLIENTSPARE)
1078 col_append_str (pinfo->cinfo, COL_INFO, ":SETCLIENTSPARE");
1081 proto_item_set_len (item, offset - old_offset);
1082 return offset;
1085 static int
1086 dissect_afstoken (tvbuff_t *tvb, int offset,
1087 packet_info *pinfo, proto_tree *parent_tree,
1088 dcerpc_info *di, uint8_t *drep)
1091 afsHyper tokenID;
1092 unsigned32 expirationTime;
1093 afsHyper type;
1094 unsigned32 beginRange;
1095 unsigned32 endRange;
1096 unsigned32 beginRangeExt;
1097 unsigned32 endRangeExt;
1100 proto_item *item = NULL;
1101 proto_tree *tree = NULL;
1102 int old_offset = offset;
1103 uint32_t tokenid_hi, tokenid_low, expirationtime, type_hi, type_low;
1104 uint32_t beginrange, endrange, beginrangeext, endrangeext, type;
1106 if (di->conformant_run)
1108 return offset;
1111 if (parent_tree)
1113 tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_afstoken, &item, "afsToken:");
1116 offset =
1117 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_tokenid_hi,
1118 &tokenid_hi);
1119 offset =
1120 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1121 hf_fileexp_tokenid_low, &tokenid_low);
1122 offset =
1123 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1124 hf_fileexp_expirationtime, &expirationtime);
1125 offset =
1126 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_type_hi,
1127 &type_hi);
1128 offset =
1129 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_type_low,
1130 &type_low);
1131 offset =
1132 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_beginrange,
1133 &beginrange);
1134 offset =
1135 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_endrange,
1136 &endrange);
1137 offset =
1138 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1139 hf_fileexp_beginrangeext, &beginrangeext);
1140 offset =
1141 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1142 hf_fileexp_endrangeext, &endrangeext);
1143 col_append_fstr (pinfo->cinfo, COL_INFO,
1144 " :Tokenid:%u/%u ExpirationTime:%u beginrange:%u endrange:%u beginrangeext:%u endrangeext:%u",
1145 tokenid_hi, tokenid_low, expirationtime, beginrange,
1146 endrange, beginrangeext, endrangeext);
1147 type = type_low;
1149 col_append_str (pinfo->cinfo, COL_INFO, " Type=");
1151 if ((type & TKN_LOCK_READ) == TKN_LOCK_READ)
1153 col_append_str (pinfo->cinfo, COL_INFO, ":LOCK_READ");
1155 if ((type & TKN_LOCK_WRITE) == TKN_LOCK_WRITE)
1157 col_append_str (pinfo->cinfo, COL_INFO, ":LOCK_WRITE");
1159 if ((type & TKN_DATA_READ) == TKN_DATA_READ)
1161 col_append_str (pinfo->cinfo, COL_INFO, ":DATA_READ");
1163 if ((type & TKN_DATA_WRITE) == TKN_DATA_WRITE)
1165 col_append_str (pinfo->cinfo, COL_INFO, ":DATA_WRITE");
1167 if ((type & TKN_OPEN_READ) == TKN_OPEN_READ)
1169 col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_READ");
1171 if ((type & TKN_OPEN_WRITE) == TKN_OPEN_WRITE)
1173 col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_WRITE");
1175 if ((type & TKN_OPEN_SHARED) == TKN_OPEN_SHARED)
1177 col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_SHARED");
1179 if ((type & TKN_OPEN_EXCLUSIVE) == TKN_OPEN_EXCLUSIVE)
1181 col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_EXCLUSIVE");
1183 if ((type & TKN_OPEN_DELETE) == TKN_OPEN_DELETE)
1185 col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_DELETE");
1187 if ((type & TKN_OPEN_PRESERVE) == TKN_OPEN_PRESERVE)
1189 col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_PRESERVE");
1191 if ((type & TKN_STATUS_READ) == TKN_STATUS_READ)
1193 col_append_str (pinfo->cinfo, COL_INFO, ":STATUS_READ");
1195 if ((type & TKN_STATUS_WRITE) == TKN_STATUS_WRITE)
1197 col_append_str (pinfo->cinfo, COL_INFO, ":STATUS_WRITE");
1199 if ((type & TKN_OPEN_UNLINK) == TKN_OPEN_UNLINK)
1201 col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_UNLINK");
1203 if ((type & TKN_SPOT_HERE) == TKN_SPOT_HERE)
1205 col_append_str (pinfo->cinfo, COL_INFO, ":SPOT_HERE");
1207 if ((type & TKN_SPOT_THERE) == TKN_SPOT_THERE)
1209 col_append_str (pinfo->cinfo, COL_INFO, ":SPOT_THERE");
1211 if ((type & TKN_OPEN_NO_READ) == TKN_OPEN_NO_READ)
1213 col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_NO_READ");
1215 if ((type & TKN_OPEN_NO_WRITE) == TKN_OPEN_NO_WRITE)
1217 col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_NO_WRITE");
1219 if ((type & TKN_OPEN_NO_UNLINK) == TKN_OPEN_NO_UNLINK)
1221 col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_NO_UNLINK");
1224 proto_item_set_len (item, offset - old_offset);
1225 return offset;
1228 static int
1229 dissect_afstaggedname (tvbuff_t *tvb, int offset,
1230 packet_info *pinfo, proto_tree *parent_tree,
1231 dcerpc_info *di, uint8_t *drep)
1234 codesetTag tn_tag;
1235 unsigned16 tn_length;
1236 byte tn_chars[AFS_NAMEMAX+1];
1239 proto_item *item = NULL;
1240 proto_tree *tree = NULL;
1241 int old_offset = offset;
1242 uint32_t tn_tag;
1243 uint16_t tn_length;
1244 const uint8_t *tn_string;
1246 if (di->conformant_run)
1248 return offset;
1251 if (parent_tree)
1253 tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
1254 ett_fileexp_afstaggedname, &item, "afsTaggedName:");
1257 offset =
1258 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_tn_tag,
1259 &tn_tag);
1260 offset =
1261 dissect_ndr_uint16 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_tn_length,
1262 &tn_length);
1263 if (tn_length < 254)
1265 proto_tree_add_item (tree, hf_fileexp_tn_string, tvb, offset,
1266 tn_length, ENC_ASCII);
1267 tn_string = tvb_get_string_enc (pinfo->pool, tvb, offset, 257, ENC_ASCII);
1268 offset += 257;
1269 col_append_fstr (pinfo->cinfo, COL_INFO, " :tn_tag: %s", tn_string);
1271 else
1273 col_append_fstr (pinfo->cinfo, COL_INFO,
1274 " :FIXME!: Invalid string length of %u", tn_length);
1277 proto_item_set_len (item, offset - old_offset);
1278 return offset;
1281 static int
1282 dissect_afsfidtaggedname (tvbuff_t *tvb, int offset,
1283 packet_info *pinfo, proto_tree *parent_tree,
1284 dcerpc_info *di, uint8_t *drep)
1287 afsFid fid;
1288 afsTaggedName name;
1291 proto_item *item = NULL;
1292 proto_tree *tree = NULL;
1293 int old_offset = offset;
1295 if (di->conformant_run)
1297 return offset;
1300 if (parent_tree)
1302 tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
1303 ett_fileexp_afsfidtaggedname, &item, "FidTaggedName:");
1305 offset = dissect_afsFid (tvb, offset, pinfo, tree, di, drep);
1306 offset = dissect_afstaggedname (tvb, offset, pinfo, tree, di, drep);
1308 proto_item_set_len (item, offset - old_offset);
1309 return offset;
1313 static int
1314 dissect_minvvp (tvbuff_t *tvb, int offset,
1315 packet_info *pinfo, proto_tree *parent_tree,
1316 dcerpc_info *di, uint8_t *drep)
1318 /* unsigned32 minvvp_high
1319 unsigned32 minvvp_low
1322 proto_item *item = NULL;
1323 proto_tree *tree = NULL;
1324 int old_offset = offset;
1325 uint32_t minvvp_high, minvvp_low;
1327 if (di->conformant_run)
1329 return offset;
1332 if (parent_tree)
1334 tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_minvvp, &item, "minVVp:");
1336 offset =
1337 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1338 hf_fileexp_minvvp_high, &minvvp_high);
1339 offset =
1340 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_minvvp_low,
1341 &minvvp_low);
1343 col_append_fstr (pinfo->cinfo, COL_INFO, " minVVp:%u/%u", minvvp_high,
1344 minvvp_low);
1347 proto_item_set_len (item, offset - old_offset);
1348 return offset;
1352 static int
1353 dissect_afsuuid (tvbuff_t *tvb, int offset,
1354 packet_info *pinfo, proto_tree *parent_tree,
1355 dcerpc_info *di, uint8_t *drep)
1357 /* uuid UUID
1359 /*HEREN*/
1361 e_guid_t uuid1;
1363 proto_item *item = NULL;
1364 proto_tree *tree = NULL;
1365 int old_offset = offset;
1367 if (di->conformant_run)
1369 return offset;
1372 if (parent_tree)
1374 tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_afsuuid, &item, "afsUUID:");
1377 offset = dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep, hf_fileexp_afsuuid_uuid, &uuid1);
1379 col_append_fstr (pinfo->cinfo, COL_INFO, ":%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", uuid1.data1, uuid1.data2, uuid1.data3, uuid1.data4[0], uuid1.data4[1], uuid1.data4[2], uuid1.data4[3], uuid1.data4[4], uuid1.data4[5], uuid1.data4[6], uuid1.data4[7]);
1381 proto_item_set_len (item, offset - old_offset);
1382 return offset;
1386 static int
1387 dissect_offsetp (tvbuff_t *tvb, int offset,
1388 packet_info *pinfo, proto_tree *parent_tree,
1389 dcerpc_info *di, uint8_t *drep)
1391 /* unsigned32 offsetp_high
1392 unsigned32 offsetp_low
1395 proto_item *item = NULL;
1396 proto_tree *tree = NULL;
1397 int old_offset = offset;
1398 uint32_t offsetp_high, offsetp_low;
1400 if (di->conformant_run)
1402 return offset;
1405 if (parent_tree)
1407 tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_offsetp, &item, "minVVp:");
1410 offset =
1411 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1412 hf_fileexp_offsetp_high, &offsetp_high);
1413 offset =
1414 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_offsetp_low,
1415 &offsetp_low);
1417 col_append_fstr (pinfo->cinfo, COL_INFO, " offsetp:%u/%u", offsetp_high,
1418 offsetp_low);
1420 proto_item_set_len (item, offset - old_offset);
1421 return offset;
1425 static int
1426 dissect_returntokenidp (tvbuff_t *tvb, int offset,
1427 packet_info *pinfo, proto_tree *parent_tree,
1428 dcerpc_info *di, uint8_t *drep)
1430 /* unsigned32 returntokenidp_high
1431 unsigned32 returntokenidp_low
1434 proto_item *item = NULL;
1435 proto_tree *tree = NULL;
1436 int old_offset = offset;
1437 uint32_t returntokenidp_high, returntokenidp_low;
1439 if (di->conformant_run)
1441 return offset;
1444 if (parent_tree)
1446 tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_returntokenidp, &item, "returnTokenIDp:");
1449 offset =
1450 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1451 hf_fileexp_returntokenidp_high, &returntokenidp_high);
1452 offset =
1453 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_returntokenidp_low,
1454 &returntokenidp_low);
1456 col_append_fstr (pinfo->cinfo, COL_INFO, " returnTokenIDp:%u/%u", returntokenidp_high,
1457 returntokenidp_low);
1459 proto_item_set_len (item, offset - old_offset);
1460 return offset;
1464 static int
1465 dissect_volsync (tvbuff_t *tvb, int offset,
1466 packet_info *pinfo, proto_tree *parent_tree,
1467 dcerpc_info *di, uint8_t *drep)
1470 afsHyper VolID;
1471 afsHyper VV; volume's version
1472 unsigned32 VVAge; age, in seconds, of the knowledge that the
1473 given VolVers is current
1474 unsigned32 VVPingAge; age, in seconds, of the last probe from
1475 the callee (the secondary) to the primary
1476 unsigned32 vv_spare1;
1477 unsigned32 vv_spare2;
1480 proto_item *item = NULL;
1481 proto_tree *tree = NULL;
1482 int old_offset = offset;
1483 uint32_t volid_hi, volid_low, vv_hi, vv_low, vvage, vvpingage;
1484 uint32_t vvspare1, vvspare2;
1486 if (di->conformant_run)
1488 return offset;
1491 if (parent_tree)
1493 tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
1494 ett_fileexp_volsync, &item, "AfsVolSync:");
1497 offset =
1498 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_volid_hi,
1499 &volid_hi);
1500 offset =
1501 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_volid_low,
1502 &volid_low);
1503 offset =
1504 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_vv_hi,
1505 &vv_hi);
1506 offset =
1507 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_vv_low,
1508 &vv_low);
1509 offset =
1510 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_vvage,
1511 &vvage);
1512 offset =
1513 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_vvpingage,
1514 &vvpingage);
1515 offset =
1516 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_vvspare1,
1517 &vvspare1);
1518 offset =
1519 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_vvspare2,
1520 &vvspare2);
1522 col_append_fstr (pinfo->cinfo, COL_INFO,
1523 " volid_hi:%u volid_low:%u vv_hi:%u vv_low:%u vvage:%u vvpingage:%u vvpspare1:%u vvspare2:%u",
1524 volid_hi, volid_low, vv_hi, vv_low, vvage, vvpingage,
1525 vvspare1, vvspare2);
1527 proto_item_set_len (item, offset - old_offset);
1528 return offset;
1532 static int
1533 dissect_afsFlags (tvbuff_t *tvb, int offset,
1534 packet_info *pinfo, proto_tree *parent_tree,
1535 dcerpc_info *di, uint8_t *drep)
1538 unsigned32 flags
1541 proto_item *item = NULL;
1542 proto_tree *tree = NULL;
1543 int old_offset = offset;
1544 uint32_t flags;
1546 if (di->conformant_run)
1548 return offset;
1551 if (parent_tree)
1553 tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_afsflags, &item, "AfsFlags:");
1556 offset =
1557 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_flags,
1558 &flags);
1560 if (flags)
1562 col_append_str (pinfo->cinfo, COL_INFO, " Flags=");
1563 if ((flags & AFS_FLAG_RETURNTOKEN) == AFS_FLAG_RETURNTOKEN)
1565 col_append_str (pinfo->cinfo, COL_INFO, ":RETURNTOKEN");
1567 if ((flags & AFS_FLAG_TOKENJUMPQUEUE) == AFS_FLAG_TOKENJUMPQUEUE)
1569 col_append_str (pinfo->cinfo, COL_INFO, ":TOKENJUMPQUEUE");
1571 if ((flags & AFS_FLAG_SKIPTOKEN) == AFS_FLAG_SKIPTOKEN)
1573 col_append_str (pinfo->cinfo, COL_INFO, ":SKIPTOKEN");
1575 if ((flags & AFS_FLAG_NOOPTIMISM) == AFS_FLAG_NOOPTIMISM)
1577 col_append_str (pinfo->cinfo, COL_INFO, ":NOOPTIMISM");
1579 if ((flags & AFS_FLAG_TOKENID) == AFS_FLAG_TOKENID)
1581 col_append_str (pinfo->cinfo, COL_INFO, ":TOKENID");
1583 if ((flags & AFS_FLAG_RETURNBLOCKER) == AFS_FLAG_RETURNBLOCKER)
1585 col_append_str (pinfo->cinfo, COL_INFO, ":RETURNBLOCKER");
1587 if ((flags & AFS_FLAG_ASYNCGRANT) == AFS_FLAG_ASYNCGRANT)
1589 col_append_str (pinfo->cinfo, COL_INFO, ":ASYNCGRANT");
1591 if ((flags & AFS_FLAG_NOREVOKE) == AFS_FLAG_NOREVOKE)
1593 col_append_str (pinfo->cinfo, COL_INFO, ":NOREVOKE");
1595 if ((flags & AFS_FLAG_MOVE_REESTABLISH) == AFS_FLAG_MOVE_REESTABLISH)
1597 col_append_str (pinfo->cinfo, COL_INFO, ":MOVE_REESTABLISH");
1599 if ((flags & AFS_FLAG_SERVER_REESTABLISH) ==
1600 AFS_FLAG_SERVER_REESTABLISH)
1602 col_append_str (pinfo->cinfo, COL_INFO, ":SERVER_REESTABLISH");
1604 if ((flags & AFS_FLAG_NO_NEW_EPOCH) == AFS_FLAG_NO_NEW_EPOCH)
1606 col_append_str (pinfo->cinfo, COL_INFO, ":NO_NEW_EPOCH");
1608 if ((flags & AFS_FLAG_MOVE_SOURCE_OK) == AFS_FLAG_MOVE_SOURCE_OK)
1610 col_append_str (pinfo->cinfo, COL_INFO, ":MOVE_SOURCE_OK");
1612 if ((flags & AFS_FLAG_SYNC) == AFS_FLAG_SYNC)
1614 col_append_str (pinfo->cinfo, COL_INFO, ":SYNC");
1616 if ((flags & AFS_FLAG_ZERO) == AFS_FLAG_ZERO)
1618 col_append_str (pinfo->cinfo, COL_INFO, ":ZERO");
1620 if ((flags & AFS_FLAG_SKIPSTATUS) == AFS_FLAG_SKIPSTATUS)
1622 col_append_str (pinfo->cinfo, COL_INFO, ":SKIPSTATUS");
1624 if ((flags & AFS_FLAG_FORCEREVOCATIONS) == AFS_FLAG_FORCEREVOCATIONS)
1626 col_append_str (pinfo->cinfo, COL_INFO, ":FORCEREVOCATIONS");
1628 if ((flags & AFS_FLAG_FORCEVOLQUIESCE) == AFS_FLAG_FORCEVOLQUIESCE)
1630 col_append_str (pinfo->cinfo, COL_INFO, ":FORCEVOLQUIESCE");
1632 if ((flags & AFS_FLAG_SEC_SERVICE) == AFS_FLAG_SEC_SERVICE)
1634 col_append_str (pinfo->cinfo, COL_INFO, ":SEC_SERVICE");
1636 if ((flags & AFS_FLAG_CONTEXT_NEW_ACL_IF) ==
1637 AFS_FLAG_CONTEXT_NEW_ACL_IF)
1639 col_append_str (pinfo->cinfo, COL_INFO, ":CONTEXT_NEW_ACL_IF");
1643 proto_item_set_len (item, offset - old_offset);
1644 return offset;
1647 static int
1648 dissect_fetchstatus (tvbuff_t *tvb, int offset,
1649 packet_info *pinfo, proto_tree *parent_tree,
1650 dcerpc_info *di, uint8_t *drep)
1653 unsigned32 interfaceVersion;
1654 unsigned32 fileType;
1655 unsigned32 linkCount;
1656 afsHyper length;
1657 afsHyper dataVersion;
1658 unsigned32 author;
1659 unsigned32 owner;
1660 unsigned32 group;
1661 unsigned32 callerAccess;
1662 unsigned32 anonymousAccess;
1663 unsigned32 aclExpirationTime;
1664 unsigned32 mode;
1665 unsigned32 parentVnode;
1666 unsigned32 parentUnique;
1667 afsTimeval modTime;
1668 afsTimeval changeTime;
1669 afsTimeval accessTime;
1670 afsTimeval serverModTime;
1671 afsUUID typeUUID;
1672 afsUUID objectUUID;
1673 unsigned32 deviceNumber;
1674 unsigned32 blocksUsed;
1675 unsigned32 clientSpare1; * client-only attrs *
1676 unsigned32 deviceNumberHighBits;
1677 unsigned32 spare0;
1678 unsigned32 spare1;
1679 unsigned32 spare2;
1680 unsigned32 spare3;
1681 unsigned32 spare4;
1682 unsigned32 spare5;
1683 unsigned32 spare6;
1685 proto_item *item = NULL;
1686 proto_tree *tree = NULL;
1687 int old_offset = offset;
1688 uint32_t interfaceversion, filetype, linkcount, length_high, length_low;
1689 uint32_t dataversion_high, dataversion_low, author, owner, group, calleraccess;
1690 uint32_t anonymousaccess, aclexpirationtime, mode, parentvnode, parentunique;
1691 uint32_t modtime_sec, modtime_msec, changetime_sec, changetime_msec;
1692 uint32_t accesstime_sec, accesstime_msec, servermodtime_msec, servermodtime_sec;
1693 uint32_t devicenumber, blocksused, clientspare1, devicenumberhighbits;
1694 uint32_t agtypeunique, himaxspare, lomaxspare, pathconfspare, spare4;
1695 uint32_t spare5, spare6;
1696 e_guid_t typeuuid, objectuuid;
1698 if (di->conformant_run)
1700 return offset;
1703 if (parent_tree)
1705 tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
1706 ett_fileexp_fetchstatus, &item, "FetchStatus:");
1709 offset =
1710 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1711 hf_fileexp_interfaceversion, &interfaceversion);
1712 offset =
1713 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_filetype,
1714 &filetype);
1715 offset =
1716 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_linkcount,
1717 &linkcount);
1718 offset =
1719 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1720 hf_fileexp_length_high, &length_high);
1721 offset =
1722 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_length_low,
1723 &length_low);
1724 offset =
1725 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1726 hf_fileexp_dataversion_high, &dataversion_high);
1727 offset =
1728 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1729 hf_fileexp_dataversion_low, &dataversion_low);
1730 offset =
1731 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_author,
1732 &author);
1733 offset =
1734 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_owner,
1735 &owner);
1736 offset =
1737 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_group,
1738 &group);
1739 offset =
1740 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1741 hf_fileexp_calleraccess, &calleraccess);
1742 offset =
1743 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1744 hf_fileexp_anonymousaccess, &anonymousaccess);
1745 offset =
1746 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1747 hf_fileexp_aclexpirationtime, &aclexpirationtime);
1748 offset =
1749 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_mode,
1750 &mode);
1751 offset =
1752 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1753 hf_fileexp_parentvnode, &parentvnode);
1754 offset =
1755 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1756 hf_fileexp_parentunique, &parentunique);
1757 offset =
1758 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1759 hf_fileexp_modtime_sec, &modtime_sec);
1760 offset =
1761 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1762 hf_fileexp_modtime_msec, &modtime_msec);
1763 offset =
1764 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1765 hf_fileexp_changetime_sec, &changetime_sec);
1766 offset =
1767 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1768 hf_fileexp_changetime_msec, &changetime_msec);
1769 offset =
1770 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1771 hf_fileexp_accesstime_sec, &accesstime_sec);
1772 offset =
1773 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1774 hf_fileexp_accesstime_msec, &accesstime_msec);
1775 offset =
1776 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1777 hf_fileexp_servermodtime_sec, &servermodtime_sec);
1778 offset =
1779 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1780 hf_fileexp_servermodtime_msec, &servermodtime_msec);
1781 offset =
1782 dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep, hf_fileexp_typeuuid,
1783 &typeuuid);
1784 offset =
1785 dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep, hf_fileexp_objectuuid,
1786 &objectuuid);
1787 offset =
1788 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1789 hf_fileexp_devicenumber, &devicenumber);
1790 offset =
1791 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_blocksused,
1792 &blocksused);
1793 offset =
1794 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1795 hf_fileexp_clientspare1, &clientspare1);
1796 offset =
1797 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1798 hf_fileexp_devicenumberhighbits,
1799 &devicenumberhighbits);
1800 offset =
1801 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1802 hf_fileexp_agtypeunique, &agtypeunique);
1803 offset =
1804 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_himaxspare,
1805 &himaxspare);
1806 offset =
1807 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_lomaxspare,
1808 &lomaxspare);
1809 offset =
1810 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1811 hf_fileexp_pathconfspare, &pathconfspare);
1812 offset =
1813 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_spare4,
1814 &spare4);
1815 offset =
1816 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_spare5,
1817 &spare5);
1818 offset =
1819 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_spare6,
1820 &spare6);
1822 col_append_fstr (pinfo->cinfo, COL_INFO,
1823 " :interfacever:%u filetype:%u linkcount:%u length:%u dataver:%u author:%u owner:%u group:%u calleraccess:%u anonaccess:%u aclexpire:%u mode:%u parentvnode:%u parentunique:%u modtimesec:%u changetime_sec:%u accesstime_sec:%u servermodtimesec:%u devicenumber:%u blocksused:%u clientspare:%u devicehighbits:%u agtypeunique:%u",
1824 interfaceversion, filetype, linkcount, length_low,
1825 dataversion_low, author, owner, group, calleraccess,
1826 anonymousaccess, aclexpirationtime, mode, parentvnode,
1827 parentunique, modtime_sec, changetime_sec,
1828 accesstime_sec, servermodtime_sec, devicenumber,
1829 blocksused, clientspare1, devicenumberhighbits,
1830 agtypeunique);
1832 proto_item_set_len (item, offset - old_offset);
1833 return offset;
1836 static int
1837 dissect_afsReturnDesc (tvbuff_t *tvb, int offset,
1838 packet_info *pinfo, proto_tree *parent_tree,
1839 dcerpc_info *di, uint8_t *drep)
1842 afsFid fid; * useful hint *
1843 afsHyper tokenID;
1844 afsHyper type; * mask *
1845 unsigned32 flags; * just in case *
1848 proto_item *item = NULL;
1849 proto_tree *tree = NULL;
1850 int old_offset = offset;
1851 uint32_t tokenid_high, tokenid_low, type_high, type_low;
1853 if (di->conformant_run)
1855 return offset;
1858 if (parent_tree)
1860 tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
1861 ett_fileexp_afsReturnDesc, &item, "afsReturnDesc:");
1864 offset = dissect_afsFid ( tvb, offset, pinfo, tree, di, drep);
1866 offset =
1867 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1868 hf_fileexp_afsreturndesc_tokenid_high, &tokenid_high);
1869 offset =
1870 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1871 hf_fileexp_afsreturndesc_tokenid_low, &tokenid_low);
1872 offset =
1873 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1874 hf_fileexp_afsreturndesc_type_high, &type_high);
1875 offset =
1876 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1877 hf_fileexp_afsreturndesc_type_low, &type_low);
1878 col_append_fstr (pinfo->cinfo, COL_INFO, " TokenId:%u/%u Type:%u/%u",
1879 tokenid_high, tokenid_low, type_high, type_low);
1881 offset =
1882 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
1883 NDR_POINTER_REF, "afsFlags: ", -1);
1885 proto_item_set_len (item, offset - old_offset);
1886 return offset;
1891 static int
1892 dissect_afsReturns (tvbuff_t *tvb, int offset,
1893 packet_info *pinfo, proto_tree *tree,
1894 dcerpc_info *di, uint8_t *drep)
1897 long afsReturns_len;
1898 [length_is(afsReturns_len)] afsReturnDesc afsReturns_val[AFS_BULKMAX];
1901 /* this is not really a ucvarray, but with the initial len, we can
1902 cheat and pretend it is */
1903 if (di->conformant_run)
1905 return offset;
1908 offset =
1909 dissect_ndr_ucvarray (tvb, offset, pinfo, tree, di, drep,
1910 dissect_afsReturnDesc);
1912 return offset;
1915 #if 0 /* not used */
1917 static int
1918 dissect_afsbundled_stat (tvbuff_t *tvb, int offset,
1919 packet_info *pinfo, proto_tree *parent_tree,
1920 dcerpc_info *di, uint8_t *drep _U_)
1922 proto_item *item = NULL;
1923 proto_tree *tree = NULL;
1924 int old_offset = offset;
1926 if (di->conformant_run)
1928 return offset;
1931 if (parent_tree)
1933 tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_afsbundled_stat, &item, "afsbundled_stat:");
1936 /* bundled_stat
1938 afsFid fid;
1939 afsFetchStatus stat;
1940 afsToken token;
1941 error_status_t error;
1945 offset = dissect_afsFid(tvb, offset, pinfo, tree, di, drep);
1947 /* SKIPTOKEN/STAT?
1948 offset = dissect_fetchstatus (tvb, offset, pinfo, tree, di, drep);
1949 offset = dissect_afstoken (tvb, offset, pinfo, tree, di, drep);
1951 /* This is currently under construction as I figure out the reverse layout of the packet. */
1953 offset = dissect_afsErrorStatus (tvb, offset, pinfo, tree, di, drep);
1956 proto_item_set_len (item, offset - old_offset);
1957 return offset;
1961 #endif /* not used */
1963 static int
1964 dissect_afsBulkStat (tvbuff_t *tvb _U_, int offset,
1965 packet_info *pinfo _U_, proto_tree *tree _U_,
1966 dcerpc_info *di _U_, uint8_t *drep _U_)
1969 unsigned32 BulkStat_len;
1970 [length_is (BulkStat_len)] bundled_stat BulkStat_val[AFS_BULKMAX];
1972 /* this is not really a ucvarray, but with the initial len, we can
1973 cheat and pretend it is */
1975 offset = dissect_ndr_ucvarray (tvb, offset, pinfo, tree, drep,
1976 dissect_afsbundled_stat);
1979 return offset;
1985 static int
1986 fileexp_dissect_removefile_rqst (tvbuff_t *tvb, int offset,
1987 packet_info *pinfo, proto_tree *tree,
1988 dcerpc_info *di, uint8_t *drep)
1990 if (di->conformant_run)
1992 return offset;
1996 [in] afsFid *DirFidp,
1997 [in] afsFidTaggedName *Namep,
1998 [in] afsHyper *returnTokenIDp,
1999 [in] afsHyper *minVVp,
2000 [in] unsigned32 Flags,
2003 offset =
2004 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2005 NDR_POINTER_REF, "afsFid: ", -1);
2006 offset =
2007 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2008 dissect_afsfidtaggedname, NDR_POINTER_REF,
2009 "afsFidTaggedName: ", -1);
2010 offset =
2011 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_returntokenidp,
2012 NDR_POINTER_REF, "afsReturnTokenIDp:", -1);
2013 offset =
2014 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2015 NDR_POINTER_REF, "afsMinVVp:", -1);
2017 offset =
2018 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2019 NDR_POINTER_REF, "afsFlags:", -1);
2021 return offset;
2024 static int
2025 fileexp_dissect_storedata_rqst (tvbuff_t *tvb, int offset,
2026 packet_info *pinfo, proto_tree *tree,
2027 dcerpc_info *di, uint8_t *drep)
2029 uint32_t position_high, position_low, length;
2031 if (di->conformant_run)
2033 return offset;
2037 [in] afsFid *Fidp,
2038 [in] afsStoreStatus *InStatusp,
2039 [in] afsHyper *Position,
2040 [in] signed32 Length,
2041 [in] afsHyper *minVVp,
2042 [in] unsigned32 Flags,
2043 [in] pipe_t *storeStream,
2046 /* afsFid */
2047 offset =
2048 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2049 NDR_POINTER_REF, "afsFid: ", -1);
2050 offset =
2051 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2052 dissect_afsstorestatus, NDR_POINTER_REF,
2053 "afsStoreStatus:", -1);
2054 offset =
2055 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2056 hf_fileexp_position_high, &position_high);
2057 offset =
2058 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2059 hf_fileexp_position_low, &position_low);
2061 offset =
2062 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2063 hf_fileexp_length, &length);
2065 col_append_fstr (pinfo->cinfo, COL_INFO, " Position:%u/%u Length:%u",
2066 position_high, position_low, length);
2068 offset =
2069 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2070 NDR_POINTER_REF, "MinVVp:", -1);
2072 offset =
2073 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2074 NDR_POINTER_REF, "afsFlags:", -1);
2076 /* XXX need to decode pipe_t still here */
2078 return offset;
2081 static int
2082 fileexp_dissect_gettoken_rqst (tvbuff_t *tvb, int offset,
2083 packet_info *pinfo, proto_tree *tree,
2084 dcerpc_info *di, uint8_t *drep)
2086 if (di->conformant_run)
2088 return offset;
2092 [in] afsFid *Fidp,
2093 [in] afsToken *MinTokenp,
2094 [in] afsHyper *minVVp,
2095 [in] unsigned32 Flags,
2098 /* afsFid */
2099 offset =
2100 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2101 NDR_POINTER_REF, "afsFid: ", -1);
2103 offset =
2104 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afstoken,
2105 NDR_POINTER_REF, "afsToken: ", -1);
2107 offset =
2108 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2109 NDR_POINTER_REF, "MinVVp:", -1);
2111 offset =
2112 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2113 NDR_POINTER_REF, "afsFlags:", -1);
2115 return offset;
2117 static int
2118 fileexp_dissect_gettoken_resp (tvbuff_t *tvb, int offset,
2119 packet_info *pinfo, proto_tree *tree,
2120 dcerpc_info *di, uint8_t *drep)
2122 if (di->conformant_run)
2124 return offset;
2128 [out] afsToken *OutTokenp,
2129 [out] afsRecordLock *OutBlockerp,
2130 [out] afsFetchStatus *OutStatusp,
2131 [out] afsVolSync *Syncp
2134 offset =
2135 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afstoken,
2136 NDR_POINTER_REF, "afsToken: ", -1);
2137 offset =
2138 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2139 dissect_afsRecordLock, NDR_POINTER_REF,
2140 "afsRecordLock: ", -1);
2141 offset =
2142 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
2143 NDR_POINTER_REF, "afsFetchStatus: ", -1);
2144 offset =
2145 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
2146 NDR_POINTER_REF, "VolSync: ", -1);
2147 offset =
2148 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2149 dissect_afsErrorStatus, NDR_POINTER_REF,
2150 "afsErrorStatus: ", -1);
2152 return offset;
2155 static int
2156 fileexp_dissect_lookuproot_rqst (tvbuff_t *tvb, int offset,
2157 packet_info *pinfo, proto_tree *tree,
2158 dcerpc_info *di, uint8_t *drep)
2160 if (di->conformant_run)
2162 return offset;
2166 * [in] afsFid *InFidp,
2167 * [in] afsHyper *minVVp,
2168 * [in] unsigned32 Flags,
2171 offset =
2172 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2173 NDR_POINTER_REF, "afsFid: ", -1);
2175 offset =
2176 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2177 NDR_POINTER_REF, "MinVVp:", -1);
2179 offset =
2180 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2181 NDR_POINTER_REF, "afsFlags:", -1);
2183 return offset;
2186 static int
2187 fileexp_dissect_fetchdata_rqst (tvbuff_t *tvb, int offset,
2188 packet_info *pinfo, proto_tree *tree,
2189 dcerpc_info *di, uint8_t *drep)
2191 uint32_t position_high, position_low, length;
2193 if (di->conformant_run)
2195 return offset;
2199 [in] afsFid *Fidp,
2200 [in] afsHyper *minVVp,
2201 [in] afsHyper *Position,
2202 [in] signed32 Length,
2203 [in] unsigned32 Flags,
2206 offset =
2207 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2208 NDR_POINTER_REF, "afsFid: ", -1);
2210 offset =
2211 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2212 NDR_POINTER_REF, "MinVVp:", -1);
2213 offset =
2214 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2215 hf_fileexp_position_high, &position_high);
2216 offset =
2217 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2218 hf_fileexp_position_low, &position_low);
2219 offset =
2220 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2221 hf_fileexp_length, &length);
2222 col_append_fstr (pinfo->cinfo, COL_INFO, " Position:%u/%u Length:%u",
2223 position_high, position_low, length);
2225 offset =
2226 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2227 NDR_POINTER_REF, "afsFlags:", -1);
2229 return offset;
2232 static int
2233 fileexp_dissect_fetchacl_rqst (tvbuff_t *tvb, int offset,
2234 packet_info *pinfo, proto_tree *tree,
2235 dcerpc_info *di, uint8_t *drep)
2237 uint32_t acltype;
2239 if (di->conformant_run)
2241 return offset;
2245 [in] afsFid *Fidp,
2246 [in] unsigned32 aclType,
2247 [in] afsHyper *minVVp,
2248 [in] unsigned32 Flags,
2251 /* afsFid */
2252 offset =
2253 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2254 NDR_POINTER_REF, "afsFid: ", -1);
2256 offset =
2257 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_acltype,
2258 &acltype);
2259 offset =
2260 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2261 NDR_POINTER_REF, "MinVVp:", -1);
2263 offset =
2264 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2265 NDR_POINTER_REF, "afsFlags:", -1);
2267 if (acltype)
2269 col_append_str (pinfo->cinfo, COL_INFO,
2270 " :copy the ACL from specified fid:");
2273 return offset;
2275 static int
2276 fileexp_dissect_fetchstatus_rqst (tvbuff_t *tvb, int offset,
2277 packet_info *pinfo, proto_tree *tree,
2278 dcerpc_info *di, uint8_t *drep)
2280 if (di->conformant_run)
2282 return offset;
2286 [in] afsFid *Fidp,
2287 [in] afsHyper *minVVp,
2288 [in] unsigned32 Flags,
2291 offset =
2292 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2293 NDR_POINTER_REF, "afsFid: ", -1);
2294 offset =
2295 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2296 NDR_POINTER_REF, "MinVVp:", -1);
2297 offset =
2298 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2299 NDR_POINTER_REF, "afsFlags:", -1);
2301 return offset;
2303 static int
2304 fileexp_dissect_storeacl_rqst (tvbuff_t *tvb, int offset,
2305 packet_info *pinfo, proto_tree *tree,
2306 dcerpc_info *di, uint8_t *drep)
2308 uint32_t acltype;
2310 if (di->conformant_run)
2312 return offset;
2316 [in] afsFid *Fidp,
2317 [in] afsACL *AccessListp,
2318 [in] unsigned32 aclType,
2319 [in] afsFid *aclFidp,
2320 [in] afsHyper *minVVp,
2321 [in] unsigned32 Flags,
2324 offset =
2325 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2326 NDR_POINTER_REF, "afsFid: ", -1);
2327 offset =
2328 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsAcl,
2329 NDR_POINTER_REF, "afsAcl: ", -1);
2330 offset =
2331 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_acltype,
2332 &acltype);
2333 offset =
2334 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2335 NDR_POINTER_REF, "afsFid: ", -1);
2336 offset =
2337 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2338 NDR_POINTER_REF, "MinVVp:", -1);
2339 offset =
2340 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2341 NDR_POINTER_REF, "afsFlags:", -1);
2343 col_append_fstr (pinfo->cinfo, COL_INFO, " aclType:%u",acltype);
2345 return offset;
2348 static int
2349 fileexp_dissect_storestatus_rqst (tvbuff_t *tvb, int offset,
2350 packet_info *pinfo, proto_tree *tree,
2351 dcerpc_info *di, uint8_t *drep)
2353 if (di->conformant_run)
2355 return offset;
2359 [in] afsFid *Fidp,
2360 [in] afsStoreStatus *InStatusp,
2361 [in] afsHyper *minVVp,
2362 [in] unsigned32 Flags,
2365 offset =
2366 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2367 NDR_POINTER_REF, "afsFid: ", -1);
2368 offset =
2369 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2370 dissect_afsstorestatus, NDR_POINTER_REF,
2371 "afsStoreStatus: ", -1);
2372 offset =
2373 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2374 NDR_POINTER_REF, "MinVVp:", -1);
2375 offset =
2376 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2377 NDR_POINTER_REF, "afsFlags:", -1);
2379 return offset;
2382 static int
2383 fileexp_dissect_createfile_rqst (tvbuff_t *tvb, int offset,
2384 packet_info *pinfo, proto_tree *tree,
2385 dcerpc_info *di, uint8_t *drep)
2387 if (di->conformant_run)
2389 return offset;
2393 [in] afsFid *DirFidp,
2394 [in] afsTaggedName *Namep,
2395 [in] afsStoreStatus *InStatusp,
2396 [in] afsHyper *minVVp,
2397 [in] unsigned32 Flags,
2400 offset =
2401 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2402 NDR_POINTER_REF, "afsFid: ", -1);
2403 offset =
2404 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2405 dissect_afstaggedname, NDR_POINTER_REF,
2406 "afsTaggedName: ", -1);
2407 offset =
2408 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2409 dissect_afsstorestatus, NDR_POINTER_REF,
2410 "afsStoreStatus: ", -1);
2411 offset =
2412 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2413 NDR_POINTER_REF, "MinVVp:", -1);
2414 offset =
2415 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2416 NDR_POINTER_REF, "afsFlags:", -1);
2418 return offset;
2421 static int
2422 fileexp_dissect_rename_rqst (tvbuff_t *tvb, int offset,
2423 packet_info *pinfo, proto_tree *tree,
2424 dcerpc_info *di, uint8_t *drep)
2426 if (di->conformant_run)
2428 return offset;
2432 [in] afsFid *OldDirFidp,
2433 [in] afsFidTaggedName *OldNamep,
2434 [in] afsFid *NewDirFidp,
2435 [in] afsFidTaggedName *NewNamep,
2436 [in] afsHyper *returnTokenIDp,
2437 [in] afsHyper *minVVp,
2438 [in] unsigned32 Flags,
2441 /* afsFid */
2442 offset =
2443 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2444 NDR_POINTER_REF, "afsFid: ", -1);
2446 offset =
2447 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2448 dissect_afsfidtaggedname, NDR_POINTER_REF,
2449 "afsFidTaggedName: ", -1);
2451 offset =
2452 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2453 NDR_POINTER_REF, "afsFid: ", -1);
2455 offset =
2456 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2457 dissect_afstaggedname, NDR_POINTER_REF,
2458 "afsFidTaggedName: ", -1);
2460 offset =
2461 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2462 dissect_returntokenidp, NDR_POINTER_REF,
2463 "afsReturnTokenIDp: ", -1);
2465 offset =
2466 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2467 dissect_minvvp, NDR_POINTER_REF,
2468 "afsminVVp: ", -1);
2470 offset = dissect_afsFlags (tvb, offset, pinfo, tree, di, drep);
2472 return offset;
2475 static int
2476 fileexp_dissect_symlink_rqst (tvbuff_t *tvb, int offset,
2477 packet_info *pinfo, proto_tree *tree,
2478 dcerpc_info *di, uint8_t *drep)
2480 if (di->conformant_run)
2482 return offset;
2486 [in] afsFid *DirFidp,
2487 [in] afsTaggedName *Namep,
2488 [in] afsTaggedPath *LinkContentsp,
2489 [in] afsStoreStatus *InStatusp,
2490 [in] afsHyper *minVVp,
2491 [in] unsigned32 Flags,
2494 /* afsFid */
2495 offset =
2496 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2497 NDR_POINTER_REF, "afsFid: ", -1);
2499 offset =
2500 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2501 dissect_afstaggedname, NDR_POINTER_REF,
2502 "afsTaggedName: ", -1);
2503 offset =
2504 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2505 dissect_afsTaggedPath, NDR_POINTER_REF,
2506 "afsTaggedPath: ", -1);
2507 offset =
2508 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2509 dissect_afsstorestatus, NDR_POINTER_REF,
2510 "afsStoreStatus: ", -1);
2511 offset =
2512 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2513 NDR_POINTER_REF, "MinVVp:", -1);
2514 offset = dissect_afsFlags (tvb, offset, pinfo, tree, di, drep);
2516 return offset;
2519 static int
2520 fileexp_dissect_readdir_rqst (tvbuff_t *tvb, int offset,
2521 packet_info *pinfo, proto_tree *tree,
2522 dcerpc_info *di, uint8_t *drep)
2524 uint32_t size;
2526 if (di->conformant_run)
2528 return offset;
2532 [in] afsFid *DirFidp,
2533 [in] afsHyper *Offsetp,
2534 [in] unsigned32 Size,
2535 [in] afsHyper *minVVp,
2536 [in] unsigned32 Flags,
2539 offset =
2540 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2541 NDR_POINTER_REF, "afsFid: ", -1);
2542 offset =
2543 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_offsetp,
2544 NDR_POINTER_REF, "Offsetp: ", -1);
2545 offset =
2546 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2547 hf_fileexp_readdir_size, &size);
2549 col_append_fstr (pinfo->cinfo, COL_INFO, " Size:%u", size);
2551 offset =
2552 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2553 NDR_POINTER_REF, "MinVVp:", -1);
2554 offset = dissect_afsFlags ( tvb, offset, pinfo, tree, di, drep);
2556 return offset;
2559 static int
2560 fileexp_dissect_makedir_rqst (tvbuff_t *tvb, int offset,
2561 packet_info *pinfo, proto_tree *tree,
2562 dcerpc_info *di, uint8_t *drep)
2564 if (di->conformant_run)
2566 return offset;
2570 [in] afsFid *DirFidp,
2571 [in] afsTaggedName *Namep,
2572 [in] afsStoreStatus *InStatusp,
2573 [in] afsHyper *minVVp,
2574 [in] unsigned32 Flags,
2577 offset =
2578 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2579 NDR_POINTER_REF, "afsFid: ", -1);
2581 offset =
2582 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2583 dissect_afstaggedname, NDR_POINTER_REF,
2584 "afsTaggedName: ", -1);
2585 offset =
2586 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2587 dissect_afsstorestatus, NDR_POINTER_REF,
2588 "afsStoreStatus: ", -1);
2589 offset =
2590 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2591 NDR_POINTER_REF, "MinVVp:", -1);
2592 offset = dissect_afsFlags ( tvb, offset, pinfo, tree, di, drep);
2594 return offset;
2597 static int
2598 fileexp_dissect_removedir_rqst (tvbuff_t *tvb, int offset,
2599 packet_info *pinfo, proto_tree *tree,
2600 dcerpc_info *di, uint8_t *drep)
2602 uint32_t returntokenidp_high, returntokenidp_low;
2604 if (di->conformant_run)
2606 return offset;
2610 [in] afsFid *DirFidp,
2611 [in] afsFidTaggedName *Namep,
2612 [in] afsHyper *returnTokenIDp,
2613 [in] afsHyper *minVVp,
2614 [in] unsigned32 Flags,
2617 offset =
2618 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2619 NDR_POINTER_REF, "afsFid: ", -1);
2620 offset =
2621 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2622 dissect_afsfidtaggedname, NDR_POINTER_REF,
2623 "afsFidTaggedName: ", -1);
2624 offset =
2625 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2626 hf_fileexp_returntokenidp_high, &returntokenidp_high);
2627 offset =
2628 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2629 hf_fileexp_returntokenidp_low, &returntokenidp_low);
2631 col_append_fstr (pinfo->cinfo, COL_INFO, " returnTokenIDp:%u/%u",
2632 returntokenidp_high, returntokenidp_low);
2633 offset =
2634 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2635 NDR_POINTER_REF, "MinVVp:", -1);
2636 offset = dissect_afsFlags ( tvb, offset, pinfo, tree, di, drep );
2638 return offset;
2641 static int
2642 fileexp_dissect_lookup_rqst (tvbuff_t *tvb, int offset,
2643 packet_info *pinfo, proto_tree *tree,
2644 dcerpc_info *di, uint8_t *drep)
2646 if (di->conformant_run)
2648 return offset;
2652 [in] afsFid *DirFidp,
2653 [in] afsTaggedName *Namep,
2654 [in] afsHyper *minVVp,
2655 [in] unsigned32 Flags,
2658 offset =
2659 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2660 NDR_POINTER_REF, "afsFid: ", -1);
2662 offset =
2663 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2664 dissect_afstaggedname, NDR_POINTER_REF,
2665 "afsTaggedName: ", -1);
2666 offset =
2667 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2668 NDR_POINTER_REF, "MinVVp:", -1);
2669 offset = dissect_afsFlags ( tvb, offset, pinfo, tree, di, drep);
2671 return offset;
2673 static int
2674 fileexp_dissect_lookup_resp (tvbuff_t *tvb, int offset,
2675 packet_info *pinfo, proto_tree *tree,
2676 dcerpc_info *di, uint8_t *drep)
2678 if (di->conformant_run)
2680 return offset;
2684 [out] afsFid *OutFidp,
2685 [out] afsFetchStatus *OutFidStatusp,
2686 [out] afsFetchStatus *OutDirStatusp,
2687 [out] afsToken *OutTokenp,
2688 [out] afsVolSync *Syncp
2691 offset =
2692 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2693 NDR_POINTER_REF, "afsFid: ", -1);
2695 offset =
2696 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
2697 NDR_POINTER_REF, "FetchStatus: ", -1);
2698 offset =
2699 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
2700 NDR_POINTER_REF, "FetchStatus: ", -1);
2702 offset =
2703 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afstoken,
2704 NDR_POINTER_REF, "afsToken: ", -1);
2705 offset =
2706 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
2707 NDR_POINTER_REF, "VolSync: ", -1);
2708 MACRO_ST_CLEAR ("Lookup reply");
2710 return offset;
2714 static int
2715 fileexp_dissect_makemountpoint_rqst (tvbuff_t *tvb, int offset,
2716 packet_info *pinfo, proto_tree *tree,
2717 dcerpc_info *di, uint8_t *drep)
2719 uint16_t type;
2721 if (di->conformant_run)
2723 return offset;
2728 [in] afsFid *DirFidp,
2729 [in] afsTaggedName *Namep,
2730 [in] afsTaggedName *cellNamep,
2731 [in] afsFStype Type,
2732 [in] afsTaggedName *volumeNamep,
2733 [in] afsStoreStatus *InStatusp,
2734 [in] afsHyper *minVVp,
2735 [in] unsigned32 Flags,
2738 /* afsFid */
2739 offset =
2740 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2741 NDR_POINTER_REF, "afsFid: ", -1);
2743 offset =
2744 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2745 dissect_afstaggedname, NDR_POINTER_REF,
2746 "afsTaggedName: ", -1);
2747 offset =
2748 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2749 dissect_afstaggedname, NDR_POINTER_REF,
2750 "afsTaggedName: ", -1);
2751 offset =
2752 dissect_ndr_uint16 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_fstype,
2753 &type);
2754 offset =
2755 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2756 dissect_afstaggedname, NDR_POINTER_REF,
2757 "afsTaggedName: ", -1);
2758 offset =
2759 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2760 dissect_afsstorestatus, NDR_POINTER_REF,
2761 "afsStoreStatus: ", -1);
2762 offset =
2763 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2764 NDR_POINTER_REF, "MinVVp:", -1);
2766 offset = dissect_afsFlags (tvb, offset, pinfo, tree, di, drep);
2768 col_append_fstr (pinfo->cinfo, COL_INFO, " Type:%u", type);
2770 return offset;
2774 static int
2775 fileexp_dissect_setcontext_rqst (tvbuff_t *tvb, int offset,
2776 packet_info *pinfo, proto_tree *tree,
2777 dcerpc_info *di, uint8_t *drep)
2779 uint32_t epochtime, clientsizesattrs, parm7;
2781 if (di->conformant_run)
2783 return offset;
2787 [in] unsigned32 epochTime,
2788 [in] afsNetData *callbackAddr,
2789 [in] unsigned32 Flags,
2790 [in] afsUUID *secObjectID,
2791 [in] unsigned32 clientSizesAttrs,
2792 [in] unsigned32 parm7
2795 offset =
2796 dissect_dcerpc_time_t (tvb, offset, pinfo, tree, drep,
2797 hf_fileexp_setcontext_rqst_epochtime, &epochtime);
2799 offset = dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsNetData,
2800 NDR_POINTER_REF, "afsNetData:", -1);
2802 offset = dissect_afsFlags (tvb, offset, pinfo, tree, di, drep);
2804 col_append_str (pinfo->cinfo, COL_INFO, " setObjectID");
2806 offset = dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsuuid,
2807 NDR_POINTER_REF, "afsUUID:", -1);
2808 offset =
2809 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2810 hf_fileexp_setcontext_rqst_clientsizesattrs,
2811 &clientsizesattrs);
2812 offset =
2813 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2814 hf_fileexp_setcontext_rqst_parm7, &parm7);
2816 col_append_fstr (pinfo->cinfo, COL_INFO, " epochTime:%u clientSizesAttrs:%u parm7:%u", epochtime, clientsizesattrs, parm7);
2818 return offset;
2821 static int
2822 fileexp_dissect_setcontext_resp (tvbuff_t *tvb, int offset,
2823 packet_info *pinfo, proto_tree *tree,
2824 dcerpc_info *di, uint8_t *drep)
2826 /* nothing but error code */
2828 if (di->conformant_run)
2830 return offset;
2833 MACRO_ST_CLEAR ("SetContext reply");
2834 return offset;
2837 static int
2838 fileexp_dissect_lookuproot_resp (tvbuff_t *tvb, int offset,
2839 packet_info *pinfo, proto_tree *tree,
2840 dcerpc_info *di, uint8_t *drep)
2842 if (di->conformant_run)
2844 return offset;
2848 * [out] afsFid *OutFidp,
2849 * [out] afsFetchStatus *OutFidStatusp,
2850 * [out] afsToken *OutTokenp,
2851 * [out] afsVolSync *Syncp
2853 /* afsFid */
2854 offset =
2855 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2856 NDR_POINTER_REF, "afsFid: ", -1);
2858 offset =
2859 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
2860 NDR_POINTER_REF, "FetchStatus: ", -1);
2861 offset =
2862 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afstoken,
2863 NDR_POINTER_REF, "afsToken: ", -1);
2864 offset =
2865 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
2866 NDR_POINTER_REF, "VolSync: ", -1);
2867 MACRO_ST_CLEAR ("LookupRoot reply");
2868 return offset;
2871 static int
2872 fileexp_dissect_fetchdata_resp (tvbuff_t *tvb, int offset,
2873 packet_info *pinfo, proto_tree *tree,
2874 dcerpc_info *di, uint8_t *drep)
2876 uint32_t pipe_t_size;
2878 if (di->conformant_run)
2880 return offset;
2884 [out] afsFetchStatus *OutStatusp,
2885 [out] afsToken *OutTokenp,
2886 [out] afsVolSync *Syncp,
2887 [out] pipe_t *fetchStream
2889 /* The SkipToken/SkipStatus flags are always used in every fetchdata request I have seen.
2890 There is also not sign of the afsVolSync structure... Just size, and data string... aka pipe_t */
2892 offset =
2893 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2894 hf_fileexp_fetchdata_pipe_t_size, &pipe_t_size);
2896 return offset;
2899 static int
2900 fileexp_dissect_fetchacl_resp (tvbuff_t *tvb, int offset,
2901 packet_info *pinfo, proto_tree *tree,
2902 dcerpc_info *di, uint8_t *drep)
2904 if (di->conformant_run)
2906 return offset;
2910 [out] afsACL *AccessListp,
2911 [out] afsFetchStatus *OutStatusp,
2912 [out] afsVolSync *Syncp
2915 offset =
2916 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsAcl,
2917 NDR_POINTER_REF, "afsAcl: ", -1);
2918 offset =
2919 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
2920 NDR_POINTER_REF, "FetchStatus: ", -1);
2922 offset =
2923 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
2924 NDR_POINTER_REF, "VolSync: ", -1);
2925 MACRO_ST_CLEAR ("FetchAcl reply");
2926 return offset;
2929 static int
2930 fileexp_dissect_fetchstatus_resp (tvbuff_t *tvb, int offset,
2931 packet_info *pinfo, proto_tree *tree,
2932 dcerpc_info *di, uint8_t *drep)
2934 if (di->conformant_run)
2936 return offset;
2940 [out] afsFetchStatus *OutStatusp,
2941 [out] afsToken *OutTokenp,
2942 [out] afsVolSync *Syncp
2945 offset =
2946 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
2947 NDR_POINTER_REF, "FetchStatus: ", -1);
2949 offset =
2950 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afstoken,
2951 NDR_POINTER_REF, "afsToken: ", -1);
2952 offset =
2953 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
2954 NDR_POINTER_REF, "VolSync: ", -1);
2955 MACRO_ST_CLEAR ("FetchStatus reply");
2956 return offset;
2959 static int
2960 fileexp_dissect_storedata_resp (tvbuff_t *tvb, int offset,
2961 packet_info *pinfo, proto_tree *tree,
2962 dcerpc_info *di, uint8_t *drep)
2964 if (di->conformant_run)
2966 return offset;
2970 [out] afsFetchStatus *OutStatusp,
2971 [out] afsVolSync *Syncp
2974 offset =
2975 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
2976 NDR_POINTER_REF, "FetchStatus: ", -1);
2978 offset =
2979 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
2980 NDR_POINTER_REF, "VolSync: ", -1);
2981 MACRO_ST_CLEAR ("StoreData reply");
2982 return offset;
2985 static int
2986 fileexp_dissect_storeacl_resp (tvbuff_t *tvb, int offset,
2987 packet_info *pinfo, proto_tree *tree,
2988 dcerpc_info *di, uint8_t *drep)
2990 if (di->conformant_run)
2992 return offset;
2996 [out] afsFetchStatus *OutStatusp,
2997 [out] afsVolSync *Syncp
3000 offset =
3001 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3002 NDR_POINTER_REF, "FetchStatus: ", -1);
3004 offset =
3005 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3006 NDR_POINTER_REF, "VolSync: ", -1);
3007 MACRO_ST_CLEAR ("StoreAcl reply");
3008 return offset;
3011 static int
3012 fileexp_dissect_storestatus_resp (tvbuff_t *tvb, int offset,
3013 packet_info *pinfo, proto_tree *tree,
3014 dcerpc_info *di, uint8_t *drep)
3016 if (di->conformant_run)
3018 return offset;
3022 [out] afsFetchStatus *OutStatusp,
3023 [out] afsVolSync *Syncp
3026 offset =
3027 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3028 NDR_POINTER_REF, "FetchStatus: ", -1);
3030 offset =
3031 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3032 NDR_POINTER_REF, "VolSync: ", -1);
3033 MACRO_ST_CLEAR ("StoreStatus reply");
3034 return offset;
3037 static int
3038 fileexp_dissect_removefile_resp (tvbuff_t *tvb, int offset,
3039 packet_info *pinfo, proto_tree *tree,
3040 dcerpc_info *di, uint8_t *drep)
3042 if (di->conformant_run)
3044 return offset;
3048 [out] afsFetchStatus *OutDirStatusp,
3049 [out] afsFetchStatus *OutFileStatusp,
3050 [out] afsFid *OutFileFidp,
3051 [out] afsVolSync *Syncp
3053 offset =
3054 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3055 NDR_POINTER_REF, "FetchStatus: ", -1);
3057 offset =
3058 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3059 NDR_POINTER_REF, "FetchStatus: ", -1);
3060 offset =
3061 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3062 NDR_POINTER_REF, "afsFid: ", -1);
3063 offset =
3064 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3065 NDR_POINTER_REF, "VolSync: ", -1);
3066 MACRO_ST_CLEAR ("RemoveFile reply");
3067 return offset;
3070 static int
3071 fileexp_dissect_createfile_resp (tvbuff_t *tvb, int offset,
3072 packet_info *pinfo, proto_tree *tree,
3073 dcerpc_info *di, uint8_t *drep)
3075 if (di->conformant_run)
3077 return offset;
3081 [out] afsFid *OutFidp,
3082 [out] afsFetchStatus *OutFidStatusp,
3083 [out] afsFetchStatus *OutDirStatusp,
3084 [out] afsToken *OutTokenp,
3085 [out] afsVolSync *Syncp
3088 /* afsFid */
3089 offset =
3090 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3091 NDR_POINTER_REF, "afsFid: ", -1);
3092 offset =
3093 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3094 NDR_POINTER_REF, "FetchStatus: ", -1);
3096 offset =
3097 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3098 NDR_POINTER_REF, "FetchStatus: ", -1);
3100 offset =
3101 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afstoken,
3102 NDR_POINTER_REF, "afsToken: ", -1);
3103 offset =
3104 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3105 NDR_POINTER_REF, "VolSync: ", -1);
3106 MACRO_ST_CLEAR ("CreateFile reply");
3108 return offset;
3110 static int
3111 fileexp_dissect_rename_resp (tvbuff_t *tvb, int offset,
3112 packet_info *pinfo, proto_tree *tree,
3113 dcerpc_info *di, uint8_t *drep)
3115 if (di->conformant_run)
3117 return offset;
3121 [out] afsFetchStatus *OutOldDirStatusp,
3122 [out] afsFetchStatus *OutNewDirStatusp,
3123 [out] afsFid *OutOldFileFidp,
3124 [out] afsFetchStatus *OutOldFileStatusp,
3125 [out] afsFid *OutNewFileFidp,
3126 [out] afsFetchStatus *OutNewFileStatusp,
3127 [out] afsVolSync *Syncp
3130 offset =
3131 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3132 NDR_POINTER_REF, "FetchStatus: ", -1);
3133 offset =
3134 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3135 NDR_POINTER_REF, "FetchStatus: ", -1);
3136 offset =
3137 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3138 NDR_POINTER_REF, "afsFid: ", -1);
3139 offset =
3140 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3141 NDR_POINTER_REF, "FetchStatus: ", -1);
3142 offset =
3143 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3144 NDR_POINTER_REF, "afsFid: ", -1);
3146 offset =
3147 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3148 NDR_POINTER_REF, "FetchStatus: ", -1);
3150 offset =
3151 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3152 NDR_POINTER_REF, "VolSync: ", -1);
3153 MACRO_ST_CLEAR ("Rename reply");
3154 return offset;
3157 static int
3158 fileexp_dissect_symlink_resp (tvbuff_t *tvb, int offset,
3159 packet_info *pinfo, proto_tree *tree,
3160 dcerpc_info *di, uint8_t *drep)
3162 if (di->conformant_run)
3164 return offset;
3168 [out] afsFid *OutFidp,
3169 [out] afsFetchStatus *OutFidStatusp,
3170 [out] afsFetchStatus *OutDirStatusp,
3171 [out] afsToken *OutTokenp,
3172 [out] afsVolSync *Syncp
3175 offset =
3176 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3177 NDR_POINTER_REF, "afsFid: ", -1);
3178 offset =
3179 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3180 NDR_POINTER_REF, "FetchStatus: ", -1);
3181 offset =
3182 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3183 NDR_POINTER_REF, "FetchStatus: ", -1);
3184 offset =
3185 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afstoken,
3186 NDR_POINTER_REF, "afsToken: ", -1);
3187 offset =
3188 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3189 NDR_POINTER_REF, "VolSync: ", -1);
3190 MACRO_ST_CLEAR ("Symlink reply");
3192 return offset;
3195 static int
3196 fileexp_dissect_hardlink_resp (tvbuff_t *tvb, int offset,
3197 packet_info *pinfo, proto_tree *tree,
3198 dcerpc_info *di, uint8_t *drep)
3200 if (di->conformant_run)
3202 return offset;
3206 [out] afsFetchStatus *OutFidStatusp,
3207 [out] afsFetchStatus *OutDirStatusp,
3208 [out] afsVolSync *Syncp
3212 offset =
3213 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3214 NDR_POINTER_REF, "FetchStatus: ", -1);
3215 offset =
3216 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3217 NDR_POINTER_REF, "FetchStatus: ", -1);
3218 offset =
3219 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3220 NDR_POINTER_REF, "VolSync: ", -1);
3221 MACRO_ST_CLEAR ("Hardlink reply");
3223 return offset;
3225 static int
3226 fileexp_dissect_hardlink_rqst (tvbuff_t *tvb, int offset,
3227 packet_info *pinfo, proto_tree *tree,
3228 dcerpc_info *di, uint8_t *drep)
3230 if (di->conformant_run)
3232 return offset;
3236 [in] afsFid *DirFidp,
3237 [in] afsTaggedName *Namep,
3238 [in] afsFid *ExistingFidp,
3239 [in] afsHyper *minVVp,
3240 [in] unsigned32 Flags,
3243 /* afsFid */
3244 offset =
3245 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3246 NDR_POINTER_REF, "afsFid: ", -1);
3248 offset =
3249 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
3250 dissect_afstaggedname, NDR_POINTER_REF,
3251 "afsTaggedName: ", -1);
3252 /* afsFid */
3253 offset =
3254 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3255 NDR_POINTER_REF, "afsFid: ", -1);
3257 offset =
3258 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
3259 NDR_POINTER_REF, "MinVVp:", -1);
3261 offset = dissect_afsFlags ( tvb, offset, pinfo, tree, di, drep);
3263 return offset;
3266 static int
3267 fileexp_dissect_makedir_resp (tvbuff_t *tvb, int offset,
3268 packet_info *pinfo, proto_tree *tree,
3269 dcerpc_info *di, uint8_t *drep)
3271 if (di->conformant_run)
3273 return offset;
3277 [out] afsFid *OutFidp,
3278 [out] afsFetchStatus *OutFidStatusp,
3279 [out] afsFetchStatus *OutDirStatusp,
3280 [out] afsToken *OutTokenp,
3281 [out] afsVolSync *Syncp
3283 offset =
3284 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3285 NDR_POINTER_REF, "afsFid: ", -1);
3286 offset =
3287 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3288 NDR_POINTER_REF, "FetchStatus: ", -1);
3289 offset =
3290 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3291 NDR_POINTER_REF, "FetchStatus: ", -1);
3292 offset =
3293 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afstoken,
3294 NDR_POINTER_REF, "afsToken: ", -1);
3295 offset =
3296 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3297 NDR_POINTER_REF, "VolSync: ", -1);
3299 MACRO_ST_CLEAR ("MakeDir reply");
3301 return offset;
3304 static int
3305 fileexp_dissect_removedir_resp (tvbuff_t *tvb, int offset,
3306 packet_info *pinfo, proto_tree *tree,
3307 dcerpc_info *di, uint8_t *drep)
3309 if (di->conformant_run)
3311 return offset;
3315 [out] afsFetchStatus *OutDirStatusp,
3316 [out] afsFid *OutFidp,
3317 [out] afsFetchStatus *OutDelStatusp,
3318 [out] afsVolSync *Syncp
3321 offset =
3322 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3323 NDR_POINTER_REF, "FetchStatus: ", -1);
3324 offset =
3325 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3326 NDR_POINTER_REF, "afsFid: ", -1);
3327 offset =
3328 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3329 NDR_POINTER_REF, "FetchStatus: ", -1);
3330 offset =
3331 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3332 NDR_POINTER_REF, "VolSync: ", -1);
3333 MACRO_ST_CLEAR ("RemoveDir reply");
3335 return offset;
3339 static int
3340 fileexp_dissect_readdir_resp (tvbuff_t *tvb, int offset,
3341 packet_info *pinfo, proto_tree *tree,
3342 dcerpc_info *di, uint8_t *drep)
3344 uint32_t nextoffsetp_high, nextoffsetp_low;
3346 if (di->conformant_run)
3348 return offset;
3352 [out] afsHyper *NextOffsetp,
3353 [out] afsFetchStatus *OutDirStatusp,
3354 [out] afsToken *OutTokenp,
3355 [out] afsVolSync *Syncp,
3356 [out] pipe_t *dirStream
3359 offset =
3360 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3361 hf_fileexp_nextoffsetp_high, &nextoffsetp_high);
3362 offset =
3363 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3364 hf_fileexp_nextoffsetp_low, &nextoffsetp_low);
3366 col_append_fstr (pinfo->cinfo, COL_INFO, " NextOffsetp:%u/%u",
3367 nextoffsetp_high, nextoffsetp_low);
3369 /* all packets seem to have SKIPTOKEN/SKIPSTATUS sent, and thus these structures are missing on calls holding tokens. */
3371 offset =
3372 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3373 NDR_POINTER_REF, "VolSync: ", -1);
3374 /* XXX need to add pipe_t here, once figured out. */
3376 return offset;
3379 static int
3380 fileexp_dissect_releasetokens_resp (tvbuff_t *tvb, int offset,
3381 packet_info *pinfo, proto_tree *tree,
3382 dcerpc_info *di, uint8_t *drep)
3384 if (di->conformant_run)
3386 return offset;
3389 /* no out */
3390 MACRO_ST_CLEAR ("ReleaseTokens reply");
3391 return offset;
3394 static int
3395 fileexp_dissect_releasetokens_rqst (tvbuff_t *tvb, int offset,
3396 packet_info *pinfo, proto_tree *tree,
3397 dcerpc_info *di, uint8_t *drep)
3399 if (di->conformant_run)
3401 return offset;
3406 [in] afsReturns *Tokens_Arrayp,
3407 [in] unsigned32 Flags
3409 offset =
3410 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsReturns,
3411 NDR_POINTER_REF, "afsReturns: ", -1);
3412 offset =
3413 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
3414 NDR_POINTER_REF, "afsFlags: ", -1);
3415 return offset;
3418 static int
3419 fileexp_dissect_gettime_resp (tvbuff_t *tvb, int offset,
3420 packet_info *pinfo, proto_tree *tree,
3421 dcerpc_info *di, uint8_t *drep)
3423 uint32_t secondsp, usecondsp, syncdistance, syncdispersion;
3425 if (di->conformant_run)
3427 return offset;
3431 [out] unsigned32 *Secondsp,
3432 [out] unsigned32 *USecondsp,
3433 [out] unsigned32 *SyncDistance,
3434 [out] unsigned32 *SyncDispersion
3437 offset =
3438 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3439 hf_fileexp_gettime_secondsp, &secondsp);
3440 offset =
3441 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3442 hf_fileexp_gettime_usecondsp, &usecondsp);
3443 offset =
3444 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3445 hf_fileexp_gettime_syncdistance, &syncdistance);
3446 offset =
3447 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3448 hf_fileexp_gettime_syncdispersion, &syncdispersion);
3450 col_append_fstr (pinfo->cinfo, COL_INFO, " Secondsp:%u Usecondsp:%u SyncDistance:/%u SyncDispersion:%u", secondsp, usecondsp, syncdistance, syncdispersion);
3452 MACRO_ST_CLEAR ("GetTime reply");
3454 return offset;
3458 static int
3459 fileexp_dissect_gettime_rqst (tvbuff_t *tvb _U_, int offset,
3460 packet_info *pinfo _U_, proto_tree *tree _U_,
3461 dcerpc_info *di _U_, uint8_t *drep _U_)
3463 /* nothing */
3465 return offset;
3468 static int
3469 fileexp_dissect_processquota_resp (tvbuff_t *tvb, int offset,
3470 packet_info *pinfo, proto_tree *tree,
3471 dcerpc_info *di, uint8_t *drep)
3473 if (di->conformant_run)
3475 return offset;
3479 [in,out] afsQuota *quotaListp,
3480 [out] afsFetchStatus *OutStatusp,
3481 [out] afsVolSync *Syncp
3484 /* XXX need afsQuota */
3485 offset += 92;
3486 offset =
3487 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3488 NDR_POINTER_REF, "FetchStatus: ", -1);
3489 offset =
3490 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3491 NDR_POINTER_REF, "VolSync: ", -1);
3492 MACRO_ST_CLEAR ("ProcessQuota reply");
3494 return offset;
3497 static int
3498 fileexp_dissect_processquota_rqst (tvbuff_t *tvb, int offset,
3499 packet_info *pinfo, proto_tree *tree,
3500 dcerpc_info *di, uint8_t *drep)
3502 if (di->conformant_run)
3504 return offset;
3508 [in] afsFid *Fidp,
3509 [in] afsHyper *minVVp,
3510 [in] unsigned32 Flags,
3511 [in,out] afsQuota *quotaListp,
3514 /* afsFid */
3515 offset =
3516 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3517 NDR_POINTER_REF, "afsFid: ", -1);
3518 offset =
3519 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
3520 NDR_POINTER_REF, "MinVVp:", -1);
3521 offset = dissect_afsFlags ( tvb, offset, pinfo, tree, di, drep);
3523 /* XXX need to figure out afsQuota here */
3524 return offset;
3527 static int
3528 fileexp_dissect_getserverinterfaces_rqst (tvbuff_t *tvb _U_, int offset,
3529 packet_info *pinfo _U_, proto_tree *tree _U_,
3530 dcerpc_info *di _U_, uint8_t *drep _U_)
3534 [in, out] dfs_interfaceList *serverInterfacesP
3536 /* XXX figure out dfs_interfacelist */
3537 return offset;
3540 static int
3541 fileexp_dissect_getserverinterfaces_resp (tvbuff_t *tvb, int offset,
3542 packet_info *pinfo, proto_tree *tree,
3543 dcerpc_info *di, uint8_t *drep)
3545 if (di->conformant_run)
3547 return offset;
3551 [in, out] dfs_interfaceList *serverInterfacesP
3553 /* XXX figure out dfs_interfacelist */
3555 MACRO_ST_CLEAR ("GetServerInterfaces reply");
3556 return offset;
3559 static int
3560 fileexp_dissect_setparams_rqst (tvbuff_t *tvb, int offset,
3561 packet_info *pinfo, proto_tree *tree,
3562 dcerpc_info *di, uint8_t *drep)
3564 if (di->conformant_run)
3566 return offset;
3570 [in] unsigned32 Flags,
3571 [in, out] afsConnParams *paramsP
3573 offset = dissect_afsFlags ( tvb, offset, pinfo, tree, di, drep);
3574 offset =
3575 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
3576 dissect_afsConnParams, NDR_POINTER_REF,
3577 "afsConnParams:", -1);
3578 return offset;
3581 static int
3582 fileexp_dissect_setparams_resp (tvbuff_t *tvb, int offset,
3583 packet_info *pinfo, proto_tree *tree,
3584 dcerpc_info *di, uint8_t *drep)
3586 if (di->conformant_run)
3588 return offset;
3592 [in, out] afsConnParams *paramsP
3595 offset =
3596 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
3597 dissect_afsConnParams, NDR_POINTER_REF,
3598 "afsConnParams:", -1);
3599 MACRO_ST_CLEAR ("SetParams reply");
3600 return offset;
3603 static int
3604 fileexp_dissect_makemountpoint_resp (tvbuff_t *tvb, int offset,
3605 packet_info *pinfo, proto_tree *tree,
3606 dcerpc_info *di, uint8_t *drep)
3608 if (di->conformant_run)
3610 return offset;
3614 [out] afsFid *OutFidp,
3615 [out] afsFetchStatus *OutFidStatusp,
3616 [out] afsFetchStatus *OutDirStatusp,
3617 [out] afsVolSync *Syncp
3619 /* afsFid */
3620 offset =
3621 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3622 NDR_POINTER_REF, "afsFid: ", -1);
3623 offset =
3624 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3625 NDR_POINTER_REF, "FetchStatus: ", -1);
3626 offset =
3627 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3628 NDR_POINTER_REF, "FetchStatus: ", -1);
3630 offset =
3631 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3632 NDR_POINTER_REF, "VolSync: ", -1);
3633 MACRO_ST_CLEAR ("MakeMountPoint reply");
3634 return offset;
3637 static int
3638 fileexp_dissect_getstatistics_rqst (tvbuff_t *tvb _U_, int offset,
3639 packet_info *pinfo _U_, proto_tree *tree _U_,
3640 dcerpc_info *di, uint8_t *drep _U_)
3642 if (di->conformant_run)
3644 return offset;
3647 /* nothing for request */
3648 return offset;
3651 static int
3652 fileexp_dissect_getstatistics_resp (tvbuff_t *tvb _U_, int offset,
3653 packet_info *pinfo _U_, proto_tree *tree _U_,
3654 dcerpc_info *di _U_, uint8_t *drep _U_)
3658 [out] afsStatistics *Statisticsp
3660 /* XXX figure out afsStatistics */
3661 return offset;
3664 static int
3665 fileexp_dissect_bulkfetchvv_rqst (tvbuff_t *tvb, int offset,
3666 packet_info *pinfo, proto_tree *tree,
3667 dcerpc_info *di, uint8_t *drep)
3669 uint32_t cellidp_high, cellidp_low, numvols, spare1, spare2;
3671 if (di->conformant_run)
3673 return offset;
3677 [in] afsHyper *cellIdp,
3678 [in] afsBulkVolIDs *VolIDsp,
3679 [in] unsigned32 NumVols,
3680 [in] unsigned32 Flags,
3681 [in] unsigned32 spare1,
3682 [in] unsigned32 spare2,
3684 offset =
3685 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3686 hf_fileexp_cellidp_high, &cellidp_high);
3687 offset =
3688 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3689 hf_fileexp_cellidp_low, &cellidp_low);
3691 col_append_fstr (pinfo->cinfo, COL_INFO, " CellIDp:%u/%u", cellidp_high,
3692 cellidp_low);
3694 /* XXX figure out the afsBulkVolIDS */
3695 offset =
3696 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3697 hf_fileexp_bulkfetchvv_numvols, &numvols);
3699 offset = dissect_afsFlags (tvb, offset, pinfo, tree, di, drep);
3700 offset =
3701 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3702 hf_fileexp_bulkfetchvv_spare1, &spare1);
3703 offset =
3704 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3705 hf_fileexp_bulkfetchvv_spare2, &spare2);
3706 return offset;
3709 static int
3710 fileexp_dissect_bulkfetchvv_resp (tvbuff_t *tvb _U_, int offset,
3711 packet_info *pinfo _U_, proto_tree *tree _U_,
3712 dcerpc_info *di _U_, uint8_t *drep _U_)
3715 [out] afsBulkVVs *VolVVsp,
3716 [out] unsigned32 *spare4
3718 /* XXX need to figure out afsBulkVVs ; */
3719 return offset;
3722 static int
3723 fileexp_dissect_bulkkeepalive_resp (tvbuff_t *tvb, int offset,
3724 packet_info *pinfo, proto_tree *tree,
3725 dcerpc_info *di, uint8_t *drep)
3727 uint32_t spare4;
3729 if (di->conformant_run)
3731 return offset;
3735 [out] unsigned32 *spare4
3738 offset =
3739 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3740 hf_fileexp_bulkkeepalive_spare4, &spare4);
3741 MACRO_ST_CLEAR ("BulkKeepAlive reply");
3742 return offset;
3745 static int
3746 fileexp_dissect_bulkkeepalive_rqst (tvbuff_t *tvb, int offset,
3747 packet_info *pinfo, proto_tree *tree,
3748 dcerpc_info *di, uint8_t *drep)
3750 uint32_t numexecfids, spare1, spare2;
3752 if (di->conformant_run)
3754 return offset;
3758 [in] afsBulkFEX *KAFEXp,
3759 [in] unsigned32 numExecFids,
3760 [in] unsigned32 Flags,
3761 [in] unsigned32 spare1,
3762 [in] unsigned32 spare2,
3764 /* XXX figure out afsBulkFEX */
3765 offset =
3766 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3767 hf_fileexp_bulkkeepalive_numexecfids, &numexecfids);
3768 offset =
3769 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
3770 NDR_POINTER_REF, "afsFlags:", -1);
3771 offset =
3772 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3773 hf_fileexp_bulkkeepalive_spare1, &spare1);
3774 offset =
3775 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3776 hf_fileexp_bulkkeepalive_spare2, &spare2);
3777 return offset;
3780 static int
3781 fileexp_dissect_bulkfetchstatus_rqst (tvbuff_t *tvb, int offset,
3782 packet_info *pinfo, proto_tree *tree,
3783 dcerpc_info *di, uint8_t *drep)
3785 uint32_t offsetp_high, offsetp_low, size;
3787 if (di->conformant_run)
3789 return offset;
3794 [in] afsFid *DirFidp,
3795 [in] afsHyper *Offsetp,
3796 [in] unsigned32 Size,
3797 [in] afsHyper *minVVp,
3798 [in] unsigned32 Flags,
3801 offset =
3802 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3803 NDR_POINTER_REF, "afsFid: ", -1);
3804 offset =
3805 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3806 hf_fileexp_offsetp_high, &offsetp_high);
3807 offset =
3808 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3809 hf_fileexp_offsetp_low, &offsetp_low);
3811 col_append_fstr (pinfo->cinfo, COL_INFO, " Offsetp:%u/%u", offsetp_high,
3812 offsetp_low);
3813 offset =
3814 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3815 hf_fileexp_bulkfetchstatus_size, &size);
3816 offset =
3817 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
3818 NDR_POINTER_REF, "MinVVp:", -1);
3819 offset = dissect_afsFlags (tvb, offset, pinfo, tree, di, drep);
3821 return offset;
3824 static int
3825 fileexp_dissect_bulkfetchstatus_resp (tvbuff_t *tvb, int offset,
3826 packet_info *pinfo, proto_tree *tree,
3827 dcerpc_info *di, uint8_t *drep)
3829 if (di->conformant_run)
3831 return offset;
3835 [out] BulkStat *bulkstats,
3836 [out] afsHyper *NextOffsetp,
3837 [out] afsFetchStatus *OutDirStatusp,
3838 [out] afsToken *OutTokenp,
3839 [out] afsVolSync *Syncp,
3840 [out] pipe_t *dirStream
3843 offset =
3844 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsBulkStat,
3845 NDR_POINTER_REF, "BulkStat: ", -1);
3846 /* Under construction. The packet seems to have the pipe_t before the rest of the data listed in idl. */
3848 #if 0
3849 offset =
3850 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3851 hf_fileexp_nextoffsetp_high, &nextoffsetp_high);
3852 offset =
3853 dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3854 hf_fileexp_nextoffsetp_low, &nextoffsetp_low);
3856 col_append_fstr (pinfo->cinfo, COL_INFO, " NextOffsetp:%u/%u",
3857 nextoffsetp_high, nextoffsetp_low);
3858 offset =
3859 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3860 NDR_POINTER_REF, "FetchStatus: ", -1);
3861 offset =
3862 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afstoken,
3863 NDR_POINTER_REF, "afsToken: ", -1);
3864 offset =
3865 dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3866 NDR_POINTER_REF, "VolSync: ", -1);
3867 #endif
3868 /* XXX figure out pipe_t */
3870 return offset;
3873 static const dcerpc_sub_dissector fileexp_dissectors[] = {
3874 { 0, "SetContext", fileexp_dissect_setcontext_rqst, fileexp_dissect_setcontext_resp} ,
3875 { 1, "LookupRoot", fileexp_dissect_lookuproot_rqst, fileexp_dissect_lookuproot_resp} ,
3876 { 2, "FetchData", fileexp_dissect_fetchdata_rqst, fileexp_dissect_fetchdata_resp} ,
3877 { 3, "FetchAcl", fileexp_dissect_fetchacl_rqst, fileexp_dissect_fetchacl_resp} ,
3878 { 4, "FetchStatus", fileexp_dissect_fetchstatus_rqst, fileexp_dissect_fetchstatus_resp} ,
3879 { 5, "StoreData", fileexp_dissect_storedata_rqst, fileexp_dissect_storedata_resp} ,
3880 { 6, "StoreAcl", fileexp_dissect_storeacl_rqst, fileexp_dissect_storeacl_resp} ,
3881 { 7, "StoreStatus", fileexp_dissect_storestatus_rqst, fileexp_dissect_storestatus_resp} ,
3882 { 8, "RemoveFile", fileexp_dissect_removefile_rqst, fileexp_dissect_removefile_resp} ,
3883 { 9, "CreateFile", fileexp_dissect_createfile_rqst, fileexp_dissect_createfile_resp} ,
3884 { 10, "Rename", fileexp_dissect_rename_rqst, fileexp_dissect_rename_resp} ,
3885 { 11, "Symlink", fileexp_dissect_symlink_rqst, fileexp_dissect_symlink_resp} ,
3886 { 12, "HardLink", fileexp_dissect_hardlink_rqst, fileexp_dissect_hardlink_resp} ,
3887 { 13, "MakeDir", fileexp_dissect_makedir_rqst, fileexp_dissect_makedir_resp} ,
3888 { 14, "RemoveDir", fileexp_dissect_removedir_rqst, fileexp_dissect_removedir_resp} ,
3889 { 15, "Readdir", fileexp_dissect_readdir_rqst, fileexp_dissect_readdir_resp} ,
3890 { 16, "Lookup", fileexp_dissect_lookup_rqst, fileexp_dissect_lookup_resp} ,
3891 { 17, "GetToken", fileexp_dissect_gettoken_rqst, fileexp_dissect_gettoken_resp} ,
3892 { 18, "ReleaseTokens", fileexp_dissect_releasetokens_rqst, fileexp_dissect_releasetokens_resp} ,
3893 { 19, "GetTime", fileexp_dissect_gettime_rqst, fileexp_dissect_gettime_resp} ,
3894 { 20, "MakeMountPoint", fileexp_dissect_makemountpoint_rqst, fileexp_dissect_makemountpoint_resp} ,
3895 { 21, "GetStatistics", fileexp_dissect_getstatistics_rqst, fileexp_dissect_getstatistics_resp} ,
3896 { 22, "BulkFetchVV", fileexp_dissect_bulkfetchvv_rqst, fileexp_dissect_bulkfetchvv_resp} ,
3897 { 23, "BulkKeepAlive", fileexp_dissect_bulkkeepalive_rqst, fileexp_dissect_bulkkeepalive_resp} ,
3898 { 24, "ProcessQuota", fileexp_dissect_processquota_rqst, fileexp_dissect_processquota_resp} ,
3899 { 25, "GetServerInterfaces", fileexp_dissect_getserverinterfaces_rqst, fileexp_dissect_getserverinterfaces_resp} ,
3900 { 26, "SetParams", fileexp_dissect_setparams_rqst, fileexp_dissect_setparams_resp} ,
3901 { 27, "BulkFetchStatus", fileexp_dissect_bulkfetchstatus_rqst, fileexp_dissect_bulkfetchstatus_resp} ,
3902 { 0, NULL, NULL, NULL}
3906 void
3907 proto_register_fileexp (void)
3910 static hf_register_info hf[] = {
3911 { &hf_error_st,
3912 { "AFS4Int Error Status Code", "fileexp.st",
3913 FT_UINT32, BASE_DEC, NULL, 0x0,
3914 NULL, HFILL}
3916 { &hf_fileexp_flags,
3917 { "DFS Flags", "fileexp.flags",
3918 FT_UINT32, BASE_DEC, NULL, 0x0,
3919 NULL, HFILL}
3921 { &hf_fileexp_tn_string,
3922 { "String", "fileexp.string",
3923 FT_STRING, BASE_NONE, NULL, 0x0,
3924 NULL, HFILL}
3926 { &hf_fileexp_opnum,
3927 { "Operation", "fileexp.opnum",
3928 FT_UINT16, BASE_DEC, NULL, 0x0,
3929 NULL, HFILL}
3931 { &hf_fileexp_setcontext_rqst_epochtime,
3932 { "EpochTime", "fileexp.setcontext_rqst_epochtime",
3933 FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0,
3934 NULL, HFILL}
3936 { &hf_fileexp_setcontext_rqst_clientsizesattrs,
3937 { "ClientSizeAttrs", "fileexp.setcontext_clientsizesattrs",
3938 FT_UINT32, BASE_DEC, NULL, 0x0,
3939 NULL, HFILL}
3941 { &hf_fileexp_setcontext_rqst_parm7,
3942 { "Parm7", "fileexp.setcontext.parm7",
3943 FT_UINT32, BASE_DEC, NULL, 0x0,
3944 NULL, HFILL}
3946 { &hf_fileexp_acl_len,
3947 { "Acl Length", "fileexp.acl_len",
3948 FT_UINT32, BASE_DEC, NULL, 0x0,
3949 NULL, HFILL}
3951 { &hf_fileexp_acltype,
3952 { "Acl type", "fileexp.acltype",
3953 FT_UINT32, BASE_DEC, NULL, 0x0,
3954 NULL, HFILL}
3956 { &hf_fileexp_minvvp_high,
3957 { "minVVp high", "fileexp.minvvp_high",
3958 FT_UINT32, BASE_DEC, NULL, 0x0,
3959 NULL, HFILL}
3961 { &hf_fileexp_minvvp_low,
3962 { "minVVp low", "fileexp.minvvp_low",
3963 FT_UINT32, BASE_DEC, NULL, 0x0,
3964 NULL, HFILL}
3966 { &hf_fileexp_accesstime_msec,
3967 { "Access time (msec)", "fileexp.accesstime_msec",
3968 FT_UINT32, BASE_DEC, NULL, 0x0,
3969 NULL, HFILL}
3971 { &hf_fileexp_accesstime_sec,
3972 { "Access time (sec)", "fileexp.accesstime_sec",
3973 FT_UINT32, BASE_DEC, NULL, 0x0,
3974 NULL, HFILL}
3976 { &hf_fileexp_aclexpirationtime,
3977 { "Acl expiration time", "fileexp.aclexpirationtime",
3978 FT_UINT32, BASE_DEC, NULL, 0x0,
3979 NULL, HFILL}
3981 { &hf_fileexp_agtypeunique,
3982 { "agtypeunique", "fileexp.agtypeunique",
3983 FT_UINT32, BASE_DEC, NULL, 0x0,
3984 NULL, HFILL}
3986 { &hf_fileexp_anonymousaccess,
3987 { "Anonymous Access", "fileexp.anonymousaccess",
3988 FT_UINT32, BASE_DEC, NULL, 0x0,
3989 NULL, HFILL}
3991 { &hf_fileexp_author,
3992 { "Author", "fileexp.author",
3993 FT_UINT32, BASE_DEC, NULL, 0x0,
3994 NULL, HFILL}
3996 { &hf_fileexp_blocksused,
3997 { "Blocks used", "fileexp.blocksused",
3998 FT_UINT32, BASE_DEC, NULL, 0x0,
3999 NULL, HFILL}
4001 { &hf_fileexp_calleraccess,
4002 { "Caller access", "fileexp.calleraccess",
4003 FT_UINT32, BASE_DEC, NULL, 0x0,
4004 NULL, HFILL}
4006 { &hf_fileexp_changetime_msec,
4007 { "Change time (msec)", "fileexp.changetime_msec",
4008 FT_UINT32, BASE_DEC, NULL, 0x0,
4009 NULL, HFILL}
4011 { &hf_fileexp_changetime_sec,
4012 { "Change time (sec)", "fileexp.changetime_sec",
4013 FT_UINT32, BASE_DEC, NULL, 0x0,
4014 NULL, HFILL}
4016 { &hf_fileexp_clientspare1,
4017 { "Client spare1", "fileexp.clientspare1",
4018 FT_UINT32, BASE_DEC, NULL, 0x0,
4019 NULL, HFILL}
4021 { &hf_fileexp_dataversion_high,
4022 { "Data version (high)", "fileexp.dataversion_high",
4023 FT_UINT32, BASE_DEC, NULL, 0x0,
4024 NULL, HFILL}
4026 { &hf_fileexp_dataversion_low,
4027 { "Data version (low)", "fileexp.dataversion_low",
4028 FT_UINT32, BASE_DEC, NULL, 0x0,
4029 NULL, HFILL}
4031 { &hf_fileexp_devicenumber,
4032 { "Device number", "fileexp.devicenumber",
4033 FT_UINT32, BASE_DEC, NULL, 0x0,
4034 NULL, HFILL}
4036 { &hf_fileexp_devicenumberhighbits,
4037 { "Device number high bits", "fileexp.devicenumberhighbits",
4038 FT_UINT32, BASE_DEC, NULL, 0x0,
4039 NULL, HFILL}
4041 { &hf_fileexp_filetype,
4042 { "File type", "fileexp.filetype",
4043 FT_UINT32, BASE_DEC, NULL, 0x0,
4044 NULL, HFILL}
4046 { &hf_fileexp_group,
4047 { "Group", "fileexp.group",
4048 FT_UINT32, BASE_DEC, NULL, 0x0,
4049 NULL, HFILL}
4051 { &hf_fileexp_himaxspare,
4052 { "Hi max spare", "fileexp.himaxspare",
4053 FT_UINT32, BASE_DEC, NULL, 0x0,
4054 NULL, HFILL}
4056 { &hf_fileexp_interfaceversion,
4057 { "Interface version", "fileexp.interfaceversion",
4058 FT_UINT32, BASE_DEC, NULL, 0x0,
4059 NULL, HFILL}
4061 { &hf_fileexp_length_high,
4062 { "Length high", "fileexp.length_high",
4063 FT_UINT32, BASE_DEC, NULL, 0x0,
4064 NULL, HFILL}
4066 { &hf_fileexp_length_low,
4067 { "Length low", "fileexp.length_low",
4068 FT_UINT32, BASE_DEC, NULL, 0x0,
4069 NULL, HFILL}
4071 { &hf_fileexp_linkcount,
4072 { "Link count", "fileexp.linkcount",
4073 FT_UINT32, BASE_DEC, NULL, 0x0,
4074 NULL, HFILL}
4076 { &hf_fileexp_lomaxspare,
4077 { "Lo max spare", "fileexp.lomaxspare",
4078 FT_UINT32, BASE_DEC, NULL, 0x0,
4079 NULL, HFILL}
4081 { &hf_fileexp_mode,
4082 { "Mode", "fileexp.mode",
4083 FT_UINT32, BASE_DEC, NULL, 0x0,
4084 NULL, HFILL}
4086 { &hf_fileexp_modtime_msec,
4087 { "Modify time (msec)", "fileexp.modtime_msec",
4088 FT_UINT32, BASE_DEC, NULL, 0x0,
4089 NULL, HFILL}
4091 { &hf_fileexp_modtime_sec,
4092 { "Modify time (sec)", "fileexp.modtime_sec",
4093 FT_UINT32, BASE_DEC, NULL, 0x0,
4094 NULL, HFILL}
4096 { &hf_fileexp_objectuuid,
4097 { "Object uuid", "fileexp.objectuuid",
4098 FT_GUID, BASE_NONE, NULL, 0x0,
4099 NULL, HFILL}
4101 { &hf_fileexp_owner,
4102 { "Owner", "fileexp.owner",
4103 FT_UINT32, BASE_DEC, NULL, 0x0,
4104 NULL, HFILL}
4106 { &hf_fileexp_parentunique,
4107 { "Parent unique", "fileexp.parentunique",
4108 FT_UINT32, BASE_DEC, NULL, 0x0,
4109 NULL, HFILL}
4111 { &hf_fileexp_parentvnode,
4112 { "Parent vnode", "fileexp.parentvnode",
4113 FT_UINT32, BASE_DEC, NULL, 0x0,
4114 NULL, HFILL}
4116 { &hf_fileexp_pathconfspare,
4117 { "Path conf spare", "fileexp.pathconfspare",
4118 FT_UINT32, BASE_DEC, NULL, 0x0,
4119 NULL, HFILL}
4121 { &hf_fileexp_servermodtime_msec,
4122 { "Server modify time (msec)", "fileexp.servermodtime_msec",
4123 FT_UINT32, BASE_DEC, NULL, 0x0,
4124 NULL, HFILL}
4126 { &hf_fileexp_servermodtime_sec,
4127 { "Server modify time (sec)", "fileexp.servermodtime_sec",
4128 FT_UINT32, BASE_DEC, NULL, 0x0,
4129 NULL, HFILL}
4131 { &hf_fileexp_spare4,
4132 { "Spare4", "fileexp.spare4",
4133 FT_UINT32, BASE_DEC, NULL, 0x0,
4134 NULL, HFILL}
4136 { &hf_fileexp_spare5,
4137 { "Spare5", "fileexp.spare5",
4138 FT_UINT32, BASE_DEC, NULL, 0x0,
4139 NULL, HFILL}
4141 { &hf_fileexp_spare6,
4142 { "Spare6", "fileexp.spare6",
4143 FT_UINT32, BASE_DEC, NULL, 0x0,
4144 NULL, HFILL}
4146 { &hf_fileexp_typeuuid,
4147 { "Type uuid", "fileexp.typeuuid",
4148 FT_GUID, BASE_NONE, NULL, 0x0,
4149 NULL, HFILL}
4151 { &hf_fileexp_volid_hi,
4152 { "Vol id hi", "fileexp.volid_hi",
4153 FT_UINT32, BASE_DEC, NULL, 0x0,
4154 NULL, HFILL}
4156 { &hf_fileexp_volid_low,
4157 { "Vol id low", "fileexp.volid_low",
4158 FT_UINT32, BASE_DEC, NULL, 0x0,
4159 NULL, HFILL}
4161 { &hf_fileexp_vvage,
4162 { "Vvage", "fileexp.vvage",
4163 FT_UINT32, BASE_DEC, NULL, 0x0,
4164 NULL, HFILL}
4166 { &hf_fileexp_vv_hi,
4167 { "Vv hi", "fileexp.vv_hi",
4168 FT_UINT32, BASE_DEC, NULL, 0x0,
4169 NULL, HFILL}
4171 { &hf_fileexp_vv_low,
4172 { "Vv low", "fileexp.vv_low",
4173 FT_UINT32, BASE_DEC, NULL, 0x0,
4174 NULL, HFILL}
4176 { &hf_fileexp_vvpingage,
4177 { "Vv pingage", "fileexp.vvpingage",
4178 FT_UINT32, BASE_DEC, NULL, 0x0,
4179 NULL, HFILL}
4181 { &hf_fileexp_vvspare1,
4182 { "Vv spare1", "fileexp.vvspare1",
4183 FT_UINT32, BASE_DEC, NULL, 0x0,
4184 NULL, HFILL}
4186 { &hf_fileexp_vvspare2,
4187 { "Vv spare2", "fileexp.vvspare2",
4188 FT_UINT32, BASE_DEC, NULL, 0x0,
4189 NULL, HFILL}
4191 { &hf_fileexp_beginrange,
4192 { "Begin range", "fileexp.beginrange",
4193 FT_UINT32, BASE_DEC, NULL, 0x0,
4194 NULL, HFILL}
4196 { &hf_fileexp_beginrangeext,
4197 { "Begin range ext", "fileexp.beginrangeext",
4198 FT_UINT32, BASE_DEC, NULL, 0x0,
4199 NULL, HFILL}
4201 { &hf_fileexp_endrange,
4202 { "End range", "fileexp.endrange",
4203 FT_UINT32, BASE_DEC, NULL, 0x0,
4204 NULL, HFILL}
4206 { &hf_fileexp_endrangeext,
4207 { "End range ext", "fileexp.endrangeext",
4208 FT_UINT32, BASE_DEC, NULL, 0x0,
4209 NULL, HFILL}
4211 { &hf_fileexp_expirationtime,
4212 { "Expiration time", "fileexp.expirationtime",
4213 FT_UINT32, BASE_DEC, NULL, 0x0,
4214 NULL, HFILL}
4216 { &hf_fileexp_tokenid_hi,
4217 { "Tokenid hi", "fileexp.tokenid_hi",
4218 FT_UINT32, BASE_DEC, NULL, 0x0,
4219 NULL, HFILL}
4221 { &hf_fileexp_tokenid_low,
4222 { "Tokenid low", "fileexp.tokenid_low",
4223 FT_UINT32, BASE_DEC, NULL, 0x0,
4224 NULL, HFILL}
4226 { &hf_fileexp_type_hi,
4227 { "Type hi", "fileexp.type_hi",
4228 FT_UINT32, BASE_DEC, NULL, 0x0,
4229 NULL, HFILL}
4231 { &hf_fileexp_type_low,
4232 { "Type low", "fileexp.type_low",
4233 FT_UINT32, BASE_DEC, NULL, 0x0,
4234 NULL, HFILL}
4236 { &hf_fileexp_tn_length,
4237 { "Tn length", "fileexp.tn_length",
4238 FT_UINT16, BASE_DEC, NULL, 0x0,
4239 NULL, HFILL}
4241 { &hf_fileexp_tn_tag,
4242 { "Tn tag", "fileexp.tn_tag",
4243 FT_UINT32, BASE_DEC, NULL, 0x0,
4244 NULL, HFILL}
4246 { &hf_fileexp_storestatus_accesstime_sec,
4247 { "Store status access time (sec)", "fileexp.storestatus_accesstime_sec",
4248 FT_UINT32, BASE_DEC, NULL, 0x0,
4249 NULL, HFILL}
4251 { &hf_fileexp_storestatus_accesstime_usec,
4252 { "Store status access time (usec)", "fileexp.storestatus_accesstime_usec",
4253 FT_UINT32, BASE_DEC, NULL, 0x0,
4254 NULL, HFILL}
4256 { &hf_fileexp_storestatus_changetime_sec,
4257 { "Store status change time (sec)", "fileexp.storestatus_changetime_sec",
4258 FT_UINT32, BASE_DEC, NULL, 0x0,
4259 NULL, HFILL}
4261 { &hf_fileexp_storestatus_changetime_usec,
4262 { "Store status change time (usec)", "fileexp.storestatus_changetime_usec",
4263 FT_UINT32, BASE_DEC, NULL, 0x0,
4264 NULL, HFILL}
4266 { &hf_fileexp_storestatus_clientspare1,
4267 { "Store Status client spare1", "fileexp.storestatus_clientspare1",
4268 FT_UINT32, BASE_DEC, NULL, 0x0,
4269 NULL, HFILL}
4271 { &hf_fileexp_storestatus_cmask,
4272 { "Store status cmask", "fileexp.storestatus_cmask",
4273 FT_UINT32, BASE_DEC, NULL, 0x0,
4274 NULL, HFILL}
4276 { &hf_fileexp_storestatus_devicenumber,
4277 { "Store status device number", "fileexp.storestatus_devicenumber",
4278 FT_UINT32, BASE_DEC, NULL, 0x0,
4279 NULL, HFILL}
4281 { &hf_fileexp_storestatus_devicenumberhighbits,
4282 { "Store status device number high bits", "fileexp.storestatus_devicenumberhighbits",
4283 FT_UINT32, BASE_DEC, NULL, 0x0,
4284 NULL, HFILL}
4286 { &hf_fileexp_storestatus_devicetype,
4287 { "Store status device type", "fileexp.storestatus_devicetype",
4288 FT_UINT32, BASE_DEC, NULL, 0x0,
4289 NULL, HFILL}
4291 { &hf_fileexp_storestatus_group,
4292 { "Store status group", "fileexp.storestatus_group",
4293 FT_UINT32, BASE_DEC, NULL, 0x0,
4294 NULL, HFILL}
4296 { &hf_fileexp_storestatus_length_high,
4297 { "Store status length high", "fileexp.storestatus_length_high",
4298 FT_UINT32, BASE_DEC, NULL, 0x0,
4299 NULL, HFILL}
4301 { &hf_fileexp_storestatus_length_low,
4302 { "Store status length low", "fileexp.storestatus_length_low",
4303 FT_UINT32, BASE_DEC, NULL, 0x0,
4304 NULL, HFILL}
4306 { &hf_fileexp_storestatus_mask,
4307 { "Store status mask", "fileexp.storestatus_mask",
4308 FT_UINT32, BASE_DEC, NULL, 0x0,
4309 NULL, HFILL}
4311 { &hf_fileexp_storestatus_mode,
4312 { "Store status mode", "fileexp.storestatus_mode",
4313 FT_UINT32, BASE_DEC, NULL, 0x0,
4314 NULL, HFILL}
4316 { &hf_fileexp_storestatus_modtime_sec,
4317 { "Store status modify time (sec)", "fileexp.storestatus_modtime_sec",
4318 FT_UINT32, BASE_DEC, NULL, 0x0,
4319 NULL, HFILL}
4321 { &hf_fileexp_storestatus_modtime_usec,
4322 { "Store status modify time (usec)", "fileexp.storestatus_modtime_usec",
4323 FT_UINT32, BASE_DEC, NULL, 0x0,
4324 NULL, HFILL}
4326 { &hf_fileexp_storestatus_owner,
4327 { "Store status owner", "fileexp.storestatus_owner",
4328 FT_UINT32, BASE_DEC, NULL, 0x0,
4329 NULL, HFILL}
4331 { &hf_fileexp_storestatus_spare1,
4332 { "Store status spare1", "fileexp.storestatus_spare1",
4333 FT_UINT32, BASE_DEC, NULL, 0x0,
4334 NULL, HFILL}
4336 { &hf_fileexp_storestatus_spare2,
4337 { "Store status spare2", "fileexp.storestatus_spare2",
4338 FT_UINT32, BASE_DEC, NULL, 0x0,
4339 NULL, HFILL}
4341 { &hf_fileexp_storestatus_spare3,
4342 { "Store status spare3", "fileexp.storestatus_spare3",
4343 FT_UINT32, BASE_DEC, NULL, 0x0,
4344 NULL, HFILL}
4346 { &hf_fileexp_storestatus_spare4,
4347 { "Store status spare4", "fileexp.storestatus_spare4",
4348 FT_UINT32, BASE_DEC, NULL, 0x0,
4349 NULL, HFILL}
4351 { &hf_fileexp_storestatus_spare5,
4352 { "Store status spare5", "fileexp.storestatus_spare5",
4353 FT_UINT32, BASE_DEC, NULL, 0x0,
4354 NULL, HFILL}
4356 { &hf_fileexp_storestatus_spare6,
4357 { "Store status spare6", "fileexp.storestatus_spare6",
4358 FT_UINT32, BASE_DEC, NULL, 0x0,
4359 NULL, HFILL}
4361 { &hf_fileexp_storestatus_trunc_high,
4362 { "Store status trunc high", "fileexp.storestatus_trunc_high",
4363 FT_UINT32, BASE_DEC, NULL, 0x0,
4364 NULL, HFILL}
4366 { &hf_fileexp_storestatus_trunc_low,
4367 { "Store status trunc low", "fileexp.storestatus_trunc_low",
4368 FT_UINT32, BASE_DEC, NULL, 0x0,
4369 NULL, HFILL}
4371 { &hf_fileexp_storestatus_typeuuid,
4372 { "Store status type uuid", "fileexp.storestatus_typeuuid",
4373 FT_GUID, BASE_NONE, NULL, 0x0,
4374 NULL, HFILL}
4376 { &hf_fileexp_l_end_pos,
4377 { "l_end_pos", "fileexp.l_end_pos",
4378 FT_UINT32, BASE_DEC, NULL, 0x0,
4379 NULL, HFILL}
4381 { &hf_fileexp_l_end_pos_ext,
4382 { "l_end_pos_ext", "fileexp.l_end_pos_ext",
4383 FT_UINT32, BASE_DEC, NULL, 0x0,
4384 NULL, HFILL}
4386 { &hf_fileexp_l_fstype,
4387 { "l_fstype", "fileexp.l_fstype",
4388 FT_UINT32, BASE_DEC, NULL, 0x0,
4389 NULL, HFILL}
4391 { &hf_fileexp_l_pid,
4392 { "l_pid", "fileexp.l_pid",
4393 FT_UINT32, BASE_DEC, NULL, 0x0,
4394 NULL, HFILL}
4396 { &hf_fileexp_l_start_pos,
4397 { "l_start_pos", "fileexp.l_start_pos",
4398 FT_UINT32, BASE_DEC, NULL, 0x0,
4399 NULL, HFILL}
4401 { &hf_fileexp_l_start_pos_ext,
4402 { "l_start_pos_ext", "fileexp.l_start_pos_ext",
4403 FT_UINT32, BASE_DEC, NULL, 0x0,
4404 NULL, HFILL}
4406 { &hf_fileexp_l_sysid,
4407 { "l_sysid", "fileexp.l_sysid",
4408 FT_UINT32, BASE_DEC, NULL, 0x0,
4409 NULL, HFILL}
4411 { &hf_fileexp_l_type,
4412 { "l_type", "fileexp.l_type",
4413 FT_UINT32, BASE_DEC, NULL, 0x0,
4414 NULL, HFILL}
4416 { &hf_fileexp_l_whence,
4417 { "l_whence", "fileexp.l_whence",
4418 FT_UINT32, BASE_DEC, NULL, 0x0,
4419 NULL, HFILL}
4421 { &hf_afsconnparams_mask,
4422 { "afs conn params mask", "fileexp.afs_connparams_mask",
4423 FT_UINT32, BASE_DEC, NULL, 0x0,
4424 NULL, HFILL}
4426 { &hf_afsconnparams_values,
4427 { "afs conn params values", "fileexp.afs_connparams_values",
4428 FT_UINT32, BASE_DEC, NULL, 0x0,
4429 NULL, HFILL}
4431 { &hf_fileexp_afsFid_cell_high,
4432 { "Cell High", "fileexp.afsFid.cell_high",
4433 FT_UINT32, BASE_HEX, NULL, 0x0,
4434 "afsFid Cell High", HFILL}
4436 { &hf_fileexp_afsFid_cell_low,
4437 { "Cell Low", "fileexp.afsFid.cell_low",
4438 FT_UINT32, BASE_HEX, NULL, 0x0,
4439 "afsFid Cell Low", HFILL}
4441 { &hf_fileexp_afsFid_volume_high,
4442 { "Volume High", "fileexp.afsFid.volume_high",
4443 FT_UINT32, BASE_HEX, NULL, 0x0,
4444 "afsFid Volume High", HFILL}
4446 { &hf_fileexp_afsFid_volume_low,
4447 { "Volume Low", "fileexp.afsFid.volume_low",
4448 FT_UINT32, BASE_HEX, NULL, 0x0,
4449 "afsFid Volume Low", HFILL}
4451 { &hf_fileexp_afsFid_Vnode,
4452 { "Vnode", "fileexp.afsFid.Vnode",
4453 FT_UINT32, BASE_HEX, NULL, 0x0,
4454 "afsFid Vnode", HFILL}
4456 { &hf_fileexp_afsFid_Unique,
4457 { "Unique", "fileexp.afsFid.Unique",
4458 FT_UINT32, BASE_HEX, NULL, 0x0,
4459 "afsFid Unique", HFILL}
4461 { &hf_fileexp_afsNetAddr_type,
4462 { "Type", "fileexp.afsNetAddr.type",
4463 FT_UINT16, BASE_DEC, NULL, 0x0,
4464 NULL, HFILL}
4466 { &hf_fileexp_afsNetAddr_data,
4467 { "IP Data", "fileexp.afsNetAddr.data",
4468 FT_UINT8, BASE_DEC, NULL, 0x0,
4469 NULL, HFILL}
4471 { &hf_fileexp_position_high,
4472 { "Position High", "fileexp.position_high",
4473 FT_UINT32, BASE_HEX, NULL, 0x0,
4474 NULL, HFILL}
4476 { &hf_fileexp_position_low,
4477 { "Position Low", "fileexp.position_low",
4478 FT_UINT32, BASE_HEX, NULL, 0x0,
4479 NULL, HFILL}
4481 { &hf_fileexp_afsreturndesc_tokenid_high,
4482 { "Token id High", "fileexp.afsreturndesc_tokenid_high",
4483 FT_UINT32, BASE_HEX, NULL, 0x0,
4484 NULL, HFILL}
4486 { &hf_fileexp_afsreturndesc_tokenid_low,
4487 { "Token id low", "fileexp.afsreturndesc_tokenid_low",
4488 FT_UINT32, BASE_HEX, NULL, 0x0,
4489 NULL, HFILL}
4491 { &hf_fileexp_afsreturndesc_type_high,
4492 { "Type high", "fileexp.type_high",
4493 FT_UINT32, BASE_HEX, NULL, 0x0,
4494 NULL, HFILL}
4496 { &hf_fileexp_afsreturndesc_type_low,
4497 { "Type low", "fileexp.type_low",
4498 FT_UINT32, BASE_HEX, NULL, 0x0,
4499 NULL, HFILL}
4501 { &hf_fileexp_offsetp_high,
4502 { "offset high", "fileexp.offset_high",
4503 FT_UINT32, BASE_HEX, NULL, 0x0,
4504 NULL, HFILL}
4506 { &hf_fileexp_offsetp_low,
4507 { "offset high", "fileexp.offset_high",
4508 FT_UINT32, BASE_HEX, NULL, 0x0,
4509 NULL, HFILL}
4511 { &hf_fileexp_nextoffsetp_high,
4512 { "next offset high", "fileexp.nextoffset_high",
4513 FT_UINT32, BASE_HEX, NULL, 0x0,
4514 NULL, HFILL}
4516 { &hf_fileexp_nextoffsetp_low,
4517 { "next offset low", "fileexp.nextoffset_low",
4518 FT_UINT32, BASE_HEX, NULL, 0x0,
4519 NULL, HFILL}
4521 { &hf_fileexp_returntokenidp_high,
4522 { "return token idp high", "fileexp.returntokenidp_high",
4523 FT_UINT32, BASE_HEX, NULL, 0x0,
4524 NULL, HFILL}
4526 { &hf_fileexp_returntokenidp_low,
4527 { "return token idp low", "fileexp.returntokenidp_low",
4528 FT_UINT32, BASE_HEX, NULL, 0x0,
4529 NULL, HFILL}
4531 { &hf_fileexp_cellidp_high,
4532 { "cellidp high", "fileexp.cellidp_high",
4533 FT_UINT32, BASE_HEX, NULL, 0x0,
4534 NULL, HFILL}
4536 { &hf_fileexp_cellidp_low,
4537 { "cellidp low", "fileexp.cellidp_low",
4538 FT_UINT32, BASE_HEX, NULL, 0x0,
4539 NULL, HFILL}
4541 { &hf_afserrorstatus_st,
4542 { "AFS Error Code", "fileexp.afserrortstatus_st",
4543 FT_UINT32, BASE_HEX, NULL, 0x0,
4544 NULL, HFILL}
4546 { &hf_fileexp_length,
4547 { "Length", "fileexp.length",
4548 FT_UINT32, BASE_HEX, NULL, 0x0,
4549 NULL, HFILL}
4551 { &hf_fileexp_afsTaggedPath_tp_chars,
4552 { "AFS Tagged Path", "fileexp.TaggedPath_tp_chars",
4553 FT_STRING, BASE_NONE, NULL, 0x0,
4554 NULL, HFILL}
4556 { &hf_fileexp_afsTaggedPath_tp_tag,
4557 { "AFS Tagged Path Name", "fileexp.TaggedPath_tp_tag",
4558 FT_UINT32, BASE_HEX, NULL, 0x0,
4559 NULL, HFILL}
4561 { &hf_fileexp_afsacl_uuid1,
4562 { "AFS ACL UUID1", "fileexp.afsacl_uuid1",
4563 FT_GUID, BASE_NONE, NULL, 0x0,
4564 "UUID", HFILL}
4566 { &hf_fileexp_bulkfetchstatus_size,
4567 { "BulkFetchStatus Size", "fileexp.bulkfetchstatus_size",
4568 FT_UINT32, BASE_HEX, NULL, 0x0,
4569 NULL, HFILL}
4571 { &hf_fileexp_bulkfetchvv_numvols,
4572 { "BulkFetchVv num vols", "fileexp.bulkfetchvv_numvols",
4573 FT_UINT32, BASE_HEX, NULL, 0x0,
4574 NULL, HFILL}
4576 { &hf_fileexp_bulkfetchvv_spare1,
4577 { "BulkFetchVv spare1", "fileexp.bulkfetchvv_spare1",
4578 FT_UINT32, BASE_HEX, NULL, 0x0,
4579 NULL, HFILL}
4581 { &hf_fileexp_bulkfetchvv_spare2,
4582 { "BulkFetchVv spare2", "fileexp.bulkfetchvv_spare2",
4583 FT_UINT32, BASE_HEX, NULL, 0x0,
4584 NULL, HFILL}
4586 { &hf_fileexp_bulkkeepalive_numexecfids,
4587 { "BulkKeepAlive numexecfids", "fileexp.bulkkeepalive_numexecfids",
4588 FT_UINT32, BASE_HEX, NULL, 0x0,
4589 NULL, HFILL}
4591 { &hf_fileexp_bulkkeepalive_spare4,
4592 { "BulkKeepAlive spare4", "fileexp.bulkfetchkeepalive_spare4",
4593 FT_UINT32, BASE_HEX, NULL, 0x0,
4594 NULL, HFILL}
4596 { &hf_fileexp_bulkkeepalive_spare2,
4597 { "BulkKeepAlive spare2", "fileexp.bulkfetchkeepalive_spare2",
4598 FT_UINT32, BASE_HEX, NULL, 0x0,
4599 NULL, HFILL}
4601 { &hf_fileexp_bulkkeepalive_spare1,
4602 { "BulkFetch KeepAlive spare1", "fileexp.bulkfetchkeepalive_spare1",
4603 FT_UINT32, BASE_HEX, NULL, 0x0,
4604 NULL, HFILL}
4606 { &hf_fileexp_afsacl_defaultcell_uuid,
4607 { "Default Cell UUID", "fileexp.defaultcell_uuid",
4608 FT_GUID, BASE_NONE, NULL, 0x0,
4609 NULL, HFILL}
4611 { &hf_fileexp_afsuuid_uuid,
4612 { "AFS UUID", "fileexp.uuid",
4613 FT_GUID, BASE_NONE, NULL, 0x0,
4614 NULL, HFILL}
4616 { &hf_fileexp_gettime_syncdispersion,
4617 { "GetTime Syncdispersion", "fileexp.gettime_syncdispersion",
4618 FT_UINT32, BASE_HEX, NULL, 0x0,
4619 NULL, HFILL}
4621 { &hf_fileexp_gettime_syncdistance,
4622 { "SyncDistance", "fileexp.gettime.syncdistance",
4623 FT_UINT32, BASE_HEX, NULL, 0x0,
4624 NULL, HFILL}
4626 { &hf_fileexp_gettime_usecondsp,
4627 { "GetTime usecondsp", "fileexp.gettime_usecondsp",
4628 FT_UINT32, BASE_HEX, NULL, 0x0,
4629 NULL, HFILL}
4631 { &hf_fileexp_readdir_size,
4632 { "Readdir Size", "fileexp.readdir.size",
4633 FT_UINT32, BASE_HEX, NULL, 0x0,
4634 NULL, HFILL}
4636 { &hf_fileexp_afsNameString_t_principalName_size,
4637 { "Principal Name Size", "fileexp.principalName_size",
4638 FT_UINT32, BASE_HEX, NULL, 0x0,
4639 NULL, HFILL}
4641 { &hf_fileexp_afsTaggedPath_tp_length,
4642 { "Tagged Path Length", "fileexp.afsTaggedPath_length",
4643 FT_UINT32, BASE_HEX, NULL, 0x0,
4644 NULL, HFILL}
4646 { &hf_fileexp_fstype,
4647 { "Filetype", "fileexp.fstype",
4648 FT_UINT32, BASE_HEX, NULL, 0x0,
4649 NULL, HFILL}
4651 { &hf_fileexp_gettime_secondsp,
4652 { "GetTime secondsp", "fileexp.gettime_secondsp",
4653 FT_UINT32, BASE_HEX, NULL, 0x0,
4654 NULL, HFILL}
4656 { &hf_fileexp_afsNameString_t_principalName_string,
4657 { "Principal Name", "fileexp.NameString_principal",
4658 FT_STRING, BASE_NONE, NULL, 0x0,
4659 NULL, HFILL}
4661 { &hf_fileexp_fetchdata_pipe_t_size,
4662 { "FetchData Pipe_t size", "fileexp.fetchdata_pipe_t_size",
4663 FT_STRING, BASE_NONE, NULL, 0x0,
4664 NULL, HFILL}
4668 static int *ett[] = {
4669 &ett_fileexp,
4670 &ett_fileexp_afsReturnDesc,
4671 &ett_fileexp_afsFid,
4672 &ett_fileexp_afsNetAddr,
4673 &ett_fileexp_fetchstatus,
4674 &ett_fileexp_afsflags,
4675 &ett_fileexp_volsync,
4676 &ett_fileexp_minvvp,
4677 &ett_fileexp_afsfidtaggedname,
4678 &ett_fileexp_afstaggedname,
4679 &ett_fileexp_afstoken,
4680 &ett_fileexp_afsstorestatus,
4681 &ett_fileexp_afsRecordLock,
4682 &ett_fileexp_afsAcl,
4683 &ett_fileexp_afsNameString_t,
4684 &ett_fileexp_afsConnParams,
4685 &ett_fileexp_afsErrorStatus,
4686 &ett_fileexp_afsTaggedPath,
4687 &ett_fileexp_afsNetData,
4688 &ett_fileexp_afsBulkStat,
4689 &ett_fileexp_afsuuid,
4690 &ett_fileexp_offsetp,
4691 &ett_fileexp_returntokenidp,
4692 &ett_fileexp_afsbundled_stat,
4695 proto_fileexp = proto_register_protocol ("DCE DFS File Exporter", "FILEEXP", "fileexp");
4696 proto_register_field_array (proto_fileexp, hf, array_length (hf));
4697 proto_register_subtree_array (ett, array_length (ett));
4700 void
4701 proto_reg_handoff_fileexp (void)
4704 * Register the protocol as dcerpc
4706 dcerpc_init_uuid (proto_fileexp, ett_fileexp, &uuid_fileexp, ver_fileexp,
4707 fileexp_dissectors, hf_fileexp_opnum);
4711 * Editor modelines - https://www.wireshark.org/tools/modelines.html
4713 * Local Variables:
4714 * c-basic-offset: 2
4715 * tab-width: 8
4716 * indent-tabs-mode: nil
4717 * End:
4719 * ex: set shiftwidth=2 tabstop=8 expandtab:
4720 * :indentSize=2:tabSize=8:noTabs=true: