As the gtk2 directory is no longer needed (GTK1 and 2 are using the same sources...
[obnox/wireshark/wip.git] / epan / dissectors / packet-dcerpc-fldb.c
1 /* packet-dcerpc-fldb.c
2  *
3  * Routines for dcerpc FLDB 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  * Ethereal - Network traffic analyzer
11  * By Gerald Combs <gerald@ethereal.com>
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       if (check_col (pinfo->cinfo, COL_INFO))
522         col_append_str (pinfo->cinfo, COL_INFO, " afsFlags=");
523       if ((afsflags & AFS_FLAG_RETURNTOKEN) == AFS_FLAG_RETURNTOKEN)
524         {
525           if (check_col (pinfo->cinfo, COL_INFO))
526             col_append_str (pinfo->cinfo, COL_INFO, ":RETURNTOKEN");
527         }
528       if ((afsflags & AFS_FLAG_TOKENJUMPQUEUE) == AFS_FLAG_TOKENJUMPQUEUE)
529         {
530           if (check_col (pinfo->cinfo, COL_INFO))
531             col_append_str (pinfo->cinfo, COL_INFO, ":TOKENJUMPQUEUE");
532         }
533       if ((afsflags & AFS_FLAG_SKIPTOKEN) == AFS_FLAG_SKIPTOKEN)
534         {
535           if (check_col (pinfo->cinfo, COL_INFO))
536             col_append_str (pinfo->cinfo, COL_INFO, ":SKIPTOKEN");
537         }
538       if ((afsflags & AFS_FLAG_NOOPTIMISM) == AFS_FLAG_NOOPTIMISM)
539         {
540           if (check_col (pinfo->cinfo, COL_INFO))
541             col_append_str (pinfo->cinfo, COL_INFO, ":NOOPTIMISM");
542         }
543       if ((afsflags & AFS_FLAG_TOKENID) == AFS_FLAG_TOKENID)
544         {
545           if (check_col (pinfo->cinfo, COL_INFO))
546             col_append_str (pinfo->cinfo, COL_INFO, ":TOKENID");
547         }
548       if ((afsflags & AFS_FLAG_RETURNBLOCKER) == AFS_FLAG_RETURNBLOCKER)
549         {
550           if (check_col (pinfo->cinfo, COL_INFO))
551             col_append_str (pinfo->cinfo, COL_INFO, ":RETURNBLOCKER");
552         }
553       if ((afsflags & AFS_FLAG_ASYNCGRANT) == AFS_FLAG_ASYNCGRANT)
554         {
555           if (check_col (pinfo->cinfo, COL_INFO))
556             col_append_str (pinfo->cinfo, COL_INFO, ":ASYNCGRANT");
557         }
558       if ((afsflags & AFS_FLAG_NOREVOKE) == AFS_FLAG_NOREVOKE)
559         {
560           if (check_col (pinfo->cinfo, COL_INFO))
561             col_append_str (pinfo->cinfo, COL_INFO, ":NOREVOKE");
562         }
563       if ((afsflags & AFS_FLAG_MOVE_REESTABLISH) == AFS_FLAG_MOVE_REESTABLISH)
564         {
565           if (check_col (pinfo->cinfo, COL_INFO))
566             col_append_str (pinfo->cinfo, COL_INFO, ":MOVE_REESTABLISH");
567         }
568       if ((afsflags & AFS_FLAG_SERVER_REESTABLISH) ==
569           AFS_FLAG_SERVER_REESTABLISH)
570         {
571           if (check_col (pinfo->cinfo, COL_INFO))
572             col_append_str (pinfo->cinfo, COL_INFO, ":SERVER_REESTABLISH");
573           if ((afsflags & AFS_FLAG_NO_NEW_EPOCH) == AFS_FLAG_NO_NEW_EPOCH)
574             {
575               if (check_col (pinfo->cinfo, COL_INFO))
576                 col_append_str (pinfo->cinfo, COL_INFO, ":NO_NEW_EPOCH");
577             }
578           if ((afsflags & AFS_FLAG_MOVE_SOURCE_OK) == AFS_FLAG_MOVE_SOURCE_OK)
579             {
580               if (check_col (pinfo->cinfo, COL_INFO))
581                 col_append_str (pinfo->cinfo, COL_INFO, ":MOVE_SOURCE_OK");
582             }
583           if ((afsflags & AFS_FLAG_SYNC) == AFS_FLAG_SYNC)
584             {
585               if (check_col (pinfo->cinfo, COL_INFO))
586                 col_append_str (pinfo->cinfo, COL_INFO, ":SYNC");
587             }
588           if ((afsflags & AFS_FLAG_ZERO) == AFS_FLAG_ZERO)
589             {
590               if (check_col (pinfo->cinfo, COL_INFO))
591                 col_append_str (pinfo->cinfo, COL_INFO, ":ZERO");
592             }
593           if ((afsflags & AFS_FLAG_SKIPSTATUS) == AFS_FLAG_SKIPSTATUS)
594             {
595               if (check_col (pinfo->cinfo, COL_INFO))
596                 col_append_str (pinfo->cinfo, COL_INFO, ":SKIPSTATUS");
597             }
598           if ((afsflags & AFS_FLAG_FORCEREVOCATIONS) ==
599               AFS_FLAG_FORCEREVOCATIONS)
600             {
601               if (check_col (pinfo->cinfo, COL_INFO))
602                 col_append_str (pinfo->cinfo, COL_INFO, ":FORCEREVOCATIONS");
603             }
604           if ((afsflags & AFS_FLAG_FORCEVOLQUIESCE) ==
605               AFS_FLAG_FORCEVOLQUIESCE)
606             {
607               if (check_col (pinfo->cinfo, COL_INFO))
608                 col_append_str (pinfo->cinfo, COL_INFO, ":FORCEVOLQUIESCE");
609             }
610           if ((afsflags & AFS_FLAG_SEC_SERVICE) == AFS_FLAG_SEC_SERVICE)
611             {
612               if (check_col (pinfo->cinfo, COL_INFO))
613                 col_append_str (pinfo->cinfo, COL_INFO, ":SEC_SERVICE");
614             }
615           if ((afsflags & AFS_FLAG_CONTEXT_NEW_ACL_IF) ==
616               AFS_FLAG_CONTEXT_NEW_ACL_IF)
617             {
618               if (check_col (pinfo->cinfo, COL_INFO))
619                 col_append_str (pinfo->cinfo, COL_INFO,
620                                 ":CONTEXT_NEW_ACL_IF");
621             }
622
623         }
624     }
625
626   proto_item_set_len (item, offset - old_offset);
627
628   return offset;
629
630 }
631
632
633 static int
634 dissect_siteflags (tvbuff_t * tvb, int offset,
635                    packet_info * pinfo, proto_tree * parent_tree,
636                    guint8 * drep)
637 {
638   proto_item *item = NULL;
639   proto_tree *tree = NULL;
640   int old_offset = offset;
641   guint32 siteflags;
642
643   if (parent_tree)
644     {
645       item = proto_tree_add_text (parent_tree, tvb, offset, -1, "SiteFlags:");
646       tree = proto_item_add_subtree (item, ett_fldb_siteflags);
647     }
648
649   offset =
650     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_siteflags,
651                         &siteflags);
652
653   if (siteflags)
654     {
655       if (check_col (pinfo->cinfo, COL_INFO))
656         col_append_str (pinfo->cinfo, COL_INFO, " SiteFlags");
657       if ((siteflags & VLSF_NEWREPSITE) == VLSF_NEWREPSITE)
658         {
659           if (check_col (pinfo->cinfo, COL_INFO))
660             col_append_str (pinfo->cinfo, COL_INFO, ":NEWREPSITE");
661         }
662       if ((siteflags & VLSF_SPARE1) == VLSF_SPARE1)
663         {
664           if (check_col (pinfo->cinfo, COL_INFO))
665             col_append_str (pinfo->cinfo, COL_INFO, ":SPARE1");
666         }
667       if ((siteflags & VLSF_SPARE2) == VLSF_SPARE2)
668         {
669           if (check_col (pinfo->cinfo, COL_INFO))
670             col_append_str (pinfo->cinfo, COL_INFO, ":SPARE2");
671         }
672       if ((siteflags & VLSF_SPARE3) == VLSF_SPARE3)
673         {
674           if (check_col (pinfo->cinfo, COL_INFO))
675             col_append_str (pinfo->cinfo, COL_INFO, ":SPARE3");
676         }
677       if ((siteflags & VLSF_SAMEASPREV) == VLSF_SAMEASPREV)
678         {
679           if (check_col (pinfo->cinfo, COL_INFO))
680             col_append_str (pinfo->cinfo, COL_INFO, ":SAMEASPREV");
681         }
682       if ((siteflags & VLSF_DEFINED) == VLSF_DEFINED)
683         {
684           if (check_col (pinfo->cinfo, COL_INFO))
685             col_append_str (pinfo->cinfo, COL_INFO, ":DEFINED");
686         }
687       if ((siteflags & VLSF_PARTIALADDRS) == VLSF_PARTIALADDRS)
688         {
689           if (check_col (pinfo->cinfo, COL_INFO))
690             col_append_str (pinfo->cinfo, COL_INFO, ":PARTIALADDRS ");
691         }
692       if ((siteflags & VLSF_ZEROIXHERE) == VLSF_ZEROIXHERE)
693         {
694           if (check_col (pinfo->cinfo, COL_INFO))
695             col_append_str (pinfo->cinfo, COL_INFO, ":ZEROIXHERE");
696
697         }
698     }
699
700   proto_item_set_len (item, offset - old_offset);
701
702   return offset;
703 }
704
705
706
707 static int
708 dissect_vldbentry (tvbuff_t * tvb, int offset,
709                    packet_info * pinfo, proto_tree * parent_tree,
710                    guint8 * drep)
711 {
712   proto_item *item = NULL;
713   proto_tree *tree = NULL;
714   int old_offset = offset;
715   const guint8 *volumename, *siteprincipal, *charspares, *lockername;
716   guint32 volumetype, nservers, sitepartition, sitemaxreplicalatency,
717     volids_high, volids_low, voltypes, cloneid_high, cloneid_low,
718     maxtotallatency, hardmaxtotallatency, minimumpouncedally,
719     defaultmaxreplicalatency, reclaimdally, whenlocked, spare1, spare2,
720     spare3, spare4;
721   e_uuid_t siteowner, siteobjid;
722   gint i;
723 #define MAXNSERVERS 16
724 #define MAXVOLTYPES 8
725 #define MAXLOCKNAMELEN 64
726
727   if (parent_tree)
728     {
729       item = proto_tree_add_text (parent_tree, tvb, offset, -1, "vldbentry:");
730       tree = proto_item_add_subtree (item, ett_fldb_vldbentry);
731     }
732
733 /*    byte            name[114];      Volume name  */
734
735   proto_tree_add_string (tree, hf_fldb_vldbentry_volumename, tvb, offset, 114,
736                          tvb_get_ptr (tvb, offset, 114));
737   volumename = tvb_get_ptr (tvb, offset, 114);
738   offset += 110;                /* some reason this 114 seems to be incorrect... cutting 4 short to compensate.... */
739   if (check_col (pinfo->cinfo, COL_INFO))
740     col_append_fstr (pinfo->cinfo, COL_INFO, " Name: %s", volumename);
741
742   /* unsigned32      volumeType; */
743   offset =
744     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
745                         hf_fldb_vldbentry_volumetype, &volumetype);
746   if (check_col (pinfo->cinfo, COL_INFO))
747     col_append_fstr (pinfo->cinfo, COL_INFO, " Type:%u", volumetype);
748
749   /*unsigned32      nServers; */
750   offset =
751     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
752                         hf_fldb_vldbentry_nservers, &nservers);
753   if (check_col (pinfo->cinfo, COL_INFO))
754     col_append_fstr (pinfo->cinfo, COL_INFO, " nServers:%u", nservers);
755
756   /* afsNetAddr      siteAddr[MAXNSERVERS]; 16 */
757   for (i = 0; i < MAXNSERVERS; i++)
758     {
759       /* if (check_col (pinfo->cinfo, COL_INFO))   
760          col_append_fstr (pinfo->cinfo, COL_INFO, " Site:%u", i); */
761
762       offset = dissect_afsnetaddr (tvb, offset, pinfo, tree, drep);
763     }
764
765 /*                unsigned32      sitePartition[MAXNSERVERS]; */
766   for (i = 0; i < MAXNSERVERS; i++)
767     {
768       offset =
769         dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
770                             hf_fldb_vldbentry_sitepartition, &sitepartition);
771       if (sitepartition)
772         {
773           if (check_col (pinfo->cinfo, COL_INFO))
774             col_append_fstr (pinfo->cinfo, COL_INFO, " LFS:%u",
775                              sitepartition);
776         }
777     }
778
779
780   /* unsigned32      siteFlags[MAXNSERVERS]; */
781   for (i = 0; i < MAXNSERVERS; i++)
782     {
783       offset = dissect_siteflags (tvb, offset, pinfo, tree, drep);
784     }
785
786   /*  unsigned32      sitemaxReplicaLatency[MAXNSERVERS]; */
787   for (i = 0; i < MAXNSERVERS; i++)
788     {
789       offset =
790         dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
791                             hf_fldb_vldbentry_sitemaxreplicalatency,
792                             &sitemaxreplicalatency);
793       if (sitemaxreplicalatency)
794         {
795           if (check_col (pinfo->cinfo, COL_INFO))
796             col_append_fstr (pinfo->cinfo, COL_INFO, " MaxRepLat%d:%u", i,
797                              sitemaxreplicalatency);
798         }
799     }
800   /* kerb_princ_name sitePrincipal[MAXNSERVERS];      principal  */
801   for (i = 0; i < MAXNSERVERS; i++)
802     {
803       proto_tree_add_string (tree, hf_fldb_vldbentry_siteprincipal, tvb,
804                              offset, 64, tvb_get_ptr (tvb, offset, 64));
805       siteprincipal = tvb_get_ptr (tvb, offset, 64);
806       offset += 64;
807       if (check_col (pinfo->cinfo, COL_INFO))
808         col_append_fstr (pinfo->cinfo, COL_INFO, " Princ: %s", siteprincipal);
809     }
810
811   /* afsUUID         siteOwner[MAXNSERVERS]; */
812
813   for (i = 0; i < MAXNSERVERS; i++)
814     {
815       offset =
816         dissect_ndr_uuid_t (tvb, offset, pinfo, tree, drep,
817                             hf_fldb_vldbentry_siteowner, &siteowner);
818       if (check_col (pinfo->cinfo, COL_INFO))
819         col_append_fstr (pinfo->cinfo, COL_INFO,
820                          " SiteOwner - %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
821                          siteowner.Data1, siteowner.Data2, siteowner.Data3,
822                          siteowner.Data4[0], siteowner.Data4[1],
823                          siteowner.Data4[2], siteowner.Data4[3],
824                          siteowner.Data4[4], siteowner.Data4[5],
825                          siteowner.Data4[6], siteowner.Data4[7]);
826     }
827
828
829 /*                afsUUID         siteObjID[MAXNSERVERS]; */
830   for (i = 0; i < MAXNSERVERS; i++)
831     {
832       offset =
833         dissect_ndr_uuid_t (tvb, offset, pinfo, tree, drep,
834                             hf_fldb_vldbentry_siteobjid, &siteobjid);
835       if (check_col (pinfo->cinfo, COL_INFO))
836         col_append_fstr (pinfo->cinfo, COL_INFO,
837                          " SiteObjID - %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
838                          siteobjid.Data1, siteobjid.Data2, siteobjid.Data3,
839                          siteobjid.Data4[0], siteobjid.Data4[1],
840                          siteobjid.Data4[2], siteobjid.Data4[3],
841                          siteobjid.Data4[4], siteobjid.Data4[5],
842                          siteobjid.Data4[6], siteobjid.Data4[7]);
843     }
844
845
846   /* afsHyper        VolIDs[MAXVOLTYPES]; */
847   /* XXX for these hypers, I will skip trying to use non portable guint64, and just read both, and use only low. 
848      never seen a case of a volid going anywhere the overflow of the 32 low; */
849   for (i = 0; i < MAXVOLTYPES; i++)
850     {
851       offset =
852         dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
853                             hf_fldb_vldbentry_volids_high, &volids_high);
854       offset =
855         dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
856                             hf_fldb_vldbentry_volids_low, &volids_low);
857       if (check_col (pinfo->cinfo, COL_INFO))
858         col_append_fstr (pinfo->cinfo, COL_INFO, " VolIDs%d:%u", i,
859                          volids_low);
860     }
861
862
863   /* unsigned32      VolTypes[MAXVOLTYPES]; */
864   for (i = 0; i < MAXVOLTYPES; i++)
865     {
866       offset =
867         dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
868                             hf_fldb_vldbentry_voltypes, &voltypes);
869       if (voltypes)
870         {
871           if (check_col (pinfo->cinfo, COL_INFO))
872             col_append_fstr (pinfo->cinfo, COL_INFO, " VolTypes:%d:%u", i,
873                              voltypes);
874         }
875     }
876
877   /* afsHyper        cloneId;         Used during cloning  */
878   offset =
879     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
880                         hf_fldb_vldbentry_cloneid_high, &cloneid_high);
881   offset =
882     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
883                         hf_fldb_vldbentry_cloneid_low, &cloneid_low);
884   if (cloneid_low)
885     {
886       if (check_col (pinfo->cinfo, COL_INFO))
887         col_append_fstr (pinfo->cinfo, COL_INFO, " CloneId:%u", cloneid_low);
888     }
889
890   /*  unsigned32      flags;           General flags  */
891   offset = dissect_afsflags (tvb, offset, pinfo, tree, drep);
892
893
894
895   /* unsigned32      maxTotalLatency; */
896   offset =
897     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
898                         hf_fldb_vldbentry_maxtotallatency, &maxtotallatency);
899   if (check_col (pinfo->cinfo, COL_INFO))
900     col_append_fstr (pinfo->cinfo, COL_INFO, " MaxTotLat:%u",
901                      maxtotallatency);
902
903
904   /* unsigned32      hardMaxTotalLatency; */
905   offset =
906     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
907                         hf_fldb_vldbentry_hardmaxtotallatency,
908                         &hardmaxtotallatency);
909   if (check_col (pinfo->cinfo, COL_INFO))
910     col_append_fstr (pinfo->cinfo, COL_INFO, " HardMaxTotLat:%u",
911                      hardmaxtotallatency);
912
913
914   /* unsigned32      minimumPounceDally; */
915   offset =
916     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
917                         hf_fldb_vldbentry_minimumpouncedally,
918                         &minimumpouncedally);
919   if (check_col (pinfo->cinfo, COL_INFO))
920     col_append_fstr (pinfo->cinfo, COL_INFO, " minPounceDally:%u",
921                      minimumpouncedally);
922
923
924   /* unsigned32      defaultMaxReplicaLatency; */
925   offset =
926     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
927                         hf_fldb_vldbentry_defaultmaxreplicalatency,
928                         &defaultmaxreplicalatency);
929   if (check_col (pinfo->cinfo, COL_INFO))
930     col_append_fstr (pinfo->cinfo, COL_INFO, " defaultMaxReplicaLatency:%u",
931                      defaultmaxreplicalatency);
932
933   /* unsigned32      reclaimDally; */
934   offset =
935     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
936                         hf_fldb_vldbentry_reclaimdally, &reclaimdally);
937   if (check_col (pinfo->cinfo, COL_INFO))
938     col_append_fstr (pinfo->cinfo, COL_INFO, " reclaimDally:%u",
939                      reclaimdally);
940
941
942   /*   unsigned32      WhenLocked; */
943   offset =
944     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
945                         hf_fldb_vldbentry_whenlocked, &whenlocked);
946   if (check_col (pinfo->cinfo, COL_INFO))
947     col_append_fstr (pinfo->cinfo, COL_INFO, " WhenLocked:%u", whenlocked);
948
949
950   /*                unsigned32      spare1; */
951   offset =
952     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
953                         hf_fldb_vldbentry_spare1, &spare1);
954   if (check_col (pinfo->cinfo, COL_INFO))
955     col_append_fstr (pinfo->cinfo, COL_INFO, " spare1:%u", spare1);
956
957   /*                unsigned32      spare2; */
958   offset =
959     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
960                         hf_fldb_vldbentry_spare2, &spare2);
961   if (check_col (pinfo->cinfo, COL_INFO))
962     col_append_fstr (pinfo->cinfo, COL_INFO, " spare2:%u", spare2);
963
964
965   /*                unsigned32      spare3; */
966   offset =
967     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
968                         hf_fldb_vldbentry_spare3, &spare3);
969   if (check_col (pinfo->cinfo, COL_INFO))
970     col_append_fstr (pinfo->cinfo, COL_INFO, " spare3:%u", spare3);
971
972   /*                unsigned32      spare4; */
973   offset =
974     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
975                         hf_fldb_vldbentry_spare4, &spare4);
976   if (check_col (pinfo->cinfo, COL_INFO))
977     col_append_fstr (pinfo->cinfo, COL_INFO, " spare4:%u", spare4);
978
979
980   /* byte            LockerName[MAXLOCKNAMELEN]; */
981   proto_tree_add_string (tree, hf_fldb_vldbentry_lockername, tvb, offset,
982                          MAXLOCKNAMELEN, tvb_get_ptr (tvb, offset,
983                                                       MAXLOCKNAMELEN));
984   lockername = tvb_get_ptr (tvb, offset, MAXLOCKNAMELEN);
985   offset += MAXLOCKNAMELEN;     /* some reason this 114 seems to be incorrect... cutting 4 short to compensate.... */
986   if (check_col (pinfo->cinfo, COL_INFO))
987     col_append_fstr (pinfo->cinfo, COL_INFO, " LockerName: %s", lockername);
988
989   /*     byte            charSpares[50]; */
990   proto_tree_add_string (tree, hf_fldb_vldbentry_charspares, tvb, offset, 50,
991                          tvb_get_ptr (tvb, offset, 50));
992   charspares = tvb_get_ptr (tvb, offset, 50);
993   offset += 50;                 /* some reason this 114 seems to be incorrect... cutting 4 short to compensate.... */
994   if (check_col (pinfo->cinfo, COL_INFO))
995     col_append_fstr (pinfo->cinfo, COL_INFO, " charSpares:%s", charspares);
996
997
998
999   proto_item_set_len (item, offset - old_offset);
1000
1001   return offset;
1002
1003
1004 }
1005
1006 static int
1007 fldb_dissect_getcellinfo_resp (tvbuff_t * tvb, int offset,
1008                                packet_info * pinfo, proto_tree * tree,
1009                                guint8 * drep)
1010 {
1011   dcerpc_info *di;
1012
1013   di = pinfo->private_data;
1014   if (di->conformant_run)
1015     {
1016       return offset;
1017     }
1018
1019
1020 /* [out] vlconf_cell *MyCell */
1021   offset = dissect_vlconf_cell (tvb, offset, pinfo, tree, drep);
1022
1023
1024   return offset;
1025 }
1026
1027
1028
1029 static int
1030 fldb_dissect_getentrybyname_rqst (tvbuff_t * tvb, int offset,
1031                                   packet_info * pinfo, proto_tree * tree,
1032                                   guint8 * drep)
1033 {
1034   dcerpc_info *di;
1035
1036   di = pinfo->private_data;
1037   if (di->conformant_run)
1038     {
1039       return offset;
1040     }
1041
1042
1043   /*
1044    *     [in] volumeName volName,
1045    */
1046
1047   offset += 4;
1048   offset = dissect_afsNameString_t (tvb, offset, pinfo, tree, drep);
1049
1050
1051   return offset;
1052
1053 }
1054
1055 static int
1056 fldb_dissect_getentrybyname_resp (tvbuff_t * tvb, int offset,
1057                                   packet_info * pinfo, proto_tree * tree,
1058                                   guint8 * drep)
1059 {
1060   /*
1061      [out] vldbentry *entry     
1062    */
1063   dcerpc_info *di;
1064
1065   di = pinfo->private_data;
1066   if (di->conformant_run)
1067     {
1068       return offset;
1069     }
1070
1071   offset = dissect_vldbentry (tvb, offset, pinfo, tree, drep);
1072
1073   MACRO_ST_CLEAR ("GetEntryByName reply");
1074   return offset;
1075 }
1076
1077 static int
1078 fldb_dissect_getsiteinfo_rqst (tvbuff_t * tvb, int offset,
1079                                packet_info * pinfo, proto_tree * tree,
1080                                guint8 * drep)
1081 {
1082   dcerpc_info *di;
1083
1084   di = pinfo->private_data;
1085   if (di->conformant_run)
1086     {
1087       return offset;
1088     }
1089
1090
1091
1092   /*
1093    *   [in] afsNetAddr *OldAddr,
1094    *   
1095    */
1096
1097   offset = dissect_afsnetaddr (tvb, offset, pinfo, tree, drep);
1098
1099
1100   /*
1101    *
1102    * [in] afsNetAddr *OldAddr,
1103    *         unsigned16 type;
1104    unsigned8 data[14];
1105    */
1106
1107
1108   return offset;
1109 }
1110 static int
1111 fldb_dissect_getsiteinfo_resp (tvbuff_t * tvb, int offset,
1112                                packet_info * pinfo, proto_tree * tree,
1113                                guint8 * drep)
1114 {
1115
1116   dcerpc_info *di;
1117   const guint8 *namestring;
1118   e_uuid_t owner, objid;
1119   guint32 creationquota, creationuses, deletedflag, spare2, spare3, spare4,
1120     spare5;
1121
1122   di = pinfo->private_data;
1123   if (di->conformant_run)
1124     {
1125       return offset;
1126     }
1127
1128   /*
1129      [out] siteDessiib *FullSiteInfo
1130      afsNetAddr Addr[ADDRSINSITE];
1131      byte KerbPrin[MAXKPRINCIPALLEN] 64;
1132      afsUUID Owner;
1133      afsUUID ObjID;
1134      unsigned32 CreationQuota;
1135      unsigned32 CreationUses;
1136      unsigned32 DeletedFlag;
1137      unsigned32 spare2;
1138      unsigned32 spare3;
1139      unsigned32 spare4;
1140      unsigned32 spare5;
1141    */
1142
1143   offset = dissect_afsnetaddr (tvb, offset, pinfo, tree, drep);
1144
1145   /* handle byte KerbPrin[64]. */
1146
1147   offset += 48;                 /* part of kerbprin before name... */
1148
1149   proto_tree_add_string (tree, hf_fldb_namestring, tvb, offset, hf_fldb_namestring_size, tvb_get_ptr (tvb, offset, 64));
1150   namestring = tvb_get_ptr (tvb, offset, 64);
1151   offset += 64;
1152   if (check_col (pinfo->cinfo, COL_INFO))
1153     col_append_fstr (pinfo->cinfo, COL_INFO, " %s", namestring);
1154
1155   offset = dissect_ndr_uuid_t (tvb, offset, pinfo, tree, drep, hf_fldb_uuid_owner, &owner);
1156   if (check_col (pinfo->cinfo, COL_INFO))
1157     col_append_fstr (pinfo->cinfo, COL_INFO,
1158                      " Owner - %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
1159                      owner.Data1, owner.Data2, owner.Data3, owner.Data4[0],
1160                      owner.Data4[1], owner.Data4[2], owner.Data4[3],
1161                      owner.Data4[4], owner.Data4[5], owner.Data4[6],
1162                      owner.Data4[7]);
1163
1164   offset =
1165     dissect_ndr_uuid_t (tvb, offset, pinfo, tree, drep, hf_fldb_uuid_objid,
1166                         &objid);
1167   if (check_col (pinfo->cinfo, COL_INFO))
1168     col_append_fstr (pinfo->cinfo, COL_INFO,
1169                      " ObjID - %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
1170                      objid.Data1, objid.Data2, objid.Data3, objid.Data4[0],
1171                      objid.Data4[1], objid.Data4[2], objid.Data4[3],
1172                      objid.Data4[4], objid.Data4[5], objid.Data4[6],
1173                      objid.Data4[7]);
1174
1175   offset =
1176     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_creationquota,
1177                         &creationquota);
1178   offset =
1179     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_creationuses,
1180                         &creationuses);
1181   offset =
1182     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_deletedflag,
1183                         &deletedflag);
1184   offset =
1185     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_spare2,
1186                         &spare2);
1187   offset =
1188     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_spare3,
1189                         &spare3);
1190   offset =
1191     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_spare4,
1192                         &spare4);
1193   offset =
1194     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_spare5,
1195                         &spare5);
1196
1197   if (check_col (pinfo->cinfo, COL_INFO))
1198     col_append_fstr (pinfo->cinfo, COL_INFO,
1199                      " CreationQuota:%u CreationUses:%u DeletedFlag:%u Spare2:%u Spare3:%u Spare4:%u Spare5:%u",
1200                      creationquota, creationuses, deletedflag, spare2, spare3,
1201                      spare4, spare5);
1202
1203   MACRO_ST_CLEAR ("GetSiteInfo reply");
1204
1205   return offset;
1206
1207 }
1208
1209 static int
1210 fldb_dissect_listentry_rqst (tvbuff_t * tvb, int offset,
1211                              packet_info * pinfo, proto_tree * tree,
1212                              guint8 * drep)
1213 {
1214   dcerpc_info *di;
1215
1216   guint32 var1, previous_index;
1217
1218   di = pinfo->private_data;
1219   if (di->conformant_run)
1220     {
1221       return offset;
1222     }
1223
1224
1225   /*
1226    *               [in] unsigned32 previous_index,
1227    *               [out] unsigned32 *count,
1228    *               [out] unsigned32 *next_index,
1229    *               [out] vldbentry *entry
1230    */
1231
1232   offset =
1233     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1234                         hf_fldb_listentry_rqst_previous_index,
1235                         &previous_index);
1236   offset =
1237     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1238                         hf_fldb_listentry_rqst_var1, &var1);
1239
1240
1241   if (check_col (pinfo->cinfo, COL_INFO))
1242     col_append_fstr (pinfo->cinfo, COL_INFO, " :PrevIndex: %u",
1243                      previous_index);
1244
1245
1246   return offset;
1247
1248 }
1249
1250 static int
1251 fldb_dissect_listentry_resp (tvbuff_t * tvb, int offset,
1252                              packet_info * pinfo, proto_tree * tree,
1253                              guint8 * drep)
1254 {
1255   dcerpc_info *di;
1256   guint32 count, next_index;
1257
1258   di = pinfo->private_data;
1259   if (di->conformant_run)
1260     {
1261       return offset;
1262     }
1263
1264
1265   /*
1266    *               [out] unsigned32 *count,
1267    *               [out] unsigned32 *next_index,
1268    *               [out] vldbentry *entry
1269    */
1270
1271   offset =
1272     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1273                         hf_fldb_listentry_resp_count, &count);
1274   offset =
1275     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1276                         hf_fldb_listentry_resp_next_index, &next_index);
1277   offset = dissect_vldbentry (tvb, offset, pinfo, tree, drep);
1278   return offset;
1279
1280 }
1281
1282 static int
1283 fldb_dissect_setlock_rqst (tvbuff_t * tvb, int offset,
1284                            packet_info * pinfo, proto_tree * tree,
1285                            guint8 * drep)
1286 {
1287   dcerpc_info *di;
1288   guint32 fsid_high, fsid_low, voltype, voloper;
1289
1290   di = pinfo->private_data;
1291   if (di->conformant_run)
1292     {
1293       return offset;
1294     }
1295
1296
1297   offset =
1298     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1299                         hf_fldb_setlock_rqst_fsid_high, &fsid_high);
1300   offset =
1301     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1302                         hf_fldb_setlock_rqst_fsid_low, &fsid_low);
1303   offset =
1304     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1305                         hf_fldb_setlock_rqst_voltype, &voltype);
1306   offset =
1307     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1308                         hf_fldb_setlock_rqst_voloper, &voloper);
1309
1310   if (check_col (pinfo->cinfo, COL_INFO))
1311     col_append_fstr (pinfo->cinfo, COL_INFO,
1312                      " :FSID:%u/%u VolType:0x%x VolOper:%u", fsid_high,
1313                      fsid_low, voltype, voloper);
1314
1315   return offset;
1316
1317 }
1318 static int
1319 fldb_dissect_setlock_resp (tvbuff_t * tvb, int offset,
1320                            packet_info * pinfo, proto_tree * tree,
1321                            guint8 * drep)
1322 {
1323   dcerpc_info *di;
1324
1325   di = pinfo->private_data;
1326   if (di->conformant_run)
1327     {
1328       return offset;
1329     }
1330
1331   MACRO_ST_CLEAR ("SetLock reply");
1332
1333
1334
1335   return offset;
1336 }
1337 static int
1338 fldb_dissect_deleteentry_resp (tvbuff_t * tvb, int offset,
1339                                packet_info * pinfo, proto_tree * tree,
1340                                guint8 * drep)
1341 {
1342   dcerpc_info *di;
1343
1344   di = pinfo->private_data;
1345   if (di->conformant_run)
1346     {
1347       return offset;
1348     }
1349
1350
1351   MACRO_ST_CLEAR ("DeleteEntry reply");
1352
1353   return offset;
1354 }
1355
1356 static int
1357 fldb_dissect_deleteentry_rqst (tvbuff_t * tvb, int offset,
1358                                packet_info * pinfo, proto_tree * tree,
1359                                guint8 * drep)
1360 {
1361
1362 /*
1363                 [in] afsHyper *Volid,
1364                 [in] unsigned32 voltype
1365 */
1366   dcerpc_info *di;
1367
1368   guint32 fsid_high, fsid_low, voltype, voloper;
1369
1370   di = pinfo->private_data;
1371   if (di->conformant_run)
1372     {
1373       return offset;
1374     }
1375
1376
1377
1378   offset =
1379     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1380                         hf_fldb_deleteentry_rqst_fsid_high, &fsid_high);
1381   offset =
1382     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1383                         hf_fldb_deleteentry_rqst_fsid_low, &fsid_low);
1384   offset =
1385     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1386                         hf_fldb_deleteentry_rqst_voltype, &voltype);
1387   offset =
1388     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1389                         hf_fldb_deleteentry_rqst_voloper, &voloper);
1390
1391   if (check_col (pinfo->cinfo, COL_INFO))
1392     col_append_fstr (pinfo->cinfo, COL_INFO, " :FSID:%u/%u", fsid_high,
1393                      fsid_low);
1394
1395
1396   return offset;
1397
1398 }
1399
1400 static int
1401 fldb_dissect_createentry_resp (tvbuff_t * tvb, int offset,
1402                                packet_info * pinfo, proto_tree * tree,
1403                                guint8 * drep)
1404 {
1405   dcerpc_info *di;
1406
1407   di = pinfo->private_data;
1408   if (di->conformant_run)
1409     {
1410       return offset;
1411     }
1412
1413   MACRO_ST_CLEAR ("CreateEntry reply");
1414
1415   return offset;
1416 }
1417
1418 static int
1419 fldb_dissect_createentry_rqst (tvbuff_t * tvb, int offset,
1420                                packet_info * pinfo, proto_tree * tree,
1421                                guint8 * drep)
1422 {
1423   dcerpc_info *di;
1424
1425   di = pinfo->private_data;
1426   if (di->conformant_run)
1427     {
1428       return offset;
1429     }
1430
1431
1432   offset = dissect_vldbentry (tvb, offset, pinfo, tree, drep);
1433   return offset;
1434
1435 }
1436
1437 static int
1438 fldb_dissect_getentrybyid_rqst (tvbuff_t * tvb, int offset,
1439                                 packet_info * pinfo, proto_tree * tree,
1440                                 guint8 * drep)
1441 {
1442   dcerpc_info *di;
1443
1444   guint32 volid_high, volid_low, voltype;
1445
1446   di = pinfo->private_data;
1447   if (di->conformant_run)
1448     {
1449       return offset;
1450     }
1451
1452
1453
1454 /*
1455                 [in] afsHyper *Volid, 
1456                 [in] unsigned32 voltype,
1457 */
1458
1459   offset =
1460     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_volid_high,
1461                         &volid_high);
1462   offset =
1463     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_volid_low,
1464                         &volid_low);
1465
1466   offset =
1467     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_voltype,
1468                         &voltype);
1469
1470   if (check_col (pinfo->cinfo, COL_INFO))
1471     col_append_fstr (pinfo->cinfo, COL_INFO, " VolID:%u/%u VolType:0x%x",
1472                      volid_high, volid_low, voltype);
1473
1474   return offset;
1475
1476 }
1477
1478 static int
1479 fldb_dissect_getnewvolumeids_rqst (tvbuff_t * tvb, int offset,
1480                                    packet_info * pinfo, proto_tree * tree,
1481                                    guint8 * drep)
1482 {
1483 /*              [in] unsigned32 numWanted,
1484                 [in] afsNetAddr *ServerAddr,
1485 */
1486   dcerpc_info *di;
1487   guint32 numwanted;
1488
1489   di = pinfo->private_data;
1490   if (di->conformant_run)
1491     {
1492       return offset;
1493     }
1494
1495   offset =
1496     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_numwanted,
1497                         &numwanted);
1498   if (check_col (pinfo->cinfo, COL_INFO))
1499     col_append_fstr (pinfo->cinfo, COL_INFO, " numWanted:%u", numwanted);
1500
1501
1502   offset = dissect_afsnetaddr (tvb, offset, pinfo, tree, drep);
1503
1504
1505
1506   return offset;
1507 }
1508
1509 static int
1510 fldb_dissect_getentrybyid_resp (tvbuff_t * tvb, int offset,
1511                                 packet_info * pinfo, proto_tree * tree,
1512                                 guint8 * drep)
1513 {
1514   dcerpc_info *di;
1515
1516   di = pinfo->private_data;
1517   if (di->conformant_run)
1518     {
1519       return offset;
1520     }
1521
1522
1523   offset = dissect_vldbentry (tvb, offset, pinfo, tree, drep);
1524   return offset;
1525 }
1526
1527 static int
1528 fldb_dissect_releaselock_resp (tvbuff_t * tvb, int offset,
1529                                packet_info * pinfo, proto_tree * tree,
1530                                guint8 * drep)
1531 {
1532   dcerpc_info *di;
1533
1534   di = pinfo->private_data;
1535   if (di->conformant_run)
1536     {
1537       return offset;
1538     }
1539
1540   MACRO_ST_CLEAR ("ReleaseLock reply");
1541
1542
1543   return offset;
1544 }
1545
1546
1547 static int
1548 fldb_dissect_releaselock_rqst (tvbuff_t * tvb, int offset,
1549                                packet_info * pinfo, proto_tree * tree,
1550                                guint8 * drep)
1551 {
1552   dcerpc_info *di;
1553   guint32 fsid_high, fsid_low, voltype, voloper;
1554
1555   di = pinfo->private_data;
1556   if (di->conformant_run)
1557     {
1558       return offset;
1559     }
1560
1561
1562   offset =
1563     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1564                         hf_fldb_releaselock_rqst_fsid_high, &fsid_high);
1565   offset =
1566     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1567                         hf_fldb_releaselock_rqst_fsid_low, &fsid_low);
1568   offset =
1569     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1570                         hf_fldb_releaselock_rqst_voltype, &voltype);
1571   offset =
1572     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1573                         hf_fldb_releaselock_rqst_voloper, &voloper);
1574
1575   if (check_col (pinfo->cinfo, COL_INFO))
1576     col_append_fstr (pinfo->cinfo, COL_INFO, " :FSID:%u/%u", fsid_high,
1577                      fsid_low);
1578
1579   return offset;
1580
1581 }
1582 static int
1583 fldb_dissect_replaceentry_resp (tvbuff_t * tvb, int offset,
1584                                 packet_info * pinfo, proto_tree * tree,
1585                                 guint8 * drep)
1586 {
1587   dcerpc_info *di;
1588
1589   di = pinfo->private_data;
1590   if (di->conformant_run)
1591     {
1592       return offset;
1593     }
1594
1595
1596   MACRO_ST_CLEAR ("ReplaceEntry reply");
1597
1598
1599   return offset;
1600 }
1601 static int
1602 fldb_dissect_getnextserversbyid_resp (tvbuff_t * tvb, int offset,
1603                                       packet_info * pinfo, proto_tree * tree,
1604                                       guint8 * drep)
1605 {
1606   dcerpc_info *di;
1607
1608   guint32 nextstartp, flagsp;
1609
1610   di = pinfo->private_data;
1611   if (di->conformant_run)
1612     {
1613       return offset;
1614     }
1615
1616
1617
1618
1619
1620   /*    [out] unsigned32 *nextStartP, */
1621 /* XXX */
1622   offset =
1623     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_nextstartp,
1624                         &nextstartp);
1625   if (check_col (pinfo->cinfo, COL_INFO))
1626     col_append_fstr (pinfo->cinfo, COL_INFO, " nextStartP:%u", nextstartp);
1627
1628
1629   /*  [out] vldbentry *entry, */
1630   offset = dissect_vldbentry (tvb, offset, pinfo, tree, drep);
1631
1632
1633   /* [out] unsigned32 *flagsP */
1634
1635   offset =
1636     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_flagsp,
1637                         &flagsp);
1638
1639   if (check_col (pinfo->cinfo, COL_INFO))
1640     col_append_fstr (pinfo->cinfo, COL_INFO, " flagsp:%u", flagsp);
1641
1642   return offset;
1643 }
1644
1645 static int
1646 fldb_dissect_replaceentry_rqst (tvbuff_t * tvb, int offset,
1647                                 packet_info * pinfo, proto_tree * tree,
1648                                 guint8 * drep)
1649 {
1650   dcerpc_info *di;
1651   guint32 fsid_high, fsid_low, voltype;
1652
1653   di = pinfo->private_data;
1654   if (di->conformant_run)
1655     {
1656       return offset;
1657     }
1658
1659   /*
1660    * [in] afsHyper *Volid,
1661    * [in] unsigned32 voltype,
1662    * [in] vldbentry *newentry,
1663    * [in] unsigned32 ReleaseType
1664    */
1665
1666   offset =
1667     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1668                         hf_fldb_replaceentry_rqst_fsid_high, &fsid_high);
1669   offset =
1670     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1671                         hf_fldb_replaceentry_rqst_fsid_low, &fsid_low);
1672   offset =
1673     dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1674                         hf_fldb_replaceentry_rqst_voltype, &voltype);
1675
1676
1677   if (check_col (pinfo->cinfo, COL_INFO))
1678     col_append_fstr (pinfo->cinfo, COL_INFO, " FSID:%u/%u Name:", fsid_high,
1679                      fsid_low);
1680
1681   offset = dissect_vldbentry (tvb, offset, pinfo, tree, drep);
1682
1683   return offset;
1684
1685 }
1686
1687
1688 static dcerpc_sub_dissector fldb_dissectors[] = {
1689   {0, "GetEntryByID", fldb_dissect_getentrybyid_rqst,
1690    fldb_dissect_getentrybyid_resp},
1691   {1, "GetEntryByName", fldb_dissect_getentrybyname_rqst,
1692    fldb_dissect_getentrybyname_resp},
1693   {2, "Probe", NULL, NULL},
1694   {3, "GetCellInfo", NULL, fldb_dissect_getcellinfo_resp},
1695   {4, "GetNextServersByID", NULL, fldb_dissect_getnextserversbyid_resp},
1696   {5, "GetNextServersByName", NULL, NULL},
1697   {6, "GetSiteInfo", fldb_dissect_getsiteinfo_rqst,
1698    fldb_dissect_getsiteinfo_resp},
1699   {7, "GetCEntryByID", NULL, NULL},
1700   {8, "GetCEntryByName", NULL, NULL},
1701   {9, "GetCNextServersByID", NULL, NULL},
1702   {10, "GetCNextServersByName", NULL, NULL},
1703   {11, "ExpandSiteCookie", NULL, NULL},
1704   {12, "GetServerInterfaces", NULL, NULL},
1705   {13, "CreateEntry", fldb_dissect_createentry_rqst,
1706    fldb_dissect_createentry_resp},
1707   {14, "DeleteEntry", fldb_dissect_deleteentry_rqst,
1708    fldb_dissect_deleteentry_resp},
1709   {15, "GetNewVolumeId", NULL, NULL},
1710   {16, "ReplaceEntry", fldb_dissect_replaceentry_rqst,
1711    fldb_dissect_replaceentry_resp},
1712   {17, "SetLock", fldb_dissect_setlock_rqst, fldb_dissect_setlock_resp},
1713   {18, "ReleaseLock", fldb_dissect_releaselock_rqst,
1714    fldb_dissect_releaselock_resp},
1715   {19, "ListEntry", fldb_dissect_listentry_rqst, fldb_dissect_listentry_resp},
1716   {20, "ListByAttributes", NULL, NULL},
1717   {21, "GetStats", NULL, NULL},
1718   {22, "AddAddress", NULL, NULL},
1719   {23, "RemoveAddress", NULL, NULL},
1720   {24, "ChangeAddress", NULL, NULL},
1721   {25, "GenerateSites", NULL, NULL},
1722   {26, "GetNewVolumeIds", fldb_dissect_getnewvolumeids_rqst, NULL},
1723   {27, "CreateServer", NULL, NULL},
1724   {28, "AlterServer", NULL, NULL},
1725   {0, NULL, NULL, NULL},
1726 };
1727
1728
1729 void
1730 proto_register_fldb (void)
1731 {
1732   static hf_register_info hf[] = {
1733     {&hf_fldb_releaselock_rqst_fsid_low,
1734      {"FSID releaselock Low", "hf_fldb_releaselock_rqst_fsid_low", FT_UINT32,
1735       BASE_DEC, NULL, 0x0, "", HFILL}},
1736     {&hf_fldb_releaselock_rqst_voltype,
1737      {"voltype", "hf_fldb_releaselock_rqst_voltype", FT_UINT32, BASE_DEC,
1738       NULL, 0x0, "", HFILL}},
1739     {&hf_fldb_releaselock_rqst_voloper,
1740      {"voloper", "hf_fldb_releaselock_rqst_voloper", FT_UINT32, BASE_DEC,
1741       NULL, 0x0, "", HFILL}},
1742     {&hf_fldb_setlock_rqst_fsid_high,
1743      {"FSID setlock Hi", "hf_fldb_setlock_rqst_fsid_high", FT_UINT32,
1744       BASE_DEC, NULL, 0x0, "", HFILL}},
1745     {&hf_fldb_setlock_rqst_fsid_low,
1746      {"FSID setlock Low", "hf_fldb_setlock_rqst_fsid_low", FT_UINT32,
1747       BASE_DEC, NULL, 0x0, "", HFILL}},
1748     {&hf_fldb_setlock_rqst_voltype,
1749      {"voltype", "hf_fldb_setlock_rqst_voltype", FT_UINT32, BASE_DEC, NULL,
1750       0x0, "", HFILL}},
1751     {&hf_fldb_setlock_rqst_voloper,
1752      {"voloper", "hf_fldb_setlock_rqst_voloper", FT_UINT32, BASE_DEC, NULL,
1753       0x0, "", HFILL}},
1754     {&hf_fldb_setlock_resp_st,
1755      {"Error", "hf_fldb_setlock_resp_st", FT_UINT32, BASE_DEC, NULL, 0x0, "",
1756       HFILL}},
1757     {&hf_fldb_setlock_resp_st2,
1758      {"Error", "hf_fldb_setlock_resp_st2", FT_UINT32, BASE_DEC, NULL, 0x0, "",
1759       HFILL}},
1760     {&hf_fldb_listentry_rqst_previous_index,
1761      {"Previous Index", "hf_fldb_listentry_rqst_previous_index", FT_UINT32,
1762       BASE_DEC, NULL, 0x0, "", HFILL}},
1763     {&hf_fldb_listentry_rqst_var1,
1764      {"Var 1", "hf_fldb_listentry_rqst_var1", FT_UINT32, BASE_DEC, NULL, 0x0,
1765       "", HFILL}},
1766     {&hf_fldb_listentry_resp_count,
1767      {"Count", "hf_fldb_listentry_resp_count", FT_UINT32, BASE_DEC, NULL, 0x0,
1768       "", HFILL}},
1769     {&hf_fldb_listentry_resp_next_index,
1770      {"Next Index", "hf_fldb_listentry_resp_next_index", FT_UINT32, BASE_DEC,
1771       NULL, 0x0, "", HFILL}},
1772     {&hf_fldb_listentry_resp_key_size,
1773      {"Key Size", "hf_fldb_listentry_resp_key_size", FT_UINT32, BASE_DEC,
1774       NULL, 0x0, "", HFILL}},
1775     {&hf_fldb_listentry_resp_key_t,
1776      {"Volume", "hf_fldb_listentry_resp_key_t", FT_STRING, BASE_NONE, NULL,
1777       0x0, "", HFILL}},
1778     {&hf_fldb_listentry_resp_voltype,
1779      {"VolType", "hf_fldb_listentry_resp_voltype", FT_UINT32, BASE_HEX, NULL,
1780       0x0, "", HFILL}},
1781     {&hf_fldb_listentry_resp_key_size2,
1782      {"key_size2", "hf_fldb_listentry_resp_key_size2", FT_UINT32, BASE_DEC,
1783       NULL, 0x0, "", HFILL}},
1784     {&hf_fldb_listentry_resp_key_t2,
1785      {"Server", "hf_fldb_listentry_resp_key_t2", FT_STRING, BASE_NONE, NULL,
1786       0x0, "", HFILL}},
1787     {&hf_fldb_createentry_rqst_key_t,
1788      {"Volume", "hf_fldb_createentry_rqst_key_t", FT_STRING, BASE_NONE, NULL,
1789       0x0, "", HFILL}},
1790     {&hf_fldb_createentry_rqst_key_size,
1791      {"Volume Size", "hf_fldb_createentry_rqst_key_size", FT_UINT32, BASE_DEC,
1792       NULL, 0x0, "", HFILL}},
1793     {&hf_fldb_deleteentry_rqst_fsid_high,
1794      {"FSID deleteentry Hi", "hf_fldb_deleteentry_rqst_fsid_high", FT_UINT32,
1795       BASE_DEC, NULL, 0x0, "", HFILL}},
1796     {&hf_fldb_deleteentry_rqst_fsid_low,
1797      {"FSID deleteentry Low", "hf_fldb_deleteentry_rqst_fsid_low", FT_UINT32,
1798       BASE_DEC, NULL, 0x0, "", HFILL}},
1799     {&hf_fldb_deleteentry_rqst_voltype,
1800      {"voltype", "hf_fldb_deleteentry_rqst_voltype", FT_UINT32, BASE_DEC,
1801       NULL, 0x0, "", HFILL}},
1802     {&hf_fldb_deleteentry_rqst_voloper,
1803      {"voloper", "hf_fldb_deleteentry_rqst_voloper", FT_UINT32, BASE_DEC,
1804       NULL, 0x0, "", HFILL}},
1805     {&hf_fldb_getentrybyid_rqst_fsid_high,
1806      {"FSID deleteentry Hi", "hf_fldb_getentrybyid_rqst_fsid_high", FT_UINT32,
1807       BASE_DEC, NULL, 0x0, "", HFILL}},
1808     {&hf_fldb_getentrybyid_rqst_fsid_low,
1809      {"FSID getentrybyid Low", "hf_fldb_getentrybyid_rqst_fsid_low",
1810       FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL}},
1811     {&hf_fldb_getentrybyid_rqst_voltype,
1812      {"voltype", "hf_fldb_getentrybyid_rqst_voltype", FT_UINT32, BASE_DEC,
1813       NULL, 0x0, "", HFILL}},
1814     {&hf_fldb_getentrybyid_rqst_voloper,
1815      {"voloper", "hf_fldb_getentrybyid_rqst_voloper", FT_UINT32, BASE_DEC,
1816       NULL, 0x0, "", HFILL}},
1817     {&hf_fldb_replaceentry_rqst_fsid_high,
1818      {"FSID replaceentry Hi", "hf_fldb_replaceentry_rqst_fsid_high",
1819       FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL}},
1820     {&hf_fldb_replaceentry_rqst_fsid_low,
1821      {"FSID  replaceentry Low", "hf_fldb_replaceentry_rqst_fsid_low",
1822       FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL}},
1823     {&hf_fldb_replaceentry_rqst_voltype,
1824      {"voltype", "hf_fldb_replaceentry_rqst_voltype", FT_UINT32, BASE_DEC,
1825       NULL, 0x0, "", HFILL}},
1826     {&hf_fldb_replaceentry_rqst_key_t,
1827      {"Key", "hf_fldb_replaceentry_rqst_key_t", FT_STRING, BASE_NONE, NULL,
1828       0x0, "", HFILL}},
1829     {&hf_fldb_replaceentry_rqst_key_size,
1830      {"Key Size", "hf_fldb_replaceentry_rqst_key_size", FT_UINT32, BASE_DEC,
1831       NULL, 0x0, "", HFILL}},
1832     {&hf_fldb_replaceentry_resp_st,
1833      {"Error", "hf_fldb_replaceentry_resp_st", FT_UINT32, BASE_DEC, NULL, 0x0,
1834       "", HFILL}},
1835     {&hf_fldb_replaceentry_resp_st2,
1836      {"Error", "hf_fldb_replaceentry_resp_st2", FT_UINT32, BASE_DEC, NULL,
1837       0x0, "", HFILL}},
1838     {&hf_fldb_getentrybyname_resp_volumetype,
1839      {"hf_fldb_getentrybyname_resp_volumetype",
1840       "hf_fldb_getentrybyname_resp_volumetype", FT_UINT32, BASE_DEC, NULL,
1841       0x0, "", HFILL}},
1842     {&hf_fldb_getentrybyname_resp_numservers,
1843      {"hf_fldb_getentrybyname_resp_numservers",
1844       "hf_fldb_getentrybyname_resp_numservers", FT_UINT32, BASE_DEC, NULL,
1845       0x0, "", HFILL}},
1846     {&hf_fldb_getentrybyname_resp_sitecookies,
1847      {"hf_fldb_getentrybyname_resp_sitecookies",
1848       "hf_fldb_getentrybyname_resp_sitecookies", FT_UINT32, BASE_DEC, NULL,
1849       0x0, "", HFILL}},
1850     {&hf_fldb_getentrybyname_resp_sitepartition,
1851      {"hf_fldb_getentrybyname_resp_sitepartition",
1852       "hf_fldb_getentrybyname_resp_sitepartition", FT_UINT32, BASE_DEC, NULL,
1853       0x0, "", HFILL}},
1854     {&hf_fldb_getentrybyname_resp_siteflags,
1855      {"hf_fldb_getentrybyname_resp_siteflags",
1856       "hf_fldb_getentrybyname_resp_siteflags", FT_UINT32, BASE_DEC, NULL, 0x0,
1857       "", HFILL}},
1858     {&hf_fldb_getentrybyname_resp_sitemaxreplat,
1859      {"hf_fldb_getentrybyname_resp_sitemaxreplat",
1860       "hf_fldb_getentrybyname_resp_sitemaxreplat", FT_UINT32, BASE_DEC, NULL,
1861       0x0, "", HFILL}},
1862     {&hf_fldb_getentrybyname_resp_volid_high,
1863      {"hf_fldb_getentrybyname_resp_volid_high",
1864       "hf_fldb_getentrybyname_resp_volid_high", FT_UINT32, BASE_DEC, NULL,
1865       0x0, "", HFILL}},
1866     {&hf_fldb_getentrybyname_resp_volid_low,
1867      {"hf_fldb_getentrybyname_resp_volid_low",
1868       "hf_fldb_getentrybyname_resp_volid_low", FT_UINT32, BASE_DEC, NULL, 0x0,
1869       "", HFILL}},
1870     {&hf_fldb_getentrybyname_resp_voltype,
1871      {"hf_fldb_getentrybyname_resp_voltype",
1872       "hf_fldb_getentrybyname_resp_voltype", FT_UINT32, BASE_DEC, NULL, 0x0,
1873       "", HFILL}},
1874     {&hf_fldb_getentrybyname_resp_cloneid_high,
1875      {"hf_fldb_getentrybyname_resp_cloneid_high",
1876       "hf_fldb_getentrybyname_resp_cloneid_high", FT_UINT32, BASE_DEC, NULL,
1877       0x0, "", HFILL}},
1878     {&hf_fldb_getentrybyname_resp_cloneid_low,
1879      {"hf_fldb_getentrybyname_resp_cloneid_low",
1880       "hf_fldb_getentrybyname_resp_cloneid_low", FT_UINT32, BASE_DEC, NULL,
1881       0x0, "", HFILL}},
1882     {&hf_fldb_getentrybyname_resp_flags,
1883      {"hf_fldb_getentrybyname_resp_flags",
1884       "hf_fldb_getentrybyname_resp_flags", FT_UINT32, BASE_DEC, NULL, 0x0, "",
1885       HFILL}},
1886     {&hf_fldb_getentrybyname_resp_maxtotallat,
1887      {"hf_fldb_getentrybyname_resp_maxtotallat",
1888       "hf_fldb_getentrybyname_resp_maxtotallat", FT_UINT32, BASE_DEC, NULL,
1889       0x0, "", HFILL}},
1890     {&hf_fldb_getentrybyname_resp_hardmaxtotlat,
1891      {"hf_fldb_getentrybyname_resp_hardmaxtotlat",
1892       "hf_fldb_getentrybyname_resp_hardmaxtotlat", FT_UINT32, BASE_DEC, NULL,
1893       0x0, "", HFILL}},
1894     {&hf_fldb_getentrybyname_resp_minpouncedally,
1895      {"hf_fldb_getentrybyname_resp_minpouncedally",
1896       "hf_fldb_getentrybyname_resp_minpouncedally", FT_UINT32, BASE_DEC, NULL,
1897       0x0, "", HFILL}},
1898     {&hf_fldb_getentrybyname_resp_defaultmaxreplat,
1899      {"hf_fldb_getentrybyname_resp_defaultmaxreplat",
1900       "hf_fldb_getentrybyname_resp_defaultmaxreplat", FT_UINT32, BASE_DEC,
1901       NULL, 0x0, "", HFILL}},
1902     {&hf_fldb_getentrybyname_resp_reclaimdally,
1903      {"hf_fldb_getentrybyname_resp_reclaimdally",
1904       "hf_fldb_getentrybyname_resp_reclaimdally", FT_UINT32, BASE_DEC, NULL,
1905       0x0, "", HFILL}},
1906     {&hf_fldb_getentrybyname_resp_whenlocked,
1907      {"hf_fldb_getentrybyname_resp_whenlocked",
1908       "hf_fldb_getentrybyname_resp_whenlocked", FT_UINT32, BASE_DEC, NULL,
1909       0x0, "", HFILL}},
1910     {&hf_fldb_getentrybyname_resp_spare1,
1911      {"hf_fldb_getentrybyname_resp_spare1",
1912       "hf_fldb_getentrybyname_resp_spare1", FT_UINT32, BASE_DEC, NULL, 0x0,
1913       "", HFILL}},
1914     {&hf_fldb_getentrybyname_resp_spare2,
1915      {"hf_fldb_getentrybyname_resp_spare2",
1916       "hf_fldb_getentrybyname_resp_spare2", FT_UINT32, BASE_DEC, NULL, 0x0,
1917       "", HFILL}},
1918     {&hf_fldb_getentrybyname_resp_spare3,
1919      {"hf_fldb_getentrybyname_resp_spare3",
1920       "hf_fldb_getentrybyname_resp_spare3", FT_UINT32, BASE_DEC, NULL, 0x0,
1921       "", HFILL}},
1922     {&hf_fldb_getentrybyname_resp_spare4,
1923      {"hf_fldb_getentrybyname_resp_spare4",
1924       "hf_fldb_getentrybyname_resp_spare4", FT_UINT32, BASE_DEC, NULL, 0x0,
1925       "", HFILL}},
1926     {&hf_fldb_getentrybyname_resp_key_t,
1927      {"hf_fldb_getentrybyname_resp_key_t",
1928       "hf_fldb_getentrybyname_resp_key_t", FT_STRING, BASE_NONE, NULL, 0x0,
1929       "", HFILL}},
1930     {&hf_fldb_getentrybyname_resp_key_size,
1931      {"hf_fldb_getentrybyname_resp_size",
1932       "hf_fldb_getentrybyname_resp_key_size", FT_UINT32, BASE_DEC, NULL, 0x0,
1933       "", HFILL}},
1934     {&hf_fldb_getentrybyname_resp_test,
1935      {"hf_fldb_getentrybyname_resp_test", "hf_fldb_getentrybyname_resp_test",
1936       FT_UINT8, BASE_DEC, NULL, 0x0, "", HFILL}},
1937     {&hf_fldb_releaselock_rqst_fsid_high,
1938      {"FSID  releaselock Hi", "hf_fldb_releaselock_rqst_fsid_high", FT_UINT32,
1939       BASE_DEC, NULL, 0x0, "", HFILL}},
1940     {&hf_fldb_opnum,
1941      {"Operation", "fldb.opnum", FT_UINT16, BASE_DEC, NULL, 0x0, "Operation",
1942       HFILL}},
1943     {&hf_fldb_vldbentry_volumename,
1944      {"VolumeName", "vldbentry.volumename", FT_STRING, BASE_NONE, NULL, 0x0,
1945       "", HFILL}},
1946     {&hf_fldb_vldbentry_volumetype,
1947      {"VolumeType", "vldbentry.volumetype", FT_UINT32, BASE_DEC, NULL, 0x0,
1948       "", HFILL}},
1949     {&hf_fldb_vldbentry_nservers,
1950      {"Number of Servers", "vldbentry.nservers", FT_UINT32, BASE_DEC, NULL,
1951       0x0, "", HFILL}},
1952     {&hf_fldb_afsnetaddr_type,
1953      {"Type", "afsnetaddr.type", FT_UINT16, BASE_DEC, NULL, 0x0, "", HFILL}},
1954     {&hf_fldb_afsnetaddr_data,
1955      {"IP Data", "afsnetaddr.data", FT_UINT8, BASE_DEC, NULL, 0x0, "",
1956       HFILL}},
1957     {&hf_fldb_vldbentry_sitepartition,
1958      {"Site Partition", "vldbentry.sitepartition", FT_UINT32, BASE_DEC, NULL,
1959       0x0, "", HFILL}},
1960     {&hf_fldb_siteflags,
1961      {"Site Flags", "vldbentry.siteflags", FT_UINT32, BASE_DEC, NULL, 0x0, "",
1962       HFILL}},
1963     {&hf_fldb_vldbentry_sitemaxreplicalatency,
1964      {"Site Max Replica Latench", "vldbentry.sitemaxreplatency", FT_UINT32,
1965       BASE_DEC, NULL, 0x0, "", HFILL}},
1966     {&hf_fldb_vldbentry_siteprincipal,
1967      {"Principal Name", "vldbentry.siteprincipal", FT_STRING, BASE_NONE, NULL,
1968       0x0, "", HFILL}},
1969     {&hf_fldb_vldbentry_siteowner,
1970      {"Site Owner", "vldbentry.siteowner", FT_STRING, BASE_NONE, NULL, 0x0,
1971       "UUID", HFILL}},
1972     {&hf_fldb_vldbentry_siteobjid,
1973      {"Site Object ID", "vldbentry.siteobjid", FT_STRING, BASE_NONE, NULL,
1974       0x0, "UUID", HFILL}},
1975     {&hf_fldb_vldbentry_volids_high,
1976      {"VolIDs high", "vldbentry.volidshigh", FT_UINT32, BASE_DEC, NULL, 0x0,
1977       "", HFILL}},
1978     {&hf_fldb_vldbentry_volids_low,
1979      {"VolIDs low", "vldbentry.volidslow", FT_UINT32, BASE_DEC, NULL, 0x0, "",
1980       HFILL}},
1981     {&hf_fldb_vldbentry_voltypes,
1982      {"VolTypes", "vldbentry.voltypes", FT_UINT32, BASE_DEC, NULL, 0x0, "",
1983       HFILL}},
1984     {&hf_fldb_vldbentry_cloneid_high,
1985      {"CloneID High", "vldbentry.cloneidhigh", FT_UINT32, BASE_DEC, NULL, 0x0,
1986       "", HFILL}},
1987     {&hf_fldb_vldbentry_cloneid_low,
1988      {"CloneID Low", "vldbentry.cloneidlow", FT_UINT32, BASE_DEC, NULL, 0x0,
1989       "", HFILL}},
1990     {&hf_fldb_afsflags_flags,
1991      {"AFS Flags", "vldbentry.afsflags", FT_UINT32, BASE_DEC, NULL, 0x0, "",
1992       HFILL}},
1993     {&hf_fldb_vldbentry_maxtotallatency,
1994      {"Max Total Latency", "vldbentry.maxtotallatency", FT_UINT32, BASE_DEC,
1995       NULL, 0x0, "", HFILL}},
1996     {&hf_fldb_vldbentry_hardmaxtotallatency,
1997      {"Hard Max Total Latency", "vldbentry.hardmaxtotallatency", FT_UINT32,
1998       BASE_DEC, NULL, 0x0, "", HFILL}},
1999     {&hf_fldb_vldbentry_minimumpouncedally,
2000      {"Minimum Pounce Dally", "vldbentry.minimumpouncedally", FT_UINT32,
2001       BASE_DEC, NULL, 0x0, "", HFILL}},
2002     {&hf_fldb_vldbentry_defaultmaxreplicalatency,
2003      {"Default Max Replica Latency", "vldbentry.defaultmaxreplicalatency",
2004       FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL}},
2005     {&hf_fldb_vldbentry_reclaimdally,
2006      {"Reclaim Dally", "vldbentry.reclaimdally", FT_UINT32, BASE_DEC, NULL,
2007       0x0, "", HFILL}},
2008     {&hf_fldb_vldbentry_whenlocked,
2009      {"When Locked", "vldbentry.whenlocked", FT_UINT32, BASE_DEC, NULL, 0x0,
2010       "", HFILL}},
2011     {&hf_fldb_vldbentry_spare1,
2012      {"Spare 1", "vldbentry.spare1", FT_UINT32, BASE_DEC, NULL, 0x0, "",
2013       HFILL}},
2014     {&hf_fldb_vldbentry_spare2,
2015      {"Spare 2", "vldbentry.spare2", FT_UINT32, BASE_DEC, NULL, 0x0, "",
2016       HFILL}},
2017     {&hf_fldb_vldbentry_spare3,
2018      {"Spare 3", "vldbentry.spare3", FT_UINT32, BASE_DEC, NULL, 0x0, "",
2019       HFILL}},
2020     {&hf_fldb_vldbentry_spare4,
2021      {"Spare 4", "vldbentry.spare4", FT_UINT32, BASE_DEC, NULL, 0x0, "",
2022       HFILL}},
2023     {&hf_fldb_vldbentry_lockername,
2024      {"Locker Name", "vldbentry.lockername", FT_STRING, BASE_NONE, NULL, 0x0,
2025       "", HFILL}},
2026     {&hf_fldb_vldbentry_charspares,
2027      {"Char Spares", "vldbentry.charspares", FT_STRING, BASE_NONE, NULL, 0x0,
2028       "", HFILL}},
2029     {&hf_fldb_vlconf_cell_name,
2030      {"Name", "vlconf.name", FT_STRING, BASE_NONE, NULL, 0x0, "", HFILL}},
2031     {&hf_fldb_vlconf_cell_cellid_high,
2032      {"CellID High", "vlconf.cellidhigh", FT_UINT32, BASE_DEC, NULL, 0x0, "",
2033       HFILL}},
2034     {&hf_fldb_vlconf_cell_cellid_low,
2035      {"CellID Low", "vlconf.cellidlow", FT_UINT32, BASE_DEC, NULL, 0x0, "",
2036       HFILL}},
2037     {&hf_fldb_vlconf_cell_numservers,
2038      {"Number of Servers", "vlconf.numservers", FT_UINT32, BASE_DEC, NULL,
2039       0x0, "", HFILL}},
2040     {&hf_fldb_vlconf_cell_hostname,
2041      {"hostName", "vlconf.hostname", FT_STRING, BASE_NONE, NULL, 0x0, "",
2042       HFILL}},
2043     {&hf_fldb_vlconf_cell_spare1,
2044      {"Spare1", "vlconf.spare1", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL}},
2045     {&hf_fldb_vlconf_cell_spare2,
2046      {"Spare2", "vlconf.spare2", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL}},
2047     {&hf_fldb_vlconf_cell_spare3,
2048      {"Spare3", "vlconf.spare3", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL}},
2049     {&hf_fldb_vlconf_cell_spare4,
2050      {"Spare4", "vlconf.spare4", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL}},
2051     {&hf_fldb_vlconf_cell_spare5,
2052      {"Spare5", "vlconf.spare5", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL}},
2053     {&hf_fldb_flagsp,
2054      {"flagsp", "fldb.flagsp", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL}},
2055     {&hf_fldb_nextstartp,
2056      {"nextstartp", "fldb.nextstartp", FT_UINT32, BASE_DEC, NULL, 0x0, "",
2057       HFILL}},
2058     {&hf_fldb_afsNameString_t_principalName_size,
2059      {"Principal Name Size", "fldb.principalName_size", FT_UINT32, BASE_DEC,
2060       NULL, 0x0, "", HFILL}},
2061     {&hf_fldb_afsNameString_t_principalName_size2,
2062      {"Principal Name Size2", "fldb.principalName_size2", FT_UINT32, BASE_DEC,
2063       NULL, 0x0, "", HFILL}},
2064     {&hf_fldb_afsNameString_t_principalName_string,
2065      {"Principal Name", "fldb.NameString_principal", FT_STRING, BASE_NONE,
2066       NULL, 0x0, "", HFILL}},
2067     {&hf_fldb_namestring,
2068      {"Name string", "fldb.NameString_principal", FT_STRING, BASE_NONE, NULL,
2069       0x0, "", HFILL}},
2070     {&hf_dcerpc_error_status,
2071      {"Error Status", "fldb.NameString_principal", FT_UINT32, BASE_DEC, NULL,
2072       0x0, "", HFILL}},
2073     {&hf_error_st,
2074      {"Error Status 2", "fldb.error_st", FT_UINT32, BASE_DEC, NULL, 0x0, "",
2075       HFILL}},
2076     {&hf_fldb_creationquota,
2077      {"creation quota", "fldb.creationquota", FT_UINT32, BASE_DEC, NULL, 0x0,
2078       "", HFILL}},
2079     {&hf_fldb_creationuses,
2080      {"creation uses", "fldb.creationuses", FT_UINT32, BASE_DEC, NULL, 0x0,
2081       "", HFILL}},
2082     {&hf_fldb_deletedflag,
2083      {"deletedflag", "fldb.deletedflag", FT_UINT32, BASE_DEC, NULL, 0x0, "",
2084       HFILL}},
2085     {&hf_fldb_getentrybyname_rqst_key_size,
2086      {"getentrybyname", "fldb.getentrybyname_rqst_key_size", FT_UINT32,
2087       BASE_DEC, NULL, 0x0, "", HFILL}},
2088     {&hf_fldb_getentrybyname_rqst_var1,
2089      {"getentrybyname var1", "fldb.getentrybyname_rqst_var1", FT_UINT32,
2090       BASE_DEC, NULL, 0x0, "", HFILL}},
2091     {&hf_fldb_namestring_size,
2092      {"namestring size", "fldb.namestring_size", FT_UINT32, BASE_DEC, NULL,
2093       0x0, "", HFILL}},
2094     {&hf_fldb_numwanted,
2095      {"number wanted", "fldb.numwanted", FT_UINT32, BASE_DEC, NULL, 0x0, "",
2096       HFILL}},
2097     {&hf_fldb_spare2,
2098      {"spare2", "fldb.spare2", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL}},
2099     {&hf_fldb_spare3,
2100      {"spare3", "fldb.spare3", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL}},
2101     {&hf_fldb_spare4,
2102      {"spare4", "fldb.spare4", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL}},
2103     {&hf_fldb_spare5,
2104      {"spare5", "fldb.spare5", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL}},
2105     {&hf_fldb_uuid_objid,
2106      {"objid", "fldb.uuid_objid", FT_STRING, BASE_NONE, NULL, 0x0, "UUID",
2107       HFILL}},
2108     {&hf_fldb_uuid_owner,
2109      {"owner", "fldb.uuid_owner", FT_STRING, BASE_NONE, NULL, 0x0, "UUID",
2110       HFILL}},
2111     {&hf_fldb_volid_high,
2112      {"volid high", "fldb.volid_high", FT_UINT32, BASE_DEC, NULL, 0x0, "",
2113       HFILL}},
2114     {&hf_fldb_volid_low,
2115      {"volid low", "fldb.volid_low", FT_UINT32, BASE_DEC, NULL, 0x0, "",
2116       HFILL}},
2117     {&hf_fldb_voltype,
2118      {"voltype", "fldb.voltype", FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL}},
2119   };
2120
2121   static gint *ett[] = {
2122     &ett_fldb,
2123     &ett_fldb_vldbentry,
2124     &ett_fldb_afsnetaddr,
2125     &ett_fldb_siteflags,
2126     &ett_fldb_afsflags,
2127     &ett_fldb_vlconf_cell,
2128     &ett_fldb_afsNameString_t,
2129   };
2130
2131   proto_fldb = proto_register_protocol ("DCE/RPC FLDB", "FLDB", "fldb");
2132   proto_register_field_array (proto_fldb, hf, array_length (hf));
2133   proto_register_subtree_array (ett, array_length (ett));
2134 }
2135
2136 void
2137 proto_reg_handoff_fldb (void)
2138 {
2139   /* Register the protocol as dcerpc */
2140   dcerpc_init_uuid (proto_fldb, ett_fldb, &uuid_fldb, ver_fldb,
2141                     fldb_dissectors, hf_fldb_opnum);
2142 }