Coverage Report

Created: 2026-07-12 07:10

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/wireshark/epan/dissectors/packet-dcerpc-fileexp.c
Line
Count
Source
1
/* packet-dcerpc-fileexp.c
2
 *
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
7
 *
8
 * Wireshark - Network traffic analyzer
9
 * By Gerald Combs <gerald@wireshark.org>
10
 * Copyright 1998 Gerald Combs
11
 *
12
 * SPDX-License-Identifier: GPL-2.0-or-later
13
 */
14
15
#include "config.h"
16
17
#include <epan/packet.h>
18
#include <epan/exceptions.h>
19
20
#include "packet-dcerpc.h"
21
#include "packet-dcerpc-dce122.h"
22
23
void proto_register_fileexp (void);
24
void proto_reg_handoff_fileexp (void);
25
26
0
#define AFS_SETMODTIME     0x001
27
0
#define AFS_SETOWNER       0x002
28
0
#define AFS_SETGROUP       0x004
29
0
#define AFS_SETMODE        0x008
30
0
#define AFS_SETACCESSTIME  0x010
31
0
#define AFS_SETCHANGETIME  0x020
32
0
#define AFS_SETLENGTH      0x040
33
0
#define AFS_SETTYPEUUID    0x080
34
0
#define AFS_SETDEVNUM      0x100
35
0
#define AFS_SETMODEXACT    0x200
36
0
#define AFS_SETTRUNCLENGTH 0x400
37
0
#define AFS_SETCLIENTSPARE 0x800
38
39
0
#define TKN_LOCK_READ                   0x00001
40
0
#define TKN_LOCK_WRITE                  0x00002
41
0
#define TKN_DATA_READ                   0x00004
42
0
#define TKN_DATA_WRITE                  0x00008
43
0
#define TKN_OPEN_READ                   0x00010
44
0
#define TKN_OPEN_WRITE                  0x00020
45
0
#define TKN_OPEN_SHARED                 0x00040
46
0
#define TKN_OPEN_EXCLUSIVE              0x00080
47
0
#define TKN_OPEN_DELETE                 0x00100
48
0
#define TKN_OPEN_PRESERVE               0x00200
49
0
#define TKN_STATUS_READ                 0x00400
50
0
#define TKN_STATUS_WRITE                0x00800
51
0
#define TKN_OPEN_UNLINK                 0x01000
52
0
#define TKN_SPOT_HERE                   0x02000
53
0
#define TKN_SPOT_THERE                  0x04000
54
0
#define TKN_OPEN_NO_READ                0x08000
55
0
#define TKN_OPEN_NO_WRITE               0x10000
56
0
#define TKN_OPEN_NO_UNLINK              0x20000
57
58
0
#define AFS_CONN_PARAM_HOSTLIFE         0
59
0
#define AFS_CONN_PARAM_HOSTRPC          1
60
0
#define AFS_CONN_PARAM_DEADSERVER       2
61
0
#define AFS_CONN_PARAM_EPOCH            3
62
0
#define AFS_CONN_PARAM_MAXFILE_CLIENT   4
63
0
#define AFS_CONN_PARAM_MAXFILE_SERVER   5
64
0
#define AFS_CONN_PARAM_HOST_TYPE_CLIENT 6
65
0
#define AFS_CONN_PARAM_HOST_TYPE_SERVER 7
66
0
#define AFS_CONN_PARAM_FT_MASK_CLIENT   8
67
0
#define AFS_CONN_PARAM_FT_MASK_SERVER   9
68
69
0
#define AFS_CONN_PARAM_SUPPORTS_64BITS  0x10000
70
0
#define AFS_CONN_PARAM_512BYTE_BLOCKS   0x20000
71
72
0
#define AFS_FLAG_SEC_SERVICE            0x01
73
#define AFS_FLAG_CONTEXT_NEW_IF         0x02
74
#define AFS_FLAG_CONTEXT_DO_RESET       0x04
75
0
#define AFS_FLAG_CONTEXT_NEW_ACL_IF     0x08
76
#define AFS_FLAG_CONTEXT_NEW_TKN_TYPES  0x10
77
78
0
#define AFS_FLAG_RETURNTOKEN          0x00001
79
0
#define AFS_FLAG_TOKENJUMPQUEUE       0x00002
80
0
#define AFS_FLAG_SKIPTOKEN            0x00004
81
0
#define AFS_FLAG_NOOPTIMISM           0x00008
82
0
#define AFS_FLAG_TOKENID              0x00010
83
0
#define AFS_FLAG_RETURNBLOCKER        0x00020
84
0
#define AFS_FLAG_ASYNCGRANT           0x00040
85
0
#define AFS_FLAG_NOREVOKE             0x00080
86
0
#define AFS_FLAG_MOVE_REESTABLISH     0x00100
87
0
#define AFS_FLAG_SERVER_REESTABLISH   0x00200
88
0
#define AFS_FLAG_NO_NEW_EPOCH         0x00400
89
0
#define AFS_FLAG_MOVE_SOURCE_OK       0x00800
90
0
#define AFS_FLAG_SYNC                 0x01000
91
0
#define AFS_FLAG_ZERO                 0x02000
92
0
#define AFS_FLAG_SKIPSTATUS           0x04000
93
0
#define AFS_FLAG_FORCEREVOCATIONS     0x08000
94
0
#define AFS_FLAG_FORCEVOLQUIESCE      0x10000
95
#define AFS_FLAG_FORCEREVOCATIONDOWN  0x20000
96
97
static int hf_fileexp_opnum;
98
99
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;
249
250
static int proto_fileexp;
251
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;
276
277
278
/* vars for our macro(s) */
279
static int hf_error_st;
280
281
static e_guid_t uuid_fileexp =
282
  { 0x4d37f2dd, 0xed93, 0x0000, {0x02, 0xc0, 0x37, 0xcf, 0x1e, 0x00, 0x00, 0x00}
283
};
284
static uint16_t ver_fileexp = 4;
285
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.
294
*/
295
296
#define MACRO_ST_CLEAR(name) \
297
0
  { \
298
0
    uint32_t st; \
299
0
    const char *st_str; \
300
0
    offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_error_st, &st); \
301
0
    st_str = val_to_str_ext(pinfo->pool, st, &dce_error_vals_ext, "%u"); \
302
0
    if (st) { \
303
0
      col_add_fstr (pinfo->cinfo, COL_INFO, "%s st:%s ", name, st_str); \
304
0
    } else { \
305
0
      col_append_fstr (pinfo->cinfo, COL_INFO, " st:%s ", st_str); \
306
0
    } \
307
0
  }
308
309
static unsigned
310
dissect_afsFid (tvbuff_t *tvb, unsigned offset,
311
                packet_info *pinfo, proto_tree *parent_tree,
312
                dcerpc_info *di, uint8_t *drep)
313
0
{
314
/*
315
        afsHyper Cell;
316
        afsHyper Volume;
317
        unsigned32 Vnode;
318
        unsigned32 Unique;
319
*/
320
321
0
  proto_item *item       = NULL;
322
0
  proto_tree *tree       = NULL;
323
0
  int         old_offset = offset;
324
0
  uint32_t    volume_low, unique, vnode, inode;
325
326
0
  if (di->conformant_run)
327
0
    {
328
0
      return offset;
329
0
    }
330
331
0
  if (parent_tree)
332
0
    {
333
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_afsFid, &item, "afsFid:");
334
0
    }
335
336
0
  offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
337
0
                               hf_fileexp_afsFid_cell_high, NULL);
338
339
0
  offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
340
0
                               hf_fileexp_afsFid_cell_low, NULL);
341
342
0
  offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
343
0
                               hf_fileexp_afsFid_volume_high, NULL);
344
345
0
  offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
346
0
                               hf_fileexp_afsFid_volume_low, &volume_low);
347
348
0
  offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
349
0
                               hf_fileexp_afsFid_Vnode, &vnode);
350
351
0
  offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
352
0
                               hf_fileexp_afsFid_Unique, &unique);
353
354
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " :FSID:%u ", volume_low);
355
356
0
  if ((vnode == 1) || (vnode == 2))
357
0
    {
358
0
      col_append_str (pinfo->cinfo, COL_INFO, " InFS ");
359
0
    }
360
0
  else
361
0
    {
362
0
      inode = ((volume_low << 16) + vnode) & 0x7fffffff;
363
0
      col_append_fstr (pinfo->cinfo, COL_INFO, " inode:%u ", inode);
364
0
    }
365
366
0
  proto_item_set_len (item, offset - old_offset);
367
0
  return offset;
368
0
}
369
370
static unsigned
371
dissect_afsConnParams (tvbuff_t *tvb, unsigned offset,
372
                       packet_info *pinfo, proto_tree *parent_tree,
373
                       dcerpc_info *di, uint8_t *drep)
374
0
{
375
/*
376
        unsigned32 Mask;
377
        unsigned32 Values[20];
378
*/
379
380
0
  proto_item *item       = NULL;
381
0
  proto_tree *tree       = NULL;
382
0
  int         old_offset = offset;
383
0
  uint32_t    mask, Values[20];
384
385
0
  if (di->conformant_run)
386
0
    {
387
0
      return offset;
388
0
    }
389
390
0
  if (parent_tree)
391
0
    {
392
0
      tree =
393
0
        proto_tree_add_subtree (parent_tree, tvb, offset, -1,
394
0
                                ett_fileexp_afsConnParams, &item, "afsConnParams_t:");
395
0
    }
396
0
  offset =
397
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
398
0
                        hf_afsconnparams_mask, &mask);
399
0
  offset =
400
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
401
0
                        hf_afsconnparams_values, &Values[0]);
402
0
  offset =
403
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
404
0
                        hf_afsconnparams_values, &Values[1]);
405
0
  offset =
406
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
407
0
                        hf_afsconnparams_values, &Values[2]);
408
0
  offset =
409
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
410
0
                        hf_afsconnparams_values, &Values[3]);
411
0
  offset =
412
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
413
0
                        hf_afsconnparams_values, &Values[4]);
414
0
  offset =
415
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
416
0
                        hf_afsconnparams_values, &Values[5]);
417
0
  offset =
418
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
419
0
                        hf_afsconnparams_values, &Values[6]);
420
0
  offset =
421
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
422
0
                        hf_afsconnparams_values, &Values[7]);
423
0
  offset =
424
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
425
0
                        hf_afsconnparams_values, &Values[8]);
426
0
  offset =
427
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
428
0
                        hf_afsconnparams_values, &Values[9]);
429
0
  offset =
430
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
431
0
                        hf_afsconnparams_values, &Values[10]);
432
0
  offset =
433
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
434
0
                        hf_afsconnparams_values, &Values[11]);
435
0
  offset =
436
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
437
0
                        hf_afsconnparams_values, &Values[12]);
438
0
  offset =
439
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
440
0
                        hf_afsconnparams_values, &Values[13]);
441
0
  offset =
442
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
443
0
                        hf_afsconnparams_values, &Values[14]);
444
0
  offset =
445
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
446
0
                        hf_afsconnparams_values, &Values[15]);
447
0
  offset =
448
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
449
0
                        hf_afsconnparams_values, &Values[16]);
450
0
  offset =
451
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
452
0
                        hf_afsconnparams_values, &Values[17]);
453
0
  offset =
454
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
455
0
                        hf_afsconnparams_values, &Values[18]);
456
0
  offset =
457
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
458
0
                        hf_afsconnparams_values, &Values[19]);
459
0
  if ((mask & AFS_CONN_PARAM_HOSTLIFE) == AFS_CONN_PARAM_HOSTLIFE)
460
0
    {
461
0
      col_append_str (pinfo->cinfo, COL_INFO, ":HOSTLIFE");
462
0
    }
463
0
  if ((mask & AFS_CONN_PARAM_HOSTRPC) == AFS_CONN_PARAM_HOSTRPC)
464
0
    {
465
0
      col_append_str (pinfo->cinfo, COL_INFO, ":HOSTRPC");
466
0
    }
467
0
  if ((mask & AFS_CONN_PARAM_DEADSERVER) == AFS_CONN_PARAM_DEADSERVER)
468
0
    {
469
0
      col_append_str (pinfo->cinfo, COL_INFO, ":DEADSERVER");
470
0
    }
471
0
  if ((mask & AFS_CONN_PARAM_EPOCH) == AFS_CONN_PARAM_EPOCH)
472
0
    {
473
0
      col_append_str (pinfo->cinfo, COL_INFO, ":EPOCH");
474
0
    }
475
0
  if ((mask & AFS_CONN_PARAM_MAXFILE_CLIENT) == AFS_CONN_PARAM_MAXFILE_CLIENT)
476
0
    {
477
0
      col_append_str (pinfo->cinfo, COL_INFO, ":MAXFILE_CLIENT");
478
0
    }
479
0
  if ((mask & AFS_CONN_PARAM_MAXFILE_SERVER) == AFS_CONN_PARAM_MAXFILE_SERVER)
480
0
    {
481
0
      col_append_str (pinfo->cinfo, COL_INFO, ":MAXFILE_SERVER");
482
0
    }
483
0
  if ((mask & AFS_CONN_PARAM_HOST_TYPE_CLIENT) ==
484
0
      AFS_CONN_PARAM_HOST_TYPE_CLIENT)
485
0
    {
486
0
      col_append_str (pinfo->cinfo, COL_INFO, ":HOST_TYPE_CLIENT");
487
0
    }
488
0
  if ((mask & AFS_CONN_PARAM_HOST_TYPE_SERVER) ==
489
0
      AFS_CONN_PARAM_HOST_TYPE_SERVER)
490
0
    {
491
0
      col_append_str (pinfo->cinfo, COL_INFO, ":HOST_TYPE_SERVER");
492
0
    }
493
0
  if ((mask & AFS_CONN_PARAM_FT_MASK_CLIENT) == AFS_CONN_PARAM_FT_MASK_CLIENT)
494
0
    {
495
0
      col_append_str (pinfo->cinfo, COL_INFO, ":FT_MASK_CLIENT");
496
0
    }
497
0
  if ((mask & AFS_CONN_PARAM_FT_MASK_SERVER) == AFS_CONN_PARAM_FT_MASK_SERVER)
498
0
    {
499
0
      col_append_str (pinfo->cinfo, COL_INFO, ":FT_MASK_SERVER");
500
0
    }
501
0
  if ((mask & AFS_CONN_PARAM_SUPPORTS_64BITS) ==
502
0
      AFS_CONN_PARAM_SUPPORTS_64BITS)
503
0
    {
504
0
      col_append_str (pinfo->cinfo, COL_INFO, ":SUPPORTS_64BITS");
505
0
    }
506
0
  if ((mask & AFS_CONN_PARAM_512BYTE_BLOCKS) == AFS_CONN_PARAM_512BYTE_BLOCKS)
507
0
    {
508
0
      col_append_str (pinfo->cinfo, COL_INFO, ":512BYTE_BLOCKS");
509
0
    }
510
0
  col_append_fstr (pinfo->cinfo, COL_INFO,
511
0
                   " Values:%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u",
512
0
                   Values[0], Values[1], Values[2], Values[3],
513
0
                   Values[4], Values[5], Values[6], Values[7], Values[8],
514
0
                   Values[9], Values[10], Values[11], Values[12],
515
0
                   Values[13], Values[14], Values[15], Values[16],
516
0
                   Values[17], Values[18], Values[19]);
517
518
0
  proto_item_set_len (item, offset - old_offset);
519
0
  return offset;
520
0
}
521
522
static unsigned
523
dissect_afsNameString_t (tvbuff_t *tvb, unsigned offset,
524
                         packet_info *pinfo, proto_tree *parent_tree,
525
                         dcerpc_info *di, uint8_t *drep)
526
0
{
527
/*
528
typedef [string] byte   NameString_t[AFS_NAMEMAX];
529
*/
530
531
0
  proto_item   *item       = NULL;
532
0
  proto_tree   *tree       = NULL;
533
0
  int           old_offset = offset;
534
0
#define AFS_NAMEMAX 256
535
0
  uint32_t      string_size;
536
0
  const uint8_t *namestring;
537
538
0
  if (di->conformant_run)
539
0
    {
540
0
      return offset;
541
0
    }
542
543
0
  if (parent_tree)
544
0
    {
545
0
      tree =
546
0
        proto_tree_add_subtree (parent_tree, tvb, offset, -1,
547
0
                                ett_fileexp_afsNameString_t, &item, "afsNameString_t:");
548
0
    }
549
550
0
  offset =
551
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
552
0
                       hf_fileexp_afsNameString_t_principalName_size,
553
0
                       &string_size);
554
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " String_size:%u", string_size);
555
0
  if (string_size < AFS_NAMEMAX)
556
0
    {
557
0
      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
0
      offset += string_size;
559
0
      col_append_fstr (pinfo->cinfo, COL_INFO, " Principal:%s", namestring);
560
0
    }
561
0
  else
562
0
    {
563
0
      col_append_fstr (pinfo->cinfo, COL_INFO,
564
0
                       " :FIXME!: Invalid string length of  %u",
565
0
                       string_size);
566
0
    }
567
568
0
  proto_item_set_len (item, offset - old_offset);
569
0
  return offset;
570
0
}
571
572
573
static unsigned
574
dissect_afsNetAddr (tvbuff_t *tvb, unsigned offset,
575
                    packet_info *pinfo, proto_tree *parent_tree,
576
                    dcerpc_info *di, uint8_t *drep)
577
0
{
578
/*                 unsigned16 type;
579
                   unsigned8 data[14];
580
*/
581
582
0
  proto_item *item       = NULL;
583
0
  proto_tree *tree       = NULL;
584
0
  int         old_offset = offset;
585
0
  uint16_t    type;
586
0
  uint8_t     data;
587
0
  int         i;
588
589
0
  if (di->conformant_run)
590
0
    {
591
0
      return offset;
592
0
    }
593
594
0
  if (parent_tree)
595
0
    {
596
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
597
0
                                     ett_fileexp_afsNetAddr, &item, "afsNetAddr:");
598
0
    }
599
600
0
  offset =
601
0
    dissect_ndr_uint16 (tvb, offset, pinfo, tree, di, drep,
602
0
                        hf_fileexp_afsNetAddr_type, &type);
603
604
0
  if (type)
605
0
    {
606
0
      col_append_fstr (pinfo->cinfo, COL_INFO, " Type:%u ", type);
607
608
609
0
      for (i = 0; i < 14; i++)
610
0
        {
611
612
0
          offset =
613
0
            dissect_ndr_uint8 (tvb, offset, pinfo, tree, di, drep,
614
0
                               hf_fileexp_afsNetAddr_data, &data);
615
616
617
0
          switch (i)
618
0
            {
619
0
            case 1:
620
0
              if (data)
621
0
                {
622
0
                    col_append_fstr (pinfo->cinfo, COL_INFO, " Port:%u",
623
0
                                     data);
624
0
                }
625
0
              break;
626
0
            case 2:
627
0
                col_append_fstr (pinfo->cinfo, COL_INFO, " IP:%u.", data);
628
0
              break;
629
0
            case 3:
630
0
                col_append_fstr (pinfo->cinfo, COL_INFO, "%u.", data);
631
0
              break;
632
0
            case 4:
633
0
                col_append_fstr (pinfo->cinfo, COL_INFO, "%u.", data);
634
0
              break;
635
0
            case 5:
636
0
                col_append_fstr (pinfo->cinfo, COL_INFO, "%u", data);
637
0
              break;
638
0
            }
639
640
0
        }
641
642
0
    }
643
0
  else
644
0
    {
645
646
0
      offset += 14;             /* space left after reading in type for the array. */
647
0
    }
648
649
650
0
  proto_item_set_len (item, offset - old_offset);
651
0
  return offset;
652
0
}
653
654
655
static unsigned
656
dissect_afsNetData (tvbuff_t *tvb, unsigned offset,
657
                    packet_info *pinfo, proto_tree *parent_tree,
658
                    dcerpc_info *di, uint8_t *drep)
659
0
{
660
/*
661
        afsNetAddr sockAddr;
662
        NameString_t principalName;
663
*/
664
0
  proto_item *item       = NULL;
665
0
  proto_tree *tree       = NULL;
666
0
  int         old_offset = offset;
667
668
0
  if (di->conformant_run)
669
0
    {
670
0
      return offset;
671
0
    }
672
673
0
  if (parent_tree)
674
0
    {
675
0
      tree =
676
0
        proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_afsNetData, &item, "afsNetData:");
677
0
    }
678
679
0
  offset = dissect_afsNetAddr ( tvb, offset, pinfo, tree, di, drep);
680
0
  offset += 4; /* buffer */
681
0
  offset = dissect_afsNameString_t ( tvb, offset, pinfo, tree, di, drep);
682
683
0
  proto_item_set_len (item, offset - old_offset);
684
0
  return offset;
685
686
0
}
687
688
static unsigned
689
dissect_afsTaggedPath (tvbuff_t *tvb, unsigned offset,
690
                       packet_info *pinfo, proto_tree *parent_tree,
691
                       dcerpc_info *di, uint8_t *drep)
692
0
{
693
/*
694
        codesetTag      tp_tag;
695
        unsigned16      tp_length;
696
        byte            tp_chars[AFS_PATHMAX+1]; 1024+1
697
*/
698
699
0
  proto_item   *item       = NULL;
700
0
  proto_tree   *tree       = NULL;
701
0
  int           old_offset = offset;
702
0
  uint32_t      tp_tag;
703
0
  uint16_t      tp_length;
704
0
  const uint8_t *tp_chars;
705
706
0
  if (di->conformant_run)
707
0
    {
708
0
      return offset;
709
0
    }
710
711
0
  if (parent_tree)
712
0
    {
713
0
      tree =
714
0
        proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_afsTaggedPath, &item, "afsTaggedPath");
715
0
    }
716
717
0
  offset =
718
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
719
0
                        hf_fileexp_afsTaggedPath_tp_tag, &tp_tag);
720
0
  offset =
721
0
    dissect_ndr_uint16 (tvb, offset, pinfo, tree, di, drep,
722
0
                        hf_fileexp_afsTaggedPath_tp_length, &tp_length);
723
0
  proto_tree_add_item (tree, hf_fileexp_afsTaggedPath_tp_chars, tvb, offset,
724
0
                       tp_length, ENC_ASCII);
725
0
  tp_chars = tvb_get_string_enc (pinfo->pool, tvb, offset, 1025, ENC_ASCII);
726
0
  offset += 1025;
727
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " :tp_chars %s", tp_chars);
728
729
0
  proto_item_set_len (item, offset - old_offset);
730
0
  return offset;
731
0
}
732
733
static unsigned
734
dissect_afsAcl (tvbuff_t *tvb, unsigned offset,
735
                packet_info *pinfo, proto_tree *parent_tree,
736
                dcerpc_info *di, uint8_t *drep)
737
0
{
738
/*
739
        unsigned32 afsACL_len;
740
        [length_is(afsACL_len)] byte afsACL_val[AFS_ACLMAX];
741
*/
742
743
0
  proto_item *item       = NULL;
744
0
  proto_tree *tree;
745
0
  int         old_offset = offset;
746
0
  uint32_t    acl_len;
747
0
  e_guid_t    uuid1, defaultcell;
748
749
0
  if (di->conformant_run)
750
0
    {
751
0
      return offset;
752
0
    }
753
754
0
  tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_afsAcl, &item, "afsAcl");
755
756
0
  offset =
757
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_acl_len,
758
0
                        &acl_len);
759
0
  offset += 8;                  /* bypass spare and duplicate acl_len */
760
0
  offset =
761
0
    dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep,
762
0
                        hf_fileexp_afsacl_uuid1, &uuid1);
763
0
  col_append_fstr (pinfo->cinfo, COL_INFO,
764
0
                   " - %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
765
0
                   uuid1.data1, uuid1.data2, uuid1.data3, uuid1.data4[0],
766
0
                   uuid1.data4[1], uuid1.data4[2], uuid1.data4[3],
767
0
                   uuid1.data4[4], uuid1.data4[5], uuid1.data4[6],
768
0
                   uuid1.data4[7]);
769
770
0
  offset =
771
0
    dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep,
772
0
                        hf_fileexp_afsacl_defaultcell_uuid, &defaultcell);
773
0
  col_append_fstr (pinfo->cinfo, COL_INFO,
774
0
                     "  %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
775
0
                     defaultcell.data1, defaultcell.data2, defaultcell.data3,
776
0
                     defaultcell.data4[0], defaultcell.data4[1],
777
0
                     defaultcell.data4[2], defaultcell.data4[3],
778
0
                     defaultcell.data4[4], defaultcell.data4[5],
779
0
                     defaultcell.data4[6], defaultcell.data4[7]);
780
781
0
  if (acl_len < 38)
782
0
    {
783
      /* XXX - exception */
784
0
      return offset;
785
0
    }
786
787
0
  offset += (acl_len - 38);
788
789
0
  proto_item_set_len (item, offset-old_offset);
790
0
  return offset;
791
0
}
792
793
794
static unsigned
795
dissect_afsErrorStatus (tvbuff_t *tvb, unsigned offset,
796
                        packet_info *pinfo, proto_tree *parent_tree,
797
                        dcerpc_info *di, uint8_t *drep)
798
0
{
799
0
  proto_item *item       = NULL;
800
0
  proto_tree *tree       = NULL;
801
0
  int         old_offset = offset;
802
0
  uint32_t    st;
803
0
  const char *st_str;
804
805
0
  if (di->conformant_run)
806
0
  {
807
0
    return offset;
808
0
  }
809
810
0
  if (parent_tree)
811
0
  {
812
0
    tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
813
0
                                   ett_fileexp_afsErrorStatus, &item, "afsErrorStatus");
814
0
  }
815
816
0
  offset =
817
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_afserrorstatus_st,
818
0
                       &st);
819
0
  st_str = val_to_str_ext(pinfo->pool, st, &dce_error_vals_ext, "%u");
820
821
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " st:%s ", st_str);
822
823
0
  proto_item_set_len (item, offset - old_offset);
824
0
  return offset;
825
0
}
826
827
static unsigned
828
dissect_afsRecordLock (tvbuff_t *tvb, unsigned offset,
829
                       packet_info *pinfo, proto_tree *parent_tree,
830
                       dcerpc_info *di, uint8_t *drep)
831
0
{
832
/*
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
842
*/
843
844
0
  proto_item *item       = NULL;
845
0
  proto_tree *tree       = NULL;
846
0
  int         old_offset = offset;
847
0
  uint16_t    l_type, l_whence;
848
0
  uint32_t    l_start_pos, l_end_pos, l_pid, l_sysid, l_fstype;
849
0
  uint32_t    l_start_pos_ext, l_end_pos_ext;
850
851
0
  if (di->conformant_run)
852
0
    {
853
0
      return offset;
854
0
    }
855
856
0
  if (parent_tree)
857
0
    {
858
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
859
0
                                     ett_fileexp_afsRecordLock, &item, "afsRecordLock:");
860
0
    }
861
862
0
  offset =
863
0
    dissect_ndr_uint16 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_l_type,
864
0
                        &l_type);
865
0
  offset =
866
0
    dissect_ndr_uint16 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_l_whence,
867
0
                        &l_whence);
868
0
  offset =
869
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
870
0
                        hf_fileexp_l_start_pos, &l_start_pos);
871
0
  offset =
872
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_l_end_pos,
873
0
                        &l_end_pos);
874
0
  offset =
875
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_l_pid,
876
0
                        &l_pid);
877
0
  offset =
878
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_l_sysid,
879
0
                        &l_sysid);
880
0
  offset =
881
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_l_fstype,
882
0
                        &l_fstype);
883
0
  offset =
884
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
885
0
                        hf_fileexp_l_start_pos_ext, &l_start_pos_ext);
886
0
  offset =
887
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
888
0
                        hf_fileexp_l_end_pos_ext, &l_end_pos_ext);
889
890
0
  proto_item_set_len (item, offset - old_offset);
891
0
  return offset;
892
0
}
893
894
static unsigned
895
dissect_afsstorestatus (tvbuff_t *tvb, unsigned offset,
896
                        packet_info *pinfo, proto_tree *parent_tree,
897
                        dcerpc_info *di, uint8_t *drep)
898
0
{
899
/*
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;
921
*/
922
923
0
  proto_item *item       = NULL;
924
0
  proto_tree *tree       = NULL;
925
0
  int         old_offset = offset;
926
0
  uint32_t    mask, modtime_sec, changetime_sec, accesstime_sec, devicenumber;
927
0
  uint32_t    clientspare1, devicenumberhighbits, spare1, spare2, spare3, spare4;
928
0
  uint32_t    spare5, spare6, accesstime_usec, changetime_usec, owner, group, mode;
929
0
  uint32_t    trunc_high, trunc_low, length_high, length_low, devicetype;
930
0
  uint32_t    cmask, modtime_usec;
931
0
  e_guid_t    typeuuid;
932
933
0
  if (di->conformant_run)
934
0
    {
935
0
      return offset;
936
0
    }
937
938
0
  if (parent_tree)
939
0
    {
940
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
941
0
                                     ett_fileexp_afsstorestatus, &item, "afsStoreStatus:");
942
0
    }
943
944
0
  offset =
945
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
946
0
                        hf_fileexp_storestatus_mask, &mask);
947
0
  offset =
948
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
949
0
                        hf_fileexp_storestatus_modtime_sec, &modtime_sec);
950
0
  offset =
951
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
952
0
                        hf_fileexp_storestatus_modtime_usec, &modtime_usec);
953
0
  offset =
954
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
955
0
                        hf_fileexp_storestatus_accesstime_sec,
956
0
                        &accesstime_sec);
957
0
  offset =
958
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
959
0
                        hf_fileexp_storestatus_accesstime_usec,
960
0
                        &accesstime_usec);
961
0
  offset =
962
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
963
0
                        hf_fileexp_storestatus_changetime_sec,
964
0
                        &changetime_sec);
965
0
  offset =
966
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
967
0
                        hf_fileexp_storestatus_changetime_usec,
968
0
                        &changetime_usec);
969
0
  offset =
970
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
971
0
                        hf_fileexp_storestatus_owner, &owner);
972
0
  offset =
973
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
974
0
                        hf_fileexp_storestatus_group, &group);
975
0
  offset =
976
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
977
0
                        hf_fileexp_storestatus_mode, &mode);
978
0
  offset =
979
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
980
0
                        hf_fileexp_storestatus_trunc_high, &trunc_high);
981
0
  offset =
982
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
983
0
                        hf_fileexp_storestatus_trunc_low, &trunc_low);
984
0
  offset =
985
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
986
0
                        hf_fileexp_storestatus_length_high, &length_high);
987
0
  offset =
988
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
989
0
                        hf_fileexp_storestatus_length_low, &length_low);
990
0
  offset =
991
0
    dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep,
992
0
                        hf_fileexp_storestatus_typeuuid, &typeuuid);
993
0
  offset =
994
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
995
0
                        hf_fileexp_storestatus_devicetype, &devicetype);
996
0
  offset =
997
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
998
0
                        hf_fileexp_storestatus_devicenumber, &devicenumber);
999
0
  offset =
1000
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1001
0
                        hf_fileexp_storestatus_cmask, &cmask);
1002
0
  offset =
1003
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1004
0
                        hf_fileexp_storestatus_clientspare1, &clientspare1);
1005
0
  offset =
1006
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1007
0
                        hf_fileexp_storestatus_devicenumberhighbits,
1008
0
                        &devicenumberhighbits);
1009
0
  offset =
1010
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1011
0
                        hf_fileexp_storestatus_spare1, &spare1);
1012
0
  offset =
1013
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1014
0
                        hf_fileexp_storestatus_spare2, &spare2);
1015
0
  offset =
1016
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1017
0
                        hf_fileexp_storestatus_spare3, &spare3);
1018
0
  offset =
1019
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1020
0
                        hf_fileexp_storestatus_spare4, &spare4);
1021
0
  offset =
1022
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1023
0
                        hf_fileexp_storestatus_spare5, &spare5);
1024
0
  offset =
1025
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1026
0
                        hf_fileexp_storestatus_spare6, &spare6);
1027
1028
0
  col_append_str (pinfo->cinfo, COL_INFO, " Mask=");
1029
0
  if ((mask & AFS_SETMODTIME) == AFS_SETMODTIME)
1030
0
    {
1031
0
        col_append_fstr (pinfo->cinfo, COL_INFO, ":SETMODTIME-%u.%u",
1032
0
                         modtime_sec, modtime_usec);
1033
0
    }
1034
0
  if ((mask & AFS_SETOWNER) == AFS_SETOWNER)
1035
0
    {
1036
0
        col_append_fstr (pinfo->cinfo, COL_INFO, ":SETOWNER-%u", owner);
1037
0
    }
1038
0
  if ((mask & AFS_SETGROUP) == AFS_SETGROUP)
1039
0
    {
1040
0
        col_append_fstr (pinfo->cinfo, COL_INFO, ":SETGROUP-%u", group);
1041
0
    }
1042
0
  if ((mask & AFS_SETMODE) == AFS_SETMODE)
1043
0
    {
1044
0
        col_append_fstr (pinfo->cinfo, COL_INFO, ":SETMODE-%o", mode);
1045
0
    }
1046
0
  if ((mask & AFS_SETACCESSTIME) == AFS_SETACCESSTIME)
1047
0
    {
1048
0
        col_append_fstr (pinfo->cinfo, COL_INFO, ":SETACCESSTIME-%u.%u",
1049
0
                         accesstime_sec, accesstime_usec);
1050
0
    }
1051
0
  if ((mask & AFS_SETCHANGETIME) == AFS_SETCHANGETIME)
1052
0
    {
1053
0
        col_append_fstr (pinfo->cinfo, COL_INFO, ":SETCHANGETIME-%u.%u",
1054
0
                         changetime_sec, changetime_usec);
1055
0
    }
1056
0
  if ((mask & AFS_SETLENGTH) == AFS_SETLENGTH)
1057
0
    {
1058
0
      col_append_str (pinfo->cinfo, COL_INFO, ":SETLENGTH");
1059
0
    }
1060
0
  if ((mask & AFS_SETTYPEUUID) == AFS_SETTYPEUUID)
1061
0
    {
1062
0
      col_append_str (pinfo->cinfo, COL_INFO, ":SETTYPEUUID");
1063
0
    }
1064
0
  if ((mask & AFS_SETDEVNUM) == AFS_SETDEVNUM)
1065
0
    {
1066
0
      col_append_str (pinfo->cinfo, COL_INFO, ":SETDEVNUM");
1067
0
    }
1068
0
  if ((mask & AFS_SETMODEXACT) == AFS_SETMODEXACT)
1069
0
    {
1070
0
      col_append_str (pinfo->cinfo, COL_INFO, ":SETMODEXACT");
1071
0
    }
1072
0
  if ((mask & AFS_SETTRUNCLENGTH) == AFS_SETTRUNCLENGTH)
1073
0
    {
1074
0
      col_append_str (pinfo->cinfo, COL_INFO, ":SETTRUNCLENGTH");
1075
0
    }
1076
0
  if ((mask & AFS_SETCLIENTSPARE) == AFS_SETCLIENTSPARE)
1077
0
    {
1078
0
      col_append_str (pinfo->cinfo, COL_INFO, ":SETCLIENTSPARE");
1079
0
    }
1080
1081
0
  proto_item_set_len (item, offset - old_offset);
1082
0
  return offset;
1083
0
}
1084
1085
static unsigned
1086
dissect_afstoken (tvbuff_t *tvb, unsigned offset,
1087
                  packet_info *pinfo, proto_tree *parent_tree,
1088
                  dcerpc_info *di, uint8_t *drep)
1089
0
{
1090
/*
1091
        afsHyper tokenID;
1092
        unsigned32 expirationTime;
1093
        afsHyper type;
1094
        unsigned32 beginRange;
1095
        unsigned32 endRange;
1096
        unsigned32 beginRangeExt;
1097
        unsigned32 endRangeExt;
1098
*/
1099
1100
0
  proto_item *item       = NULL;
1101
0
  proto_tree *tree       = NULL;
1102
0
  int         old_offset = offset;
1103
0
  uint32_t    tokenid_hi, tokenid_low, expirationtime, type_hi, type_low;
1104
0
  uint32_t    beginrange, endrange, beginrangeext, endrangeext, type;
1105
1106
0
  if (di->conformant_run)
1107
0
    {
1108
0
      return offset;
1109
0
    }
1110
1111
0
  if (parent_tree)
1112
0
    {
1113
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_afstoken, &item, "afsToken:");
1114
0
    }
1115
1116
0
  offset =
1117
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_tokenid_hi,
1118
0
                        &tokenid_hi);
1119
0
  offset =
1120
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1121
0
                        hf_fileexp_tokenid_low, &tokenid_low);
1122
0
  offset =
1123
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1124
0
                        hf_fileexp_expirationtime, &expirationtime);
1125
0
  offset =
1126
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_type_hi,
1127
0
                        &type_hi);
1128
0
  offset =
1129
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_type_low,
1130
0
                        &type_low);
1131
0
  offset =
1132
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_beginrange,
1133
0
                        &beginrange);
1134
0
  offset =
1135
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_endrange,
1136
0
                        &endrange);
1137
0
  offset =
1138
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1139
0
                        hf_fileexp_beginrangeext, &beginrangeext);
1140
0
  offset =
1141
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1142
0
                        hf_fileexp_endrangeext, &endrangeext);
1143
0
    col_append_fstr (pinfo->cinfo, COL_INFO,
1144
0
                     "  :Tokenid:%u/%u ExpirationTime:%u beginrange:%u endrange:%u beginrangeext:%u endrangeext:%u",
1145
0
                     tokenid_hi, tokenid_low, expirationtime, beginrange,
1146
0
                     endrange, beginrangeext, endrangeext);
1147
0
  type = type_low;
1148
1149
0
  col_append_str (pinfo->cinfo, COL_INFO, " Type=");
1150
1151
0
  if ((type & TKN_LOCK_READ) == TKN_LOCK_READ)
1152
0
    {
1153
0
      col_append_str (pinfo->cinfo, COL_INFO, ":LOCK_READ");
1154
0
    }
1155
0
  if ((type & TKN_LOCK_WRITE) == TKN_LOCK_WRITE)
1156
0
    {
1157
0
      col_append_str (pinfo->cinfo, COL_INFO, ":LOCK_WRITE");
1158
0
    }
1159
0
  if ((type & TKN_DATA_READ) == TKN_DATA_READ)
1160
0
    {
1161
0
      col_append_str (pinfo->cinfo, COL_INFO, ":DATA_READ");
1162
0
    }
1163
0
  if ((type & TKN_DATA_WRITE) == TKN_DATA_WRITE)
1164
0
    {
1165
0
      col_append_str (pinfo->cinfo, COL_INFO, ":DATA_WRITE");
1166
0
    }
1167
0
  if ((type & TKN_OPEN_READ) == TKN_OPEN_READ)
1168
0
    {
1169
0
      col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_READ");
1170
0
    }
1171
0
  if ((type & TKN_OPEN_WRITE) == TKN_OPEN_WRITE)
1172
0
    {
1173
0
      col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_WRITE");
1174
0
    }
1175
0
  if ((type & TKN_OPEN_SHARED) == TKN_OPEN_SHARED)
1176
0
    {
1177
0
      col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_SHARED");
1178
0
    }
1179
0
  if ((type & TKN_OPEN_EXCLUSIVE) == TKN_OPEN_EXCLUSIVE)
1180
0
    {
1181
0
      col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_EXCLUSIVE");
1182
0
    }
1183
0
  if ((type & TKN_OPEN_DELETE) == TKN_OPEN_DELETE)
1184
0
    {
1185
0
      col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_DELETE");
1186
0
    }
1187
0
  if ((type & TKN_OPEN_PRESERVE) == TKN_OPEN_PRESERVE)
1188
0
    {
1189
0
      col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_PRESERVE");
1190
0
    }
1191
0
  if ((type & TKN_STATUS_READ) == TKN_STATUS_READ)
1192
0
    {
1193
0
      col_append_str (pinfo->cinfo, COL_INFO, ":STATUS_READ");
1194
0
    }
1195
0
  if ((type & TKN_STATUS_WRITE) == TKN_STATUS_WRITE)
1196
0
    {
1197
0
      col_append_str (pinfo->cinfo, COL_INFO, ":STATUS_WRITE");
1198
0
    }
1199
0
  if ((type & TKN_OPEN_UNLINK) == TKN_OPEN_UNLINK)
1200
0
    {
1201
0
      col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_UNLINK");
1202
0
    }
1203
0
  if ((type & TKN_SPOT_HERE) == TKN_SPOT_HERE)
1204
0
    {
1205
0
      col_append_str (pinfo->cinfo, COL_INFO, ":SPOT_HERE");
1206
0
    }
1207
0
  if ((type & TKN_SPOT_THERE) == TKN_SPOT_THERE)
1208
0
    {
1209
0
      col_append_str (pinfo->cinfo, COL_INFO, ":SPOT_THERE");
1210
0
    }
1211
0
  if ((type & TKN_OPEN_NO_READ) == TKN_OPEN_NO_READ)
1212
0
    {
1213
0
      col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_NO_READ");
1214
0
    }
1215
0
  if ((type & TKN_OPEN_NO_WRITE) == TKN_OPEN_NO_WRITE)
1216
0
    {
1217
0
      col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_NO_WRITE");
1218
0
    }
1219
0
  if ((type & TKN_OPEN_NO_UNLINK) == TKN_OPEN_NO_UNLINK)
1220
0
    {
1221
0
      col_append_str (pinfo->cinfo, COL_INFO, ":OPEN_NO_UNLINK");
1222
0
    }
1223
1224
0
  proto_item_set_len (item, offset - old_offset);
1225
0
  return offset;
1226
0
}
1227
1228
static unsigned
1229
dissect_afstaggedname (tvbuff_t *tvb, unsigned offset,
1230
                       packet_info *pinfo, proto_tree *parent_tree,
1231
                       dcerpc_info *di, uint8_t *drep)
1232
0
{
1233
/*
1234
        codesetTag      tn_tag;
1235
        unsigned16      tn_length;
1236
        byte            tn_chars[AFS_NAMEMAX+1];
1237
*/
1238
1239
0
  proto_item   *item       = NULL;
1240
0
  proto_tree   *tree       = NULL;
1241
0
  int           old_offset = offset;
1242
0
  uint32_t      tn_tag;
1243
0
  uint16_t      tn_length;
1244
0
  const uint8_t *tn_string;
1245
1246
0
  if (di->conformant_run)
1247
0
    {
1248
0
      return offset;
1249
0
    }
1250
1251
0
  if (parent_tree)
1252
0
    {
1253
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
1254
0
                                     ett_fileexp_afstaggedname, &item, "afsTaggedName:");
1255
0
    }
1256
1257
0
  offset =
1258
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_tn_tag,
1259
0
                        &tn_tag);
1260
0
  offset =
1261
0
    dissect_ndr_uint16 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_tn_length,
1262
0
                        &tn_length);
1263
0
  if (tn_length < 254)
1264
0
    {
1265
0
      proto_tree_add_item (tree, hf_fileexp_tn_string, tvb, offset,
1266
0
                             tn_length, ENC_ASCII);
1267
0
      tn_string = tvb_get_string_enc (pinfo->pool, tvb, offset, 257, ENC_ASCII);
1268
0
      offset += 257;
1269
0
        col_append_fstr (pinfo->cinfo, COL_INFO, " :tn_tag: %s", tn_string);
1270
0
    }
1271
0
  else
1272
0
    {
1273
0
        col_append_fstr (pinfo->cinfo, COL_INFO,
1274
0
                         " :FIXME!: Invalid string length of  %u", tn_length);
1275
0
    }
1276
1277
0
  proto_item_set_len (item, offset - old_offset);
1278
0
  return offset;
1279
0
}
1280
1281
static unsigned
1282
dissect_afsfidtaggedname (tvbuff_t *tvb, unsigned offset,
1283
                          packet_info *pinfo, proto_tree *parent_tree,
1284
                          dcerpc_info *di, uint8_t *drep)
1285
0
{
1286
/*
1287
        afsFid fid;
1288
        afsTaggedName name;
1289
*/
1290
1291
0
  proto_item *item       = NULL;
1292
0
  proto_tree *tree       = NULL;
1293
0
  int         old_offset = offset;
1294
1295
0
  if (di->conformant_run)
1296
0
    {
1297
0
      return offset;
1298
0
    }
1299
1300
0
  if (parent_tree)
1301
0
    {
1302
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
1303
0
                                     ett_fileexp_afsfidtaggedname, &item, "FidTaggedName:");
1304
0
    }
1305
0
  offset = dissect_afsFid (tvb, offset, pinfo, tree, di, drep);
1306
0
  offset = dissect_afstaggedname (tvb, offset, pinfo, tree, di, drep);
1307
1308
0
  proto_item_set_len (item, offset - old_offset);
1309
0
  return offset;
1310
1311
0
}
1312
1313
static unsigned
1314
dissect_minvvp (tvbuff_t *tvb, unsigned offset,
1315
                packet_info *pinfo, proto_tree *parent_tree,
1316
                dcerpc_info *di, uint8_t *drep)
1317
0
{
1318
/* unsigned32 minvvp_high
1319
   unsigned32 minvvp_low
1320
*/
1321
1322
0
  proto_item *item       = NULL;
1323
0
  proto_tree *tree       = NULL;
1324
0
  int         old_offset = offset;
1325
0
  uint32_t    minvvp_high, minvvp_low;
1326
1327
0
  if (di->conformant_run)
1328
0
    {
1329
0
      return offset;
1330
0
    }
1331
1332
0
  if (parent_tree)
1333
0
    {
1334
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_minvvp,  &item, "minVVp:");
1335
0
    }
1336
0
  offset =
1337
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1338
0
                        hf_fileexp_minvvp_high, &minvvp_high);
1339
0
  offset =
1340
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_minvvp_low,
1341
0
                        &minvvp_low);
1342
1343
0
    col_append_fstr (pinfo->cinfo, COL_INFO, " minVVp:%u/%u", minvvp_high,
1344
0
                     minvvp_low);
1345
1346
1347
0
  proto_item_set_len (item, offset - old_offset);
1348
0
  return offset;
1349
0
}
1350
1351
1352
static unsigned
1353
dissect_afsuuid (tvbuff_t *tvb, unsigned offset,
1354
                 packet_info *pinfo, proto_tree *parent_tree,
1355
                 dcerpc_info *di, uint8_t *drep)
1356
0
{
1357
/* uuid  UUID
1358
*/
1359
/*HEREN*/
1360
1361
0
  e_guid_t uuid1;
1362
1363
0
  proto_item *item       = NULL;
1364
0
  proto_tree *tree       = NULL;
1365
0
  int         old_offset = offset;
1366
1367
0
  if (di->conformant_run)
1368
0
    {
1369
0
      return offset;
1370
0
    }
1371
1372
0
  if (parent_tree)
1373
0
    {
1374
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_afsuuid, &item, "afsUUID:");
1375
0
    }
1376
1377
0
  offset = dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep, hf_fileexp_afsuuid_uuid, &uuid1);
1378
1379
0
  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]);
1380
1381
0
  proto_item_set_len (item, offset - old_offset);
1382
0
  return offset;
1383
0
}
1384
1385
1386
static unsigned
1387
dissect_offsetp (tvbuff_t *tvb, unsigned offset,
1388
                 packet_info *pinfo, proto_tree *parent_tree,
1389
                 dcerpc_info *di, uint8_t *drep)
1390
0
{
1391
/* unsigned32 offsetp_high
1392
   unsigned32 offsetp_low
1393
*/
1394
1395
0
  proto_item *item       = NULL;
1396
0
  proto_tree *tree       = NULL;
1397
0
  int         old_offset = offset;
1398
0
  uint32_t    offsetp_high, offsetp_low;
1399
1400
0
  if (di->conformant_run)
1401
0
    {
1402
0
      return offset;
1403
0
    }
1404
1405
0
  if (parent_tree)
1406
0
    {
1407
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_offsetp, &item, "minVVp:");
1408
0
    }
1409
1410
0
  offset =
1411
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1412
0
                        hf_fileexp_offsetp_high, &offsetp_high);
1413
0
  offset =
1414
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_offsetp_low,
1415
0
                        &offsetp_low);
1416
1417
0
    col_append_fstr (pinfo->cinfo, COL_INFO, " offsetp:%u/%u", offsetp_high,
1418
0
                     offsetp_low);
1419
1420
0
  proto_item_set_len (item, offset - old_offset);
1421
0
  return offset;
1422
0
}
1423
1424
1425
static unsigned
1426
dissect_returntokenidp (tvbuff_t *tvb, unsigned offset,
1427
                        packet_info *pinfo, proto_tree *parent_tree,
1428
                        dcerpc_info *di, uint8_t *drep)
1429
0
{
1430
/* unsigned32 returntokenidp_high
1431
   unsigned32 returntokenidp_low
1432
*/
1433
1434
0
  proto_item *item       = NULL;
1435
0
  proto_tree *tree       = NULL;
1436
0
  int         old_offset = offset;
1437
0
  uint32_t    returntokenidp_high, returntokenidp_low;
1438
1439
0
  if (di->conformant_run)
1440
0
    {
1441
0
      return offset;
1442
0
    }
1443
1444
0
  if (parent_tree)
1445
0
    {
1446
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_returntokenidp, &item, "returnTokenIDp:");
1447
0
    }
1448
1449
0
  offset =
1450
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1451
0
                        hf_fileexp_returntokenidp_high, &returntokenidp_high);
1452
0
  offset =
1453
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_returntokenidp_low,
1454
0
                        &returntokenidp_low);
1455
1456
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " returnTokenIDp:%u/%u", returntokenidp_high,
1457
0
                     returntokenidp_low);
1458
1459
0
  proto_item_set_len (item, offset - old_offset);
1460
0
  return offset;
1461
0
}
1462
1463
1464
static unsigned
1465
dissect_volsync (tvbuff_t *tvb, unsigned offset,
1466
                 packet_info *pinfo, proto_tree *parent_tree,
1467
                 dcerpc_info *di, uint8_t *drep)
1468
0
{
1469
/*
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;
1478
*/
1479
1480
0
  proto_item *item       = NULL;
1481
0
  proto_tree *tree       = NULL;
1482
0
  int         old_offset = offset;
1483
0
  uint32_t    volid_hi, volid_low, vv_hi, vv_low, vvage, vvpingage;
1484
0
  uint32_t    vvspare1, vvspare2;
1485
1486
0
  if (di->conformant_run)
1487
0
    {
1488
0
      return offset;
1489
0
    }
1490
1491
0
  if (parent_tree)
1492
0
    {
1493
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
1494
0
                                     ett_fileexp_volsync, &item, "AfsVolSync:");
1495
0
    }
1496
1497
0
  offset =
1498
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_volid_hi,
1499
0
                        &volid_hi);
1500
0
  offset =
1501
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_volid_low,
1502
0
                        &volid_low);
1503
0
  offset =
1504
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_vv_hi,
1505
0
                        &vv_hi);
1506
0
  offset =
1507
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_vv_low,
1508
0
                        &vv_low);
1509
0
  offset =
1510
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_vvage,
1511
0
                        &vvage);
1512
0
  offset =
1513
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_vvpingage,
1514
0
                        &vvpingage);
1515
0
  offset =
1516
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_vvspare1,
1517
0
                        &vvspare1);
1518
0
  offset =
1519
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_vvspare2,
1520
0
                        &vvspare2);
1521
1522
0
  col_append_fstr (pinfo->cinfo, COL_INFO,
1523
0
                     " volid_hi:%u volid_low:%u vv_hi:%u vv_low:%u vvage:%u vvpingage:%u vvpspare1:%u vvspare2:%u",
1524
0
                     volid_hi, volid_low, vv_hi, vv_low, vvage, vvpingage,
1525
0
                     vvspare1, vvspare2);
1526
1527
0
  proto_item_set_len (item, offset - old_offset);
1528
0
  return offset;
1529
1530
0
}
1531
1532
static unsigned
1533
dissect_afsFlags (tvbuff_t *tvb, unsigned offset,
1534
                  packet_info *pinfo, proto_tree *parent_tree,
1535
                  dcerpc_info *di, uint8_t *drep)
1536
0
{
1537
/*
1538
  unsigned32 flags
1539
*/
1540
1541
0
  proto_item *item       = NULL;
1542
0
  proto_tree *tree       = NULL;
1543
0
  int         old_offset = offset;
1544
0
  uint32_t    flags;
1545
1546
0
  if (di->conformant_run)
1547
0
    {
1548
0
      return offset;
1549
0
    }
1550
1551
0
  if (parent_tree)
1552
0
    {
1553
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_afsflags, &item, "AfsFlags:");
1554
0
    }
1555
1556
0
  offset =
1557
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_flags,
1558
0
                        &flags);
1559
1560
0
  if (flags)
1561
0
    {
1562
0
      col_append_str (pinfo->cinfo, COL_INFO, " Flags=");
1563
0
      if ((flags & AFS_FLAG_RETURNTOKEN) == AFS_FLAG_RETURNTOKEN)
1564
0
        {
1565
0
          col_append_str (pinfo->cinfo, COL_INFO, ":RETURNTOKEN");
1566
0
        }
1567
0
      if ((flags & AFS_FLAG_TOKENJUMPQUEUE) == AFS_FLAG_TOKENJUMPQUEUE)
1568
0
        {
1569
0
          col_append_str (pinfo->cinfo, COL_INFO, ":TOKENJUMPQUEUE");
1570
0
        }
1571
0
      if ((flags & AFS_FLAG_SKIPTOKEN) == AFS_FLAG_SKIPTOKEN)
1572
0
        {
1573
0
          col_append_str (pinfo->cinfo, COL_INFO, ":SKIPTOKEN");
1574
0
        }
1575
0
      if ((flags & AFS_FLAG_NOOPTIMISM) == AFS_FLAG_NOOPTIMISM)
1576
0
        {
1577
0
          col_append_str (pinfo->cinfo, COL_INFO, ":NOOPTIMISM");
1578
0
        }
1579
0
      if ((flags & AFS_FLAG_TOKENID) == AFS_FLAG_TOKENID)
1580
0
        {
1581
0
          col_append_str (pinfo->cinfo, COL_INFO, ":TOKENID");
1582
0
        }
1583
0
      if ((flags & AFS_FLAG_RETURNBLOCKER) == AFS_FLAG_RETURNBLOCKER)
1584
0
        {
1585
0
          col_append_str (pinfo->cinfo, COL_INFO, ":RETURNBLOCKER");
1586
0
        }
1587
0
      if ((flags & AFS_FLAG_ASYNCGRANT) == AFS_FLAG_ASYNCGRANT)
1588
0
        {
1589
0
          col_append_str (pinfo->cinfo, COL_INFO, ":ASYNCGRANT");
1590
0
        }
1591
0
      if ((flags & AFS_FLAG_NOREVOKE) == AFS_FLAG_NOREVOKE)
1592
0
        {
1593
0
          col_append_str (pinfo->cinfo, COL_INFO, ":NOREVOKE");
1594
0
        }
1595
0
      if ((flags & AFS_FLAG_MOVE_REESTABLISH) == AFS_FLAG_MOVE_REESTABLISH)
1596
0
        {
1597
0
          col_append_str (pinfo->cinfo, COL_INFO, ":MOVE_REESTABLISH");
1598
0
        }
1599
0
      if ((flags & AFS_FLAG_SERVER_REESTABLISH) ==
1600
0
          AFS_FLAG_SERVER_REESTABLISH)
1601
0
        {
1602
0
          col_append_str (pinfo->cinfo, COL_INFO, ":SERVER_REESTABLISH");
1603
0
        }
1604
0
      if ((flags & AFS_FLAG_NO_NEW_EPOCH) == AFS_FLAG_NO_NEW_EPOCH)
1605
0
        {
1606
0
          col_append_str (pinfo->cinfo, COL_INFO, ":NO_NEW_EPOCH");
1607
0
        }
1608
0
      if ((flags & AFS_FLAG_MOVE_SOURCE_OK) == AFS_FLAG_MOVE_SOURCE_OK)
1609
0
        {
1610
0
          col_append_str (pinfo->cinfo, COL_INFO, ":MOVE_SOURCE_OK");
1611
0
        }
1612
0
      if ((flags & AFS_FLAG_SYNC) == AFS_FLAG_SYNC)
1613
0
        {
1614
0
          col_append_str (pinfo->cinfo, COL_INFO, ":SYNC");
1615
0
        }
1616
0
      if ((flags & AFS_FLAG_ZERO) == AFS_FLAG_ZERO)
1617
0
        {
1618
0
          col_append_str (pinfo->cinfo, COL_INFO, ":ZERO");
1619
0
        }
1620
0
      if ((flags & AFS_FLAG_SKIPSTATUS) == AFS_FLAG_SKIPSTATUS)
1621
0
        {
1622
0
          col_append_str (pinfo->cinfo, COL_INFO, ":SKIPSTATUS");
1623
0
        }
1624
0
      if ((flags & AFS_FLAG_FORCEREVOCATIONS) == AFS_FLAG_FORCEREVOCATIONS)
1625
0
        {
1626
0
          col_append_str (pinfo->cinfo, COL_INFO, ":FORCEREVOCATIONS");
1627
0
        }
1628
0
      if ((flags & AFS_FLAG_FORCEVOLQUIESCE) == AFS_FLAG_FORCEVOLQUIESCE)
1629
0
        {
1630
0
          col_append_str (pinfo->cinfo, COL_INFO, ":FORCEVOLQUIESCE");
1631
0
        }
1632
0
      if ((flags & AFS_FLAG_SEC_SERVICE) == AFS_FLAG_SEC_SERVICE)
1633
0
        {
1634
0
          col_append_str (pinfo->cinfo, COL_INFO, ":SEC_SERVICE");
1635
0
        }
1636
0
      if ((flags & AFS_FLAG_CONTEXT_NEW_ACL_IF) ==
1637
0
          AFS_FLAG_CONTEXT_NEW_ACL_IF)
1638
0
        {
1639
0
          col_append_str (pinfo->cinfo, COL_INFO, ":CONTEXT_NEW_ACL_IF");
1640
0
        }
1641
0
    }
1642
1643
0
  proto_item_set_len (item, offset - old_offset);
1644
0
  return offset;
1645
0
}
1646
1647
static unsigned
1648
dissect_fetchstatus (tvbuff_t *tvb, unsigned offset,
1649
                     packet_info *pinfo, proto_tree *parent_tree,
1650
                     dcerpc_info *di, uint8_t *drep)
1651
0
{
1652
/*
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;
1684
*/
1685
0
  proto_item *item       = NULL;
1686
0
  proto_tree *tree       = NULL;
1687
0
  int         old_offset = offset;
1688
0
  uint32_t    interfaceversion, filetype, linkcount, length_high, length_low;
1689
0
  uint32_t    dataversion_high, dataversion_low, author, owner, group, calleraccess;
1690
0
  uint32_t    anonymousaccess, aclexpirationtime, mode, parentvnode, parentunique;
1691
0
  uint32_t    modtime_sec, modtime_msec, changetime_sec, changetime_msec;
1692
0
  uint32_t    accesstime_sec, accesstime_msec, servermodtime_msec, servermodtime_sec;
1693
0
  uint32_t    devicenumber, blocksused, clientspare1, devicenumberhighbits;
1694
0
  uint32_t    agtypeunique, himaxspare, lomaxspare, pathconfspare, spare4;
1695
0
  uint32_t    spare5, spare6;
1696
0
  e_guid_t    typeuuid, objectuuid;
1697
1698
0
  if (di->conformant_run)
1699
0
    {
1700
0
      return offset;
1701
0
    }
1702
1703
0
  if (parent_tree)
1704
0
    {
1705
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
1706
0
                                     ett_fileexp_fetchstatus, &item, "FetchStatus:");
1707
0
    }
1708
1709
0
  offset =
1710
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1711
0
                        hf_fileexp_interfaceversion, &interfaceversion);
1712
0
  offset =
1713
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_filetype,
1714
0
                        &filetype);
1715
0
  offset =
1716
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_linkcount,
1717
0
                        &linkcount);
1718
0
  offset =
1719
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1720
0
                        hf_fileexp_length_high, &length_high);
1721
0
  offset =
1722
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_length_low,
1723
0
                        &length_low);
1724
0
  offset =
1725
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1726
0
                        hf_fileexp_dataversion_high, &dataversion_high);
1727
0
  offset =
1728
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1729
0
                        hf_fileexp_dataversion_low, &dataversion_low);
1730
0
  offset =
1731
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_author,
1732
0
                        &author);
1733
0
  offset =
1734
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_owner,
1735
0
                        &owner);
1736
0
  offset =
1737
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_group,
1738
0
                        &group);
1739
0
  offset =
1740
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1741
0
                        hf_fileexp_calleraccess, &calleraccess);
1742
0
  offset =
1743
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1744
0
                        hf_fileexp_anonymousaccess, &anonymousaccess);
1745
0
  offset =
1746
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1747
0
                        hf_fileexp_aclexpirationtime, &aclexpirationtime);
1748
0
  offset =
1749
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_mode,
1750
0
                        &mode);
1751
0
  offset =
1752
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1753
0
                        hf_fileexp_parentvnode, &parentvnode);
1754
0
  offset =
1755
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1756
0
                        hf_fileexp_parentunique, &parentunique);
1757
0
  offset =
1758
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1759
0
                        hf_fileexp_modtime_sec, &modtime_sec);
1760
0
  offset =
1761
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1762
0
                        hf_fileexp_modtime_msec, &modtime_msec);
1763
0
  offset =
1764
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1765
0
                        hf_fileexp_changetime_sec, &changetime_sec);
1766
0
  offset =
1767
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1768
0
                        hf_fileexp_changetime_msec, &changetime_msec);
1769
0
  offset =
1770
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1771
0
                        hf_fileexp_accesstime_sec, &accesstime_sec);
1772
0
  offset =
1773
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1774
0
                        hf_fileexp_accesstime_msec, &accesstime_msec);
1775
0
  offset =
1776
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1777
0
                        hf_fileexp_servermodtime_sec, &servermodtime_sec);
1778
0
  offset =
1779
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1780
0
                        hf_fileexp_servermodtime_msec, &servermodtime_msec);
1781
0
  offset =
1782
0
    dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep, hf_fileexp_typeuuid,
1783
0
                        &typeuuid);
1784
0
  offset =
1785
0
    dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep, hf_fileexp_objectuuid,
1786
0
                        &objectuuid);
1787
0
  offset =
1788
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1789
0
                        hf_fileexp_devicenumber, &devicenumber);
1790
0
  offset =
1791
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_blocksused,
1792
0
                        &blocksused);
1793
0
  offset =
1794
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1795
0
                        hf_fileexp_clientspare1, &clientspare1);
1796
0
  offset =
1797
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1798
0
                        hf_fileexp_devicenumberhighbits,
1799
0
                        &devicenumberhighbits);
1800
0
  offset =
1801
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1802
0
                        hf_fileexp_agtypeunique, &agtypeunique);
1803
0
  offset =
1804
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_himaxspare,
1805
0
                        &himaxspare);
1806
0
  offset =
1807
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_lomaxspare,
1808
0
                        &lomaxspare);
1809
0
  offset =
1810
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1811
0
                        hf_fileexp_pathconfspare, &pathconfspare);
1812
0
  offset =
1813
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_spare4,
1814
0
                        &spare4);
1815
0
  offset =
1816
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_spare5,
1817
0
                        &spare5);
1818
0
  offset =
1819
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_spare6,
1820
0
                        &spare6);
1821
1822
0
  col_append_fstr (pinfo->cinfo, COL_INFO,
1823
0
                     " :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
0
                     interfaceversion, filetype, linkcount, length_low,
1825
0
                     dataversion_low, author, owner, group, calleraccess,
1826
0
                     anonymousaccess, aclexpirationtime, mode, parentvnode,
1827
0
                     parentunique, modtime_sec, changetime_sec,
1828
0
                     accesstime_sec, servermodtime_sec, devicenumber,
1829
0
                     blocksused, clientspare1, devicenumberhighbits,
1830
0
                     agtypeunique);
1831
1832
0
  proto_item_set_len (item, offset - old_offset);
1833
0
  return offset;
1834
0
}
1835
1836
static unsigned
1837
dissect_afsReturnDesc (tvbuff_t *tvb, unsigned offset,
1838
                       packet_info *pinfo, proto_tree *parent_tree,
1839
                       dcerpc_info *di, uint8_t *drep)
1840
0
{
1841
/*
1842
        afsFid fid;             * useful hint *
1843
        afsHyper tokenID;
1844
        afsHyper type;          * mask *
1845
        unsigned32 flags;       * just in case *
1846
*/
1847
1848
0
  proto_item *item       = NULL;
1849
0
  proto_tree *tree       = NULL;
1850
0
  int         old_offset = offset;
1851
0
  uint32_t    tokenid_high, tokenid_low, type_high, type_low;
1852
1853
0
  if (di->conformant_run)
1854
0
    {
1855
0
      return offset;
1856
0
    }
1857
1858
0
  if (parent_tree)
1859
0
    {
1860
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
1861
0
                                     ett_fileexp_afsReturnDesc, &item, "afsReturnDesc:");
1862
0
    }
1863
1864
0
  offset = dissect_afsFid ( tvb, offset, pinfo, tree, di, drep);
1865
1866
0
  offset =
1867
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1868
0
                        hf_fileexp_afsreturndesc_tokenid_high, &tokenid_high);
1869
0
  offset =
1870
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1871
0
                        hf_fileexp_afsreturndesc_tokenid_low, &tokenid_low);
1872
0
  offset =
1873
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1874
0
                        hf_fileexp_afsreturndesc_type_high, &type_high);
1875
0
  offset =
1876
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1877
0
                        hf_fileexp_afsreturndesc_type_low, &type_low);
1878
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " TokenId:%u/%u Type:%u/%u",
1879
0
                     tokenid_high, tokenid_low, type_high, type_low);
1880
1881
0
  offset =
1882
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
1883
0
                         NDR_POINTER_REF, "afsFlags: ", -1);
1884
1885
0
  proto_item_set_len (item, offset - old_offset);
1886
0
  return offset;
1887
0
}
1888
1889
1890
1891
static unsigned
1892
dissect_afsReturns (tvbuff_t *tvb, unsigned offset,
1893
                    packet_info *pinfo, proto_tree *tree,
1894
                    dcerpc_info *di, uint8_t *drep)
1895
0
{
1896
/*
1897
        long afsReturns_len;
1898
        [length_is(afsReturns_len)] afsReturnDesc afsReturns_val[AFS_BULKMAX];
1899
*/
1900
1901
  /* this is not really a ucvarray, but with the initial len, we can
1902
     cheat and pretend it is */
1903
0
  if (di->conformant_run)
1904
0
    {
1905
0
      return offset;
1906
0
    }
1907
1908
0
  offset =
1909
0
    dissect_ndr_ucvarray (tvb, offset, pinfo, tree, di, drep,
1910
0
                          dissect_afsReturnDesc);
1911
1912
0
  return offset;
1913
0
}
1914
1915
#if 0 /* not used */
1916
1917
static unsigned
1918
dissect_afsbundled_stat (tvbuff_t *tvb, unsigned offset,
1919
                         packet_info *pinfo, proto_tree *parent_tree,
1920
                         dcerpc_info *di, uint8_t *drep _U_)
1921
{
1922
  proto_item *item       = NULL;
1923
  proto_tree *tree       = NULL;
1924
  int         old_offset = offset;
1925
1926
  if (di->conformant_run)
1927
    {
1928
      return offset;
1929
    }
1930
1931
  if (parent_tree)
1932
    {
1933
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fileexp_afsbundled_stat, &item, "afsbundled_stat:");
1934
    }
1935
1936
/*  bundled_stat
1937
1938
        afsFid fid;
1939
        afsFetchStatus stat;
1940
        afsToken token;
1941
        error_status_t error;
1942
*/
1943
1944
/*
1945
        offset = dissect_afsFid(tvb, offset, pinfo, tree, di, drep);
1946
*/
1947
/* SKIPTOKEN/STAT?
1948
        offset = dissect_fetchstatus (tvb, offset, pinfo, tree, di, drep);
1949
        offset = dissect_afstoken (tvb, offset, pinfo, tree, di, drep);
1950
*/
1951
/* This is currently under construction as I figure out the reverse layout of the packet. */
1952
/*
1953
        offset = dissect_afsErrorStatus (tvb, offset, pinfo, tree, di, drep);
1954
*/
1955
1956
  proto_item_set_len (item, offset - old_offset);
1957
  return offset;
1958
1959
}
1960
1961
#endif /* not used */
1962
1963
static unsigned
1964
dissect_afsBulkStat (tvbuff_t *tvb _U_, unsigned offset,
1965
                                  packet_info *pinfo _U_, proto_tree *tree _U_,
1966
                                  dcerpc_info *di _U_, uint8_t *drep _U_)
1967
0
{
1968
/*
1969
        unsigned32 BulkStat_len;
1970
        [length_is (BulkStat_len)] bundled_stat BulkStat_val[AFS_BULKMAX];
1971
*/
1972
        /* this is not really a ucvarray, but with the initial len, we can
1973
           cheat and pretend it is */
1974
           /*
1975
        offset = dissect_ndr_ucvarray (tvb, offset, pinfo, tree, drep,
1976
                dissect_afsbundled_stat);
1977
                */
1978
1979
0
        return offset;
1980
0
}
1981
1982
1983
1984
1985
static unsigned
1986
fileexp_dissect_removefile_rqst (tvbuff_t *tvb, unsigned offset,
1987
                                 packet_info *pinfo, proto_tree *tree,
1988
                                 dcerpc_info *di, uint8_t *drep)
1989
0
{
1990
0
  if (di->conformant_run)
1991
0
    {
1992
0
      return offset;
1993
0
    }
1994
1995
/*
1996
        [in]    afsFid          *DirFidp,
1997
        [in]    afsFidTaggedName        *Namep,
1998
        [in]    afsHyper        *returnTokenIDp,
1999
        [in]    afsHyper        *minVVp,
2000
        [in]    unsigned32      Flags,
2001
*/
2002
2003
0
  offset =
2004
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2005
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2006
0
  offset =
2007
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2008
0
                         dissect_afsfidtaggedname, NDR_POINTER_REF,
2009
0
                         "afsFidTaggedName: ", -1);
2010
0
  offset =
2011
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_returntokenidp,
2012
0
                         NDR_POINTER_REF, "afsReturnTokenIDp:", -1);
2013
0
  offset =
2014
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2015
0
                         NDR_POINTER_REF, "afsMinVVp:", -1);
2016
2017
0
  offset =
2018
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2019
0
                         NDR_POINTER_REF, "afsFlags:", -1);
2020
2021
0
  return offset;
2022
0
}
2023
2024
static unsigned
2025
fileexp_dissect_storedata_rqst (tvbuff_t *tvb, unsigned offset,
2026
                                packet_info *pinfo, proto_tree *tree,
2027
                                dcerpc_info *di, uint8_t *drep)
2028
0
{
2029
0
  uint32_t position_high, position_low, length;
2030
2031
0
  if (di->conformant_run)
2032
0
    {
2033
0
      return offset;
2034
0
    }
2035
2036
/*
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,
2044
*/
2045
2046
  /* afsFid */
2047
0
  offset =
2048
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2049
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2050
0
  offset =
2051
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2052
0
                         dissect_afsstorestatus, NDR_POINTER_REF,
2053
0
                         "afsStoreStatus:", -1);
2054
0
  offset =
2055
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2056
0
                        hf_fileexp_position_high, &position_high);
2057
0
  offset =
2058
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2059
0
                        hf_fileexp_position_low, &position_low);
2060
2061
0
  offset =
2062
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2063
0
                        hf_fileexp_length, &length);
2064
2065
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " Position:%u/%u Length:%u",
2066
0
                     position_high, position_low, length);
2067
2068
0
  offset =
2069
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2070
0
                         NDR_POINTER_REF, "MinVVp:", -1);
2071
2072
0
  offset =
2073
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2074
0
                         NDR_POINTER_REF, "afsFlags:", -1);
2075
2076
/* XXX need to decode pipe_t still here */
2077
2078
0
  return offset;
2079
0
}
2080
2081
static unsigned
2082
fileexp_dissect_gettoken_rqst (tvbuff_t *tvb, unsigned offset,
2083
                               packet_info *pinfo, proto_tree *tree,
2084
                               dcerpc_info *di, uint8_t *drep)
2085
0
{
2086
0
  if (di->conformant_run)
2087
0
    {
2088
0
      return offset;
2089
0
    }
2090
2091
/*
2092
        [in]    afsFid          *Fidp,
2093
        [in]    afsToken        *MinTokenp,
2094
        [in]    afsHyper        *minVVp,
2095
        [in]    unsigned32      Flags,
2096
*/
2097
2098
  /* afsFid */
2099
0
  offset =
2100
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2101
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2102
2103
0
  offset =
2104
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afstoken,
2105
0
                         NDR_POINTER_REF, "afsToken: ", -1);
2106
2107
0
  offset =
2108
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2109
0
                         NDR_POINTER_REF, "MinVVp:", -1);
2110
2111
0
  offset =
2112
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2113
0
                         NDR_POINTER_REF, "afsFlags:", -1);
2114
2115
0
  return offset;
2116
0
}
2117
static unsigned
2118
fileexp_dissect_gettoken_resp (tvbuff_t *tvb, unsigned offset,
2119
                               packet_info *pinfo, proto_tree *tree,
2120
                               dcerpc_info *di, uint8_t *drep)
2121
0
{
2122
0
  if (di->conformant_run)
2123
0
    {
2124
0
      return offset;
2125
0
    }
2126
2127
/*
2128
        [out]   afsToken        *OutTokenp,
2129
        [out]   afsRecordLock   *OutBlockerp,
2130
        [out]   afsFetchStatus  *OutStatusp,
2131
        [out]   afsVolSync      *Syncp
2132
*/
2133
2134
0
  offset =
2135
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afstoken,
2136
0
                         NDR_POINTER_REF, "afsToken: ", -1);
2137
0
  offset =
2138
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2139
0
                         dissect_afsRecordLock, NDR_POINTER_REF,
2140
0
                         "afsRecordLock: ", -1);
2141
0
  offset =
2142
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
2143
0
                         NDR_POINTER_REF, "afsFetchStatus: ", -1);
2144
0
  offset =
2145
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
2146
0
                         NDR_POINTER_REF, "VolSync: ", -1);
2147
0
  offset =
2148
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2149
0
                         dissect_afsErrorStatus, NDR_POINTER_REF,
2150
0
                         "afsErrorStatus: ", -1);
2151
2152
0
  return offset;
2153
0
}
2154
2155
static unsigned
2156
fileexp_dissect_lookuproot_rqst (tvbuff_t *tvb, unsigned offset,
2157
                                 packet_info *pinfo, proto_tree *tree,
2158
                                 dcerpc_info *di, uint8_t *drep)
2159
0
{
2160
0
  if (di->conformant_run)
2161
0
    {
2162
0
      return offset;
2163
0
    }
2164
2165
/*
2166
 *         [in]    afsFid          *InFidp,
2167
 *         [in]    afsHyper        *minVVp,
2168
 *         [in]    unsigned32   Flags,
2169
 */
2170
2171
0
  offset =
2172
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2173
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2174
2175
0
  offset =
2176
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2177
0
                         NDR_POINTER_REF, "MinVVp:", -1);
2178
2179
0
  offset =
2180
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2181
0
                         NDR_POINTER_REF, "afsFlags:", -1);
2182
2183
0
  return offset;
2184
0
}
2185
2186
static unsigned
2187
fileexp_dissect_fetchdata_rqst (tvbuff_t *tvb, unsigned offset,
2188
                                packet_info *pinfo, proto_tree *tree,
2189
                                dcerpc_info *di, uint8_t *drep)
2190
0
{
2191
0
  uint32_t position_high, position_low, length;
2192
2193
0
  if (di->conformant_run)
2194
0
    {
2195
0
      return offset;
2196
0
    }
2197
2198
/*
2199
        [in]    afsFid          *Fidp,
2200
        [in]    afsHyper        *minVVp,
2201
        [in]    afsHyper        *Position,
2202
        [in]    signed32                Length,
2203
        [in]    unsigned32      Flags,
2204
*/
2205
2206
0
  offset =
2207
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2208
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2209
2210
0
  offset =
2211
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2212
0
                         NDR_POINTER_REF, "MinVVp:", -1);
2213
0
  offset =
2214
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2215
0
                        hf_fileexp_position_high, &position_high);
2216
0
  offset =
2217
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2218
0
                        hf_fileexp_position_low, &position_low);
2219
0
  offset =
2220
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2221
0
                        hf_fileexp_length, &length);
2222
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " Position:%u/%u Length:%u",
2223
0
                     position_high, position_low, length);
2224
2225
0
  offset =
2226
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2227
0
                         NDR_POINTER_REF, "afsFlags:", -1);
2228
2229
0
  return offset;
2230
0
}
2231
2232
static unsigned
2233
fileexp_dissect_fetchacl_rqst (tvbuff_t *tvb, unsigned offset,
2234
                               packet_info *pinfo, proto_tree *tree,
2235
                               dcerpc_info *di, uint8_t *drep)
2236
0
{
2237
0
  uint32_t acltype;
2238
2239
0
  if (di->conformant_run)
2240
0
    {
2241
0
      return offset;
2242
0
    }
2243
2244
/*
2245
        [in]    afsFid          *Fidp,
2246
        [in]    unsigned32      aclType,
2247
        [in]    afsHyper        *minVVp,
2248
        [in]    unsigned32      Flags,
2249
*/
2250
2251
  /* afsFid */
2252
0
  offset =
2253
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2254
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2255
2256
0
  offset =
2257
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_acltype,
2258
0
                        &acltype);
2259
0
  offset =
2260
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2261
0
                         NDR_POINTER_REF, "MinVVp:", -1);
2262
2263
0
  offset =
2264
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2265
0
                         NDR_POINTER_REF, "afsFlags:", -1);
2266
2267
0
  if (acltype)
2268
0
    {
2269
0
      col_append_str (pinfo->cinfo, COL_INFO,
2270
0
                        " :copy the ACL from specified fid:");
2271
0
    }
2272
2273
0
  return offset;
2274
0
}
2275
static unsigned
2276
fileexp_dissect_fetchstatus_rqst (tvbuff_t *tvb, unsigned offset,
2277
                                  packet_info *pinfo, proto_tree *tree,
2278
                                  dcerpc_info *di, uint8_t *drep)
2279
0
{
2280
0
  if (di->conformant_run)
2281
0
    {
2282
0
      return offset;
2283
0
    }
2284
2285
/*
2286
        [in]    afsFid          *Fidp,
2287
        [in]    afsHyper        *minVVp,
2288
        [in]    unsigned32      Flags,
2289
*/
2290
2291
0
  offset =
2292
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2293
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2294
0
  offset =
2295
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2296
0
                         NDR_POINTER_REF, "MinVVp:", -1);
2297
0
  offset =
2298
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2299
0
                         NDR_POINTER_REF, "afsFlags:", -1);
2300
2301
0
  return offset;
2302
0
}
2303
static unsigned
2304
fileexp_dissect_storeacl_rqst (tvbuff_t *tvb, unsigned offset,
2305
                               packet_info *pinfo, proto_tree *tree,
2306
                               dcerpc_info *di, uint8_t *drep)
2307
0
{
2308
0
  uint32_t acltype;
2309
2310
0
  if (di->conformant_run)
2311
0
    {
2312
0
      return offset;
2313
0
    }
2314
2315
/*
2316
        [in]    afsFid          *Fidp,
2317
        [in]    afsACL          *AccessListp,
2318
        [in]    unsigned32      aclType,
2319
        [in]    afsFid          *aclFidp,
2320
        [in]    afsHyper        *minVVp,
2321
        [in]    unsigned32      Flags,
2322
*/
2323
2324
0
  offset =
2325
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2326
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2327
0
  offset =
2328
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsAcl,
2329
0
                         NDR_POINTER_REF, "afsAcl: ", -1);
2330
0
  offset =
2331
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_acltype,
2332
0
                        &acltype);
2333
0
  offset =
2334
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2335
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2336
0
  offset =
2337
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2338
0
                         NDR_POINTER_REF, "MinVVp:", -1);
2339
0
  offset =
2340
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2341
0
                         NDR_POINTER_REF, "afsFlags:", -1);
2342
2343
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " aclType:%u",acltype);
2344
2345
0
  return offset;
2346
0
}
2347
2348
static unsigned
2349
fileexp_dissect_storestatus_rqst (tvbuff_t *tvb, unsigned offset,
2350
                                  packet_info *pinfo, proto_tree *tree,
2351
                                  dcerpc_info *di, uint8_t *drep)
2352
0
{
2353
0
  if (di->conformant_run)
2354
0
    {
2355
0
      return offset;
2356
0
    }
2357
2358
/*
2359
        [in]    afsFid          *Fidp,
2360
        [in]    afsStoreStatus  *InStatusp,
2361
        [in]    afsHyper        *minVVp,
2362
        [in]    unsigned32      Flags,
2363
*/
2364
2365
0
  offset =
2366
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2367
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2368
0
  offset =
2369
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2370
0
                         dissect_afsstorestatus, NDR_POINTER_REF,
2371
0
                         "afsStoreStatus: ", -1);
2372
0
  offset =
2373
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2374
0
                         NDR_POINTER_REF, "MinVVp:", -1);
2375
0
  offset =
2376
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2377
0
                         NDR_POINTER_REF, "afsFlags:", -1);
2378
2379
0
  return offset;
2380
0
}
2381
2382
static unsigned
2383
fileexp_dissect_createfile_rqst (tvbuff_t *tvb, unsigned offset,
2384
                                 packet_info *pinfo, proto_tree *tree,
2385
                                 dcerpc_info *di, uint8_t *drep)
2386
0
{
2387
0
  if (di->conformant_run)
2388
0
    {
2389
0
      return offset;
2390
0
    }
2391
2392
/*
2393
        [in]    afsFid          *DirFidp,
2394
        [in]    afsTaggedName   *Namep,
2395
        [in]    afsStoreStatus  *InStatusp,
2396
        [in]    afsHyper        *minVVp,
2397
        [in]    unsigned32      Flags,
2398
*/
2399
2400
0
  offset =
2401
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2402
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2403
0
  offset =
2404
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2405
0
                         dissect_afstaggedname, NDR_POINTER_REF,
2406
0
                         "afsTaggedName: ", -1);
2407
0
  offset =
2408
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2409
0
                         dissect_afsstorestatus, NDR_POINTER_REF,
2410
0
                         "afsStoreStatus: ", -1);
2411
0
  offset =
2412
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2413
0
                         NDR_POINTER_REF, "MinVVp:", -1);
2414
0
  offset =
2415
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
2416
0
                         NDR_POINTER_REF, "afsFlags:", -1);
2417
2418
0
  return offset;
2419
0
}
2420
2421
static unsigned
2422
fileexp_dissect_rename_rqst (tvbuff_t *tvb, unsigned offset,
2423
                             packet_info *pinfo, proto_tree *tree,
2424
                             dcerpc_info *di, uint8_t *drep)
2425
0
{
2426
0
  if (di->conformant_run)
2427
0
    {
2428
0
      return offset;
2429
0
    }
2430
2431
/*
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,
2439
*/
2440
2441
  /* afsFid */
2442
0
  offset =
2443
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2444
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2445
2446
0
  offset =
2447
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2448
0
                         dissect_afsfidtaggedname, NDR_POINTER_REF,
2449
0
                         "afsFidTaggedName: ", -1);
2450
2451
0
  offset =
2452
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2453
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2454
2455
0
  offset =
2456
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2457
0
                         dissect_afstaggedname, NDR_POINTER_REF,
2458
0
                         "afsFidTaggedName: ", -1);
2459
2460
0
  offset =
2461
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2462
0
                         dissect_returntokenidp, NDR_POINTER_REF,
2463
0
                         "afsReturnTokenIDp: ", -1);
2464
2465
0
  offset =
2466
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2467
0
                         dissect_minvvp, NDR_POINTER_REF,
2468
0
                         "afsminVVp: ", -1);
2469
2470
0
  offset = dissect_afsFlags (tvb, offset, pinfo, tree, di, drep);
2471
2472
0
  return offset;
2473
0
}
2474
2475
static unsigned
2476
fileexp_dissect_symlink_rqst (tvbuff_t *tvb, unsigned offset,
2477
                              packet_info *pinfo, proto_tree *tree,
2478
                              dcerpc_info *di, uint8_t *drep)
2479
0
{
2480
0
  if (di->conformant_run)
2481
0
    {
2482
0
      return offset;
2483
0
    }
2484
2485
/*
2486
        [in]    afsFid          *DirFidp,
2487
        [in]    afsTaggedName   *Namep,
2488
        [in]    afsTaggedPath   *LinkContentsp,
2489
        [in]    afsStoreStatus  *InStatusp,
2490
        [in]    afsHyper        *minVVp,
2491
        [in]    unsigned32      Flags,
2492
*/
2493
2494
  /* afsFid */
2495
0
  offset =
2496
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2497
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2498
2499
0
  offset =
2500
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2501
0
                         dissect_afstaggedname, NDR_POINTER_REF,
2502
0
                         "afsTaggedName: ", -1);
2503
0
  offset =
2504
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2505
0
                         dissect_afsTaggedPath, NDR_POINTER_REF,
2506
0
                         "afsTaggedPath: ", -1);
2507
0
  offset =
2508
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2509
0
                         dissect_afsstorestatus, NDR_POINTER_REF,
2510
0
                         "afsStoreStatus: ", -1);
2511
0
  offset =
2512
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2513
0
                         NDR_POINTER_REF, "MinVVp:", -1);
2514
0
    offset = dissect_afsFlags (tvb, offset, pinfo, tree, di, drep);
2515
2516
0
  return offset;
2517
0
}
2518
2519
static unsigned
2520
fileexp_dissect_readdir_rqst (tvbuff_t *tvb, unsigned offset,
2521
                              packet_info *pinfo, proto_tree *tree,
2522
                              dcerpc_info *di, uint8_t *drep)
2523
0
{
2524
0
  uint32_t size;
2525
2526
0
  if (di->conformant_run)
2527
0
    {
2528
0
      return offset;
2529
0
    }
2530
2531
/*
2532
        [in]    afsFid          *DirFidp,
2533
        [in]    afsHyper        *Offsetp,
2534
        [in]    unsigned32      Size,
2535
        [in]    afsHyper        *minVVp,
2536
        [in]    unsigned32      Flags,
2537
*/
2538
2539
0
  offset =
2540
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2541
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2542
0
  offset =
2543
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_offsetp,
2544
0
                         NDR_POINTER_REF, "Offsetp: ", -1);
2545
0
  offset =
2546
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2547
0
                        hf_fileexp_readdir_size, &size);
2548
2549
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " Size:%u", size);
2550
2551
0
  offset =
2552
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2553
0
                         NDR_POINTER_REF, "MinVVp:", -1);
2554
0
   offset = dissect_afsFlags ( tvb, offset, pinfo, tree, di, drep);
2555
2556
0
  return offset;
2557
0
}
2558
2559
static unsigned
2560
fileexp_dissect_makedir_rqst (tvbuff_t *tvb, unsigned offset,
2561
                              packet_info *pinfo, proto_tree *tree,
2562
                              dcerpc_info *di, uint8_t *drep)
2563
0
{
2564
0
  if (di->conformant_run)
2565
0
    {
2566
0
      return offset;
2567
0
    }
2568
2569
/*
2570
        [in]    afsFid          *DirFidp,
2571
        [in]    afsTaggedName   *Namep,
2572
        [in]    afsStoreStatus  *InStatusp,
2573
        [in]    afsHyper        *minVVp,
2574
        [in]    unsigned32      Flags,
2575
*/
2576
2577
0
  offset =
2578
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2579
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2580
2581
0
  offset =
2582
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2583
0
                         dissect_afstaggedname, NDR_POINTER_REF,
2584
0
                         "afsTaggedName: ", -1);
2585
0
  offset =
2586
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2587
0
                         dissect_afsstorestatus, NDR_POINTER_REF,
2588
0
                         "afsStoreStatus: ", -1);
2589
0
  offset =
2590
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2591
0
                         NDR_POINTER_REF, "MinVVp:", -1);
2592
0
  offset = dissect_afsFlags ( tvb, offset, pinfo, tree, di, drep);
2593
2594
0
  return offset;
2595
0
}
2596
2597
static unsigned
2598
fileexp_dissect_removedir_rqst (tvbuff_t *tvb, unsigned offset,
2599
                                packet_info *pinfo, proto_tree *tree,
2600
                                dcerpc_info *di, uint8_t *drep)
2601
0
{
2602
0
  uint32_t returntokenidp_high, returntokenidp_low;
2603
2604
0
  if (di->conformant_run)
2605
0
    {
2606
0
      return offset;
2607
0
    }
2608
2609
/*
2610
        [in]    afsFid          *DirFidp,
2611
        [in]    afsFidTaggedName        *Namep,
2612
        [in]    afsHyper        *returnTokenIDp,
2613
        [in]    afsHyper        *minVVp,
2614
        [in]    unsigned32      Flags,
2615
*/
2616
2617
0
  offset =
2618
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2619
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2620
0
  offset =
2621
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2622
0
                         dissect_afsfidtaggedname, NDR_POINTER_REF,
2623
0
                         "afsFidTaggedName: ", -1);
2624
0
  offset =
2625
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2626
0
                        hf_fileexp_returntokenidp_high, &returntokenidp_high);
2627
0
  offset =
2628
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2629
0
                        hf_fileexp_returntokenidp_low, &returntokenidp_low);
2630
2631
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " returnTokenIDp:%u/%u",
2632
0
                     returntokenidp_high, returntokenidp_low);
2633
0
  offset =
2634
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2635
0
                         NDR_POINTER_REF, "MinVVp:", -1);
2636
0
  offset = dissect_afsFlags ( tvb, offset, pinfo, tree, di, drep );
2637
2638
0
  return offset;
2639
0
}
2640
2641
static unsigned
2642
fileexp_dissect_lookup_rqst (tvbuff_t *tvb, unsigned offset,
2643
                             packet_info *pinfo, proto_tree *tree,
2644
                             dcerpc_info *di, uint8_t *drep)
2645
0
{
2646
0
  if (di->conformant_run)
2647
0
    {
2648
0
      return offset;
2649
0
    }
2650
2651
/*
2652
        [in]    afsFid          *DirFidp,
2653
        [in]    afsTaggedName   *Namep,
2654
        [in]    afsHyper        *minVVp,
2655
        [in]    unsigned32      Flags,
2656
*/
2657
2658
0
  offset =
2659
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2660
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2661
2662
0
  offset =
2663
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2664
0
                         dissect_afstaggedname, NDR_POINTER_REF,
2665
0
                         "afsTaggedName: ", -1);
2666
0
  offset =
2667
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2668
0
                         NDR_POINTER_REF, "MinVVp:", -1);
2669
0
   offset = dissect_afsFlags ( tvb, offset, pinfo, tree, di, drep);
2670
2671
0
  return offset;
2672
0
}
2673
static unsigned
2674
fileexp_dissect_lookup_resp (tvbuff_t *tvb, unsigned offset,
2675
                             packet_info *pinfo, proto_tree *tree,
2676
                             dcerpc_info *di, uint8_t *drep)
2677
0
{
2678
0
  if (di->conformant_run)
2679
0
    {
2680
0
      return offset;
2681
0
    }
2682
2683
/*
2684
        [out]   afsFid          *OutFidp,
2685
        [out]   afsFetchStatus  *OutFidStatusp,
2686
        [out]   afsFetchStatus  *OutDirStatusp,
2687
        [out]   afsToken        *OutTokenp,
2688
        [out]   afsVolSync      *Syncp
2689
*/
2690
2691
0
  offset =
2692
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2693
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2694
2695
0
  offset =
2696
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
2697
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
2698
0
  offset =
2699
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
2700
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
2701
2702
0
  offset =
2703
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afstoken,
2704
0
                         NDR_POINTER_REF, "afsToken: ", -1);
2705
0
  offset =
2706
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
2707
0
                         NDR_POINTER_REF, "VolSync: ", -1);
2708
0
  MACRO_ST_CLEAR ("Lookup reply");
2709
2710
0
  return offset;
2711
2712
0
}
2713
2714
static unsigned
2715
fileexp_dissect_makemountpoint_rqst (tvbuff_t *tvb, unsigned offset,
2716
                                     packet_info *pinfo, proto_tree *tree,
2717
                                     dcerpc_info *di, uint8_t *drep)
2718
0
{
2719
0
  uint16_t type;
2720
2721
0
  if (di->conformant_run)
2722
0
    {
2723
0
      return offset;
2724
0
    }
2725
2726
2727
/*
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,
2736
*/
2737
2738
  /* afsFid */
2739
0
  offset =
2740
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2741
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2742
2743
0
  offset =
2744
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2745
0
                         dissect_afstaggedname, NDR_POINTER_REF,
2746
0
                         "afsTaggedName: ", -1);
2747
0
  offset =
2748
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2749
0
                         dissect_afstaggedname, NDR_POINTER_REF,
2750
0
                         "afsTaggedName: ", -1);
2751
0
  offset =
2752
0
    dissect_ndr_uint16 (tvb, offset, pinfo, tree, di, drep, hf_fileexp_fstype,
2753
0
                        &type);
2754
0
  offset =
2755
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2756
0
                         dissect_afstaggedname, NDR_POINTER_REF,
2757
0
                         "afsTaggedName: ", -1);
2758
0
  offset =
2759
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
2760
0
                         dissect_afsstorestatus, NDR_POINTER_REF,
2761
0
                         "afsStoreStatus: ", -1);
2762
0
  offset =
2763
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
2764
0
                         NDR_POINTER_REF, "MinVVp:", -1);
2765
2766
0
  offset = dissect_afsFlags (tvb, offset, pinfo, tree, di, drep);
2767
2768
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " Type:%u", type);
2769
2770
0
  return offset;
2771
2772
0
}
2773
2774
static unsigned
2775
fileexp_dissect_setcontext_rqst (tvbuff_t *tvb, unsigned offset,
2776
                                 packet_info *pinfo, proto_tree *tree,
2777
                                 dcerpc_info *di, uint8_t *drep)
2778
0
{
2779
0
  uint32_t epochtime, clientsizesattrs, parm7;
2780
2781
0
  if (di->conformant_run)
2782
0
    {
2783
0
      return offset;
2784
0
    }
2785
2786
/*
2787
        [in]    unsigned32      epochTime,
2788
        [in]    afsNetData      *callbackAddr,
2789
        [in]    unsigned32      Flags,
2790
        [in]    afsUUID         *secObjectID,
2791
        [in]    unsigned32      clientSizesAttrs,
2792
        [in]    unsigned32      parm7
2793
*/
2794
2795
0
  offset =
2796
0
    dissect_dcerpc_time_t (tvb, offset, pinfo, tree, drep,
2797
0
                           hf_fileexp_setcontext_rqst_epochtime, &epochtime);
2798
2799
0
  offset =  dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsNetData,
2800
0
                         NDR_POINTER_REF, "afsNetData:", -1);
2801
2802
0
  offset = dissect_afsFlags (tvb, offset, pinfo, tree, di, drep);
2803
2804
0
  col_append_str (pinfo->cinfo, COL_INFO, " setObjectID");
2805
2806
0
  offset =  dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsuuid,
2807
0
                         NDR_POINTER_REF, "afsUUID:", -1);
2808
0
  offset =
2809
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2810
0
                        hf_fileexp_setcontext_rqst_clientsizesattrs,
2811
0
                        &clientsizesattrs);
2812
0
  offset =
2813
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2814
0
                        hf_fileexp_setcontext_rqst_parm7, &parm7);
2815
2816
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " epochTime:%u clientSizesAttrs:%u parm7:%u", epochtime, clientsizesattrs, parm7);
2817
2818
0
  return offset;
2819
0
}
2820
2821
static unsigned
2822
fileexp_dissect_setcontext_resp (tvbuff_t *tvb, unsigned offset,
2823
                                 packet_info *pinfo, proto_tree *tree,
2824
                                 dcerpc_info *di, uint8_t *drep)
2825
0
{
2826
/* nothing but error code */
2827
2828
0
  if (di->conformant_run)
2829
0
    {
2830
0
      return offset;
2831
0
    }
2832
2833
0
  MACRO_ST_CLEAR ("SetContext reply");
2834
0
  return offset;
2835
0
}
2836
2837
static unsigned
2838
  fileexp_dissect_lookuproot_resp (tvbuff_t *tvb, unsigned offset,
2839
                                   packet_info *pinfo, proto_tree *tree,
2840
                                   dcerpc_info *di, uint8_t *drep)
2841
0
{
2842
0
  if (di->conformant_run)
2843
0
    {
2844
0
      return offset;
2845
0
    }
2846
2847
  /*
2848
   *        [out]   afsFid          *OutFidp,
2849
   *        [out]   afsFetchStatus  *OutFidStatusp,
2850
   *        [out]   afsToken        *OutTokenp,
2851
   *        [out]   afsVolSync      *Syncp
2852
   */
2853
  /* afsFid */
2854
0
  offset =
2855
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
2856
0
                         NDR_POINTER_REF, "afsFid: ", -1);
2857
2858
0
  offset =
2859
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
2860
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
2861
0
  offset =
2862
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afstoken,
2863
0
                         NDR_POINTER_REF, "afsToken: ", -1);
2864
0
  offset =
2865
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
2866
0
                         NDR_POINTER_REF, "VolSync: ", -1);
2867
0
  MACRO_ST_CLEAR ("LookupRoot reply");
2868
0
  return offset;
2869
0
}
2870
2871
static unsigned
2872
  fileexp_dissect_fetchdata_resp (tvbuff_t *tvb, unsigned offset,
2873
                                  packet_info *pinfo, proto_tree *tree,
2874
                                  dcerpc_info *di, uint8_t *drep)
2875
0
{
2876
0
  uint32_t pipe_t_size;
2877
2878
0
  if (di->conformant_run)
2879
0
    {
2880
0
      return offset;
2881
0
    }
2882
2883
/*
2884
        [out]   afsFetchStatus  *OutStatusp,
2885
        [out]   afsToken        *OutTokenp,
2886
        [out]   afsVolSync      *Syncp,
2887
        [out]   pipe_t          *fetchStream
2888
*/
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 */
2891
2892
0
  offset =
2893
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
2894
0
                        hf_fileexp_fetchdata_pipe_t_size, &pipe_t_size);
2895
2896
0
  return offset;
2897
0
}
2898
2899
static unsigned
2900
  fileexp_dissect_fetchacl_resp (tvbuff_t *tvb, unsigned offset,
2901
                                 packet_info *pinfo, proto_tree *tree,
2902
                                 dcerpc_info *di, uint8_t *drep)
2903
0
{
2904
0
  if (di->conformant_run)
2905
0
    {
2906
0
      return offset;
2907
0
    }
2908
2909
/*
2910
        [out]   afsACL          *AccessListp,
2911
        [out]   afsFetchStatus  *OutStatusp,
2912
        [out]   afsVolSync      *Syncp
2913
*/
2914
2915
0
  offset =
2916
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsAcl,
2917
0
                         NDR_POINTER_REF, "afsAcl: ", -1);
2918
0
  offset =
2919
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
2920
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
2921
2922
0
  offset =
2923
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
2924
0
                         NDR_POINTER_REF, "VolSync: ", -1);
2925
0
  MACRO_ST_CLEAR ("FetchAcl reply");
2926
0
  return offset;
2927
0
}
2928
2929
static unsigned
2930
  fileexp_dissect_fetchstatus_resp (tvbuff_t *tvb, unsigned offset,
2931
                                    packet_info *pinfo, proto_tree *tree,
2932
                                    dcerpc_info *di, uint8_t *drep)
2933
0
{
2934
0
  if (di->conformant_run)
2935
0
    {
2936
0
      return offset;
2937
0
    }
2938
2939
/*
2940
        [out]   afsFetchStatus  *OutStatusp,
2941
        [out]   afsToken        *OutTokenp,
2942
        [out]   afsVolSync      *Syncp
2943
*/
2944
2945
0
  offset =
2946
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
2947
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
2948
2949
0
  offset =
2950
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afstoken,
2951
0
                         NDR_POINTER_REF, "afsToken: ", -1);
2952
0
  offset =
2953
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
2954
0
                         NDR_POINTER_REF, "VolSync: ", -1);
2955
0
  MACRO_ST_CLEAR ("FetchStatus reply");
2956
0
  return offset;
2957
0
}
2958
2959
static unsigned
2960
  fileexp_dissect_storedata_resp (tvbuff_t *tvb, unsigned offset,
2961
                                  packet_info *pinfo, proto_tree *tree,
2962
                                  dcerpc_info *di, uint8_t *drep)
2963
0
{
2964
0
  if (di->conformant_run)
2965
0
    {
2966
0
      return offset;
2967
0
    }
2968
2969
/*
2970
        [out]   afsFetchStatus  *OutStatusp,
2971
        [out]   afsVolSync      *Syncp
2972
*/
2973
2974
0
  offset =
2975
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
2976
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
2977
2978
0
  offset =
2979
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
2980
0
                         NDR_POINTER_REF, "VolSync: ", -1);
2981
0
  MACRO_ST_CLEAR ("StoreData reply");
2982
0
  return offset;
2983
0
}
2984
2985
static unsigned
2986
  fileexp_dissect_storeacl_resp (tvbuff_t *tvb, unsigned offset,
2987
                                 packet_info *pinfo, proto_tree *tree,
2988
                                 dcerpc_info *di, uint8_t *drep)
2989
0
{
2990
0
  if (di->conformant_run)
2991
0
    {
2992
0
      return offset;
2993
0
    }
2994
2995
/*
2996
        [out]   afsFetchStatus  *OutStatusp,
2997
        [out]   afsVolSync      *Syncp
2998
*/
2999
3000
0
  offset =
3001
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3002
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3003
3004
0
  offset =
3005
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3006
0
                         NDR_POINTER_REF, "VolSync: ", -1);
3007
0
  MACRO_ST_CLEAR ("StoreAcl reply");
3008
0
  return offset;
3009
0
}
3010
3011
static unsigned
3012
  fileexp_dissect_storestatus_resp (tvbuff_t *tvb, unsigned offset,
3013
                                    packet_info *pinfo, proto_tree *tree,
3014
                                    dcerpc_info *di, uint8_t *drep)
3015
0
{
3016
0
  if (di->conformant_run)
3017
0
    {
3018
0
      return offset;
3019
0
    }
3020
3021
/*
3022
        [out]   afsFetchStatus  *OutStatusp,
3023
        [out]   afsVolSync      *Syncp
3024
*/
3025
3026
0
  offset =
3027
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3028
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3029
3030
0
  offset =
3031
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3032
0
                         NDR_POINTER_REF, "VolSync: ", -1);
3033
0
  MACRO_ST_CLEAR ("StoreStatus reply");
3034
0
  return offset;
3035
0
}
3036
3037
static unsigned
3038
  fileexp_dissect_removefile_resp (tvbuff_t *tvb, unsigned offset,
3039
                                   packet_info *pinfo, proto_tree *tree,
3040
                                   dcerpc_info *di, uint8_t *drep)
3041
0
{
3042
0
  if (di->conformant_run)
3043
0
    {
3044
0
      return offset;
3045
0
    }
3046
3047
/*
3048
        [out]   afsFetchStatus  *OutDirStatusp,
3049
        [out]   afsFetchStatus  *OutFileStatusp,
3050
        [out]   afsFid          *OutFileFidp,
3051
        [out]   afsVolSync      *Syncp
3052
*/
3053
0
  offset =
3054
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3055
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3056
3057
0
  offset =
3058
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3059
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3060
0
  offset =
3061
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3062
0
                         NDR_POINTER_REF, "afsFid: ", -1);
3063
0
  offset =
3064
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3065
0
                         NDR_POINTER_REF, "VolSync: ", -1);
3066
0
  MACRO_ST_CLEAR ("RemoveFile reply");
3067
0
  return offset;
3068
0
}
3069
3070
static unsigned
3071
  fileexp_dissect_createfile_resp (tvbuff_t *tvb, unsigned offset,
3072
                                   packet_info *pinfo, proto_tree *tree,
3073
                                   dcerpc_info *di, uint8_t *drep)
3074
0
{
3075
0
  if (di->conformant_run)
3076
0
    {
3077
0
      return offset;
3078
0
    }
3079
3080
/*
3081
        [out]   afsFid          *OutFidp,
3082
        [out]   afsFetchStatus  *OutFidStatusp,
3083
        [out]   afsFetchStatus  *OutDirStatusp,
3084
        [out]   afsToken        *OutTokenp,
3085
        [out]   afsVolSync      *Syncp
3086
*/
3087
3088
  /* afsFid */
3089
0
  offset =
3090
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3091
0
                         NDR_POINTER_REF, "afsFid: ", -1);
3092
0
  offset =
3093
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3094
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3095
3096
0
  offset =
3097
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3098
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3099
3100
0
  offset =
3101
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afstoken,
3102
0
                         NDR_POINTER_REF, "afsToken: ", -1);
3103
0
  offset =
3104
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3105
0
                         NDR_POINTER_REF, "VolSync: ", -1);
3106
0
  MACRO_ST_CLEAR ("CreateFile reply");
3107
3108
0
  return offset;
3109
0
}
3110
static unsigned
3111
  fileexp_dissect_rename_resp (tvbuff_t *tvb, unsigned offset,
3112
                               packet_info *pinfo, proto_tree *tree,
3113
                               dcerpc_info *di, uint8_t *drep)
3114
0
{
3115
0
  if (di->conformant_run)
3116
0
    {
3117
0
      return offset;
3118
0
    }
3119
3120
/*
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
3128
*/
3129
3130
0
  offset =
3131
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3132
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3133
0
  offset =
3134
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3135
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3136
0
  offset =
3137
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3138
0
                         NDR_POINTER_REF, "afsFid: ", -1);
3139
0
  offset =
3140
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3141
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3142
0
  offset =
3143
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3144
0
                         NDR_POINTER_REF, "afsFid: ", -1);
3145
3146
0
  offset =
3147
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3148
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3149
3150
0
  offset =
3151
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3152
0
                         NDR_POINTER_REF, "VolSync: ", -1);
3153
0
  MACRO_ST_CLEAR ("Rename reply");
3154
0
  return offset;
3155
0
}
3156
3157
static unsigned
3158
  fileexp_dissect_symlink_resp (tvbuff_t *tvb, unsigned offset,
3159
                                packet_info *pinfo, proto_tree *tree,
3160
                                dcerpc_info *di, uint8_t *drep)
3161
0
{
3162
0
  if (di->conformant_run)
3163
0
    {
3164
0
      return offset;
3165
0
    }
3166
3167
/*
3168
        [out]   afsFid          *OutFidp,
3169
        [out]   afsFetchStatus  *OutFidStatusp,
3170
        [out]   afsFetchStatus  *OutDirStatusp,
3171
        [out]   afsToken        *OutTokenp,
3172
        [out]   afsVolSync      *Syncp
3173
*/
3174
3175
0
  offset =
3176
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3177
0
                         NDR_POINTER_REF, "afsFid: ", -1);
3178
0
  offset =
3179
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3180
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3181
0
  offset =
3182
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3183
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3184
0
  offset =
3185
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afstoken,
3186
0
                         NDR_POINTER_REF, "afsToken: ", -1);
3187
0
  offset =
3188
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3189
0
                         NDR_POINTER_REF, "VolSync: ", -1);
3190
0
  MACRO_ST_CLEAR ("Symlink reply");
3191
3192
0
  return offset;
3193
0
}
3194
3195
static unsigned
3196
  fileexp_dissect_hardlink_resp (tvbuff_t *tvb, unsigned offset,
3197
                                 packet_info *pinfo, proto_tree *tree,
3198
                                 dcerpc_info *di, uint8_t *drep)
3199
0
{
3200
0
  if (di->conformant_run)
3201
0
    {
3202
0
      return offset;
3203
0
    }
3204
3205
/*
3206
        [out]   afsFetchStatus  *OutFidStatusp,
3207
        [out]   afsFetchStatus  *OutDirStatusp,
3208
        [out]   afsVolSync      *Syncp
3209
*/
3210
3211
3212
0
  offset =
3213
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3214
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3215
0
  offset =
3216
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3217
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3218
0
  offset =
3219
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3220
0
                         NDR_POINTER_REF, "VolSync: ", -1);
3221
0
  MACRO_ST_CLEAR ("Hardlink reply");
3222
3223
0
  return offset;
3224
0
}
3225
static unsigned
3226
  fileexp_dissect_hardlink_rqst (tvbuff_t *tvb, unsigned offset,
3227
                                 packet_info *pinfo, proto_tree *tree,
3228
                                 dcerpc_info *di, uint8_t *drep)
3229
0
{
3230
0
  if (di->conformant_run)
3231
0
    {
3232
0
      return offset;
3233
0
    }
3234
3235
/*
3236
        [in]    afsFid          *DirFidp,
3237
        [in]    afsTaggedName   *Namep,
3238
        [in]    afsFid          *ExistingFidp,
3239
        [in]    afsHyper        *minVVp,
3240
        [in]    unsigned32      Flags,
3241
*/
3242
3243
  /* afsFid */
3244
0
  offset =
3245
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3246
0
                         NDR_POINTER_REF, "afsFid: ", -1);
3247
3248
0
  offset =
3249
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
3250
0
                         dissect_afstaggedname, NDR_POINTER_REF,
3251
0
                         "afsTaggedName: ", -1);
3252
  /* afsFid */
3253
0
  offset =
3254
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3255
0
                         NDR_POINTER_REF, "afsFid: ", -1);
3256
3257
0
  offset =
3258
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
3259
0
                         NDR_POINTER_REF, "MinVVp:", -1);
3260
3261
0
  offset = dissect_afsFlags ( tvb, offset, pinfo, tree, di, drep);
3262
3263
0
  return offset;
3264
0
}
3265
3266
static unsigned
3267
  fileexp_dissect_makedir_resp (tvbuff_t *tvb, unsigned offset,
3268
                                packet_info *pinfo, proto_tree *tree,
3269
                                dcerpc_info *di, uint8_t *drep)
3270
0
{
3271
0
  if (di->conformant_run)
3272
0
    {
3273
0
      return offset;
3274
0
    }
3275
3276
/*
3277
        [out]   afsFid          *OutFidp,
3278
        [out]   afsFetchStatus  *OutFidStatusp,
3279
        [out]   afsFetchStatus  *OutDirStatusp,
3280
        [out]   afsToken        *OutTokenp,
3281
        [out]   afsVolSync      *Syncp
3282
*/
3283
0
  offset =
3284
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3285
0
                         NDR_POINTER_REF, "afsFid: ", -1);
3286
0
  offset =
3287
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3288
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3289
0
  offset =
3290
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3291
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3292
0
  offset =
3293
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afstoken,
3294
0
                         NDR_POINTER_REF, "afsToken: ", -1);
3295
0
  offset =
3296
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3297
0
                         NDR_POINTER_REF, "VolSync: ", -1);
3298
3299
0
  MACRO_ST_CLEAR ("MakeDir reply");
3300
3301
0
  return offset;
3302
0
}
3303
3304
static unsigned
3305
  fileexp_dissect_removedir_resp (tvbuff_t *tvb, unsigned offset,
3306
                                  packet_info *pinfo, proto_tree *tree,
3307
                                  dcerpc_info *di, uint8_t *drep)
3308
0
{
3309
0
  if (di->conformant_run)
3310
0
    {
3311
0
      return offset;
3312
0
    }
3313
3314
/*
3315
        [out]   afsFetchStatus  *OutDirStatusp,
3316
        [out]   afsFid          *OutFidp,
3317
        [out]   afsFetchStatus  *OutDelStatusp,
3318
        [out]   afsVolSync      *Syncp
3319
*/
3320
3321
0
  offset =
3322
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3323
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3324
0
  offset =
3325
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3326
0
                         NDR_POINTER_REF, "afsFid: ", -1);
3327
0
  offset =
3328
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3329
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3330
0
  offset =
3331
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3332
0
                         NDR_POINTER_REF, "VolSync: ", -1);
3333
0
  MACRO_ST_CLEAR ("RemoveDir reply");
3334
3335
0
  return offset;
3336
3337
0
}
3338
3339
static unsigned
3340
  fileexp_dissect_readdir_resp (tvbuff_t *tvb, unsigned offset,
3341
                                packet_info *pinfo, proto_tree *tree,
3342
                                dcerpc_info *di, uint8_t *drep)
3343
0
{
3344
0
  uint32_t nextoffsetp_high, nextoffsetp_low;
3345
3346
0
  if (di->conformant_run)
3347
0
    {
3348
0
      return offset;
3349
0
    }
3350
3351
/*
3352
        [out]   afsHyper        *NextOffsetp,
3353
        [out]   afsFetchStatus  *OutDirStatusp,
3354
        [out]   afsToken        *OutTokenp,
3355
        [out]   afsVolSync      *Syncp,
3356
        [out]   pipe_t          *dirStream
3357
*/
3358
3359
0
  offset =
3360
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3361
0
                        hf_fileexp_nextoffsetp_high, &nextoffsetp_high);
3362
0
  offset =
3363
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3364
0
                        hf_fileexp_nextoffsetp_low, &nextoffsetp_low);
3365
3366
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " NextOffsetp:%u/%u",
3367
0
                     nextoffsetp_high, nextoffsetp_low);
3368
3369
  /* all packets seem to have SKIPTOKEN/SKIPSTATUS sent, and thus these structures are missing on calls holding tokens. */
3370
3371
0
  offset =
3372
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3373
0
                         NDR_POINTER_REF, "VolSync: ", -1);
3374
  /* XXX need to add pipe_t here, once figured out. */
3375
3376
0
  return offset;
3377
0
}
3378
3379
static unsigned
3380
  fileexp_dissect_releasetokens_resp (tvbuff_t *tvb, unsigned offset,
3381
                                      packet_info *pinfo, proto_tree *tree,
3382
                                      dcerpc_info *di, uint8_t *drep)
3383
0
{
3384
0
  if (di->conformant_run)
3385
0
    {
3386
0
      return offset;
3387
0
    }
3388
3389
  /* no out */
3390
0
  MACRO_ST_CLEAR ("ReleaseTokens reply");
3391
0
  return offset;
3392
0
}
3393
3394
static unsigned
3395
  fileexp_dissect_releasetokens_rqst (tvbuff_t *tvb, unsigned offset,
3396
                                      packet_info *pinfo, proto_tree *tree,
3397
                                      dcerpc_info *di, uint8_t *drep)
3398
0
{
3399
0
  if (di->conformant_run)
3400
0
    {
3401
0
      return offset;
3402
0
    }
3403
3404
3405
/*
3406
        [in]    afsReturns      *Tokens_Arrayp,
3407
        [in]    unsigned32      Flags
3408
*/
3409
0
  offset =
3410
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsReturns,
3411
0
                         NDR_POINTER_REF, "afsReturns: ", -1);
3412
0
  offset =
3413
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
3414
0
                         NDR_POINTER_REF, "afsFlags: ", -1);
3415
0
  return offset;
3416
0
}
3417
3418
static unsigned
3419
  fileexp_dissect_gettime_resp (tvbuff_t *tvb, unsigned offset,
3420
                                packet_info *pinfo, proto_tree *tree,
3421
                                dcerpc_info *di, uint8_t *drep)
3422
0
{
3423
0
  uint32_t secondsp, usecondsp, syncdistance, syncdispersion;
3424
3425
0
  if (di->conformant_run)
3426
0
    {
3427
0
      return offset;
3428
0
    }
3429
3430
/*
3431
        [out]   unsigned32      *Secondsp,
3432
        [out]   unsigned32      *USecondsp,
3433
        [out]   unsigned32      *SyncDistance,
3434
        [out]   unsigned32      *SyncDispersion
3435
*/
3436
3437
0
  offset =
3438
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3439
0
                        hf_fileexp_gettime_secondsp, &secondsp);
3440
0
  offset =
3441
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3442
0
                        hf_fileexp_gettime_usecondsp, &usecondsp);
3443
0
  offset =
3444
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3445
0
                        hf_fileexp_gettime_syncdistance, &syncdistance);
3446
0
  offset =
3447
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3448
0
                        hf_fileexp_gettime_syncdispersion, &syncdispersion);
3449
3450
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " Secondsp:%u  Usecondsp:%u SyncDistance:/%u SyncDispersion:%u", secondsp, usecondsp, syncdistance, syncdispersion);
3451
3452
0
  MACRO_ST_CLEAR ("GetTime reply");
3453
3454
0
  return offset;
3455
3456
0
}
3457
3458
static unsigned
3459
  fileexp_dissect_gettime_rqst (tvbuff_t *tvb _U_, unsigned offset,
3460
                                packet_info *pinfo _U_, proto_tree *tree _U_,
3461
                                dcerpc_info *di _U_, uint8_t *drep _U_)
3462
0
{
3463
  /* nothing */
3464
3465
0
  return offset;
3466
0
}
3467
3468
static unsigned
3469
  fileexp_dissect_processquota_resp (tvbuff_t *tvb, unsigned offset,
3470
                                     packet_info *pinfo, proto_tree *tree,
3471
                                     dcerpc_info *di, uint8_t *drep)
3472
0
{
3473
0
  if (di->conformant_run)
3474
0
    {
3475
0
      return offset;
3476
0
    }
3477
3478
/*
3479
        [in,out]        afsQuota        *quotaListp,
3480
        [out]           afsFetchStatus  *OutStatusp,
3481
        [out]           afsVolSync      *Syncp
3482
*/
3483
3484
  /* XXX need afsQuota */
3485
0
  offset += 92;
3486
0
  offset =
3487
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3488
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3489
0
  offset =
3490
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3491
0
                         NDR_POINTER_REF, "VolSync: ", -1);
3492
0
  MACRO_ST_CLEAR ("ProcessQuota reply");
3493
3494
0
  return offset;
3495
0
}
3496
3497
static unsigned
3498
  fileexp_dissect_processquota_rqst (tvbuff_t *tvb, unsigned offset,
3499
                                     packet_info *pinfo, proto_tree *tree,
3500
                                     dcerpc_info *di, uint8_t *drep)
3501
0
{
3502
0
  if (di->conformant_run)
3503
0
    {
3504
0
      return offset;
3505
0
    }
3506
3507
/*
3508
        [in]            afsFid          *Fidp,
3509
        [in]            afsHyper        *minVVp,
3510
        [in]            unsigned32      Flags,
3511
        [in,out]        afsQuota        *quotaListp,
3512
*/
3513
3514
  /* afsFid */
3515
0
  offset =
3516
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3517
0
                         NDR_POINTER_REF, "afsFid: ", -1);
3518
0
  offset =
3519
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
3520
0
                         NDR_POINTER_REF, "MinVVp:", -1);
3521
0
  offset = dissect_afsFlags ( tvb, offset, pinfo, tree, di, drep);
3522
3523
  /* XXX need to figure out afsQuota here */
3524
0
  return offset;
3525
0
}
3526
3527
static unsigned
3528
  fileexp_dissect_getserverinterfaces_rqst (tvbuff_t *tvb _U_, unsigned offset,
3529
                                            packet_info *pinfo _U_, proto_tree *tree _U_,
3530
                                            dcerpc_info *di _U_, uint8_t *drep _U_)
3531
0
{
3532
3533
/*
3534
        [in, out]               dfs_interfaceList *serverInterfacesP
3535
*/
3536
  /* XXX figure out dfs_interfacelist */
3537
0
  return offset;
3538
0
}
3539
3540
static unsigned
3541
  fileexp_dissect_getserverinterfaces_resp (tvbuff_t *tvb, unsigned offset,
3542
                                            packet_info *pinfo, proto_tree *tree,
3543
                                            dcerpc_info *di, uint8_t *drep)
3544
0
{
3545
0
  if (di->conformant_run)
3546
0
    {
3547
0
      return offset;
3548
0
    }
3549
3550
/*
3551
        [in, out]               dfs_interfaceList *serverInterfacesP
3552
*/
3553
  /* XXX figure out dfs_interfacelist */
3554
3555
0
  MACRO_ST_CLEAR ("GetServerInterfaces reply");
3556
0
  return offset;
3557
0
}
3558
3559
static unsigned
3560
  fileexp_dissect_setparams_rqst (tvbuff_t *tvb, unsigned offset,
3561
                                  packet_info *pinfo, proto_tree *tree,
3562
                                  dcerpc_info *di, uint8_t *drep)
3563
0
{
3564
0
  if (di->conformant_run)
3565
0
    {
3566
0
      return offset;
3567
0
    }
3568
3569
/*
3570
        [in]            unsigned32      Flags,
3571
        [in, out]       afsConnParams   *paramsP
3572
*/
3573
0
  offset = dissect_afsFlags ( tvb, offset, pinfo, tree, di, drep);
3574
0
  offset =
3575
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
3576
0
                         dissect_afsConnParams, NDR_POINTER_REF,
3577
0
                         "afsConnParams:", -1);
3578
0
  return offset;
3579
0
}
3580
3581
static unsigned
3582
  fileexp_dissect_setparams_resp (tvbuff_t *tvb, unsigned offset,
3583
                                  packet_info *pinfo, proto_tree *tree,
3584
                                  dcerpc_info *di, uint8_t *drep)
3585
0
{
3586
0
  if (di->conformant_run)
3587
0
    {
3588
0
      return offset;
3589
0
    }
3590
3591
/*
3592
        [in, out]       afsConnParams   *paramsP
3593
*/
3594
3595
0
  offset =
3596
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep,
3597
0
                         dissect_afsConnParams, NDR_POINTER_REF,
3598
0
                         "afsConnParams:", -1);
3599
0
  MACRO_ST_CLEAR ("SetParams reply");
3600
0
  return offset;
3601
0
}
3602
3603
static unsigned
3604
  fileexp_dissect_makemountpoint_resp (tvbuff_t *tvb, unsigned offset,
3605
                                       packet_info *pinfo, proto_tree *tree,
3606
                                       dcerpc_info *di, uint8_t *drep)
3607
0
{
3608
0
  if (di->conformant_run)
3609
0
    {
3610
0
      return offset;
3611
0
    }
3612
3613
/*
3614
        [out]   afsFid          *OutFidp,
3615
        [out]   afsFetchStatus  *OutFidStatusp,
3616
        [out]   afsFetchStatus  *OutDirStatusp,
3617
        [out]   afsVolSync      *Syncp
3618
*/
3619
  /* afsFid */
3620
0
  offset =
3621
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3622
0
                         NDR_POINTER_REF, "afsFid: ", -1);
3623
0
  offset =
3624
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3625
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3626
0
  offset =
3627
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_fetchstatus,
3628
0
                         NDR_POINTER_REF, "FetchStatus: ", -1);
3629
3630
0
  offset =
3631
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_volsync,
3632
0
                         NDR_POINTER_REF, "VolSync: ", -1);
3633
0
  MACRO_ST_CLEAR ("MakeMountPoint reply");
3634
0
  return offset;
3635
0
}
3636
3637
static unsigned
3638
  fileexp_dissect_getstatistics_rqst (tvbuff_t *tvb _U_, unsigned offset,
3639
                                      packet_info *pinfo _U_, proto_tree *tree _U_,
3640
                                      dcerpc_info *di, uint8_t *drep _U_)
3641
0
{
3642
0
  if (di->conformant_run)
3643
0
    {
3644
0
      return offset;
3645
0
    }
3646
3647
  /* nothing for request */
3648
0
  return offset;
3649
0
}
3650
3651
static unsigned
3652
  fileexp_dissect_getstatistics_resp (tvbuff_t *tvb _U_, unsigned offset,
3653
                                      packet_info *pinfo _U_, proto_tree *tree _U_,
3654
                                      dcerpc_info *di _U_, uint8_t *drep _U_)
3655
0
{
3656
3657
/*
3658
        [out]   afsStatistics   *Statisticsp
3659
*/
3660
  /* XXX figure out afsStatistics */
3661
0
  return offset;
3662
0
}
3663
3664
static unsigned
3665
  fileexp_dissect_bulkfetchvv_rqst (tvbuff_t *tvb, unsigned offset,
3666
                                    packet_info *pinfo, proto_tree *tree,
3667
                                    dcerpc_info *di, uint8_t *drep)
3668
0
{
3669
0
  uint32_t cellidp_high, cellidp_low, numvols, spare1, spare2;
3670
3671
0
  if (di->conformant_run)
3672
0
    {
3673
0
      return offset;
3674
0
    }
3675
3676
/*
3677
        [in]    afsHyper        *cellIdp,
3678
        [in]    afsBulkVolIDs   *VolIDsp,
3679
        [in]    unsigned32      NumVols,
3680
        [in]    unsigned32      Flags,
3681
        [in]    unsigned32      spare1,
3682
        [in]    unsigned32      spare2,
3683
*/
3684
0
  offset =
3685
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3686
0
                        hf_fileexp_cellidp_high, &cellidp_high);
3687
0
  offset =
3688
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3689
0
                        hf_fileexp_cellidp_low, &cellidp_low);
3690
3691
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " CellIDp:%u/%u", cellidp_high,
3692
0
                     cellidp_low);
3693
3694
  /* XXX figure out the afsBulkVolIDS */
3695
0
  offset =
3696
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3697
0
                        hf_fileexp_bulkfetchvv_numvols, &numvols);
3698
3699
0
  offset = dissect_afsFlags (tvb, offset, pinfo, tree, di, drep);
3700
0
  offset =
3701
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3702
0
                        hf_fileexp_bulkfetchvv_spare1, &spare1);
3703
0
  offset =
3704
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3705
0
                        hf_fileexp_bulkfetchvv_spare2, &spare2);
3706
0
  return offset;
3707
0
}
3708
3709
static unsigned
3710
  fileexp_dissect_bulkfetchvv_resp (tvbuff_t *tvb _U_, unsigned offset,
3711
                                    packet_info *pinfo _U_, proto_tree *tree _U_,
3712
                                    dcerpc_info *di _U_, uint8_t *drep _U_)
3713
0
{
3714
/*
3715
        [out]   afsBulkVVs      *VolVVsp,
3716
        [out]   unsigned32      *spare4
3717
*/
3718
  /* XXX need to figure out afsBulkVVs  ; */
3719
0
  return offset;
3720
0
}
3721
3722
static unsigned
3723
  fileexp_dissect_bulkkeepalive_resp (tvbuff_t *tvb, unsigned offset,
3724
                                      packet_info *pinfo, proto_tree *tree,
3725
                                      dcerpc_info *di, uint8_t *drep)
3726
0
{
3727
0
  uint32_t spare4;
3728
3729
0
  if (di->conformant_run)
3730
0
    {
3731
0
      return offset;
3732
0
    }
3733
3734
/*
3735
        [out]   unsigned32      *spare4
3736
*/
3737
3738
0
  offset =
3739
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3740
0
                        hf_fileexp_bulkkeepalive_spare4, &spare4);
3741
0
  MACRO_ST_CLEAR ("BulkKeepAlive reply");
3742
0
  return offset;
3743
0
}
3744
3745
static unsigned
3746
  fileexp_dissect_bulkkeepalive_rqst (tvbuff_t *tvb, unsigned offset,
3747
                                      packet_info *pinfo, proto_tree *tree,
3748
                                      dcerpc_info *di, uint8_t *drep)
3749
0
{
3750
0
  uint32_t numexecfids, spare1, spare2;
3751
3752
0
  if (di->conformant_run)
3753
0
    {
3754
0
      return offset;
3755
0
    }
3756
3757
/*
3758
        [in]    afsBulkFEX      *KAFEXp,
3759
        [in]    unsigned32      numExecFids,
3760
        [in]    unsigned32      Flags,
3761
        [in]    unsigned32      spare1,
3762
        [in]    unsigned32      spare2,
3763
*/
3764
  /* XXX figure out afsBulkFEX */
3765
0
  offset =
3766
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3767
0
                        hf_fileexp_bulkkeepalive_numexecfids, &numexecfids);
3768
0
  offset =
3769
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFlags,
3770
0
                         NDR_POINTER_REF, "afsFlags:", -1);
3771
0
  offset =
3772
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3773
0
                        hf_fileexp_bulkkeepalive_spare1, &spare1);
3774
0
  offset =
3775
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3776
0
                        hf_fileexp_bulkkeepalive_spare2, &spare2);
3777
0
  return offset;
3778
0
}
3779
3780
static unsigned
3781
  fileexp_dissect_bulkfetchstatus_rqst (tvbuff_t *tvb, unsigned offset,
3782
                                        packet_info *pinfo, proto_tree *tree,
3783
                                        dcerpc_info *di, uint8_t *drep)
3784
0
{
3785
0
  uint32_t offsetp_high, offsetp_low, size;
3786
3787
0
  if (di->conformant_run)
3788
0
    {
3789
0
      return offset;
3790
0
    }
3791
3792
3793
/*
3794
        [in]            afsFid          *DirFidp,
3795
        [in]            afsHyper        *Offsetp,
3796
        [in]            unsigned32      Size,
3797
        [in]            afsHyper        *minVVp,
3798
        [in]            unsigned32      Flags,
3799
*/
3800
3801
0
  offset =
3802
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsFid,
3803
0
                         NDR_POINTER_REF, "afsFid: ", -1);
3804
0
  offset =
3805
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3806
0
                        hf_fileexp_offsetp_high, &offsetp_high);
3807
0
  offset =
3808
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3809
0
                        hf_fileexp_offsetp_low, &offsetp_low);
3810
3811
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " Offsetp:%u/%u", offsetp_high,
3812
0
                     offsetp_low);
3813
0
  offset =
3814
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
3815
0
                        hf_fileexp_bulkfetchstatus_size, &size);
3816
0
  offset =
3817
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_minvvp,
3818
0
                         NDR_POINTER_REF, "MinVVp:", -1);
3819
0
  offset = dissect_afsFlags (tvb, offset, pinfo, tree, di, drep);
3820
3821
0
  return offset;
3822
0
}
3823
3824
static unsigned
3825
  fileexp_dissect_bulkfetchstatus_resp (tvbuff_t *tvb, unsigned offset,
3826
                                        packet_info *pinfo, proto_tree *tree,
3827
                                        dcerpc_info *di, uint8_t *drep)
3828
0
{
3829
0
  if (di->conformant_run)
3830
0
    {
3831
0
      return offset;
3832
0
    }
3833
3834
/*
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
3841
*/
3842
3843
0
  offset =
3844
0
    dissect_ndr_pointer (tvb, offset, pinfo, tree, di, drep, dissect_afsBulkStat,
3845
0
                         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. */
3847
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);
3855
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 */
3869
3870
0
  return offset;
3871
0
}
3872
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}
3903
  ,
3904
};
3905
3906
void
3907
proto_register_fileexp (void)
3908
15
{
3909
3910
15
  static hf_register_info hf[] = {
3911
15
    { &hf_error_st,
3912
15
      { "AFS4Int Error Status Code", "fileexp.st",
3913
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
3914
15
        NULL, HFILL}
3915
15
    },
3916
15
    { &hf_fileexp_flags,
3917
15
      { "DFS Flags", "fileexp.flags",
3918
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
3919
15
        NULL, HFILL}
3920
15
    },
3921
15
    { &hf_fileexp_tn_string,
3922
15
      { "String", "fileexp.string",
3923
15
        FT_STRING, BASE_NONE, NULL, 0x0,
3924
15
        NULL, HFILL}
3925
15
    },
3926
15
    { &hf_fileexp_opnum,
3927
15
      { "Operation", "fileexp.opnum",
3928
15
        FT_UINT16, BASE_DEC, NULL, 0x0,
3929
15
        NULL, HFILL}
3930
15
    },
3931
15
    { &hf_fileexp_setcontext_rqst_epochtime,
3932
15
      { "EpochTime", "fileexp.setcontext_rqst_epochtime",
3933
15
        FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0,
3934
15
        NULL, HFILL}
3935
15
    },
3936
15
    { &hf_fileexp_setcontext_rqst_clientsizesattrs,
3937
15
      { "ClientSizeAttrs", "fileexp.setcontext_clientsizesattrs",
3938
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
3939
15
        NULL, HFILL}
3940
15
    },
3941
15
    { &hf_fileexp_setcontext_rqst_parm7,
3942
15
      { "Parm7", "fileexp.setcontext.parm7",
3943
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
3944
15
        NULL, HFILL}
3945
15
    },
3946
15
    { &hf_fileexp_acl_len,
3947
15
      { "Acl Length", "fileexp.acl_len",
3948
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
3949
15
        NULL, HFILL}
3950
15
    },
3951
15
    { &hf_fileexp_acltype,
3952
15
      { "Acl type", "fileexp.acltype",
3953
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
3954
15
        NULL, HFILL}
3955
15
    },
3956
15
    { &hf_fileexp_minvvp_high,
3957
15
      { "minVVp high", "fileexp.minvvp_high",
3958
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
3959
15
        NULL, HFILL}
3960
15
    },
3961
15
    { &hf_fileexp_minvvp_low,
3962
15
      { "minVVp low", "fileexp.minvvp_low",
3963
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
3964
15
        NULL, HFILL}
3965
15
    },
3966
15
    { &hf_fileexp_accesstime_msec,
3967
15
      { "Access time (msec)", "fileexp.accesstime_msec",
3968
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
3969
15
        NULL, HFILL}
3970
15
    },
3971
15
    { &hf_fileexp_accesstime_sec,
3972
15
      { "Access time (sec)", "fileexp.accesstime_sec",
3973
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
3974
15
        NULL, HFILL}
3975
15
    },
3976
15
    { &hf_fileexp_aclexpirationtime,
3977
15
      { "Acl expiration time", "fileexp.aclexpirationtime",
3978
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
3979
15
        NULL, HFILL}
3980
15
    },
3981
15
    { &hf_fileexp_agtypeunique,
3982
15
      { "agtypeunique", "fileexp.agtypeunique",
3983
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
3984
15
        NULL, HFILL}
3985
15
    },
3986
15
    { &hf_fileexp_anonymousaccess,
3987
15
      { "Anonymous Access", "fileexp.anonymousaccess",
3988
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
3989
15
        NULL, HFILL}
3990
15
    },
3991
15
    { &hf_fileexp_author,
3992
15
      { "Author", "fileexp.author",
3993
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
3994
15
        NULL, HFILL}
3995
15
    },
3996
15
    { &hf_fileexp_blocksused,
3997
15
      { "Blocks used", "fileexp.blocksused",
3998
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
3999
15
        NULL, HFILL}
4000
15
    },
4001
15
    { &hf_fileexp_calleraccess,
4002
15
      { "Caller access", "fileexp.calleraccess",
4003
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4004
15
        NULL, HFILL}
4005
15
    },
4006
15
    { &hf_fileexp_changetime_msec,
4007
15
      { "Change time (msec)", "fileexp.changetime_msec",
4008
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4009
15
        NULL, HFILL}
4010
15
    },
4011
15
    { &hf_fileexp_changetime_sec,
4012
15
      { "Change time (sec)", "fileexp.changetime_sec",
4013
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4014
15
        NULL, HFILL}
4015
15
    },
4016
15
    { &hf_fileexp_clientspare1,
4017
15
      { "Client spare1", "fileexp.clientspare1",
4018
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4019
15
        NULL, HFILL}
4020
15
    },
4021
15
    { &hf_fileexp_dataversion_high,
4022
15
      { "Data version (high)", "fileexp.dataversion_high",
4023
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4024
15
        NULL, HFILL}
4025
15
    },
4026
15
    { &hf_fileexp_dataversion_low,
4027
15
      { "Data version (low)", "fileexp.dataversion_low",
4028
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4029
15
        NULL, HFILL}
4030
15
    },
4031
15
    { &hf_fileexp_devicenumber,
4032
15
      { "Device number", "fileexp.devicenumber",
4033
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4034
15
        NULL, HFILL}
4035
15
    },
4036
15
    { &hf_fileexp_devicenumberhighbits,
4037
15
      { "Device number high bits", "fileexp.devicenumberhighbits",
4038
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4039
15
        NULL, HFILL}
4040
15
    },
4041
15
    { &hf_fileexp_filetype,
4042
15
      { "File type", "fileexp.filetype",
4043
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4044
15
        NULL, HFILL}
4045
15
    },
4046
15
    { &hf_fileexp_group,
4047
15
      { "Group", "fileexp.group",
4048
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4049
15
        NULL, HFILL}
4050
15
    },
4051
15
    { &hf_fileexp_himaxspare,
4052
15
      { "Hi max spare", "fileexp.himaxspare",
4053
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4054
15
        NULL, HFILL}
4055
15
    },
4056
15
    { &hf_fileexp_interfaceversion,
4057
15
      { "Interface version", "fileexp.interfaceversion",
4058
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4059
15
        NULL, HFILL}
4060
15
    },
4061
15
    { &hf_fileexp_length_high,
4062
15
      { "Length high", "fileexp.length_high",
4063
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4064
15
        NULL, HFILL}
4065
15
    },
4066
15
    { &hf_fileexp_length_low,
4067
15
      { "Length low", "fileexp.length_low",
4068
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4069
15
        NULL, HFILL}
4070
15
    },
4071
15
    { &hf_fileexp_linkcount,
4072
15
      { "Link count", "fileexp.linkcount",
4073
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4074
15
        NULL, HFILL}
4075
15
    },
4076
15
    { &hf_fileexp_lomaxspare,
4077
15
      { "Lo max spare", "fileexp.lomaxspare",
4078
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4079
15
        NULL, HFILL}
4080
15
    },
4081
15
    { &hf_fileexp_mode,
4082
15
      { "Mode", "fileexp.mode",
4083
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4084
15
        NULL, HFILL}
4085
15
    },
4086
15
    { &hf_fileexp_modtime_msec,
4087
15
      { "Modify time (msec)", "fileexp.modtime_msec",
4088
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4089
15
        NULL, HFILL}
4090
15
    },
4091
15
    { &hf_fileexp_modtime_sec,
4092
15
      { "Modify time (sec)", "fileexp.modtime_sec",
4093
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4094
15
        NULL, HFILL}
4095
15
    },
4096
15
    { &hf_fileexp_objectuuid,
4097
15
      { "Object uuid", "fileexp.objectuuid",
4098
15
        FT_GUID, BASE_NONE, NULL, 0x0,
4099
15
        NULL, HFILL}
4100
15
    },
4101
15
    { &hf_fileexp_owner,
4102
15
      { "Owner", "fileexp.owner",
4103
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4104
15
        NULL, HFILL}
4105
15
    },
4106
15
    { &hf_fileexp_parentunique,
4107
15
      { "Parent unique", "fileexp.parentunique",
4108
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4109
15
        NULL, HFILL}
4110
15
    },
4111
15
    { &hf_fileexp_parentvnode,
4112
15
      { "Parent vnode", "fileexp.parentvnode",
4113
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4114
15
        NULL, HFILL}
4115
15
    },
4116
15
    { &hf_fileexp_pathconfspare,
4117
15
      { "Path conf spare", "fileexp.pathconfspare",
4118
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4119
15
        NULL, HFILL}
4120
15
    },
4121
15
    { &hf_fileexp_servermodtime_msec,
4122
15
      { "Server modify time (msec)", "fileexp.servermodtime_msec",
4123
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4124
15
        NULL, HFILL}
4125
15
    },
4126
15
    { &hf_fileexp_servermodtime_sec,
4127
15
      { "Server modify time (sec)", "fileexp.servermodtime_sec",
4128
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4129
15
        NULL, HFILL}
4130
15
    },
4131
15
    { &hf_fileexp_spare4,
4132
15
      { "Spare4", "fileexp.spare4",
4133
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4134
15
        NULL, HFILL}
4135
15
    },
4136
15
    { &hf_fileexp_spare5,
4137
15
      { "Spare5", "fileexp.spare5",
4138
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4139
15
        NULL, HFILL}
4140
15
    },
4141
15
    { &hf_fileexp_spare6,
4142
15
      { "Spare6", "fileexp.spare6",
4143
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4144
15
        NULL, HFILL}
4145
15
    },
4146
15
    { &hf_fileexp_typeuuid,
4147
15
      { "Type uuid", "fileexp.typeuuid",
4148
15
        FT_GUID, BASE_NONE, NULL, 0x0,
4149
15
        NULL, HFILL}
4150
15
    },
4151
15
    { &hf_fileexp_volid_hi,
4152
15
      { "Vol id hi", "fileexp.volid_hi",
4153
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4154
15
        NULL, HFILL}
4155
15
    },
4156
15
    { &hf_fileexp_volid_low,
4157
15
      { "Vol id low", "fileexp.volid_low",
4158
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4159
15
        NULL, HFILL}
4160
15
    },
4161
15
    { &hf_fileexp_vvage,
4162
15
      { "Vvage", "fileexp.vvage",
4163
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4164
15
        NULL, HFILL}
4165
15
    },
4166
15
    { &hf_fileexp_vv_hi,
4167
15
      { "Vv hi", "fileexp.vv_hi",
4168
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4169
15
        NULL, HFILL}
4170
15
    },
4171
15
    { &hf_fileexp_vv_low,
4172
15
      { "Vv low", "fileexp.vv_low",
4173
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4174
15
        NULL, HFILL}
4175
15
    },
4176
15
    { &hf_fileexp_vvpingage,
4177
15
      { "Vv pingage", "fileexp.vvpingage",
4178
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4179
15
        NULL, HFILL}
4180
15
    },
4181
15
    { &hf_fileexp_vvspare1,
4182
15
      { "Vv spare1", "fileexp.vvspare1",
4183
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4184
15
        NULL, HFILL}
4185
15
    },
4186
15
    { &hf_fileexp_vvspare2,
4187
15
      { "Vv spare2", "fileexp.vvspare2",
4188
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4189
15
        NULL, HFILL}
4190
15
    },
4191
15
    { &hf_fileexp_beginrange,
4192
15
      { "Begin range", "fileexp.beginrange",
4193
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4194
15
        NULL, HFILL}
4195
15
    },
4196
15
    { &hf_fileexp_beginrangeext,
4197
15
      { "Begin range ext", "fileexp.beginrangeext",
4198
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4199
15
        NULL, HFILL}
4200
15
    },
4201
15
    { &hf_fileexp_endrange,
4202
15
      { "End range", "fileexp.endrange",
4203
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4204
15
        NULL, HFILL}
4205
15
    },
4206
15
    { &hf_fileexp_endrangeext,
4207
15
      { "End range ext", "fileexp.endrangeext",
4208
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4209
15
        NULL, HFILL}
4210
15
    },
4211
15
    { &hf_fileexp_expirationtime,
4212
15
      { "Expiration time", "fileexp.expirationtime",
4213
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4214
15
        NULL, HFILL}
4215
15
    },
4216
15
    { &hf_fileexp_tokenid_hi,
4217
15
      { "Tokenid hi", "fileexp.tokenid_hi",
4218
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4219
15
        NULL, HFILL}
4220
15
    },
4221
15
    { &hf_fileexp_tokenid_low,
4222
15
      { "Tokenid low", "fileexp.tokenid_low",
4223
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4224
15
        NULL, HFILL}
4225
15
    },
4226
15
    { &hf_fileexp_type_hi,
4227
15
      { "Type hi", "fileexp.type_hi",
4228
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4229
15
        NULL, HFILL}
4230
15
    },
4231
15
    { &hf_fileexp_type_low,
4232
15
      { "Type low", "fileexp.type_low",
4233
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4234
15
        NULL, HFILL}
4235
15
    },
4236
15
    { &hf_fileexp_tn_length,
4237
15
      { "Tn length", "fileexp.tn_length",
4238
15
        FT_UINT16, BASE_DEC, NULL, 0x0,
4239
15
        NULL, HFILL}
4240
15
    },
4241
15
    { &hf_fileexp_tn_tag,
4242
15
      { "Tn tag", "fileexp.tn_tag",
4243
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4244
15
        NULL, HFILL}
4245
15
    },
4246
15
    { &hf_fileexp_storestatus_accesstime_sec,
4247
15
      { "Store status access time (sec)", "fileexp.storestatus_accesstime_sec",
4248
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4249
15
        NULL, HFILL}
4250
15
    },
4251
15
    { &hf_fileexp_storestatus_accesstime_usec,
4252
15
      { "Store status access time (usec)", "fileexp.storestatus_accesstime_usec",
4253
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4254
15
        NULL, HFILL}
4255
15
    },
4256
15
    { &hf_fileexp_storestatus_changetime_sec,
4257
15
      { "Store status change time (sec)", "fileexp.storestatus_changetime_sec",
4258
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4259
15
        NULL, HFILL}
4260
15
    },
4261
15
    { &hf_fileexp_storestatus_changetime_usec,
4262
15
      { "Store status change time (usec)", "fileexp.storestatus_changetime_usec",
4263
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4264
15
        NULL, HFILL}
4265
15
    },
4266
15
    { &hf_fileexp_storestatus_clientspare1,
4267
15
      { "Store Status client spare1", "fileexp.storestatus_clientspare1",
4268
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4269
15
        NULL, HFILL}
4270
15
    },
4271
15
    { &hf_fileexp_storestatus_cmask,
4272
15
      { "Store status cmask", "fileexp.storestatus_cmask",
4273
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4274
15
        NULL, HFILL}
4275
15
    },
4276
15
    { &hf_fileexp_storestatus_devicenumber,
4277
15
      { "Store status device number", "fileexp.storestatus_devicenumber",
4278
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4279
15
        NULL, HFILL}
4280
15
    },
4281
15
    { &hf_fileexp_storestatus_devicenumberhighbits,
4282
15
      { "Store status device number high bits", "fileexp.storestatus_devicenumberhighbits",
4283
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4284
15
        NULL, HFILL}
4285
15
    },
4286
15
    { &hf_fileexp_storestatus_devicetype,
4287
15
      { "Store status device type", "fileexp.storestatus_devicetype",
4288
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4289
15
        NULL, HFILL}
4290
15
    },
4291
15
    { &hf_fileexp_storestatus_group,
4292
15
      { "Store status group", "fileexp.storestatus_group",
4293
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4294
15
        NULL, HFILL}
4295
15
    },
4296
15
    { &hf_fileexp_storestatus_length_high,
4297
15
      { "Store status length high", "fileexp.storestatus_length_high",
4298
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4299
15
        NULL, HFILL}
4300
15
    },
4301
15
    { &hf_fileexp_storestatus_length_low,
4302
15
      { "Store status length low", "fileexp.storestatus_length_low",
4303
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4304
15
        NULL, HFILL}
4305
15
    },
4306
15
    { &hf_fileexp_storestatus_mask,
4307
15
      { "Store status mask", "fileexp.storestatus_mask",
4308
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4309
15
        NULL, HFILL}
4310
15
    },
4311
15
    { &hf_fileexp_storestatus_mode,
4312
15
      { "Store status mode", "fileexp.storestatus_mode",
4313
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4314
15
        NULL, HFILL}
4315
15
    },
4316
15
    { &hf_fileexp_storestatus_modtime_sec,
4317
15
      { "Store status modify time (sec)", "fileexp.storestatus_modtime_sec",
4318
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4319
15
        NULL, HFILL}
4320
15
    },
4321
15
    { &hf_fileexp_storestatus_modtime_usec,
4322
15
      { "Store status modify time (usec)", "fileexp.storestatus_modtime_usec",
4323
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4324
15
        NULL, HFILL}
4325
15
    },
4326
15
    { &hf_fileexp_storestatus_owner,
4327
15
      { "Store status owner", "fileexp.storestatus_owner",
4328
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4329
15
        NULL, HFILL}
4330
15
    },
4331
15
    { &hf_fileexp_storestatus_spare1,
4332
15
      { "Store status spare1", "fileexp.storestatus_spare1",
4333
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4334
15
        NULL, HFILL}
4335
15
    },
4336
15
    { &hf_fileexp_storestatus_spare2,
4337
15
      { "Store status spare2", "fileexp.storestatus_spare2",
4338
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4339
15
        NULL, HFILL}
4340
15
    },
4341
15
    { &hf_fileexp_storestatus_spare3,
4342
15
      { "Store status spare3", "fileexp.storestatus_spare3",
4343
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4344
15
        NULL, HFILL}
4345
15
    },
4346
15
    { &hf_fileexp_storestatus_spare4,
4347
15
      { "Store status spare4", "fileexp.storestatus_spare4",
4348
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4349
15
        NULL, HFILL}
4350
15
    },
4351
15
    { &hf_fileexp_storestatus_spare5,
4352
15
      { "Store status spare5", "fileexp.storestatus_spare5",
4353
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4354
15
        NULL, HFILL}
4355
15
    },
4356
15
    { &hf_fileexp_storestatus_spare6,
4357
15
      { "Store status spare6", "fileexp.storestatus_spare6",
4358
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4359
15
        NULL, HFILL}
4360
15
    },
4361
15
    { &hf_fileexp_storestatus_trunc_high,
4362
15
      { "Store status trunc high", "fileexp.storestatus_trunc_high",
4363
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4364
15
        NULL, HFILL}
4365
15
    },
4366
15
    { &hf_fileexp_storestatus_trunc_low,
4367
15
      { "Store status trunc low", "fileexp.storestatus_trunc_low",
4368
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4369
15
        NULL, HFILL}
4370
15
    },
4371
15
    { &hf_fileexp_storestatus_typeuuid,
4372
15
      { "Store status type uuid", "fileexp.storestatus_typeuuid",
4373
15
        FT_GUID, BASE_NONE, NULL, 0x0,
4374
15
        NULL, HFILL}
4375
15
    },
4376
15
    { &hf_fileexp_l_end_pos,
4377
15
      { "l_end_pos", "fileexp.l_end_pos",
4378
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4379
15
        NULL, HFILL}
4380
15
    },
4381
15
    { &hf_fileexp_l_end_pos_ext,
4382
15
      { "l_end_pos_ext", "fileexp.l_end_pos_ext",
4383
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4384
15
        NULL, HFILL}
4385
15
    },
4386
15
    { &hf_fileexp_l_fstype,
4387
15
      { "l_fstype", "fileexp.l_fstype",
4388
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4389
15
        NULL, HFILL}
4390
15
    },
4391
15
    { &hf_fileexp_l_pid,
4392
15
      { "l_pid", "fileexp.l_pid",
4393
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4394
15
        NULL, HFILL}
4395
15
    },
4396
15
    { &hf_fileexp_l_start_pos,
4397
15
      { "l_start_pos", "fileexp.l_start_pos",
4398
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4399
15
        NULL, HFILL}
4400
15
    },
4401
15
    { &hf_fileexp_l_start_pos_ext,
4402
15
      { "l_start_pos_ext", "fileexp.l_start_pos_ext",
4403
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4404
15
        NULL, HFILL}
4405
15
    },
4406
15
    { &hf_fileexp_l_sysid,
4407
15
      { "l_sysid", "fileexp.l_sysid",
4408
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4409
15
        NULL, HFILL}
4410
15
    },
4411
15
    { &hf_fileexp_l_type,
4412
15
      { "l_type", "fileexp.l_type",
4413
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4414
15
        NULL, HFILL}
4415
15
    },
4416
15
    { &hf_fileexp_l_whence,
4417
15
      { "l_whence", "fileexp.l_whence",
4418
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4419
15
        NULL, HFILL}
4420
15
    },
4421
15
    { &hf_afsconnparams_mask,
4422
15
      { "afs conn params mask", "fileexp.afs_connparams_mask",
4423
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4424
15
        NULL, HFILL}
4425
15
    },
4426
15
    { &hf_afsconnparams_values,
4427
15
      { "afs conn params values", "fileexp.afs_connparams_values",
4428
15
        FT_UINT32, BASE_DEC, NULL, 0x0,
4429
15
        NULL, HFILL}
4430
15
    },
4431
15
    { &hf_fileexp_afsFid_cell_high,
4432
15
      { "Cell High", "fileexp.afsFid.cell_high",
4433
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4434
15
        "afsFid Cell High", HFILL}
4435
15
    },
4436
15
    { &hf_fileexp_afsFid_cell_low,
4437
15
      { "Cell Low", "fileexp.afsFid.cell_low",
4438
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4439
15
        "afsFid Cell Low", HFILL}
4440
15
    },
4441
15
    { &hf_fileexp_afsFid_volume_high,
4442
15
      { "Volume High", "fileexp.afsFid.volume_high",
4443
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4444
15
        "afsFid Volume High", HFILL}
4445
15
    },
4446
15
    { &hf_fileexp_afsFid_volume_low,
4447
15
      { "Volume Low", "fileexp.afsFid.volume_low",
4448
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4449
15
        "afsFid Volume Low", HFILL}
4450
15
    },
4451
15
    { &hf_fileexp_afsFid_Vnode,
4452
15
      { "Vnode", "fileexp.afsFid.Vnode",
4453
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4454
15
        "afsFid Vnode", HFILL}
4455
15
    },
4456
15
    { &hf_fileexp_afsFid_Unique,
4457
15
      { "Unique", "fileexp.afsFid.Unique",
4458
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4459
15
        "afsFid Unique", HFILL}
4460
15
    },
4461
15
    { &hf_fileexp_afsNetAddr_type,
4462
15
      { "Type", "fileexp.afsNetAddr.type",
4463
15
        FT_UINT16, BASE_DEC, NULL, 0x0,
4464
15
        NULL, HFILL}
4465
15
    },
4466
15
    { &hf_fileexp_afsNetAddr_data,
4467
15
      { "IP Data", "fileexp.afsNetAddr.data",
4468
15
        FT_UINT8, BASE_DEC, NULL, 0x0,
4469
15
        NULL, HFILL}
4470
15
    },
4471
15
    { &hf_fileexp_position_high,
4472
15
      { "Position High", "fileexp.position_high",
4473
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4474
15
        NULL, HFILL}
4475
15
    },
4476
15
    { &hf_fileexp_position_low,
4477
15
      { "Position Low", "fileexp.position_low",
4478
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4479
15
        NULL, HFILL}
4480
15
    },
4481
15
    { &hf_fileexp_afsreturndesc_tokenid_high,
4482
15
      { "Token id High", "fileexp.afsreturndesc_tokenid_high",
4483
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4484
15
        NULL, HFILL}
4485
15
    },
4486
15
    { &hf_fileexp_afsreturndesc_tokenid_low,
4487
15
      { "Token id low", "fileexp.afsreturndesc_tokenid_low",
4488
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4489
15
        NULL, HFILL}
4490
15
    },
4491
15
    { &hf_fileexp_afsreturndesc_type_high,
4492
15
      { "Type high", "fileexp.type_high",
4493
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4494
15
        NULL, HFILL}
4495
15
    },
4496
15
    { &hf_fileexp_afsreturndesc_type_low,
4497
15
      { "Type low", "fileexp.type_low",
4498
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4499
15
        NULL, HFILL}
4500
15
    },
4501
15
    { &hf_fileexp_offsetp_high,
4502
15
      { "offset high", "fileexp.offset_high",
4503
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4504
15
        NULL, HFILL}
4505
15
    },
4506
15
    { &hf_fileexp_offsetp_low,
4507
15
      { "offset high", "fileexp.offset_high",
4508
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4509
15
        NULL, HFILL}
4510
15
    },
4511
15
    { &hf_fileexp_nextoffsetp_high,
4512
15
      { "next offset high", "fileexp.nextoffset_high",
4513
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4514
15
        NULL, HFILL}
4515
15
    },
4516
15
    { &hf_fileexp_nextoffsetp_low,
4517
15
      { "next offset low", "fileexp.nextoffset_low",
4518
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4519
15
        NULL, HFILL}
4520
15
    },
4521
15
    { &hf_fileexp_returntokenidp_high,
4522
15
      { "return token idp high", "fileexp.returntokenidp_high",
4523
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4524
15
        NULL, HFILL}
4525
15
    },
4526
15
    { &hf_fileexp_returntokenidp_low,
4527
15
      { "return token idp low", "fileexp.returntokenidp_low",
4528
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4529
15
        NULL, HFILL}
4530
15
    },
4531
15
    { &hf_fileexp_cellidp_high,
4532
15
      { "cellidp high", "fileexp.cellidp_high",
4533
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4534
15
        NULL, HFILL}
4535
15
    },
4536
15
    { &hf_fileexp_cellidp_low,
4537
15
      { "cellidp low", "fileexp.cellidp_low",
4538
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4539
15
        NULL, HFILL}
4540
15
    },
4541
15
    { &hf_afserrorstatus_st,
4542
15
      { "AFS Error Code", "fileexp.afserrortstatus_st",
4543
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4544
15
        NULL, HFILL}
4545
15
    },
4546
15
    { &hf_fileexp_length,
4547
15
      { "Length", "fileexp.length",
4548
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4549
15
        NULL, HFILL}
4550
15
    },
4551
15
    { &hf_fileexp_afsTaggedPath_tp_chars,
4552
15
      { "AFS Tagged Path", "fileexp.TaggedPath_tp_chars",
4553
15
        FT_STRING, BASE_NONE, NULL, 0x0,
4554
15
        NULL, HFILL}
4555
15
    },
4556
15
    { &hf_fileexp_afsTaggedPath_tp_tag,
4557
15
      { "AFS Tagged Path Name", "fileexp.TaggedPath_tp_tag",
4558
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4559
15
        NULL, HFILL}
4560
15
    },
4561
15
    { &hf_fileexp_afsacl_uuid1,
4562
15
      { "AFS ACL UUID1", "fileexp.afsacl_uuid1",
4563
15
        FT_GUID, BASE_NONE, NULL, 0x0,
4564
15
        "UUID", HFILL}
4565
15
    },
4566
15
    { &hf_fileexp_bulkfetchstatus_size,
4567
15
      { "BulkFetchStatus Size", "fileexp.bulkfetchstatus_size",
4568
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4569
15
        NULL, HFILL}
4570
15
    },
4571
15
    { &hf_fileexp_bulkfetchvv_numvols,
4572
15
      { "BulkFetchVv num vols", "fileexp.bulkfetchvv_numvols",
4573
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4574
15
        NULL, HFILL}
4575
15
    },
4576
15
    { &hf_fileexp_bulkfetchvv_spare1,
4577
15
      { "BulkFetchVv spare1", "fileexp.bulkfetchvv_spare1",
4578
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4579
15
        NULL, HFILL}
4580
15
    },
4581
15
    { &hf_fileexp_bulkfetchvv_spare2,
4582
15
      { "BulkFetchVv spare2", "fileexp.bulkfetchvv_spare2",
4583
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4584
15
        NULL, HFILL}
4585
15
    },
4586
15
    { &hf_fileexp_bulkkeepalive_numexecfids,
4587
15
      { "BulkKeepAlive numexecfids", "fileexp.bulkkeepalive_numexecfids",
4588
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4589
15
        NULL, HFILL}
4590
15
    },
4591
15
    { &hf_fileexp_bulkkeepalive_spare4,
4592
15
      { "BulkKeepAlive spare4", "fileexp.bulkfetchkeepalive_spare4",
4593
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4594
15
        NULL, HFILL}
4595
15
    },
4596
15
    { &hf_fileexp_bulkkeepalive_spare2,
4597
15
      { "BulkKeepAlive spare2", "fileexp.bulkfetchkeepalive_spare2",
4598
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4599
15
        NULL, HFILL}
4600
15
    },
4601
15
    { &hf_fileexp_bulkkeepalive_spare1,
4602
15
      { "BulkFetch KeepAlive spare1", "fileexp.bulkfetchkeepalive_spare1",
4603
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4604
15
        NULL, HFILL}
4605
15
    },
4606
15
    { &hf_fileexp_afsacl_defaultcell_uuid,
4607
15
      { "Default Cell UUID", "fileexp.defaultcell_uuid",
4608
15
        FT_GUID, BASE_NONE, NULL, 0x0,
4609
15
        NULL, HFILL}
4610
15
    },
4611
15
    { &hf_fileexp_afsuuid_uuid,
4612
15
      { "AFS UUID", "fileexp.uuid",
4613
15
        FT_GUID, BASE_NONE, NULL, 0x0,
4614
15
        NULL, HFILL}
4615
15
    },
4616
15
    { &hf_fileexp_gettime_syncdispersion,
4617
15
      { "GetTime Syncdispersion", "fileexp.gettime_syncdispersion",
4618
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4619
15
        NULL, HFILL}
4620
15
    },
4621
15
    { &hf_fileexp_gettime_syncdistance,
4622
15
      { "SyncDistance", "fileexp.gettime.syncdistance",
4623
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4624
15
        NULL, HFILL}
4625
15
    },
4626
15
    { &hf_fileexp_gettime_usecondsp,
4627
15
      { "GetTime usecondsp", "fileexp.gettime_usecondsp",
4628
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4629
15
        NULL, HFILL}
4630
15
    },
4631
15
    { &hf_fileexp_readdir_size,
4632
15
      { "Readdir Size", "fileexp.readdir.size",
4633
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4634
15
        NULL, HFILL}
4635
15
    },
4636
15
    { &hf_fileexp_afsNameString_t_principalName_size,
4637
15
      { "Principal Name Size", "fileexp.principalName_size",
4638
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4639
15
        NULL, HFILL}
4640
15
    },
4641
15
    { &hf_fileexp_afsTaggedPath_tp_length,
4642
15
      { "Tagged Path Length", "fileexp.afsTaggedPath_length",
4643
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4644
15
        NULL, HFILL}
4645
15
    },
4646
15
    { &hf_fileexp_fstype,
4647
15
      { "Filetype", "fileexp.fstype",
4648
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4649
15
        NULL, HFILL}
4650
15
    },
4651
15
    { &hf_fileexp_gettime_secondsp,
4652
15
      { "GetTime secondsp", "fileexp.gettime_secondsp",
4653
15
        FT_UINT32, BASE_HEX, NULL, 0x0,
4654
15
        NULL, HFILL}
4655
15
    },
4656
15
    { &hf_fileexp_afsNameString_t_principalName_string,
4657
15
      { "Principal Name", "fileexp.NameString_principal",
4658
15
        FT_STRING, BASE_NONE, NULL, 0x0,
4659
15
        NULL, HFILL}
4660
15
    },
4661
15
    { &hf_fileexp_fetchdata_pipe_t_size,
4662
15
      { "FetchData Pipe_t size", "fileexp.fetchdata_pipe_t_size",
4663
15
        FT_STRING, BASE_NONE, NULL, 0x0,
4664
15
        NULL, HFILL}
4665
15
    },
4666
15
  };
4667
4668
15
  static int *ett[] = {
4669
15
    &ett_fileexp,
4670
15
    &ett_fileexp_afsReturnDesc,
4671
15
    &ett_fileexp_afsFid,
4672
15
    &ett_fileexp_afsNetAddr,
4673
15
    &ett_fileexp_fetchstatus,
4674
15
    &ett_fileexp_afsflags,
4675
15
    &ett_fileexp_volsync,
4676
15
    &ett_fileexp_minvvp,
4677
15
    &ett_fileexp_afsfidtaggedname,
4678
15
    &ett_fileexp_afstaggedname,
4679
15
    &ett_fileexp_afstoken,
4680
15
    &ett_fileexp_afsstorestatus,
4681
15
    &ett_fileexp_afsRecordLock,
4682
15
    &ett_fileexp_afsAcl,
4683
15
    &ett_fileexp_afsNameString_t,
4684
15
    &ett_fileexp_afsConnParams,
4685
15
    &ett_fileexp_afsErrorStatus,
4686
15
    &ett_fileexp_afsTaggedPath,
4687
15
    &ett_fileexp_afsNetData,
4688
15
    &ett_fileexp_afsBulkStat,
4689
15
    &ett_fileexp_afsuuid,
4690
15
    &ett_fileexp_offsetp,
4691
15
    &ett_fileexp_returntokenidp,
4692
15
    &ett_fileexp_afsbundled_stat,
4693
15
  };
4694
4695
15
  proto_fileexp = proto_register_protocol ("DCE DFS File Exporter", "FILEEXP", "fileexp");
4696
15
  proto_register_field_array (proto_fileexp, hf, array_length (hf));
4697
15
  proto_register_subtree_array (ett, array_length (ett));
4698
15
}
4699
4700
void
4701
proto_reg_handoff_fileexp (void)
4702
15
{
4703
  /*
4704
   * Register the protocol as dcerpc
4705
   */
4706
15
  dcerpc_init_uuid (proto_fileexp, ett_fileexp, &uuid_fileexp, ver_fileexp,
4707
15
                    fileexp_dissectors, hf_fileexp_opnum);
4708
15
}
4709
4710
/*
4711
 * Editor modelines  -  https://www.wireshark.org/tools/modelines.html
4712
 *
4713
 * Local Variables:
4714
 * c-basic-offset: 2
4715
 * tab-width: 8
4716
 * indent-tabs-mode: nil
4717
 * End:
4718
 *
4719
 * ex: set shiftwidth=2 tabstop=8 expandtab:
4720
 * :indentSize=2:tabSize=8:noTabs=true:
4721
 */