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