Coverage Report

Created: 2026-11-12 07:01

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/wireshark/epan/dissectors/packet-dcerpc-fldb.c
Line
Count
Source
1
/* packet-dcerpc-fldb.c
2
 *
3
 * Routines for DCE DFS Fileset Location Server Calls
4
 * Copyright 2004, 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/flserver/fldb_proc.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
18
#include <epan/packet.h>
19
#include <epan/exceptions.h>
20
#include "packet-dcerpc.h"
21
#include "packet-dcerpc-dce122.h"
22
23
void proto_register_fldb (void);
24
void proto_reg_handoff_fldb (void);
25
26
static int proto_fldb;
27
static int hf_fldb_opnum;
28
29
static int ett_fldb;
30
static int ett_fldb_vldbentry;
31
static int ett_fldb_afsnetaddr;
32
static int ett_fldb_siteflags;
33
static int ett_fldb_afsflags;
34
static int ett_fldb_vlconf_cell;
35
static int ett_fldb_afsNameString_t;
36
37
38
static e_guid_t uuid_fldb =
39
  { 0x4d37f2dd, 0xed43, 0x0000, {0x02, 0xc0, 0x37, 0xcf, 0x2e, 0x00, 0x00, 0x01}
40
};
41
static uint16_t ver_fldb = 4;
42
43
#if 0
44
static int hf_fldb_getentrybyname_rqst_var1;
45
static int hf_fldb_getentrybyname_rqst_key_size;
46
#endif
47
static int hf_fldb_releaselock_rqst_fsid_high;
48
static int hf_fldb_releaselock_rqst_fsid_low;
49
static int hf_fldb_releaselock_rqst_voltype;
50
static int hf_fldb_releaselock_rqst_voloper;
51
static int hf_fldb_setlock_rqst_fsid_high;
52
static int hf_fldb_setlock_rqst_fsid_low;
53
static int hf_fldb_setlock_rqst_voltype;
54
static int hf_fldb_setlock_rqst_voloper;
55
#if 0
56
static int hf_fldb_setlock_resp_st;
57
static int hf_fldb_setlock_resp_st2;
58
#endif
59
static int hf_fldb_listentry_rqst_previous_index;
60
static int hf_fldb_listentry_rqst_var1;
61
static int hf_fldb_listentry_resp_count;
62
static int hf_fldb_listentry_resp_next_index;
63
#if 0
64
static int hf_fldb_listentry_resp_key_t;
65
static int hf_fldb_listentry_resp_key_size;
66
static int hf_fldb_listentry_resp_key_t2;
67
static int hf_fldb_listentry_resp_key_size2;
68
static int hf_fldb_listentry_resp_voltype;
69
static int hf_fldb_createentry_rqst_key_t;
70
static int hf_fldb_createentry_rqst_key_size;
71
#endif
72
static int hf_fldb_deleteentry_rqst_fsid_high;
73
static int hf_fldb_deleteentry_rqst_fsid_low;
74
static int hf_fldb_deleteentry_rqst_voltype;
75
static int hf_fldb_deleteentry_rqst_voloper;
76
#if 0
77
static int hf_fldb_getentrybyid_rqst_fsid_high;
78
static int hf_fldb_getentrybyid_rqst_fsid_low;
79
static int hf_fldb_getentrybyid_rqst_voltype;
80
static int hf_fldb_getentrybyid_rqst_voloper;
81
#endif
82
static int hf_fldb_replaceentry_rqst_fsid_high;
83
static int hf_fldb_replaceentry_rqst_fsid_low;
84
static int hf_fldb_replaceentry_rqst_voltype;
85
#if 0
86
static int hf_fldb_replaceentry_rqst_key_size;
87
static int hf_fldb_replaceentry_rqst_key_t;
88
static int hf_fldb_replaceentry_resp_st;
89
static int hf_fldb_replaceentry_resp_st2;
90
#endif
91
#if 0
92
static int hf_fldb_getentrybyname_resp_volumetype;
93
static int hf_fldb_getentrybyname_resp_numservers;
94
static int hf_fldb_getentrybyname_resp_sitecookies;
95
static int hf_fldb_getentrybyname_resp_sitepartition;
96
static int hf_fldb_getentrybyname_resp_siteflags;
97
static int hf_fldb_getentrybyname_resp_sitemaxreplat;
98
static int hf_fldb_getentrybyname_resp_volid_high;
99
static int hf_fldb_getentrybyname_resp_volid_low;
100
static int hf_fldb_getentrybyname_resp_voltype;
101
static int hf_fldb_getentrybyname_resp_cloneid_high;
102
static int hf_fldb_getentrybyname_resp_cloneid_low;
103
static int hf_fldb_getentrybyname_resp_flags;
104
static int hf_fldb_getentrybyname_resp_maxtotallat;
105
static int hf_fldb_getentrybyname_resp_hardmaxtotlat;
106
static int hf_fldb_getentrybyname_resp_minpouncedally;
107
static int hf_fldb_getentrybyname_resp_defaultmaxreplat;
108
static int hf_fldb_getentrybyname_resp_reclaimdally;
109
static int hf_fldb_getentrybyname_resp_whenlocked;
110
static int hf_fldb_getentrybyname_resp_spare1;
111
static int hf_fldb_getentrybyname_resp_spare2;
112
static int hf_fldb_getentrybyname_resp_spare3;
113
static int hf_fldb_getentrybyname_resp_spare4;
114
static int hf_fldb_getentrybyname_resp_key_t;
115
static int hf_fldb_getentrybyname_resp_key_size;
116
static int hf_fldb_getentrybyname_resp_test;
117
static int hf_dcerpc_error_status;
118
#endif
119
static int hf_fldb_vldbentry_volumename;
120
static int hf_fldb_vldbentry_volumetype;
121
static int hf_fldb_vldbentry_nservers;
122
static int hf_fldb_vldbentry_sitepartition;
123
static int hf_fldb_afsnetaddr_type;
124
static int hf_fldb_afsnetaddr_data;
125
static int hf_fldb_siteflags;
126
static int hf_fldb_vldbentry_sitemaxreplicalatency;
127
static int hf_fldb_vldbentry_siteprincipal;
128
static int hf_fldb_vldbentry_siteowner;
129
static int hf_fldb_vldbentry_siteobjid;
130
static int hf_fldb_vldbentry_volids_high;
131
static int hf_fldb_vldbentry_volids_low;
132
static int hf_fldb_vldbentry_voltypes;
133
static int hf_fldb_vldbentry_cloneid_high;
134
static int hf_fldb_vldbentry_cloneid_low;
135
static int hf_fldb_afsflags_flags;
136
static int hf_fldb_vldbentry_maxtotallatency;
137
static int hf_fldb_vldbentry_hardmaxtotallatency;
138
static int hf_fldb_vldbentry_minimumpouncedally;
139
static int hf_fldb_vldbentry_defaultmaxreplicalatency;
140
static int hf_fldb_vldbentry_reclaimdally;
141
static int hf_fldb_vldbentry_whenlocked;
142
static int hf_fldb_vldbentry_spare1;
143
static int hf_fldb_vldbentry_spare2;
144
static int hf_fldb_vldbentry_spare3;
145
static int hf_fldb_vldbentry_spare4;
146
static int hf_fldb_vldbentry_lockername;
147
static int hf_fldb_vldbentry_charspares;
148
static int hf_fldb_vlconf_cell_name;
149
static int hf_fldb_vlconf_cell_cellid_high;
150
static int hf_fldb_vlconf_cell_cellid_low;
151
static int hf_fldb_vlconf_cell_numservers;
152
static int hf_fldb_vlconf_cell_hostname;
153
static int hf_fldb_vlconf_cell_spare1;
154
static int hf_fldb_vlconf_cell_spare2;
155
static int hf_fldb_vlconf_cell_spare3;
156
static int hf_fldb_vlconf_cell_spare4;
157
static int hf_fldb_vlconf_cell_spare5;
158
static int hf_fldb_flagsp;
159
static int hf_fldb_nextstartp;
160
static int hf_fldb_afsNameString_t_principalName_string;
161
static int hf_fldb_afsNameString_t_principalName_size;
162
/* static int hf_fldb_afsNameString_t_principalName_size2; */
163
static int hf_fldb_namestring;
164
static int hf_error_st;
165
static int hf_fldb_creationquota;
166
static int hf_fldb_creationuses;
167
static int hf_fldb_deletedflag;
168
/* static int hf_fldb_namestring_size; */
169
static int hf_fldb_numwanted;
170
static int hf_fldb_spare2;
171
static int hf_fldb_spare3;
172
static int hf_fldb_spare4;
173
static int hf_fldb_spare5;
174
static int hf_fldb_uuid_objid;
175
static int hf_fldb_uuid_owner;
176
static int hf_fldb_volid_high;
177
static int hf_fldb_volid_low;
178
static int hf_fldb_voltype;
179
static uint32_t st;
180
static const char *st_str;
181
182
0
#define AFS_FLAG_RETURNTOKEN         0x00001
183
0
#define AFS_FLAG_TOKENJUMPQUEUE      0x00002
184
0
#define AFS_FLAG_SKIPTOKEN           0x00004
185
0
#define AFS_FLAG_NOOPTIMISM          0x00008
186
0
#define AFS_FLAG_TOKENID             0x00010
187
0
#define AFS_FLAG_RETURNBLOCKER       0x00020
188
0
#define AFS_FLAG_ASYNCGRANT          0x00040
189
0
#define AFS_FLAG_NOREVOKE            0x00080
190
0
#define AFS_FLAG_MOVE_REESTABLISH    0x00100
191
0
#define AFS_FLAG_SERVER_REESTABLISH  0x00200
192
0
#define AFS_FLAG_NO_NEW_EPOCH        0x00400
193
0
#define AFS_FLAG_MOVE_SOURCE_OK      0x00800
194
0
#define AFS_FLAG_SYNC                0x01000
195
0
#define AFS_FLAG_ZERO                0x02000
196
0
#define AFS_FLAG_SKIPSTATUS          0x04000
197
0
#define AFS_FLAG_FORCEREVOCATIONS    0x08000
198
0
#define AFS_FLAG_FORCEVOLQUIESCE     0x10000
199
#define AFS_FLAG_FORCEREVOCATIONDOWN 0x20000
200
201
0
#define AFS_FLAG_SEC_SERVICE           0x01
202
#define AFS_FLAG_CONTEXT_NEW_IF        0x02
203
#define AFS_FLAG_CONTEXT_DO_RESET      0x04
204
0
#define AFS_FLAG_CONTEXT_NEW_ACL_IF    0x08
205
#define AFS_FLAG_CONTEXT_NEW_TKN_TYPES 0x10
206
207
0
#define VLSF_NEWREPSITE   0x01
208
0
#define VLSF_SPARE1       0x02
209
0
#define VLSF_SPARE2       0x04    /* used for VLSF_RWVOL in flprocs.c */
210
0
#define VLSF_SPARE3       0x08    /* used for VLSF_BACKVOL in flprocs.c */
211
0
#define VLSF_SAMEASPREV   0x10
212
0
#define VLSF_DEFINED      0x20
213
0
#define VLSF_PARTIALADDRS 0x40
214
0
#define VLSF_ZEROIXHERE         0x80000000
215
216
#define MACRO_ST_CLEAR(name) \
217
0
  offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_error_st, &st); \
218
0
  st_str = val_to_str_ext(pinfo->pool, st, &dce_error_vals_ext, "%u");              \
219
0
  if (st) {                                                              \
220
0
      col_add_fstr (pinfo->cinfo, COL_INFO, "%s st:%s ", name, st_str); \
221
0
  } else {                                                                \
222
0
      col_append_fstr (pinfo->cinfo, COL_INFO, " st:%s ", st_str);      \
223
0
  }
224
225
226
static unsigned
227
dissect_afsnetaddr (tvbuff_t *tvb, unsigned offset,
228
                    packet_info *pinfo, proto_tree *parent_tree,
229
                    dcerpc_info *di, uint8_t *drep)
230
0
{
231
0
  proto_item *item       = NULL;
232
0
  proto_tree *tree       = NULL;
233
0
  int         old_offset = offset;
234
0
  uint16_t    type;
235
0
  uint8_t     data;
236
0
  int         i;
237
238
0
  if (parent_tree)
239
0
    {
240
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
241
0
                                     ett_fldb_afsnetaddr, &item, "afsNetAddr:");
242
0
    }
243
244
/*                 unsigned16 type;
245
                   unsigned8 data[14];
246
*/
247
248
0
  offset =
249
0
    dissect_ndr_uint16 (tvb, offset, pinfo, tree, di, drep,
250
0
                        hf_fldb_afsnetaddr_type, &type);
251
252
0
  if (type)
253
0
    {
254
0
      col_append_fstr (pinfo->cinfo, COL_INFO, " Type:%u ", type);
255
256
0
      for (i = 0; i < 14; i++)
257
0
        {
258
0
          offset =
259
0
            dissect_ndr_uint8 (tvb, offset, pinfo, tree, di, drep,
260
0
                               hf_fldb_afsnetaddr_data, &data);
261
262
0
          switch (i)
263
0
            {
264
0
            case 1:
265
0
              if (data)
266
0
                {
267
0
                  col_append_fstr (pinfo->cinfo, COL_INFO, " Port:%u", data);
268
0
                }
269
0
              break;
270
0
            case 2:
271
0
                col_append_fstr (pinfo->cinfo, COL_INFO, " IP:%u.", data);
272
0
              break;
273
0
            case 3:
274
0
                col_append_fstr (pinfo->cinfo, COL_INFO, "%u.", data);
275
0
              break;
276
0
            case 4:
277
0
                col_append_fstr (pinfo->cinfo, COL_INFO, "%u.", data);
278
0
              break;
279
0
            case 5:
280
0
                col_append_fstr (pinfo->cinfo, COL_INFO, "%u", data);
281
0
              break;
282
0
            }
283
284
0
        }
285
0
    }
286
0
  else
287
0
    {
288
0
      offset += 14;             /* space left after reading in type for the array. */
289
0
    }
290
291
0
  proto_item_set_len (item, offset - old_offset);
292
293
0
  return offset;
294
0
}
295
296
297
static unsigned
298
dissect_vlconf_cell (tvbuff_t *tvb, unsigned offset,
299
                     packet_info *pinfo, proto_tree *parent_tree,
300
                     dcerpc_info *di, uint8_t *drep)
301
0
{
302
0
  proto_item   *item       = NULL;
303
0
  proto_tree   *tree       = NULL;
304
0
  int           old_offset = offset;
305
0
#define MAXVLCELLCHARS    128
306
0
#define MAXVLHOSTSPERCELL 64
307
0
  const uint8_t *name, *hostname;
308
0
  int           i;
309
0
  uint32_t      cellid_high, cellid_low, numservers, spare1, spare2, spare3, spare4,
310
0
    spare5;
311
312
0
  if (parent_tree)
313
0
    {
314
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
315
0
                                     ett_fldb_vlconf_cell, &item, "vlconf_cell:");
316
0
    }
317
318
  /* byte name[MAXVLCELLCHARS];          Cell name */
319
0
  proto_tree_add_item_ret_string (tree, hf_fldb_vlconf_cell_name, tvb, offset, MAXVLCELLCHARS, ENC_ASCII, pinfo->pool, &name);
320
0
  offset += MAXVLCELLCHARS;
321
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " Name: %s", name);
322
323
  /* afsHyper CellID;                     identifier for that cell  */
324
325
0
  offset =
326
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
327
0
                        hf_fldb_vlconf_cell_cellid_high, &cellid_high);
328
0
  offset =
329
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
330
0
                        hf_fldb_vlconf_cell_cellid_low, &cellid_low);
331
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " CellID:%u-%u", cellid_high,
332
0
                     cellid_low);
333
334
  /* unsigned32 numServers;              *Num active servers for the cell */
335
0
  offset =
336
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
337
0
                        hf_fldb_vlconf_cell_numservers, &numservers);
338
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " numServers:%u", numservers);
339
340
  /*    afsNetAddr hostAddr[MAXVLHOSTSPERCELL]; *addresses for cell's servers */
341
0
  for (i = 0; i < MAXVLHOSTSPERCELL; i++)
342
0
    {
343
0
      offset = dissect_afsnetaddr (tvb, offset, pinfo, tree, di, drep);
344
0
    }
345
346
  /* hostnam hostName[MAXVLHOSTSPERCELL];        *Names for cell's servers* */
347
348
0
  for (i = 0; i < MAXVLHOSTSPERCELL; i++)
349
0
    {
350
0
      proto_tree_add_item_ret_string(tree, hf_fldb_vlconf_cell_hostname, tvb, offset,
351
0
                             64, ENC_ASCII|ENC_NA, pinfo->pool, &hostname);
352
0
      offset += 64;             /* some reason this 114 seems to be incorrect... cutting 4 short to compensate.... */
353
0
      col_append_fstr (pinfo->cinfo, COL_INFO, " hostName: %s", hostname);
354
0
    }
355
356
  /*     unsigned32 spare1; */
357
0
  offset =
358
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
359
0
                        hf_fldb_vlconf_cell_spare1, &spare1);
360
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " spare1:%u", spare1);
361
362
  /*     unsigned32 spare2; */
363
0
  offset =
364
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
365
0
                        hf_fldb_vlconf_cell_spare2, &spare2);
366
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " spare2:%u", spare2);
367
368
  /*     unsigned32 spare3; */
369
0
  offset =
370
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
371
0
                        hf_fldb_vlconf_cell_spare3, &spare3);
372
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " spare3:%u", spare3);
373
374
  /*     unsigned32 spare4; */
375
0
  offset =
376
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
377
0
                        hf_fldb_vlconf_cell_spare4, &spare4);
378
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " spare4:%u", spare4);
379
380
  /*     unsigned32 spare5; */
381
0
  offset =
382
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
383
0
                        hf_fldb_vlconf_cell_spare5, &spare5);
384
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " spare5:%u", spare5);
385
386
0
  proto_item_set_len (item, offset - old_offset);
387
388
0
  return offset;
389
0
}
390
391
392
static unsigned
393
dissect_afsNameString_t (tvbuff_t *tvb, unsigned offset,
394
                         packet_info *pinfo, proto_tree *parent_tree,
395
                         dcerpc_info *di, uint8_t *drep)
396
0
{
397
/*
398
typedef [string] byte   NameString_t[AFS_NAMEMAX];
399
*/
400
401
0
  proto_item   *item       = NULL;
402
0
  proto_tree   *tree       = NULL;
403
0
  int           old_offset = offset;
404
0
#define AFS_NAMEMAX 256
405
0
  uint32_t      string_size;
406
0
  const uint8_t *namestring;
407
408
0
  if (di->conformant_run)
409
0
    {
410
0
      return offset;
411
0
    }
412
413
0
  if (parent_tree)
414
0
    {
415
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1,
416
0
                                     ett_fldb_afsNameString_t, &item, "afsNameString_t:");    }
417
418
0
  offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
419
0
                               hf_fldb_afsNameString_t_principalName_size,
420
0
                               &string_size);
421
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " String_size:%u", string_size);
422
0
  if (string_size < AFS_NAMEMAX)
423
0
    {
424
/* proto_tree_add_string(tree, id, tvb, start, length, value_ptr); */
425
0
      proto_tree_add_item_ret_string(tree, hf_fldb_afsNameString_t_principalName_string,
426
0
                             tvb, offset, string_size, ENC_ASCII|ENC_NA, pinfo->pool, &namestring);
427
0
      offset += string_size;
428
0
        col_append_fstr (pinfo->cinfo, COL_INFO, " Principal:%s", namestring);
429
0
    }
430
0
  else
431
0
    {
432
0
        col_append_fstr (pinfo->cinfo, COL_INFO,
433
0
                         " :FIXME!: Invalid string length of  %u",
434
0
                         string_size);
435
        /* The fields that follow cannot be found */
436
0
        THROW (ReportedBoundsError);
437
0
    }
438
0
  proto_item_set_len (item, offset - old_offset);
439
0
  return offset;
440
0
}
441
442
443
static unsigned
444
dissect_afsflags (tvbuff_t *tvb, unsigned offset,
445
                  packet_info *pinfo, proto_tree *parent_tree,
446
                  dcerpc_info *di, uint8_t *drep)
447
0
{
448
0
  proto_item *item       = NULL;
449
0
  proto_tree *tree       = NULL;
450
0
  int         old_offset = offset;
451
0
  uint32_t    afsflags;
452
453
0
  if (parent_tree)
454
0
    {
455
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fldb_afsflags, &item, "afsFlags:");
456
0
    }
457
458
0
  offset =
459
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
460
0
                        hf_fldb_afsflags_flags, &afsflags);
461
0
  if (afsflags)
462
0
    {
463
0
      col_append_str (pinfo->cinfo, COL_INFO, " afsFlags=");
464
0
      if ((afsflags & AFS_FLAG_RETURNTOKEN) == AFS_FLAG_RETURNTOKEN)
465
0
        {
466
0
          col_append_str (pinfo->cinfo, COL_INFO, ":RETURNTOKEN");
467
0
        }
468
0
      if ((afsflags & AFS_FLAG_TOKENJUMPQUEUE) == AFS_FLAG_TOKENJUMPQUEUE)
469
0
        {
470
0
          col_append_str (pinfo->cinfo, COL_INFO, ":TOKENJUMPQUEUE");
471
0
        }
472
0
      if ((afsflags & AFS_FLAG_SKIPTOKEN) == AFS_FLAG_SKIPTOKEN)
473
0
        {
474
0
          col_append_str (pinfo->cinfo, COL_INFO, ":SKIPTOKEN");
475
0
        }
476
0
      if ((afsflags & AFS_FLAG_NOOPTIMISM) == AFS_FLAG_NOOPTIMISM)
477
0
        {
478
0
          col_append_str (pinfo->cinfo, COL_INFO, ":NOOPTIMISM");
479
0
        }
480
0
      if ((afsflags & AFS_FLAG_TOKENID) == AFS_FLAG_TOKENID)
481
0
        {
482
0
          col_append_str (pinfo->cinfo, COL_INFO, ":TOKENID");
483
0
        }
484
0
      if ((afsflags & AFS_FLAG_RETURNBLOCKER) == AFS_FLAG_RETURNBLOCKER)
485
0
        {
486
0
          col_append_str (pinfo->cinfo, COL_INFO, ":RETURNBLOCKER");
487
0
        }
488
0
      if ((afsflags & AFS_FLAG_ASYNCGRANT) == AFS_FLAG_ASYNCGRANT)
489
0
        {
490
0
          col_append_str (pinfo->cinfo, COL_INFO, ":ASYNCGRANT");
491
0
        }
492
0
      if ((afsflags & AFS_FLAG_NOREVOKE) == AFS_FLAG_NOREVOKE)
493
0
        {
494
0
          col_append_str (pinfo->cinfo, COL_INFO, ":NOREVOKE");
495
0
        }
496
0
      if ((afsflags & AFS_FLAG_MOVE_REESTABLISH) == AFS_FLAG_MOVE_REESTABLISH)
497
0
        {
498
0
          col_append_str (pinfo->cinfo, COL_INFO, ":MOVE_REESTABLISH");
499
0
        }
500
0
      if ((afsflags & AFS_FLAG_SERVER_REESTABLISH) ==
501
0
          AFS_FLAG_SERVER_REESTABLISH)
502
0
        {
503
0
          col_append_str (pinfo->cinfo, COL_INFO, ":SERVER_REESTABLISH");
504
0
          if ((afsflags & AFS_FLAG_NO_NEW_EPOCH) == AFS_FLAG_NO_NEW_EPOCH)
505
0
            {
506
0
              col_append_str (pinfo->cinfo, COL_INFO, ":NO_NEW_EPOCH");
507
0
            }
508
0
          if ((afsflags & AFS_FLAG_MOVE_SOURCE_OK) == AFS_FLAG_MOVE_SOURCE_OK)
509
0
            {
510
0
              col_append_str (pinfo->cinfo, COL_INFO, ":MOVE_SOURCE_OK");
511
0
            }
512
0
          if ((afsflags & AFS_FLAG_SYNC) == AFS_FLAG_SYNC)
513
0
            {
514
0
              col_append_str (pinfo->cinfo, COL_INFO, ":SYNC");
515
0
            }
516
0
          if ((afsflags & AFS_FLAG_ZERO) == AFS_FLAG_ZERO)
517
0
            {
518
0
              col_append_str (pinfo->cinfo, COL_INFO, ":ZERO");
519
0
            }
520
0
          if ((afsflags & AFS_FLAG_SKIPSTATUS) == AFS_FLAG_SKIPSTATUS)
521
0
            {
522
0
              col_append_str (pinfo->cinfo, COL_INFO, ":SKIPSTATUS");
523
0
            }
524
0
          if ((afsflags & AFS_FLAG_FORCEREVOCATIONS) ==
525
0
              AFS_FLAG_FORCEREVOCATIONS)
526
0
            {
527
0
              col_append_str (pinfo->cinfo, COL_INFO, ":FORCEREVOCATIONS");
528
0
            }
529
0
          if ((afsflags & AFS_FLAG_FORCEVOLQUIESCE) ==
530
0
              AFS_FLAG_FORCEVOLQUIESCE)
531
0
            {
532
0
              col_append_str (pinfo->cinfo, COL_INFO, ":FORCEVOLQUIESCE");
533
0
            }
534
0
          if ((afsflags & AFS_FLAG_SEC_SERVICE) == AFS_FLAG_SEC_SERVICE)
535
0
            {
536
0
              col_append_str (pinfo->cinfo, COL_INFO, ":SEC_SERVICE");
537
0
            }
538
0
          if ((afsflags & AFS_FLAG_CONTEXT_NEW_ACL_IF) ==
539
0
              AFS_FLAG_CONTEXT_NEW_ACL_IF)
540
0
            {
541
0
              col_append_str (pinfo->cinfo, COL_INFO,
542
0
                                ":CONTEXT_NEW_ACL_IF");
543
0
            }
544
545
0
        }
546
0
    }
547
548
0
  proto_item_set_len (item, offset - old_offset);
549
550
0
  return offset;
551
0
}
552
553
554
static unsigned
555
dissect_siteflags (tvbuff_t *tvb, unsigned offset,
556
                   packet_info *pinfo, proto_tree *parent_tree,
557
                   dcerpc_info *di, uint8_t *drep)
558
0
{
559
0
  proto_item *item       = NULL;
560
0
  proto_tree *tree       = NULL;
561
0
  int         old_offset = offset;
562
0
  uint32_t    siteflags;
563
564
0
  if (parent_tree)
565
0
    {
566
0
      tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fldb_siteflags, &item, "SiteFlags:");
567
0
    }
568
569
0
  offset =
570
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fldb_siteflags,
571
0
                        &siteflags);
572
573
0
  if (siteflags)
574
0
    {
575
0
      col_append_str (pinfo->cinfo, COL_INFO, " SiteFlags");
576
0
      if ((siteflags & VLSF_NEWREPSITE) == VLSF_NEWREPSITE)
577
0
        {
578
0
          col_append_str (pinfo->cinfo, COL_INFO, ":NEWREPSITE");
579
0
        }
580
0
      if ((siteflags & VLSF_SPARE1) == VLSF_SPARE1)
581
0
        {
582
0
          col_append_str (pinfo->cinfo, COL_INFO, ":SPARE1");
583
0
        }
584
0
      if ((siteflags & VLSF_SPARE2) == VLSF_SPARE2)
585
0
        {
586
0
          col_append_str (pinfo->cinfo, COL_INFO, ":SPARE2");
587
0
        }
588
0
      if ((siteflags & VLSF_SPARE3) == VLSF_SPARE3)
589
0
        {
590
0
          col_append_str (pinfo->cinfo, COL_INFO, ":SPARE3");
591
0
        }
592
0
      if ((siteflags & VLSF_SAMEASPREV) == VLSF_SAMEASPREV)
593
0
        {
594
0
          col_append_str (pinfo->cinfo, COL_INFO, ":SAMEASPREV");
595
0
        }
596
0
      if ((siteflags & VLSF_DEFINED) == VLSF_DEFINED)
597
0
        {
598
0
          col_append_str (pinfo->cinfo, COL_INFO, ":DEFINED");
599
0
        }
600
0
      if ((siteflags & VLSF_PARTIALADDRS) == VLSF_PARTIALADDRS)
601
0
        {
602
0
          col_append_str (pinfo->cinfo, COL_INFO, ":PARTIALADDRS ");
603
0
        }
604
0
      if ((siteflags & VLSF_ZEROIXHERE) == VLSF_ZEROIXHERE)
605
0
        {
606
0
          col_append_str (pinfo->cinfo, COL_INFO, ":ZEROIXHERE");
607
608
0
        }
609
0
    }
610
611
0
  proto_item_set_len (item, offset - old_offset);
612
613
0
  return offset;
614
0
}
615
616
617
static unsigned
618
dissect_vldbentry (tvbuff_t *tvb, unsigned offset,
619
                   packet_info *pinfo, proto_tree *parent_tree,
620
                   dcerpc_info *di, uint8_t *drep)
621
0
{
622
0
  proto_item   *item;
623
0
  proto_tree   *tree;
624
0
  int           old_offset = offset;
625
0
  const uint8_t *volumename, *siteprincipal, *charspares, *lockername;
626
0
  uint32_t      volumetype, nservers, sitepartition, sitemaxreplicalatency;
627
0
  uint32_t      volids_high, volids_low, voltypes, cloneid_high, cloneid_low;
628
0
  uint32_t      maxtotallatency, hardmaxtotallatency, minimumpouncedally;
629
0
  uint32_t      defaultmaxreplicalatency, reclaimdally, whenlocked;
630
0
  uint32_t      spare1, spare2, spare3, spare4;
631
0
  e_guid_t      siteowner, siteobjid;
632
0
  int           i;
633
0
#define MAXNSERVERS 16
634
0
#define MAXVOLTYPES 8
635
0
#define MAXLOCKNAMELEN 64
636
637
0
  tree = proto_tree_add_subtree (parent_tree, tvb, offset, -1, ett_fldb_vldbentry, &item, "vldbentry:");
638
639
/*    byte            name[114];      Volume name  */
640
641
0
  proto_tree_add_item_ret_string(tree, hf_fldb_vldbentry_volumename, tvb, offset, 114,
642
0
                       ENC_ASCII|ENC_NA, pinfo->pool, &volumename);
643
0
  offset += 110;                /* some reason this 114 seems to be incorrect... cutting 4 short to compensate.... */
644
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " Name: %s", volumename);
645
646
  /* unsigned32      volumeType; */
647
0
  offset =
648
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
649
0
                        hf_fldb_vldbentry_volumetype, &volumetype);
650
0
    col_append_fstr (pinfo->cinfo, COL_INFO, " Type:%u", volumetype);
651
652
  /*unsigned32      nServers; */
653
0
  offset =
654
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
655
0
                        hf_fldb_vldbentry_nservers, &nservers);
656
0
    col_append_fstr (pinfo->cinfo, COL_INFO, " nServers:%u", nservers);
657
658
  /* afsNetAddr      siteAddr[MAXNSERVERS]; 16 */
659
0
  for (i = 0; i < MAXNSERVERS; i++)
660
0
    {
661
      /* col_append_fstr (pinfo->cinfo, COL_INFO, " Site:%u", i); */
662
663
0
      offset = dissect_afsnetaddr (tvb, offset, pinfo, tree, di, drep);
664
0
    }
665
666
/*                unsigned32      sitePartition[MAXNSERVERS]; */
667
0
  for (i = 0; i < MAXNSERVERS; i++)
668
0
    {
669
0
      offset =
670
0
        dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
671
0
                            hf_fldb_vldbentry_sitepartition, &sitepartition);
672
0
      if (sitepartition)
673
0
        {
674
0
            col_append_fstr (pinfo->cinfo, COL_INFO, " LFS:%u",
675
0
                             sitepartition);
676
0
        }
677
0
    }
678
679
  /* unsigned32      siteFlags[MAXNSERVERS]; */
680
0
  for (i = 0; i < MAXNSERVERS; i++)
681
0
    {
682
0
      offset = dissect_siteflags (tvb, offset, pinfo, tree, di, drep);
683
0
    }
684
685
  /*  unsigned32      sitemaxReplicaLatency[MAXNSERVERS]; */
686
0
  for (i = 0; i < MAXNSERVERS; i++)
687
0
    {
688
0
      offset =
689
0
        dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
690
0
                            hf_fldb_vldbentry_sitemaxreplicalatency,
691
0
                            &sitemaxreplicalatency);
692
0
      if (sitemaxreplicalatency)
693
0
        {
694
0
            col_append_fstr (pinfo->cinfo, COL_INFO, " MaxRepLat%d:%u", i,
695
0
                             sitemaxreplicalatency);
696
0
        }
697
0
    }
698
  /* kerb_princ_name sitePrincipal[MAXNSERVERS];      principal  */
699
0
  for (i = 0; i < MAXNSERVERS; i++)
700
0
    {
701
0
      proto_tree_add_item_ret_string(tree, hf_fldb_vldbentry_siteprincipal, tvb,
702
0
                           offset, 64, ENC_ASCII|ENC_NA, pinfo->pool, &siteprincipal);
703
0
      offset += 64;
704
0
        col_append_fstr (pinfo->cinfo, COL_INFO, " Princ: %s", siteprincipal);
705
0
    }
706
707
  /* afsUUID         siteOwner[MAXNSERVERS]; */
708
709
0
  for (i = 0; i < MAXNSERVERS; i++)
710
0
    {
711
0
      offset =
712
0
        dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep,
713
0
                            hf_fldb_vldbentry_siteowner, &siteowner);
714
0
        col_append_fstr (pinfo->cinfo, COL_INFO,
715
0
                         " SiteOwner - %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
716
0
                         siteowner.data1, siteowner.data2, siteowner.data3,
717
0
                         siteowner.data4[0], siteowner.data4[1],
718
0
                         siteowner.data4[2], siteowner.data4[3],
719
0
                         siteowner.data4[4], siteowner.data4[5],
720
0
                         siteowner.data4[6], siteowner.data4[7]);
721
0
    }
722
723
/*                afsUUID         siteObjID[MAXNSERVERS]; */
724
0
  for (i = 0; i < MAXNSERVERS; i++)
725
0
    {
726
0
      offset =
727
0
        dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep,
728
0
                            hf_fldb_vldbentry_siteobjid, &siteobjid);
729
0
        col_append_fstr (pinfo->cinfo, COL_INFO,
730
0
                         " SiteObjID - %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
731
0
                         siteobjid.data1, siteobjid.data2, siteobjid.data3,
732
0
                         siteobjid.data4[0], siteobjid.data4[1],
733
0
                         siteobjid.data4[2], siteobjid.data4[3],
734
0
                         siteobjid.data4[4], siteobjid.data4[5],
735
0
                         siteobjid.data4[6], siteobjid.data4[7]);
736
0
    }
737
738
  /* afsHyper        VolIDs[MAXVOLTYPES]; */
739
  /* XXX for these hypers, I will skip trying to use non portable uint64_t, and just read both, and use only low.
740
     never seen a case of a volid going anywhere the overflow of the 32 low; */
741
0
  for (i = 0; i < MAXVOLTYPES; i++)
742
0
    {
743
0
      offset =
744
0
        dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
745
0
                            hf_fldb_vldbentry_volids_high, &volids_high);
746
0
      offset =
747
0
        dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
748
0
                            hf_fldb_vldbentry_volids_low, &volids_low);
749
0
        col_append_fstr (pinfo->cinfo, COL_INFO, " VolIDs%d:%u", i,
750
0
                         volids_low);
751
0
    }
752
753
  /* unsigned32      VolTypes[MAXVOLTYPES]; */
754
0
  for (i = 0; i < MAXVOLTYPES; i++)
755
0
    {
756
0
      offset =
757
0
        dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
758
0
                            hf_fldb_vldbentry_voltypes, &voltypes);
759
0
      if (voltypes)
760
0
        {
761
0
            col_append_fstr (pinfo->cinfo, COL_INFO, " VolTypes:%d:%u", i,
762
0
                             voltypes);
763
0
        }
764
0
    }
765
766
  /* afsHyper        cloneId;         Used during cloning  */
767
0
  offset =
768
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
769
0
                        hf_fldb_vldbentry_cloneid_high, &cloneid_high);
770
0
  offset =
771
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
772
0
                        hf_fldb_vldbentry_cloneid_low, &cloneid_low);
773
0
  if (cloneid_low)
774
0
    {
775
0
        col_append_fstr (pinfo->cinfo, COL_INFO, " CloneId:%u", cloneid_low);
776
0
    }
777
778
  /*  unsigned32      flags;           General flags  */
779
0
  offset = dissect_afsflags (tvb, offset, pinfo, tree, di, drep);
780
781
  /* unsigned32      maxTotalLatency; */
782
0
  offset =
783
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
784
0
                        hf_fldb_vldbentry_maxtotallatency, &maxtotallatency);
785
0
    col_append_fstr (pinfo->cinfo, COL_INFO, " MaxTotLat:%u",
786
0
                     maxtotallatency);
787
788
  /* unsigned32      hardMaxTotalLatency; */
789
0
  offset =
790
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
791
0
                        hf_fldb_vldbentry_hardmaxtotallatency,
792
0
                        &hardmaxtotallatency);
793
0
    col_append_fstr (pinfo->cinfo, COL_INFO, " HardMaxTotLat:%u",
794
0
                     hardmaxtotallatency);
795
796
  /* unsigned32      minimumPounceDally; */
797
0
  offset =
798
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
799
0
                        hf_fldb_vldbentry_minimumpouncedally,
800
0
                        &minimumpouncedally);
801
0
    col_append_fstr (pinfo->cinfo, COL_INFO, " minPounceDally:%u",
802
0
                     minimumpouncedally);
803
804
  /* unsigned32      defaultMaxReplicaLatency; */
805
0
  offset =
806
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
807
0
                        hf_fldb_vldbentry_defaultmaxreplicalatency,
808
0
                        &defaultmaxreplicalatency);
809
0
    col_append_fstr (pinfo->cinfo, COL_INFO, " defaultMaxReplicaLatency:%u",
810
0
                     defaultmaxreplicalatency);
811
812
  /* unsigned32      reclaimDally; */
813
0
  offset =
814
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
815
0
                        hf_fldb_vldbentry_reclaimdally, &reclaimdally);
816
0
    col_append_fstr (pinfo->cinfo, COL_INFO, " reclaimDally:%u",
817
0
                     reclaimdally);
818
819
  /*   unsigned32      WhenLocked; */
820
0
  offset =
821
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
822
0
                        hf_fldb_vldbentry_whenlocked, &whenlocked);
823
0
    col_append_fstr (pinfo->cinfo, COL_INFO, " WhenLocked:%u", whenlocked);
824
825
  /*                unsigned32      spare1; */
826
0
  offset =
827
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
828
0
                        hf_fldb_vldbentry_spare1, &spare1);
829
0
    col_append_fstr (pinfo->cinfo, COL_INFO, " spare1:%u", spare1);
830
831
  /*                unsigned32      spare2; */
832
0
  offset =
833
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
834
0
                        hf_fldb_vldbentry_spare2, &spare2);
835
0
    col_append_fstr (pinfo->cinfo, COL_INFO, " spare2:%u", spare2);
836
837
  /*                unsigned32      spare3; */
838
0
  offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
839
0
                        hf_fldb_vldbentry_spare3, &spare3);
840
0
    col_append_fstr (pinfo->cinfo, COL_INFO, " spare3:%u", spare3);
841
842
  /*                unsigned32      spare4; */
843
0
  offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
844
0
                        hf_fldb_vldbentry_spare4, &spare4);
845
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " spare4:%u", spare4);
846
847
848
  /* byte            LockerName[MAXLOCKNAMELEN]; */
849
0
  proto_tree_add_item_ret_string(tree, hf_fldb_vldbentry_lockername, tvb, offset,
850
0
                       MAXLOCKNAMELEN, ENC_ASCII|ENC_NA, pinfo->pool, &lockername);
851
0
  offset += MAXLOCKNAMELEN;     /* some reason this 114 seems to be incorrect... cutting 4 short to compensate.... */
852
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " LockerName: %s", lockername);
853
854
  /*     byte            charSpares[50]; */
855
0
  proto_tree_add_item_ret_string(tree, hf_fldb_vldbentry_charspares, tvb, offset, 50,
856
0
                       ENC_ASCII|ENC_NA, pinfo->pool, &charspares);
857
0
  offset += 50;                 /* some reason this 114 seems to be incorrect... cutting 4 short to compensate.... */
858
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " charSpares:%s", charspares);
859
860
0
  proto_item_set_len (item, offset - old_offset);
861
862
0
  return offset;
863
0
}
864
865
866
static unsigned
867
fldb_dissect_getcellinfo_resp (tvbuff_t *tvb, unsigned offset,
868
                               packet_info *pinfo, proto_tree *tree,
869
                               dcerpc_info *di, uint8_t *drep)
870
0
{
871
0
  if (di->conformant_run)
872
0
    {
873
0
      return offset;
874
0
    }
875
876
/* [out] vlconf_cell *MyCell */
877
0
  offset = dissect_vlconf_cell (tvb, offset, pinfo, tree, di, drep);
878
879
0
  return offset;
880
0
}
881
882
883
static unsigned
884
fldb_dissect_getentrybyname_rqst (tvbuff_t *tvb, unsigned offset,
885
                                  packet_info *pinfo, proto_tree *tree,
886
                                  dcerpc_info *di, uint8_t *drep)
887
0
{
888
0
  if (di->conformant_run)
889
0
    {
890
0
      return offset;
891
0
    }
892
893
  /*
894
   *     [in] volumeName volName,
895
   */
896
897
0
  offset += 4;
898
0
  offset = dissect_afsNameString_t (tvb, offset, pinfo, tree, di, drep);
899
900
0
  return offset;
901
0
}
902
903
904
static unsigned
905
fldb_dissect_getentrybyname_resp (tvbuff_t *tvb, unsigned offset,
906
                                  packet_info *pinfo, proto_tree *tree,
907
                                  dcerpc_info *di, uint8_t *drep)
908
0
{
909
  /*
910
     [out] vldbentry *entry
911
   */
912
0
  if (di->conformant_run)
913
0
    {
914
0
      return offset;
915
0
    }
916
917
0
  offset = dissect_vldbentry (tvb, offset, pinfo, tree, di, drep);
918
919
0
  MACRO_ST_CLEAR ("GetEntryByName reply");
920
0
  return offset;
921
0
}
922
923
924
static unsigned
925
fldb_dissect_getsiteinfo_rqst (tvbuff_t *tvb, unsigned offset,
926
                               packet_info *pinfo, proto_tree *tree,
927
                               dcerpc_info *di, uint8_t *drep)
928
0
{
929
0
  if (di->conformant_run)
930
0
    {
931
0
      return offset;
932
0
    }
933
934
  /*
935
   *   [in] afsNetAddr *OldAddr,
936
   *
937
   */
938
939
0
  offset = dissect_afsnetaddr (tvb, offset, pinfo, tree, di, drep);
940
941
  /*
942
   *
943
   * [in] afsNetAddr *OldAddr,
944
   *         unsigned16 type;
945
   unsigned8 data[14];
946
   */
947
948
0
  return offset;
949
0
}
950
951
952
static unsigned
953
fldb_dissect_getsiteinfo_resp (tvbuff_t *tvb, unsigned offset,
954
                               packet_info *pinfo, proto_tree *tree,
955
                               dcerpc_info *di, uint8_t *drep)
956
0
{
957
0
  const uint8_t *namestring;
958
0
  e_guid_t      owner, objid;
959
0
  uint32_t      creationquota, creationuses, deletedflag;
960
0
  uint32_t      spare2, spare3, spare4, spare5;
961
962
0
  if (di->conformant_run)
963
0
    {
964
0
      return offset;
965
0
    }
966
967
  /*
968
     [out] siteDessiib *FullSiteInfo
969
     afsNetAddr Addr[ADDRSINSITE];
970
     byte KerbPrin[MAXKPRINCIPALLEN] 64;
971
     afsUUID Owner;
972
     afsUUID ObjID;
973
     unsigned32 CreationQuota;
974
     unsigned32 CreationUses;
975
     unsigned32 DeletedFlag;
976
     unsigned32 spare2;
977
     unsigned32 spare3;
978
     unsigned32 spare4;
979
     unsigned32 spare5;
980
   */
981
982
0
  offset = dissect_afsnetaddr (tvb, offset, pinfo, tree, di, drep);
983
984
  /* handle byte KerbPrin[64]. */
985
986
0
  offset += 48;                 /* part of kerbprin before name... */
987
988
0
  proto_tree_add_item_ret_string(tree, hf_fldb_namestring, tvb, offset, 64, ENC_ASCII|ENC_NA, pinfo->pool, &namestring);
989
0
  offset += 64;
990
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " %s", namestring);
991
992
0
  offset = dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep, hf_fldb_uuid_owner, &owner);
993
0
  col_append_fstr (pinfo->cinfo, COL_INFO,
994
0
                     " Owner - %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
995
0
                     owner.data1, owner.data2, owner.data3, owner.data4[0],
996
0
                     owner.data4[1], owner.data4[2], owner.data4[3],
997
0
                     owner.data4[4], owner.data4[5], owner.data4[6],
998
0
                     owner.data4[7]);
999
1000
0
  offset =
1001
0
    dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep, hf_fldb_uuid_objid,
1002
0
                        &objid);
1003
0
  col_append_fstr (pinfo->cinfo, COL_INFO,
1004
0
                     " ObjID - %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
1005
0
                     objid.data1, objid.data2, objid.data3, objid.data4[0],
1006
0
                     objid.data4[1], objid.data4[2], objid.data4[3],
1007
0
                     objid.data4[4], objid.data4[5], objid.data4[6],
1008
0
                     objid.data4[7]);
1009
1010
0
  offset =
1011
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fldb_creationquota,
1012
0
                        &creationquota);
1013
0
  offset =
1014
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fldb_creationuses,
1015
0
                        &creationuses);
1016
0
  offset =
1017
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fldb_deletedflag,
1018
0
                        &deletedflag);
1019
0
  offset =
1020
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fldb_spare2,
1021
0
                        &spare2);
1022
0
  offset =
1023
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fldb_spare3,
1024
0
                        &spare3);
1025
0
  offset =
1026
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fldb_spare4,
1027
0
                        &spare4);
1028
0
  offset =
1029
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fldb_spare5,
1030
0
                        &spare5);
1031
1032
0
  col_append_fstr (pinfo->cinfo, COL_INFO,
1033
0
                     " CreationQuota:%u CreationUses:%u DeletedFlag:%u Spare2:%u Spare3:%u Spare4:%u Spare5:%u",
1034
0
                     creationquota, creationuses, deletedflag, spare2, spare3,
1035
0
                     spare4, spare5);
1036
1037
0
  MACRO_ST_CLEAR ("GetSiteInfo reply");
1038
1039
0
  return offset;
1040
0
}
1041
1042
1043
static unsigned
1044
fldb_dissect_listentry_rqst (tvbuff_t *tvb, unsigned offset,
1045
                             packet_info *pinfo, proto_tree *tree,
1046
                             dcerpc_info *di, uint8_t *drep)
1047
0
{
1048
0
  uint32_t var1, previous_index;
1049
1050
0
  if (di->conformant_run)
1051
0
    {
1052
0
      return offset;
1053
0
    }
1054
1055
  /*
1056
   *               [in] unsigned32 previous_index,
1057
   *               [out] unsigned32 *count,
1058
   *               [out] unsigned32 *next_index,
1059
   *               [out] vldbentry *entry
1060
   */
1061
1062
0
  offset =
1063
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1064
0
                        hf_fldb_listentry_rqst_previous_index,
1065
0
                        &previous_index);
1066
0
  offset =
1067
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1068
0
                        hf_fldb_listentry_rqst_var1, &var1);
1069
1070
1071
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " :PrevIndex: %u",
1072
0
                     previous_index);
1073
1074
0
  return offset;
1075
0
}
1076
1077
1078
static unsigned
1079
fldb_dissect_listentry_resp (tvbuff_t *tvb, unsigned offset,
1080
                             packet_info *pinfo, proto_tree *tree,
1081
                             dcerpc_info *di, uint8_t *drep)
1082
0
{
1083
0
  uint32_t count, next_index;
1084
1085
0
  if (di->conformant_run)
1086
0
    {
1087
0
      return offset;
1088
0
    }
1089
1090
  /*
1091
   *               [out] unsigned32 *count,
1092
   *               [out] unsigned32 *next_index,
1093
   *               [out] vldbentry *entry
1094
   */
1095
1096
0
  offset =
1097
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1098
0
                        hf_fldb_listentry_resp_count, &count);
1099
0
  offset =
1100
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1101
0
                        hf_fldb_listentry_resp_next_index, &next_index);
1102
0
  offset = dissect_vldbentry (tvb, offset, pinfo, tree, di, drep);
1103
0
  return offset;
1104
0
}
1105
1106
1107
static unsigned
1108
fldb_dissect_setlock_rqst (tvbuff_t *tvb, unsigned offset,
1109
                           packet_info *pinfo, proto_tree *tree,
1110
                           dcerpc_info *di, uint8_t *drep)
1111
0
{
1112
0
  uint32_t fsid_high, fsid_low, voltype, voloper;
1113
1114
0
  if (di->conformant_run)
1115
0
    {
1116
0
      return offset;
1117
0
    }
1118
1119
0
  offset =
1120
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1121
0
                        hf_fldb_setlock_rqst_fsid_high, &fsid_high);
1122
0
  offset =
1123
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1124
0
                        hf_fldb_setlock_rqst_fsid_low, &fsid_low);
1125
0
  offset =
1126
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1127
0
                        hf_fldb_setlock_rqst_voltype, &voltype);
1128
0
  offset =
1129
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1130
0
                        hf_fldb_setlock_rqst_voloper, &voloper);
1131
1132
0
  col_append_fstr (pinfo->cinfo, COL_INFO,
1133
0
                     " :FSID:%u/%u VolType:0x%x VolOper:%u", fsid_high,
1134
0
                     fsid_low, voltype, voloper);
1135
1136
0
  return offset;
1137
0
}
1138
1139
1140
static unsigned
1141
fldb_dissect_setlock_resp (tvbuff_t *tvb, unsigned offset,
1142
                           packet_info *pinfo, proto_tree *tree,
1143
                           dcerpc_info *di, uint8_t *drep)
1144
0
{
1145
0
  if (di->conformant_run)
1146
0
    {
1147
0
      return offset;
1148
0
    }
1149
1150
0
  MACRO_ST_CLEAR ("SetLock reply");
1151
1152
0
  return offset;
1153
0
}
1154
1155
1156
static unsigned
1157
fldb_dissect_deleteentry_resp (tvbuff_t *tvb, unsigned offset,
1158
                               packet_info *pinfo, proto_tree *tree,
1159
                               dcerpc_info *di, uint8_t *drep)
1160
0
{
1161
0
  if (di->conformant_run)
1162
0
    {
1163
0
      return offset;
1164
0
    }
1165
1166
0
  MACRO_ST_CLEAR ("DeleteEntry reply");
1167
1168
0
  return offset;
1169
0
}
1170
1171
1172
static unsigned
1173
fldb_dissect_deleteentry_rqst (tvbuff_t *tvb, unsigned offset,
1174
                               packet_info *pinfo, proto_tree *tree,
1175
                               dcerpc_info *di, uint8_t *drep)
1176
0
{
1177
/*
1178
                [in] afsHyper *Volid,
1179
                [in] unsigned32 voltype
1180
*/
1181
1182
0
  uint32_t fsid_high, fsid_low, voltype, voloper;
1183
1184
0
  if (di->conformant_run)
1185
0
    {
1186
0
      return offset;
1187
0
    }
1188
1189
0
  offset =
1190
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1191
0
                        hf_fldb_deleteentry_rqst_fsid_high, &fsid_high);
1192
0
  offset =
1193
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1194
0
                        hf_fldb_deleteentry_rqst_fsid_low, &fsid_low);
1195
0
  offset =
1196
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1197
0
                        hf_fldb_deleteentry_rqst_voltype, &voltype);
1198
0
  offset =
1199
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1200
0
                        hf_fldb_deleteentry_rqst_voloper, &voloper);
1201
1202
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " :FSID:%u/%u", fsid_high,
1203
0
                     fsid_low);
1204
1205
1206
0
  return offset;
1207
0
}
1208
1209
1210
static unsigned
1211
fldb_dissect_createentry_resp (tvbuff_t *tvb, unsigned offset,
1212
                               packet_info *pinfo, proto_tree *tree,
1213
                               dcerpc_info *di, uint8_t *drep)
1214
0
{
1215
0
  if (di->conformant_run)
1216
0
    {
1217
0
      return offset;
1218
0
    }
1219
1220
0
  MACRO_ST_CLEAR ("CreateEntry reply");
1221
1222
0
  return offset;
1223
0
}
1224
1225
1226
static unsigned
1227
fldb_dissect_createentry_rqst (tvbuff_t *tvb, unsigned offset,
1228
                               packet_info *pinfo, proto_tree *tree,
1229
                               dcerpc_info *di, uint8_t *drep)
1230
0
{
1231
0
  if (di->conformant_run)
1232
0
    {
1233
0
      return offset;
1234
0
    }
1235
1236
0
  offset = dissect_vldbentry (tvb, offset, pinfo, tree, di, drep);
1237
0
  return offset;
1238
0
}
1239
1240
1241
static unsigned
1242
fldb_dissect_getentrybyid_rqst (tvbuff_t *tvb, unsigned offset,
1243
                                packet_info *pinfo, proto_tree *tree,
1244
                                dcerpc_info *di, uint8_t *drep)
1245
0
{
1246
0
  uint32_t volid_high, volid_low, voltype;
1247
1248
0
  if (di->conformant_run)
1249
0
    {
1250
0
      return offset;
1251
0
    }
1252
1253
/*
1254
                [in] afsHyper *Volid,
1255
                [in] unsigned32 voltype,
1256
*/
1257
1258
0
  offset =
1259
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fldb_volid_high,
1260
0
                        &volid_high);
1261
0
  offset =
1262
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fldb_volid_low,
1263
0
                        &volid_low);
1264
1265
0
  offset =
1266
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fldb_voltype,
1267
0
                        &voltype);
1268
1269
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " VolID:%u/%u VolType:0x%x",
1270
0
                     volid_high, volid_low, voltype);
1271
1272
0
  return offset;
1273
0
}
1274
1275
1276
static unsigned
1277
fldb_dissect_getnewvolumeids_rqst (tvbuff_t *tvb, unsigned offset,
1278
                                   packet_info *pinfo, proto_tree *tree,
1279
                                   dcerpc_info *di, uint8_t *drep)
1280
0
{
1281
/*              [in] unsigned32 numWanted,
1282
                [in] afsNetAddr *ServerAddr,
1283
*/
1284
0
  uint32_t numwanted;
1285
1286
0
  if (di->conformant_run)
1287
0
    {
1288
0
      return offset;
1289
0
    }
1290
1291
0
  offset =
1292
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fldb_numwanted,
1293
0
                        &numwanted);
1294
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " numWanted:%u", numwanted);
1295
1296
0
  offset = dissect_afsnetaddr (tvb, offset, pinfo, tree, di, drep);
1297
1298
0
  return offset;
1299
0
}
1300
1301
1302
static unsigned
1303
fldb_dissect_getentrybyid_resp (tvbuff_t *tvb, unsigned offset,
1304
                                packet_info *pinfo, proto_tree *tree,
1305
                                dcerpc_info *di, uint8_t *drep)
1306
0
{
1307
0
  if (di->conformant_run)
1308
0
    {
1309
0
      return offset;
1310
0
    }
1311
1312
0
  offset = dissect_vldbentry (tvb, offset, pinfo, tree, di, drep);
1313
0
  return offset;
1314
0
}
1315
1316
1317
static unsigned
1318
fldb_dissect_releaselock_resp (tvbuff_t *tvb, unsigned offset,
1319
                               packet_info *pinfo, proto_tree *tree,
1320
                               dcerpc_info *di, uint8_t *drep)
1321
0
{
1322
0
  if (di->conformant_run)
1323
0
    {
1324
0
      return offset;
1325
0
    }
1326
1327
0
  MACRO_ST_CLEAR ("ReleaseLock reply");
1328
1329
1330
0
  return offset;
1331
0
}
1332
1333
1334
static unsigned
1335
fldb_dissect_releaselock_rqst (tvbuff_t *tvb, unsigned offset,
1336
                               packet_info *pinfo, proto_tree *tree,
1337
                               dcerpc_info *di, uint8_t *drep)
1338
0
{
1339
0
  uint32_t fsid_high, fsid_low, voltype, voloper;
1340
1341
0
  if (di->conformant_run)
1342
0
    {
1343
0
      return offset;
1344
0
    }
1345
1346
0
  offset =
1347
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1348
0
                        hf_fldb_releaselock_rqst_fsid_high, &fsid_high);
1349
0
  offset =
1350
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1351
0
                        hf_fldb_releaselock_rqst_fsid_low, &fsid_low);
1352
0
  offset =
1353
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1354
0
                        hf_fldb_releaselock_rqst_voltype, &voltype);
1355
0
  offset =
1356
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1357
0
                        hf_fldb_releaselock_rqst_voloper, &voloper);
1358
1359
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " :FSID:%u/%u", fsid_high,
1360
0
                     fsid_low);
1361
1362
0
  return offset;
1363
1364
0
}
1365
1366
1367
static unsigned
1368
fldb_dissect_replaceentry_resp (tvbuff_t *tvb, unsigned offset,
1369
                                packet_info *pinfo, proto_tree *tree,
1370
                                dcerpc_info *di, uint8_t *drep)
1371
0
{
1372
0
  if (di->conformant_run)
1373
0
    {
1374
0
      return offset;
1375
0
    }
1376
1377
0
  MACRO_ST_CLEAR ("ReplaceEntry reply");
1378
1379
0
  return offset;
1380
0
}
1381
1382
1383
static unsigned
1384
fldb_dissect_getnextserversbyid_resp (tvbuff_t *tvb, unsigned offset,
1385
                                      packet_info *pinfo, proto_tree *tree,
1386
                                      dcerpc_info *di, uint8_t *drep)
1387
0
{
1388
0
  uint32_t nextstartp, flagsp;
1389
1390
0
  if (di->conformant_run)
1391
0
    {
1392
0
      return offset;
1393
0
    }
1394
1395
  /*    [out] unsigned32 *nextStartP, */
1396
/* XXX */
1397
0
  offset =
1398
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fldb_nextstartp,
1399
0
                        &nextstartp);
1400
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " nextStartP:%u", nextstartp);
1401
1402
  /*  [out] vldbentry *entry, */
1403
0
  offset = dissect_vldbentry (tvb, offset, pinfo, tree, di, drep);
1404
1405
1406
  /* [out] unsigned32 *flagsP */
1407
1408
0
  offset =
1409
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_fldb_flagsp,
1410
0
                        &flagsp);
1411
1412
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " flagsp:%u", flagsp);
1413
1414
0
  return offset;
1415
0
}
1416
1417
1418
static unsigned
1419
fldb_dissect_replaceentry_rqst (tvbuff_t *tvb, unsigned offset,
1420
                                packet_info *pinfo, proto_tree *tree,
1421
                                dcerpc_info *di, uint8_t *drep)
1422
0
{
1423
0
  uint32_t fsid_high, fsid_low, voltype;
1424
1425
0
  if (di->conformant_run)
1426
0
    {
1427
0
      return offset;
1428
0
    }
1429
1430
  /*
1431
   * [in] afsHyper *Volid,
1432
   * [in] unsigned32 voltype,
1433
   * [in] vldbentry *newentry,
1434
   * [in] unsigned32 ReleaseType
1435
   */
1436
1437
0
  offset =
1438
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1439
0
                        hf_fldb_replaceentry_rqst_fsid_high, &fsid_high);
1440
0
  offset =
1441
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1442
0
                        hf_fldb_replaceentry_rqst_fsid_low, &fsid_low);
1443
0
  offset =
1444
0
    dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep,
1445
0
                        hf_fldb_replaceentry_rqst_voltype, &voltype);
1446
1447
0
  col_append_fstr (pinfo->cinfo, COL_INFO, " FSID:%u/%u Name:", fsid_high,
1448
0
                   fsid_low);
1449
1450
0
  offset = dissect_vldbentry (tvb, offset, pinfo, tree, di, drep);
1451
1452
0
  return offset;
1453
1454
0
}
1455
1456
1457
static const dcerpc_sub_dissector fldb_dissectors[] = {
1458
  {0, "GetEntryByID", fldb_dissect_getentrybyid_rqst,
1459
   fldb_dissect_getentrybyid_resp},
1460
  {1, "GetEntryByName", fldb_dissect_getentrybyname_rqst,
1461
   fldb_dissect_getentrybyname_resp},
1462
  {2, "Probe", NULL, NULL},
1463
  {3, "GetCellInfo", NULL, fldb_dissect_getcellinfo_resp},
1464
  {4, "GetNextServersByID", NULL, fldb_dissect_getnextserversbyid_resp},
1465
  {5, "GetNextServersByName", NULL, NULL},
1466
  {6, "GetSiteInfo", fldb_dissect_getsiteinfo_rqst,
1467
   fldb_dissect_getsiteinfo_resp},
1468
  {7, "GetCEntryByID", NULL, NULL},
1469
  {8, "GetCEntryByName", NULL, NULL},
1470
  {9, "GetCNextServersByID", NULL, NULL},
1471
  {10, "GetCNextServersByName", NULL, NULL},
1472
  {11, "ExpandSiteCookie", NULL, NULL},
1473
  {12, "GetServerInterfaces", NULL, NULL},
1474
  {13, "CreateEntry", fldb_dissect_createentry_rqst,
1475
   fldb_dissect_createentry_resp},
1476
  {14, "DeleteEntry", fldb_dissect_deleteentry_rqst,
1477
   fldb_dissect_deleteentry_resp},
1478
  {15, "GetNewVolumeId", NULL, NULL},
1479
  {16, "ReplaceEntry", fldb_dissect_replaceentry_rqst,
1480
   fldb_dissect_replaceentry_resp},
1481
  {17, "SetLock", fldb_dissect_setlock_rqst, fldb_dissect_setlock_resp},
1482
  {18, "ReleaseLock", fldb_dissect_releaselock_rqst,
1483
   fldb_dissect_releaselock_resp},
1484
  {19, "ListEntry", fldb_dissect_listentry_rqst, fldb_dissect_listentry_resp},
1485
  {20, "ListByAttributes", NULL, NULL},
1486
  {21, "GetStats", NULL, NULL},
1487
  {22, "AddAddress", NULL, NULL},
1488
  {23, "RemoveAddress", NULL, NULL},
1489
  {24, "ChangeAddress", NULL, NULL},
1490
  {25, "GenerateSites", NULL, NULL},
1491
  {26, "GetNewVolumeIds", fldb_dissect_getnewvolumeids_rqst, NULL},
1492
  {27, "CreateServer", NULL, NULL},
1493
  {28, "AlterServer", NULL, NULL},
1494
  {0, NULL, NULL, NULL},
1495
};
1496
1497
1498
void
1499
proto_register_fldb (void)
1500
16
{
1501
16
  static hf_register_info hf[] = {
1502
16
    {&hf_fldb_releaselock_rqst_fsid_low,
1503
16
     {"FSID releaselock Low", "fldb.releaselock_rqst_fsid_low", FT_UINT32,
1504
16
      BASE_DEC, NULL, 0x0, NULL, HFILL}},
1505
16
    {&hf_fldb_releaselock_rqst_voltype,
1506
16
     {"voltype", "fldb.releaselock_rqst_voltype", FT_UINT32, BASE_DEC,
1507
16
      NULL, 0x0, NULL, HFILL}},
1508
16
    {&hf_fldb_releaselock_rqst_voloper,
1509
16
     {"voloper", "fldb.releaselock_rqst_voloper", FT_UINT32, BASE_DEC,
1510
16
      NULL, 0x0, NULL, HFILL}},
1511
16
    {&hf_fldb_setlock_rqst_fsid_high,
1512
16
     {"FSID setlock Hi", "fldb.setlock_rqst_fsid_high", FT_UINT32,
1513
16
      BASE_DEC, NULL, 0x0, NULL, HFILL}},
1514
16
    {&hf_fldb_setlock_rqst_fsid_low,
1515
16
     {"FSID setlock Low", "fldb.setlock_rqst_fsid_low", FT_UINT32,
1516
16
      BASE_DEC, NULL, 0x0, NULL, HFILL}},
1517
16
    {&hf_fldb_setlock_rqst_voltype,
1518
16
     {"voltype", "fldb.setlock_rqst_voltype", FT_UINT32, BASE_DEC, NULL,
1519
16
      0x0, NULL, HFILL}},
1520
16
    {&hf_fldb_setlock_rqst_voloper,
1521
16
     {"voloper", "fldb.setlock_rqst_voloper", FT_UINT32, BASE_DEC, NULL,
1522
16
      0x0, NULL, HFILL}},
1523
#if 0
1524
    {&hf_fldb_setlock_resp_st,
1525
     {"Error", "fldb.setlock_resp_st", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1526
      HFILL}},
1527
    {&hf_fldb_setlock_resp_st2,
1528
     {"Error", "fldb.setlock_resp_st2", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1529
      HFILL}},
1530
#endif
1531
16
    {&hf_fldb_listentry_rqst_previous_index,
1532
16
     {"Previous Index", "fldb.listentry_rqst_previous_index", FT_UINT32,
1533
16
      BASE_DEC, NULL, 0x0, NULL, HFILL}},
1534
16
    {&hf_fldb_listentry_rqst_var1,
1535
16
     {"Var 1", "fldb.listentry_rqst_var1", FT_UINT32, BASE_DEC, NULL, 0x0,
1536
16
      NULL, HFILL}},
1537
16
    {&hf_fldb_listentry_resp_count,
1538
16
     {"Count", "fldb.listentry_resp_count", FT_UINT32, BASE_DEC, NULL, 0x0,
1539
16
      NULL, HFILL}},
1540
16
    {&hf_fldb_listentry_resp_next_index,
1541
16
     {"Next Index", "fldb.listentry_resp_next_index", FT_UINT32, BASE_DEC,
1542
16
      NULL, 0x0, NULL, HFILL}},
1543
#if 0
1544
    {&hf_fldb_listentry_resp_key_size,
1545
     {"Key Size", "fldb.listentry_resp_key_size", FT_UINT32, BASE_DEC,
1546
      NULL, 0x0, NULL, HFILL}},
1547
    {&hf_fldb_listentry_resp_key_t,
1548
     {"Volume", "fldb.listentry_resp_key_t", FT_STRING, BASE_NONE, NULL,
1549
      0x0, NULL, HFILL}},
1550
    {&hf_fldb_listentry_resp_voltype,
1551
     {"VolType", "fldb.listentry_resp_voltype", FT_UINT32, BASE_HEX, NULL,
1552
      0x0, NULL, HFILL}},
1553
    {&hf_fldb_listentry_resp_key_size2,
1554
     {"key_size2", "fldb.listentry_resp_key_size2", FT_UINT32, BASE_DEC,
1555
      NULL, 0x0, NULL, HFILL}},
1556
    {&hf_fldb_listentry_resp_key_t2,
1557
     {"Server", "fldb.listentry_resp_key_t2", FT_STRING, BASE_NONE, NULL,
1558
      0x0, NULL, HFILL}},
1559
    {&hf_fldb_createentry_rqst_key_t,
1560
     {"Volume", "fldb.createentry_rqst_key_t", FT_STRING, BASE_NONE, NULL,
1561
      0x0, NULL, HFILL}},
1562
    {&hf_fldb_createentry_rqst_key_size,
1563
     {"Volume Size", "fldb.createentry_rqst_key_size", FT_UINT32, BASE_DEC,
1564
      NULL, 0x0, NULL, HFILL}},
1565
#endif
1566
16
    {&hf_fldb_deleteentry_rqst_fsid_high,
1567
16
     {"FSID deleteentry Hi", "fldb.deleteentry_rqst_fsid_high", FT_UINT32,
1568
16
      BASE_DEC, NULL, 0x0, NULL, HFILL}},
1569
16
    {&hf_fldb_deleteentry_rqst_fsid_low,
1570
16
     {"FSID deleteentry Low", "fldb.deleteentry_rqst_fsid_low", FT_UINT32,
1571
16
      BASE_DEC, NULL, 0x0, NULL, HFILL}},
1572
16
    {&hf_fldb_deleteentry_rqst_voltype,
1573
16
     {"voltype", "fldb.deleteentry_rqst_voltype", FT_UINT32, BASE_DEC,
1574
16
      NULL, 0x0, NULL, HFILL}},
1575
16
    {&hf_fldb_deleteentry_rqst_voloper,
1576
16
     {"voloper", "fldb.deleteentry_rqst_voloper", FT_UINT32, BASE_DEC,
1577
16
      NULL, 0x0, NULL, HFILL}},
1578
#if 0
1579
    {&hf_fldb_getentrybyid_rqst_fsid_high,
1580
     {"FSID deleteentry Hi", "fldb.getentrybyid_rqst_fsid_high", FT_UINT32,
1581
      BASE_DEC, NULL, 0x0, NULL, HFILL}},
1582
    {&hf_fldb_getentrybyid_rqst_fsid_low,
1583
     {"FSID getentrybyid Low", "fldb.getentrybyid_rqst_fsid_low",
1584
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1585
    {&hf_fldb_getentrybyid_rqst_voltype,
1586
     {"voltype", "fldb.getentrybyid_rqst_voltype", FT_UINT32, BASE_DEC,
1587
      NULL, 0x0, NULL, HFILL}},
1588
    {&hf_fldb_getentrybyid_rqst_voloper,
1589
     {"voloper", "fldb.getentrybyid_rqst_voloper", FT_UINT32, BASE_DEC,
1590
      NULL, 0x0, NULL, HFILL}},
1591
#endif
1592
16
    {&hf_fldb_replaceentry_rqst_fsid_high,
1593
16
     {"FSID replaceentry Hi", "fldb.replaceentry_rqst_fsid_high",
1594
16
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1595
16
    {&hf_fldb_replaceentry_rqst_fsid_low,
1596
16
     {"FSID  replaceentry Low", "fldb.replaceentry_rqst_fsid_low",
1597
16
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1598
16
    {&hf_fldb_replaceentry_rqst_voltype,
1599
16
     {"voltype", "fldb.replaceentry_rqst_voltype", FT_UINT32, BASE_DEC,
1600
16
      NULL, 0x0, NULL, HFILL}},
1601
#if 0
1602
    {&hf_fldb_replaceentry_rqst_key_t,
1603
     {"Key", "fldb.replaceentry_rqst_key_t", FT_STRING, BASE_NONE, NULL,
1604
      0x0, NULL, HFILL}},
1605
    {&hf_fldb_replaceentry_rqst_key_size,
1606
     {"Key Size", "fldb.replaceentry_rqst_key_size", FT_UINT32, BASE_DEC,
1607
      NULL, 0x0, NULL, HFILL}},
1608
    {&hf_fldb_replaceentry_resp_st,
1609
     {"Error", "fldb.replaceentry_resp_st", FT_UINT32, BASE_DEC, NULL, 0x0,
1610
      NULL, HFILL}},
1611
    {&hf_fldb_replaceentry_resp_st2,
1612
     {"Error", "fldb.replaceentry_resp_st2", FT_UINT32, BASE_DEC, NULL,
1613
      0x0, NULL, HFILL}},
1614
    {&hf_fldb_getentrybyname_resp_volumetype,
1615
     {"fldb_getentrybyname_resp_volumetype",
1616
      "fldb.getentrybyname_resp_volumetype", FT_UINT32, BASE_DEC, NULL,
1617
      0x0, NULL, HFILL}},
1618
    {&hf_fldb_getentrybyname_resp_numservers,
1619
     {"fldb_getentrybyname_resp_numservers",
1620
      "fldb.getentrybyname_resp_numservers", FT_UINT32, BASE_DEC, NULL,
1621
      0x0, NULL, HFILL}},
1622
    {&hf_fldb_getentrybyname_resp_sitecookies,
1623
     {"fldb_getentrybyname_resp_sitecookies",
1624
      "fldb.getentrybyname_resp_sitecookies", FT_UINT32, BASE_DEC, NULL,
1625
      0x0, NULL, HFILL}},
1626
    {&hf_fldb_getentrybyname_resp_sitepartition,
1627
     {"fldb_getentrybyname_resp_sitepartition",
1628
      "fldb.getentrybyname_resp_sitepartition", FT_UINT32, BASE_DEC, NULL,
1629
      0x0, NULL, HFILL}},
1630
    {&hf_fldb_getentrybyname_resp_siteflags,
1631
     {"fldb_getentrybyname_resp_siteflags",
1632
      "fldb.getentrybyname_resp_siteflags", FT_UINT32, BASE_DEC, NULL, 0x0,
1633
      NULL, HFILL}},
1634
    {&hf_fldb_getentrybyname_resp_sitemaxreplat,
1635
     {"fldb_getentrybyname_resp_sitemaxreplat",
1636
      "fldb.getentrybyname_resp_sitemaxreplat", FT_UINT32, BASE_DEC, NULL,
1637
      0x0, NULL, HFILL}},
1638
    {&hf_fldb_getentrybyname_resp_volid_high,
1639
     {"fldb_getentrybyname_resp_volid_high",
1640
      "fldb.getentrybyname_resp_volid_high", FT_UINT32, BASE_DEC, NULL,
1641
      0x0, NULL, HFILL}},
1642
    {&hf_fldb_getentrybyname_resp_volid_low,
1643
     {"fldb_getentrybyname_resp_volid_low",
1644
      "fldb.getentrybyname_resp_volid_low", FT_UINT32, BASE_DEC, NULL, 0x0,
1645
      NULL, HFILL}},
1646
    {&hf_fldb_getentrybyname_resp_voltype,
1647
     {"fldb_getentrybyname_resp_voltype",
1648
      "fldb.getentrybyname_resp_voltype", FT_UINT32, BASE_DEC, NULL, 0x0,
1649
      NULL, HFILL}},
1650
    {&hf_fldb_getentrybyname_resp_cloneid_high,
1651
     {"fldb_getentrybyname_resp_cloneid_high",
1652
      "fldb.getentrybyname_resp_cloneid_high", FT_UINT32, BASE_DEC, NULL,
1653
      0x0, NULL, HFILL}},
1654
    {&hf_fldb_getentrybyname_resp_cloneid_low,
1655
     {"fldb_getentrybyname_resp_cloneid_low",
1656
      "fldb.getentrybyname_resp_cloneid_low", FT_UINT32, BASE_DEC, NULL,
1657
      0x0, NULL, HFILL}},
1658
    {&hf_fldb_getentrybyname_resp_flags,
1659
     {"fldb_getentrybyname_resp_flags",
1660
      "fldb.getentrybyname_resp_flags", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1661
      HFILL}},
1662
    {&hf_fldb_getentrybyname_resp_maxtotallat,
1663
     {"fldb_getentrybyname_resp_maxtotallat",
1664
      "fldb.getentrybyname_resp_maxtotallat", FT_UINT32, BASE_DEC, NULL,
1665
      0x0, NULL, HFILL}},
1666
    {&hf_fldb_getentrybyname_resp_hardmaxtotlat,
1667
     {"fldb_getentrybyname_resp_hardmaxtotlat",
1668
      "fldb.getentrybyname_resp_hardmaxtotlat", FT_UINT32, BASE_DEC, NULL,
1669
      0x0, NULL, HFILL}},
1670
    {&hf_fldb_getentrybyname_resp_minpouncedally,
1671
     {"fldb_getentrybyname_resp_minpouncedally",
1672
      "fldb.getentrybyname_resp_minpouncedally", FT_UINT32, BASE_DEC, NULL,
1673
      0x0, NULL, HFILL}},
1674
    {&hf_fldb_getentrybyname_resp_defaultmaxreplat,
1675
     {"fldb_getentrybyname_resp_defaultmaxreplat",
1676
      "fldb.getentrybyname_resp_defaultmaxreplat", FT_UINT32, BASE_DEC,
1677
      NULL, 0x0, NULL, HFILL}},
1678
    {&hf_fldb_getentrybyname_resp_reclaimdally,
1679
     {"fldb_getentrybyname_resp_reclaimdally",
1680
      "fldb.getentrybyname_resp_reclaimdally", FT_UINT32, BASE_DEC, NULL,
1681
      0x0, NULL, HFILL}},
1682
    {&hf_fldb_getentrybyname_resp_whenlocked,
1683
     {"fldb_getentrybyname_resp_whenlocked",
1684
      "fldb.getentrybyname_resp_whenlocked", FT_UINT32, BASE_DEC, NULL,
1685
      0x0, NULL, HFILL}},
1686
    {&hf_fldb_getentrybyname_resp_spare1,
1687
     {"fldb_getentrybyname_resp_spare1",
1688
      "fldb.getentrybyname_resp_spare1", FT_UINT32, BASE_DEC, NULL, 0x0,
1689
      NULL, HFILL}},
1690
    {&hf_fldb_getentrybyname_resp_spare2,
1691
     {"fldb_getentrybyname_resp_spare2",
1692
      "fldb.getentrybyname_resp_spare2", FT_UINT32, BASE_DEC, NULL, 0x0,
1693
      NULL, HFILL}},
1694
    {&hf_fldb_getentrybyname_resp_spare3,
1695
     {"fldb_getentrybyname_resp_spare3",
1696
      "fldb.getentrybyname_resp_spare3", FT_UINT32, BASE_DEC, NULL, 0x0,
1697
      NULL, HFILL}},
1698
    {&hf_fldb_getentrybyname_resp_spare4,
1699
     {"fldb_getentrybyname_resp_spare4",
1700
      "fldb.getentrybyname_resp_spare4", FT_UINT32, BASE_DEC, NULL, 0x0,
1701
      NULL, HFILL}},
1702
    {&hf_fldb_getentrybyname_resp_key_t,
1703
     {"fldb_getentrybyname_resp_key_t",
1704
      "fldb.getentrybyname_resp_key_t", FT_STRING, BASE_NONE, NULL, 0x0,
1705
      NULL, HFILL}},
1706
    {&hf_fldb_getentrybyname_resp_key_size,
1707
     {"fldb_getentrybyname_resp_key_size",
1708
      "fldb.getentrybyname_resp_key_size", FT_UINT32, BASE_DEC, NULL, 0x0,
1709
      NULL, HFILL}},
1710
    {&hf_fldb_getentrybyname_resp_test,
1711
     {"fldb_getentrybyname_resp_test", "fldb.getentrybyname_resp_test",
1712
      FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1713
#endif
1714
16
    {&hf_fldb_releaselock_rqst_fsid_high,
1715
16
     {"FSID releaselock Hi", "fldb.releaselock_rqst_fsid_high", FT_UINT32,
1716
16
      BASE_DEC, NULL, 0x0, NULL, HFILL}},
1717
16
    {&hf_fldb_opnum,
1718
16
     {"Operation", "fldb.opnum", FT_UINT16, BASE_DEC, NULL, 0x0, NULL,
1719
16
      HFILL}},
1720
16
    {&hf_fldb_vldbentry_volumename,
1721
16
     {"VolumeName", "fldb.vldbentry.volumename", FT_STRING, BASE_NONE, NULL, 0x0,
1722
16
      NULL, HFILL}},
1723
16
    {&hf_fldb_vldbentry_volumetype,
1724
16
     {"VolumeType", "fldb.vldbentry.volumetype", FT_UINT32, BASE_DEC, NULL, 0x0,
1725
16
      NULL, HFILL}},
1726
16
    {&hf_fldb_vldbentry_nservers,
1727
16
     {"Number of Servers", "fldb.vldbentry.nservers", FT_UINT32, BASE_DEC, NULL,
1728
16
      0x0, NULL, HFILL}},
1729
16
    {&hf_fldb_afsnetaddr_type,
1730
16
     {"Type", "fldb.afsnetaddr.type", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1731
16
    {&hf_fldb_afsnetaddr_data,
1732
16
     {"IP Data", "fldb.afsnetaddr.data", FT_UINT8, BASE_DEC, NULL, 0x0, NULL,
1733
16
      HFILL}},
1734
16
    {&hf_fldb_vldbentry_sitepartition,
1735
16
     {"Site Partition", "fldb.vldbentry.sitepartition", FT_UINT32, BASE_DEC, NULL,
1736
16
      0x0, NULL, HFILL}},
1737
16
    {&hf_fldb_siteflags,
1738
16
     {"Site Flags", "fldb.vldbentry.siteflags", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1739
16
      HFILL}},
1740
16
    {&hf_fldb_vldbentry_sitemaxreplicalatency,
1741
16
     {"Site Max Replica Latency", "fldb.vldbentry.sitemaxreplatency", FT_UINT32,
1742
16
      BASE_DEC, NULL, 0x0, NULL, HFILL}},
1743
16
    {&hf_fldb_vldbentry_siteprincipal,
1744
16
     {"Principal Name", "fldb.vldbentry.siteprincipal", FT_STRING, BASE_NONE, NULL,
1745
16
      0x0, NULL, HFILL}},
1746
16
    {&hf_fldb_vldbentry_siteowner,
1747
16
     {"Site Owner", "fldb.vldbentry.siteowner", FT_GUID, BASE_NONE, NULL, 0x0,
1748
16
      "UUID", HFILL}},
1749
16
    {&hf_fldb_vldbentry_siteobjid,
1750
16
     {"Site Object ID", "fldb.vldbentry.siteobjid", FT_GUID, BASE_NONE, NULL,
1751
16
      0x0, "UUID", HFILL}},
1752
16
    {&hf_fldb_vldbentry_volids_high,
1753
16
     {"VolIDs high", "fldb.vldbentry.volidshigh", FT_UINT32, BASE_DEC, NULL, 0x0,
1754
16
      NULL, HFILL}},
1755
16
    {&hf_fldb_vldbentry_volids_low,
1756
16
     {"VolIDs low", "fldb.vldbentry.volidslow", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1757
16
      HFILL}},
1758
16
    {&hf_fldb_vldbentry_voltypes,
1759
16
     {"VolTypes", "fldb.vldbentry.voltypes", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1760
16
      HFILL}},
1761
16
    {&hf_fldb_vldbentry_cloneid_high,
1762
16
     {"CloneID High", "fldb.vldbentry.cloneidhigh", FT_UINT32, BASE_DEC, NULL, 0x0,
1763
16
      NULL, HFILL}},
1764
16
    {&hf_fldb_vldbentry_cloneid_low,
1765
16
     {"CloneID Low", "fldb.vldbentry.cloneidlow", FT_UINT32, BASE_DEC, NULL, 0x0,
1766
16
      NULL, HFILL}},
1767
16
    {&hf_fldb_afsflags_flags,
1768
16
     {"AFS Flags", "fldb.vldbentry.afsflags", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1769
16
      HFILL}},
1770
16
    {&hf_fldb_vldbentry_maxtotallatency,
1771
16
     {"Max Total Latency", "fldb.vldbentry.maxtotallatency", FT_UINT32, BASE_DEC,
1772
16
      NULL, 0x0, NULL, HFILL}},
1773
16
    {&hf_fldb_vldbentry_hardmaxtotallatency,
1774
16
     {"Hard Max Total Latency", "fldb.vldbentry.hardmaxtotallatency", FT_UINT32,
1775
16
      BASE_DEC, NULL, 0x0, NULL, HFILL}},
1776
16
    {&hf_fldb_vldbentry_minimumpouncedally,
1777
16
     {"Minimum Pounce Dally", "fldb.vldbentry.minimumpouncedally", FT_UINT32,
1778
16
      BASE_DEC, NULL, 0x0, NULL, HFILL}},
1779
16
    {&hf_fldb_vldbentry_defaultmaxreplicalatency,
1780
16
     {"Default Max Replica Latency", "fldb.vldbentry.defaultmaxreplicalatency",
1781
16
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1782
16
    {&hf_fldb_vldbentry_reclaimdally,
1783
16
     {"Reclaim Dally", "fldb.vldbentry.reclaimdally", FT_UINT32, BASE_DEC, NULL,
1784
16
      0x0, NULL, HFILL}},
1785
16
    {&hf_fldb_vldbentry_whenlocked,
1786
16
     {"When Locked", "fldb.vldbentry.whenlocked", FT_UINT32, BASE_DEC, NULL, 0x0,
1787
16
      NULL, HFILL}},
1788
16
    {&hf_fldb_vldbentry_spare1,
1789
16
     {"Spare 1", "fldb.vldbentry.spare1", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1790
16
      HFILL}},
1791
16
    {&hf_fldb_vldbentry_spare2,
1792
16
     {"Spare 2", "fldb.vldbentry.spare2", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1793
16
      HFILL}},
1794
16
    {&hf_fldb_vldbentry_spare3,
1795
16
     {"Spare 3", "fldb.vldbentry.spare3", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1796
16
      HFILL}},
1797
16
    {&hf_fldb_vldbentry_spare4,
1798
16
     {"Spare 4", "fldb.vldbentry.spare4", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1799
16
      HFILL}},
1800
16
    {&hf_fldb_vldbentry_lockername,
1801
16
     {"Locker Name", "fldb.vldbentry.lockername", FT_STRING, BASE_NONE, NULL, 0x0,
1802
16
      NULL, HFILL}},
1803
16
    {&hf_fldb_vldbentry_charspares,
1804
16
     {"Char Spares", "fldb.vldbentry.charspares", FT_STRING, BASE_NONE, NULL, 0x0,
1805
16
      NULL, HFILL}},
1806
16
    {&hf_fldb_vlconf_cell_name,
1807
16
     {"Name", "fldb.vlconf.name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
1808
16
    {&hf_fldb_vlconf_cell_cellid_high,
1809
16
     {"CellID High", "fldb.vlconf.cellidhigh", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1810
16
      HFILL}},
1811
16
    {&hf_fldb_vlconf_cell_cellid_low,
1812
16
     {"CellID Low", "fldb.vlconf.cellidlow", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1813
16
      HFILL}},
1814
16
    {&hf_fldb_vlconf_cell_numservers,
1815
16
     {"Number of Servers", "fldb.vlconf.numservers", FT_UINT32, BASE_DEC, NULL,
1816
16
      0x0, NULL, HFILL}},
1817
16
    {&hf_fldb_vlconf_cell_hostname,
1818
16
     {"hostName", "fldb.vlconf.hostname", FT_STRING, BASE_NONE, NULL, 0x0, NULL,
1819
16
      HFILL}},
1820
16
    {&hf_fldb_vlconf_cell_spare1,
1821
16
     {"Spare1", "fldb.vlconf.spare1", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1822
16
    {&hf_fldb_vlconf_cell_spare2,
1823
16
     {"Spare2", "fldb.vlconf.spare2", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1824
16
    {&hf_fldb_vlconf_cell_spare3,
1825
16
     {"Spare3", "fldb.vlconf.spare3", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1826
16
    {&hf_fldb_vlconf_cell_spare4,
1827
16
     {"Spare4", "fldb.vlconf.spare4", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1828
16
    {&hf_fldb_vlconf_cell_spare5,
1829
16
     {"Spare5", "fldb.vlconf.spare5", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1830
16
    {&hf_fldb_flagsp,
1831
16
     {"flagsp", "fldb.flagsp", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1832
16
    {&hf_fldb_nextstartp,
1833
16
     {"nextstartp", "fldb.nextstartp", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1834
16
      HFILL}},
1835
16
    {&hf_fldb_afsNameString_t_principalName_size,
1836
16
     {"Principal Name Size", "fldb.principalName_size", FT_UINT32, BASE_DEC,
1837
16
      NULL, 0x0, NULL, HFILL}},
1838
#if 0
1839
    {&hf_fldb_afsNameString_t_principalName_size2,
1840
     {"Principal Name Size2", "fldb.principalName_size2", FT_UINT32, BASE_DEC,
1841
      NULL, 0x0, NULL, HFILL}},
1842
#endif
1843
16
    {&hf_fldb_afsNameString_t_principalName_string,
1844
16
     {"Principal Name", "fldb.NameString_principal", FT_STRING, BASE_NONE,
1845
16
      NULL, 0x0, NULL, HFILL}},
1846
16
    {&hf_fldb_namestring,
1847
16
     {"Name string", "fldb.NameString", FT_STRING, BASE_NONE, NULL,
1848
16
      0x0, NULL, HFILL}},
1849
#if 0
1850
    {&hf_dcerpc_error_status,
1851
     {"Error Status", "fldb.error_status", FT_UINT32, BASE_DEC, NULL,
1852
      0x0, NULL, HFILL}},
1853
#endif
1854
16
    {&hf_error_st,
1855
16
     {"Error Status 2", "fldb.error_st", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1856
16
      HFILL}},
1857
16
    {&hf_fldb_creationquota,
1858
16
     {"creation quota", "fldb.creationquota", FT_UINT32, BASE_DEC, NULL, 0x0,
1859
16
      NULL, HFILL}},
1860
16
    {&hf_fldb_creationuses,
1861
16
     {"creation uses", "fldb.creationuses", FT_UINT32, BASE_DEC, NULL, 0x0,
1862
16
      NULL, HFILL}},
1863
16
    {&hf_fldb_deletedflag,
1864
16
     {"deletedflag", "fldb.deletedflag", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1865
16
      HFILL}},
1866
#if 0
1867
    {&hf_fldb_getentrybyname_rqst_key_size,
1868
     {"getentrybyname", "fldb.getentrybyname_rqst_key_size", FT_UINT32,
1869
      BASE_DEC, NULL, 0x0, NULL, HFILL}},
1870
    {&hf_fldb_getentrybyname_rqst_var1,
1871
     {"getentrybyname var1", "fldb.getentrybyname_rqst_var1", FT_UINT32,
1872
      BASE_DEC, NULL, 0x0, NULL, HFILL}},
1873
    {&hf_fldb_namestring_size,
1874
     {"namestring size", "fldb.namestring_size", FT_UINT32, BASE_DEC, NULL,
1875
      0x0, NULL, HFILL}},
1876
#endif
1877
16
    {&hf_fldb_numwanted,
1878
16
     {"number wanted", "fldb.numwanted", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1879
16
      HFILL}},
1880
16
    {&hf_fldb_spare2,
1881
16
     {"spare2", "fldb.spare2", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1882
16
    {&hf_fldb_spare3,
1883
16
     {"spare3", "fldb.spare3", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1884
16
    {&hf_fldb_spare4,
1885
16
     {"spare4", "fldb.spare4", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1886
16
    {&hf_fldb_spare5,
1887
16
     {"spare5", "fldb.spare5", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1888
16
    {&hf_fldb_uuid_objid,
1889
16
     {"objid", "fldb.uuid_objid", FT_GUID, BASE_NONE, NULL, 0x0, "UUID",
1890
16
      HFILL}},
1891
16
    {&hf_fldb_uuid_owner,
1892
16
     {"owner", "fldb.uuid_owner", FT_GUID, BASE_NONE, NULL, 0x0, "UUID",
1893
16
      HFILL}},
1894
16
    {&hf_fldb_volid_high,
1895
16
     {"volid high", "fldb.volid_high", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1896
16
      HFILL}},
1897
16
    {&hf_fldb_volid_low,
1898
16
     {"volid low", "fldb.volid_low", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1899
16
      HFILL}},
1900
16
    {&hf_fldb_voltype,
1901
16
     {"voltype", "fldb.voltype", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1902
16
  };
1903
1904
16
  static int *ett[] = {
1905
16
    &ett_fldb,
1906
16
    &ett_fldb_vldbentry,
1907
16
    &ett_fldb_afsnetaddr,
1908
16
    &ett_fldb_siteflags,
1909
16
    &ett_fldb_afsflags,
1910
16
    &ett_fldb_vlconf_cell,
1911
16
    &ett_fldb_afsNameString_t,
1912
16
  };
1913
1914
16
  proto_fldb = proto_register_protocol ("DCE DFS Fileset Location Server", "FLDB", "fldb");
1915
16
  proto_register_field_array (proto_fldb, hf, array_length (hf));
1916
16
  proto_register_subtree_array (ett, array_length (ett));
1917
16
}
1918
1919
1920
void
1921
proto_reg_handoff_fldb (void)
1922
16
{
1923
  /* Register the protocol as dcerpc */
1924
16
  dcerpc_init_uuid (proto_fldb, ett_fldb, &uuid_fldb, ver_fldb,
1925
16
                    fldb_dissectors, hf_fldb_opnum);
1926
16
}
1927
1928
/*
1929
 * Editor modelines  -  https://www.wireshark.org/tools/modelines.html
1930
 *
1931
 * Local Variables:
1932
 * c-basic-offset: 2
1933
 * tab-width: 8
1934
 * indent-tabs-mode: nil
1935
 * End:
1936
 *
1937
 * ex: set shiftwidth=2 tabstop=8 expandtab:
1938
 * :indentSize=2:tabSize=8:noTabs=true:
1939
 */