1 /* packet-dcerpc-fldb.c
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
10 * Wireshark - Network traffic analyzer
11 * By Gerald Combs <gerald@wireshark.org>
12 * Copyright 1998 Gerald Combs
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.
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.
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.
34 #ifdef HAVE_SYS_TYPES_H
35 #include <sys/types.h>
41 #include <epan/packet.h>
42 #include "packet-dcerpc.h"
43 #include "packet-dcerpc-dce122.h"
46 static int proto_fldb = -1;
47 static int hf_fldb_opnum = -1;
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;
59 static e_uuid_t uuid_fldb =
60 { 0x4d37f2dd, 0xed43, 0x0000, {0x02, 0xc0, 0x37, 0xcf, 0x2e, 0x00, 0x00,
63 static guint16 ver_fldb = 4;
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;
190 static const guint8 *st_str;
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
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
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
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"); \
230 if (check_col (pinfo->cinfo, COL_INFO)) \
231 col_add_fstr (pinfo->cinfo, COL_INFO, "%s st:%s ", name, st_str); \
233 if (check_col (pinfo->cinfo, COL_INFO)) \
234 col_append_fstr (pinfo->cinfo, COL_INFO, " st:%s ", st_str); \
238 dissect_afsnetaddr (tvbuff_t * tvb, int offset,
239 packet_info * pinfo, proto_tree * parent_tree,
242 proto_item *item = NULL;
243 proto_tree *tree = NULL;
244 int old_offset = offset;
251 item = proto_tree_add_text (parent_tree, tvb, offset, -1,
253 tree = proto_item_add_subtree (item, ett_fldb_afsnetaddr);
261 dissect_ndr_uint16 (tvb, offset, pinfo, tree, drep,
262 hf_fldb_afsnetaddr_type, &type);
266 if (check_col (pinfo->cinfo, COL_INFO))
267 col_append_fstr (pinfo->cinfo, COL_INFO, " Type:%u ", type);
270 for (i = 0; i < 14; i++)
274 dissect_ndr_uint8 (tvb, offset, pinfo, tree, drep,
275 hf_fldb_afsnetaddr_data, &data);
283 if (check_col (pinfo->cinfo, COL_INFO))
284 col_append_fstr (pinfo->cinfo, COL_INFO, " Port:%u",
289 if (check_col (pinfo->cinfo, COL_INFO))
290 col_append_fstr (pinfo->cinfo, COL_INFO, " IP:%u.", data);
293 if (check_col (pinfo->cinfo, COL_INFO))
294 col_append_fstr (pinfo->cinfo, COL_INFO, "%u.", data);
297 if (check_col (pinfo->cinfo, COL_INFO))
298 col_append_fstr (pinfo->cinfo, COL_INFO, "%u.", data);
301 if (check_col (pinfo->cinfo, COL_INFO))
302 col_append_fstr (pinfo->cinfo, COL_INFO, "%u", data);
312 offset += 14; /* space left after reading in type for the array. */
317 proto_item_set_len (item, offset - old_offset);
324 dissect_vlconf_cell (tvbuff_t * tvb, int offset,
325 packet_info * pinfo, proto_tree * parent_tree,
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;
336 guint32 cellid_high, cellid_low, numservers, spare1, spare2, spare3, spare4,
341 item = proto_tree_add_text (parent_tree, tvb, offset, -1,
343 tree = proto_item_add_subtree (item, ett_fldb_vlconf_cell);
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);
355 /* afsHyper CellID; identifier for that cell */
358 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
359 hf_fldb_vlconf_cell_cellid_high, &cellid_high);
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,
368 /* unsigned32 numServers; *Num active servers for the cell */
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);
375 /* afsNetAddr hostAddr[MAXVLHOSTSPERCELL]; *addresses for cell's servers */
376 for (i = 0; i < MAXVLHOSTSPERCELL; i++)
378 offset = dissect_afsnetaddr (tvb, offset, pinfo, tree, drep);
382 /* hostnam hostName[MAXVLHOSTSPERCELL]; *Names for cell's servers* */
384 for (i = 0; i < MAXVLHOSTSPERCELL; i++)
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);
394 /* unsigned32 spare1; */
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);
402 /* unsigned32 spare2; */
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);
409 /* unsigned32 spare3; */
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);
417 /* unsigned32 spare4; */
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);
424 /* unsigned32 spare5; */
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);
432 proto_item_set_len (item, offset - old_offset);
438 dissect_afsNameString_t (tvbuff_t * tvb, int offset,
439 packet_info * pinfo, proto_tree * parent_tree,
444 typedef [string] byte NameString_t[AFS_NAMEMAX];
447 proto_item *item = NULL;
448 proto_tree *tree = NULL;
449 int old_offset = offset;
450 #define AFS_NAMEMAX 256
452 const guint8 *namestring;
455 di = pinfo->private_data;
456 if (di->conformant_run)
464 item = proto_tree_add_text (parent_tree, tvb, offset, -1,
466 tree = proto_item_add_subtree (item, ett_fldb_afsNameString_t);
469 offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
470 hf_fldb_afsNameString_t_principalName_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)
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,
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);
489 if (check_col (pinfo->cinfo, COL_INFO))
490 col_append_fstr (pinfo->cinfo, COL_INFO,
491 " :FIXME!: Invalid string length of %u",
494 proto_item_set_len (item, offset - old_offset);
501 dissect_afsflags (tvbuff_t * tvb, int offset,
502 packet_info * pinfo, proto_tree * parent_tree,
505 proto_item *item = NULL;
506 proto_tree *tree = NULL;
507 int old_offset = offset;
512 item = proto_tree_add_text (parent_tree, tvb, offset, -1, "afsFlags:");
513 tree = proto_item_add_subtree (item, ett_fldb_afsflags);
517 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
518 hf_fldb_afsflags_flags, &afsflags);
521 col_append_str (pinfo->cinfo, COL_INFO, " afsFlags=");
522 if ((afsflags & AFS_FLAG_RETURNTOKEN) == AFS_FLAG_RETURNTOKEN)
524 col_append_str (pinfo->cinfo, COL_INFO, ":RETURNTOKEN");
526 if ((afsflags & AFS_FLAG_TOKENJUMPQUEUE) == AFS_FLAG_TOKENJUMPQUEUE)
528 col_append_str (pinfo->cinfo, COL_INFO, ":TOKENJUMPQUEUE");
530 if ((afsflags & AFS_FLAG_SKIPTOKEN) == AFS_FLAG_SKIPTOKEN)
532 col_append_str (pinfo->cinfo, COL_INFO, ":SKIPTOKEN");
534 if ((afsflags & AFS_FLAG_NOOPTIMISM) == AFS_FLAG_NOOPTIMISM)
536 col_append_str (pinfo->cinfo, COL_INFO, ":NOOPTIMISM");
538 if ((afsflags & AFS_FLAG_TOKENID) == AFS_FLAG_TOKENID)
540 col_append_str (pinfo->cinfo, COL_INFO, ":TOKENID");
542 if ((afsflags & AFS_FLAG_RETURNBLOCKER) == AFS_FLAG_RETURNBLOCKER)
544 col_append_str (pinfo->cinfo, COL_INFO, ":RETURNBLOCKER");
546 if ((afsflags & AFS_FLAG_ASYNCGRANT) == AFS_FLAG_ASYNCGRANT)
548 col_append_str (pinfo->cinfo, COL_INFO, ":ASYNCGRANT");
550 if ((afsflags & AFS_FLAG_NOREVOKE) == AFS_FLAG_NOREVOKE)
552 col_append_str (pinfo->cinfo, COL_INFO, ":NOREVOKE");
554 if ((afsflags & AFS_FLAG_MOVE_REESTABLISH) == AFS_FLAG_MOVE_REESTABLISH)
556 col_append_str (pinfo->cinfo, COL_INFO, ":MOVE_REESTABLISH");
558 if ((afsflags & AFS_FLAG_SERVER_REESTABLISH) ==
559 AFS_FLAG_SERVER_REESTABLISH)
561 col_append_str (pinfo->cinfo, COL_INFO, ":SERVER_REESTABLISH");
562 if ((afsflags & AFS_FLAG_NO_NEW_EPOCH) == AFS_FLAG_NO_NEW_EPOCH)
564 col_append_str (pinfo->cinfo, COL_INFO, ":NO_NEW_EPOCH");
566 if ((afsflags & AFS_FLAG_MOVE_SOURCE_OK) == AFS_FLAG_MOVE_SOURCE_OK)
568 col_append_str (pinfo->cinfo, COL_INFO, ":MOVE_SOURCE_OK");
570 if ((afsflags & AFS_FLAG_SYNC) == AFS_FLAG_SYNC)
572 col_append_str (pinfo->cinfo, COL_INFO, ":SYNC");
574 if ((afsflags & AFS_FLAG_ZERO) == AFS_FLAG_ZERO)
576 col_append_str (pinfo->cinfo, COL_INFO, ":ZERO");
578 if ((afsflags & AFS_FLAG_SKIPSTATUS) == AFS_FLAG_SKIPSTATUS)
580 col_append_str (pinfo->cinfo, COL_INFO, ":SKIPSTATUS");
582 if ((afsflags & AFS_FLAG_FORCEREVOCATIONS) ==
583 AFS_FLAG_FORCEREVOCATIONS)
585 col_append_str (pinfo->cinfo, COL_INFO, ":FORCEREVOCATIONS");
587 if ((afsflags & AFS_FLAG_FORCEVOLQUIESCE) ==
588 AFS_FLAG_FORCEVOLQUIESCE)
590 col_append_str (pinfo->cinfo, COL_INFO, ":FORCEVOLQUIESCE");
592 if ((afsflags & AFS_FLAG_SEC_SERVICE) == AFS_FLAG_SEC_SERVICE)
594 col_append_str (pinfo->cinfo, COL_INFO, ":SEC_SERVICE");
596 if ((afsflags & AFS_FLAG_CONTEXT_NEW_ACL_IF) ==
597 AFS_FLAG_CONTEXT_NEW_ACL_IF)
599 col_append_str (pinfo->cinfo, COL_INFO,
600 ":CONTEXT_NEW_ACL_IF");
606 proto_item_set_len (item, offset - old_offset);
614 dissect_siteflags (tvbuff_t * tvb, int offset,
615 packet_info * pinfo, proto_tree * parent_tree,
618 proto_item *item = NULL;
619 proto_tree *tree = NULL;
620 int old_offset = offset;
625 item = proto_tree_add_text (parent_tree, tvb, offset, -1, "SiteFlags:");
626 tree = proto_item_add_subtree (item, ett_fldb_siteflags);
630 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_siteflags,
635 col_append_str (pinfo->cinfo, COL_INFO, " SiteFlags");
636 if ((siteflags & VLSF_NEWREPSITE) == VLSF_NEWREPSITE)
638 col_append_str (pinfo->cinfo, COL_INFO, ":NEWREPSITE");
640 if ((siteflags & VLSF_SPARE1) == VLSF_SPARE1)
642 col_append_str (pinfo->cinfo, COL_INFO, ":SPARE1");
644 if ((siteflags & VLSF_SPARE2) == VLSF_SPARE2)
646 col_append_str (pinfo->cinfo, COL_INFO, ":SPARE2");
648 if ((siteflags & VLSF_SPARE3) == VLSF_SPARE3)
650 col_append_str (pinfo->cinfo, COL_INFO, ":SPARE3");
652 if ((siteflags & VLSF_SAMEASPREV) == VLSF_SAMEASPREV)
654 col_append_str (pinfo->cinfo, COL_INFO, ":SAMEASPREV");
656 if ((siteflags & VLSF_DEFINED) == VLSF_DEFINED)
658 col_append_str (pinfo->cinfo, COL_INFO, ":DEFINED");
660 if ((siteflags & VLSF_PARTIALADDRS) == VLSF_PARTIALADDRS)
662 col_append_str (pinfo->cinfo, COL_INFO, ":PARTIALADDRS ");
664 if ((siteflags & VLSF_ZEROIXHERE) == VLSF_ZEROIXHERE)
666 col_append_str (pinfo->cinfo, COL_INFO, ":ZEROIXHERE");
671 proto_item_set_len (item, offset - old_offset);
679 dissect_vldbentry (tvbuff_t * tvb, int offset,
680 packet_info * pinfo, proto_tree * parent_tree,
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,
692 e_uuid_t siteowner, siteobjid;
694 #define MAXNSERVERS 16
695 #define MAXVOLTYPES 8
696 #define MAXLOCKNAMELEN 64
700 item = proto_tree_add_text (parent_tree, tvb, offset, -1, "vldbentry:");
701 tree = proto_item_add_subtree (item, ett_fldb_vldbentry);
704 /* byte name[114]; Volume name */
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);
713 /* unsigned32 volumeType; */
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);
720 /*unsigned32 nServers; */
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);
727 /* afsNetAddr siteAddr[MAXNSERVERS]; 16 */
728 for (i = 0; i < MAXNSERVERS; i++)
730 /* if (check_col (pinfo->cinfo, COL_INFO))
731 col_append_fstr (pinfo->cinfo, COL_INFO, " Site:%u", i); */
733 offset = dissect_afsnetaddr (tvb, offset, pinfo, tree, drep);
736 /* unsigned32 sitePartition[MAXNSERVERS]; */
737 for (i = 0; i < MAXNSERVERS; i++)
740 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
741 hf_fldb_vldbentry_sitepartition, &sitepartition);
744 if (check_col (pinfo->cinfo, COL_INFO))
745 col_append_fstr (pinfo->cinfo, COL_INFO, " LFS:%u",
751 /* unsigned32 siteFlags[MAXNSERVERS]; */
752 for (i = 0; i < MAXNSERVERS; i++)
754 offset = dissect_siteflags (tvb, offset, pinfo, tree, drep);
757 /* unsigned32 sitemaxReplicaLatency[MAXNSERVERS]; */
758 for (i = 0; i < MAXNSERVERS; i++)
761 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
762 hf_fldb_vldbentry_sitemaxreplicalatency,
763 &sitemaxreplicalatency);
764 if (sitemaxreplicalatency)
766 if (check_col (pinfo->cinfo, COL_INFO))
767 col_append_fstr (pinfo->cinfo, COL_INFO, " MaxRepLat%d:%u", i,
768 sitemaxreplicalatency);
771 /* kerb_princ_name sitePrincipal[MAXNSERVERS]; principal */
772 for (i = 0; i < MAXNSERVERS; i++)
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);
778 if (check_col (pinfo->cinfo, COL_INFO))
779 col_append_fstr (pinfo->cinfo, COL_INFO, " Princ: %s", siteprincipal);
782 /* afsUUID siteOwner[MAXNSERVERS]; */
784 for (i = 0; i < MAXNSERVERS; i++)
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]);
800 /* afsUUID siteObjID[MAXNSERVERS]; */
801 for (i = 0; i < MAXNSERVERS; i++)
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]);
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++)
823 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
824 hf_fldb_vldbentry_volids_high, &volids_high);
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,
834 /* unsigned32 VolTypes[MAXVOLTYPES]; */
835 for (i = 0; i < MAXVOLTYPES; i++)
838 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
839 hf_fldb_vldbentry_voltypes, &voltypes);
842 if (check_col (pinfo->cinfo, COL_INFO))
843 col_append_fstr (pinfo->cinfo, COL_INFO, " VolTypes:%d:%u", i,
848 /* afsHyper cloneId; Used during cloning */
850 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
851 hf_fldb_vldbentry_cloneid_high, &cloneid_high);
853 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
854 hf_fldb_vldbentry_cloneid_low, &cloneid_low);
857 if (check_col (pinfo->cinfo, COL_INFO))
858 col_append_fstr (pinfo->cinfo, COL_INFO, " CloneId:%u", cloneid_low);
861 /* unsigned32 flags; General flags */
862 offset = dissect_afsflags (tvb, offset, pinfo, tree, drep);
866 /* unsigned32 maxTotalLatency; */
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",
875 /* unsigned32 hardMaxTotalLatency; */
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);
885 /* unsigned32 minimumPounceDally; */
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",
895 /* unsigned32 defaultMaxReplicaLatency; */
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);
904 /* unsigned32 reclaimDally; */
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",
913 /* unsigned32 WhenLocked; */
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);
921 /* unsigned32 spare1; */
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);
928 /* unsigned32 spare2; */
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);
936 /* unsigned32 spare3; */
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);
943 /* unsigned32 spare4; */
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);
951 /* byte LockerName[MAXLOCKNAMELEN]; */
952 proto_tree_add_string (tree, hf_fldb_vldbentry_lockername, tvb, offset,
953 MAXLOCKNAMELEN, tvb_get_ptr (tvb, offset,
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);
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);
970 proto_item_set_len (item, offset - old_offset);
978 fldb_dissect_getcellinfo_resp (tvbuff_t * tvb, int offset,
979 packet_info * pinfo, proto_tree * tree,
984 di = pinfo->private_data;
985 if (di->conformant_run)
991 /* [out] vlconf_cell *MyCell */
992 offset = dissect_vlconf_cell (tvb, offset, pinfo, tree, drep);
1001 fldb_dissect_getentrybyname_rqst (tvbuff_t * tvb, int offset,
1002 packet_info * pinfo, proto_tree * tree,
1007 di = pinfo->private_data;
1008 if (di->conformant_run)
1015 * [in] volumeName volName,
1019 offset = dissect_afsNameString_t (tvb, offset, pinfo, tree, drep);
1027 fldb_dissect_getentrybyname_resp (tvbuff_t * tvb, int offset,
1028 packet_info * pinfo, proto_tree * tree,
1032 [out] vldbentry *entry
1036 di = pinfo->private_data;
1037 if (di->conformant_run)
1042 offset = dissect_vldbentry (tvb, offset, pinfo, tree, drep);
1044 MACRO_ST_CLEAR ("GetEntryByName reply");
1049 fldb_dissect_getsiteinfo_rqst (tvbuff_t * tvb, int offset,
1050 packet_info * pinfo, proto_tree * tree,
1055 di = pinfo->private_data;
1056 if (di->conformant_run)
1064 * [in] afsNetAddr *OldAddr,
1068 offset = dissect_afsnetaddr (tvb, offset, pinfo, tree, drep);
1073 * [in] afsNetAddr *OldAddr,
1082 fldb_dissect_getsiteinfo_resp (tvbuff_t * tvb, int offset,
1083 packet_info * pinfo, proto_tree * tree,
1088 const guint8 *namestring;
1089 e_uuid_t owner, objid;
1090 guint32 creationquota, creationuses, deletedflag, spare2, spare3, spare4,
1093 di = pinfo->private_data;
1094 if (di->conformant_run)
1100 [out] siteDessiib *FullSiteInfo
1101 afsNetAddr Addr[ADDRSINSITE];
1102 byte KerbPrin[MAXKPRINCIPALLEN] 64;
1105 unsigned32 CreationQuota;
1106 unsigned32 CreationUses;
1107 unsigned32 DeletedFlag;
1114 offset = dissect_afsnetaddr (tvb, offset, pinfo, tree, drep);
1116 /* handle byte KerbPrin[64]. */
1118 offset += 48; /* part of kerbprin before name... */
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);
1123 if (check_col (pinfo->cinfo, COL_INFO))
1124 col_append_fstr (pinfo->cinfo, COL_INFO, " %s", namestring);
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],
1136 dissect_ndr_uuid_t (tvb, offset, pinfo, tree, drep, hf_fldb_uuid_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],
1147 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_creationquota,
1150 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_creationuses,
1153 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_deletedflag,
1156 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_spare2,
1159 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_spare3,
1162 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_spare4,
1165 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_spare5,
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,
1174 MACRO_ST_CLEAR ("GetSiteInfo reply");
1181 fldb_dissect_listentry_rqst (tvbuff_t * tvb, int offset,
1182 packet_info * pinfo, proto_tree * tree,
1187 guint32 var1, previous_index;
1189 di = pinfo->private_data;
1190 if (di->conformant_run)
1197 * [in] unsigned32 previous_index,
1198 * [out] unsigned32 *count,
1199 * [out] unsigned32 *next_index,
1200 * [out] vldbentry *entry
1204 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1205 hf_fldb_listentry_rqst_previous_index,
1208 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1209 hf_fldb_listentry_rqst_var1, &var1);
1212 if (check_col (pinfo->cinfo, COL_INFO))
1213 col_append_fstr (pinfo->cinfo, COL_INFO, " :PrevIndex: %u",
1222 fldb_dissect_listentry_resp (tvbuff_t * tvb, int offset,
1223 packet_info * pinfo, proto_tree * tree,
1227 guint32 count, next_index;
1229 di = pinfo->private_data;
1230 if (di->conformant_run)
1237 * [out] unsigned32 *count,
1238 * [out] unsigned32 *next_index,
1239 * [out] vldbentry *entry
1243 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1244 hf_fldb_listentry_resp_count, &count);
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);
1254 fldb_dissect_setlock_rqst (tvbuff_t * tvb, int offset,
1255 packet_info * pinfo, proto_tree * tree,
1259 guint32 fsid_high, fsid_low, voltype, voloper;
1261 di = pinfo->private_data;
1262 if (di->conformant_run)
1269 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1270 hf_fldb_setlock_rqst_fsid_high, &fsid_high);
1272 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1273 hf_fldb_setlock_rqst_fsid_low, &fsid_low);
1275 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1276 hf_fldb_setlock_rqst_voltype, &voltype);
1278 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1279 hf_fldb_setlock_rqst_voloper, &voloper);
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);
1290 fldb_dissect_setlock_resp (tvbuff_t * tvb, int offset,
1291 packet_info * pinfo, proto_tree * tree,
1296 di = pinfo->private_data;
1297 if (di->conformant_run)
1302 MACRO_ST_CLEAR ("SetLock reply");
1309 fldb_dissect_deleteentry_resp (tvbuff_t * tvb, int offset,
1310 packet_info * pinfo, proto_tree * tree,
1315 di = pinfo->private_data;
1316 if (di->conformant_run)
1322 MACRO_ST_CLEAR ("DeleteEntry reply");
1328 fldb_dissect_deleteentry_rqst (tvbuff_t * tvb, int offset,
1329 packet_info * pinfo, proto_tree * tree,
1334 [in] afsHyper *Volid,
1335 [in] unsigned32 voltype
1339 guint32 fsid_high, fsid_low, voltype, voloper;
1341 di = pinfo->private_data;
1342 if (di->conformant_run)
1350 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1351 hf_fldb_deleteentry_rqst_fsid_high, &fsid_high);
1353 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1354 hf_fldb_deleteentry_rqst_fsid_low, &fsid_low);
1356 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1357 hf_fldb_deleteentry_rqst_voltype, &voltype);
1359 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1360 hf_fldb_deleteentry_rqst_voloper, &voloper);
1362 if (check_col (pinfo->cinfo, COL_INFO))
1363 col_append_fstr (pinfo->cinfo, COL_INFO, " :FSID:%u/%u", fsid_high,
1372 fldb_dissect_createentry_resp (tvbuff_t * tvb, int offset,
1373 packet_info * pinfo, proto_tree * tree,
1378 di = pinfo->private_data;
1379 if (di->conformant_run)
1384 MACRO_ST_CLEAR ("CreateEntry reply");
1390 fldb_dissect_createentry_rqst (tvbuff_t * tvb, int offset,
1391 packet_info * pinfo, proto_tree * tree,
1396 di = pinfo->private_data;
1397 if (di->conformant_run)
1403 offset = dissect_vldbentry (tvb, offset, pinfo, tree, drep);
1409 fldb_dissect_getentrybyid_rqst (tvbuff_t * tvb, int offset,
1410 packet_info * pinfo, proto_tree * tree,
1415 guint32 volid_high, volid_low, voltype;
1417 di = pinfo->private_data;
1418 if (di->conformant_run)
1426 [in] afsHyper *Volid,
1427 [in] unsigned32 voltype,
1431 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_volid_high,
1434 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_volid_low,
1438 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_voltype,
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);
1450 fldb_dissect_getnewvolumeids_rqst (tvbuff_t * tvb, int offset,
1451 packet_info * pinfo, proto_tree * tree,
1454 /* [in] unsigned32 numWanted,
1455 [in] afsNetAddr *ServerAddr,
1460 di = pinfo->private_data;
1461 if (di->conformant_run)
1467 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_numwanted,
1469 if (check_col (pinfo->cinfo, COL_INFO))
1470 col_append_fstr (pinfo->cinfo, COL_INFO, " numWanted:%u", numwanted);
1473 offset = dissect_afsnetaddr (tvb, offset, pinfo, tree, drep);
1481 fldb_dissect_getentrybyid_resp (tvbuff_t * tvb, int offset,
1482 packet_info * pinfo, proto_tree * tree,
1487 di = pinfo->private_data;
1488 if (di->conformant_run)
1494 offset = dissect_vldbentry (tvb, offset, pinfo, tree, drep);
1499 fldb_dissect_releaselock_resp (tvbuff_t * tvb, int offset,
1500 packet_info * pinfo, proto_tree * tree,
1505 di = pinfo->private_data;
1506 if (di->conformant_run)
1511 MACRO_ST_CLEAR ("ReleaseLock reply");
1519 fldb_dissect_releaselock_rqst (tvbuff_t * tvb, int offset,
1520 packet_info * pinfo, proto_tree * tree,
1524 guint32 fsid_high, fsid_low, voltype, voloper;
1526 di = pinfo->private_data;
1527 if (di->conformant_run)
1534 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1535 hf_fldb_releaselock_rqst_fsid_high, &fsid_high);
1537 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1538 hf_fldb_releaselock_rqst_fsid_low, &fsid_low);
1540 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1541 hf_fldb_releaselock_rqst_voltype, &voltype);
1543 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1544 hf_fldb_releaselock_rqst_voloper, &voloper);
1546 if (check_col (pinfo->cinfo, COL_INFO))
1547 col_append_fstr (pinfo->cinfo, COL_INFO, " :FSID:%u/%u", fsid_high,
1554 fldb_dissect_replaceentry_resp (tvbuff_t * tvb, int offset,
1555 packet_info * pinfo, proto_tree * tree,
1560 di = pinfo->private_data;
1561 if (di->conformant_run)
1567 MACRO_ST_CLEAR ("ReplaceEntry reply");
1573 fldb_dissect_getnextserversbyid_resp (tvbuff_t * tvb, int offset,
1574 packet_info * pinfo, proto_tree * tree,
1579 guint32 nextstartp, flagsp;
1581 di = pinfo->private_data;
1582 if (di->conformant_run)
1591 /* [out] unsigned32 *nextStartP, */
1594 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_nextstartp,
1596 if (check_col (pinfo->cinfo, COL_INFO))
1597 col_append_fstr (pinfo->cinfo, COL_INFO, " nextStartP:%u", nextstartp);
1600 /* [out] vldbentry *entry, */
1601 offset = dissect_vldbentry (tvb, offset, pinfo, tree, drep);
1604 /* [out] unsigned32 *flagsP */
1607 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep, hf_fldb_flagsp,
1610 if (check_col (pinfo->cinfo, COL_INFO))
1611 col_append_fstr (pinfo->cinfo, COL_INFO, " flagsp:%u", flagsp);
1617 fldb_dissect_replaceentry_rqst (tvbuff_t * tvb, int offset,
1618 packet_info * pinfo, proto_tree * tree,
1622 guint32 fsid_high, fsid_low, voltype;
1624 di = pinfo->private_data;
1625 if (di->conformant_run)
1631 * [in] afsHyper *Volid,
1632 * [in] unsigned32 voltype,
1633 * [in] vldbentry *newentry,
1634 * [in] unsigned32 ReleaseType
1638 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1639 hf_fldb_replaceentry_rqst_fsid_high, &fsid_high);
1641 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1642 hf_fldb_replaceentry_rqst_fsid_low, &fsid_low);
1644 dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
1645 hf_fldb_replaceentry_rqst_voltype, &voltype);
1648 if (check_col (pinfo->cinfo, COL_INFO))
1649 col_append_fstr (pinfo->cinfo, COL_INFO, " FSID:%u/%u Name:", fsid_high,
1652 offset = dissect_vldbentry (tvb, offset, pinfo, tree, drep);
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},
1701 proto_register_fldb (void)
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,
1722 {&hf_fldb_setlock_rqst_voloper,
1723 {"voloper", "fldb.setlock_rqst_voloper", FT_UINT32, BASE_DEC, NULL,
1725 {&hf_fldb_setlock_resp_st,
1726 {"Error", "fldb.setlock_resp_st", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1728 {&hf_fldb_setlock_resp_st2,
1729 {"Error", "fldb.setlock_resp_st2", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
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,
1737 {&hf_fldb_listentry_resp_count,
1738 {"Count", "fldb.listentry_resp_count", FT_UINT32, BASE_DEC, NULL, 0x0,
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,
1749 {&hf_fldb_listentry_resp_voltype,
1750 {"VolType", "fldb.listentry_resp_voltype", FT_UINT32, BASE_HEX, NULL,
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,
1758 {&hf_fldb_createentry_rqst_key_t,
1759 {"Volume", "fldb.createentry_rqst_key_t", FT_STRING, BASE_NONE, NULL,
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,
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,
1806 {&hf_fldb_replaceentry_resp_st2,
1807 {"Error", "fldb.replaceentry_resp_st2", FT_UINT32, BASE_DEC, NULL,
1809 {&hf_fldb_getentrybyname_resp_volumetype,
1810 {"fldb_getentrybyname_resp_volumetype",
1811 "fldb.getentrybyname_resp_volumetype", FT_UINT32, BASE_DEC, NULL,
1813 {&hf_fldb_getentrybyname_resp_numservers,
1814 {"fldb_getentrybyname_resp_numservers",
1815 "fldb.getentrybyname_resp_numservers", FT_UINT32, BASE_DEC, NULL,
1817 {&hf_fldb_getentrybyname_resp_sitecookies,
1818 {"fldb_getentrybyname_resp_sitecookies",
1819 "fldb.getentrybyname_resp_sitecookies", FT_UINT32, BASE_DEC, NULL,
1821 {&hf_fldb_getentrybyname_resp_sitepartition,
1822 {"fldb_getentrybyname_resp_sitepartition",
1823 "fldb.getentrybyname_resp_sitepartition", FT_UINT32, BASE_DEC, NULL,
1825 {&hf_fldb_getentrybyname_resp_siteflags,
1826 {"fldb_getentrybyname_resp_siteflags",
1827 "fldb.getentrybyname_resp_siteflags", FT_UINT32, BASE_DEC, NULL, 0x0,
1829 {&hf_fldb_getentrybyname_resp_sitemaxreplat,
1830 {"fldb_getentrybyname_resp_sitemaxreplat",
1831 "fldb.getentrybyname_resp_sitemaxreplat", FT_UINT32, BASE_DEC, NULL,
1833 {&hf_fldb_getentrybyname_resp_volid_high,
1834 {"fldb_getentrybyname_resp_volid_high",
1835 "fldb.getentrybyname_resp_volid_high", FT_UINT32, BASE_DEC, NULL,
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,
1841 {&hf_fldb_getentrybyname_resp_voltype,
1842 {"fldb_getentrybyname_resp_voltype",
1843 "fldb.getentrybyname_resp_voltype", FT_UINT32, BASE_DEC, NULL, 0x0,
1845 {&hf_fldb_getentrybyname_resp_cloneid_high,
1846 {"fldb_getentrybyname_resp_cloneid_high",
1847 "fldb.getentrybyname_resp_cloneid_high", FT_UINT32, BASE_DEC, NULL,
1849 {&hf_fldb_getentrybyname_resp_cloneid_low,
1850 {"fldb_getentrybyname_resp_cloneid_low",
1851 "fldb.getentrybyname_resp_cloneid_low", FT_UINT32, BASE_DEC, NULL,
1853 {&hf_fldb_getentrybyname_resp_flags,
1854 {"fldb_getentrybyname_resp_flags",
1855 "fldb.getentrybyname_resp_flags", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1857 {&hf_fldb_getentrybyname_resp_maxtotallat,
1858 {"fldb_getentrybyname_resp_maxtotallat",
1859 "fldb.getentrybyname_resp_maxtotallat", FT_UINT32, BASE_DEC, NULL,
1861 {&hf_fldb_getentrybyname_resp_hardmaxtotlat,
1862 {"fldb_getentrybyname_resp_hardmaxtotlat",
1863 "fldb.getentrybyname_resp_hardmaxtotlat", FT_UINT32, BASE_DEC, NULL,
1865 {&hf_fldb_getentrybyname_resp_minpouncedally,
1866 {"fldb_getentrybyname_resp_minpouncedally",
1867 "fldb.getentrybyname_resp_minpouncedally", FT_UINT32, BASE_DEC, NULL,
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,
1877 {&hf_fldb_getentrybyname_resp_whenlocked,
1878 {"fldb_getentrybyname_resp_whenlocked",
1879 "fldb.getentrybyname_resp_whenlocked", FT_UINT32, BASE_DEC, NULL,
1881 {&hf_fldb_getentrybyname_resp_spare1,
1882 {"fldb_getentrybyname_resp_spare1",
1883 "fldb.getentrybyname_resp_spare1", FT_UINT32, BASE_DEC, NULL, 0x0,
1885 {&hf_fldb_getentrybyname_resp_spare2,
1886 {"fldb_getentrybyname_resp_spare2",
1887 "fldb.getentrybyname_resp_spare2", FT_UINT32, BASE_DEC, NULL, 0x0,
1889 {&hf_fldb_getentrybyname_resp_spare3,
1890 {"fldb_getentrybyname_resp_spare3",
1891 "fldb.getentrybyname_resp_spare3", FT_UINT32, BASE_DEC, NULL, 0x0,
1893 {&hf_fldb_getentrybyname_resp_spare4,
1894 {"fldb_getentrybyname_resp_spare4",
1895 "fldb.getentrybyname_resp_spare4", FT_UINT32, BASE_DEC, NULL, 0x0,
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,
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,
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}},
1912 {"Operation", "fldb.opnum", FT_UINT16, BASE_DEC, NULL, 0x0, NULL,
1914 {&hf_fldb_vldbentry_volumename,
1915 {"VolumeName", "fldb.vldbentry.volumename", FT_STRING, BASE_NONE, NULL, 0x0,
1917 {&hf_fldb_vldbentry_volumetype,
1918 {"VolumeType", "fldb.vldbentry.volumetype", FT_UINT32, BASE_DEC, NULL, 0x0,
1920 {&hf_fldb_vldbentry_nservers,
1921 {"Number of Servers", "fldb.vldbentry.nservers", FT_UINT32, BASE_DEC, NULL,
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,
1928 {&hf_fldb_vldbentry_sitepartition,
1929 {"Site Partition", "fldb.vldbentry.sitepartition", FT_UINT32, BASE_DEC, NULL,
1931 {&hf_fldb_siteflags,
1932 {"Site Flags", "fldb.vldbentry.siteflags", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
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,
1940 {&hf_fldb_vldbentry_siteowner,
1941 {"Site Owner", "fldb.vldbentry.siteowner", FT_GUID, BASE_NONE, NULL, 0x0,
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,
1949 {&hf_fldb_vldbentry_volids_low,
1950 {"VolIDs low", "fldb.vldbentry.volidslow", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1952 {&hf_fldb_vldbentry_voltypes,
1953 {"VolTypes", "fldb.vldbentry.voltypes", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1955 {&hf_fldb_vldbentry_cloneid_high,
1956 {"CloneID High", "fldb.vldbentry.cloneidhigh", FT_UINT32, BASE_DEC, NULL, 0x0,
1958 {&hf_fldb_vldbentry_cloneid_low,
1959 {"CloneID Low", "fldb.vldbentry.cloneidlow", FT_UINT32, BASE_DEC, NULL, 0x0,
1961 {&hf_fldb_afsflags_flags,
1962 {"AFS Flags", "fldb.vldbentry.afsflags", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
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,
1979 {&hf_fldb_vldbentry_whenlocked,
1980 {"When Locked", "fldb.vldbentry.whenlocked", FT_UINT32, BASE_DEC, NULL, 0x0,
1982 {&hf_fldb_vldbentry_spare1,
1983 {"Spare 1", "fldb.vldbentry.spare1", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1985 {&hf_fldb_vldbentry_spare2,
1986 {"Spare 2", "fldb.vldbentry.spare2", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1988 {&hf_fldb_vldbentry_spare3,
1989 {"Spare 3", "fldb.vldbentry.spare3", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1991 {&hf_fldb_vldbentry_spare4,
1992 {"Spare 4", "fldb.vldbentry.spare4", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1994 {&hf_fldb_vldbentry_lockername,
1995 {"Locker Name", "fldb.vldbentry.lockername", FT_STRING, BASE_NONE, NULL, 0x0,
1997 {&hf_fldb_vldbentry_charspares,
1998 {"Char Spares", "fldb.vldbentry.charspares", FT_STRING, BASE_NONE, NULL, 0x0,
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,
2005 {&hf_fldb_vlconf_cell_cellid_low,
2006 {"CellID Low", "fldb.vlconf.cellidlow", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
2008 {&hf_fldb_vlconf_cell_numservers,
2009 {"Number of Servers", "fldb.vlconf.numservers", FT_UINT32, BASE_DEC, NULL,
2011 {&hf_fldb_vlconf_cell_hostname,
2012 {"hostName", "fldb.vlconf.hostname", FT_STRING, BASE_NONE, NULL, 0x0, NULL,
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}},
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,
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,
2041 {&hf_dcerpc_error_status,
2042 {"Error Status", "fldb.NameString_principal", FT_UINT32, BASE_DEC, NULL,
2045 {"Error Status 2", "fldb.error_st", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
2047 {&hf_fldb_creationquota,
2048 {"creation quota", "fldb.creationquota", FT_UINT32, BASE_DEC, NULL, 0x0,
2050 {&hf_fldb_creationuses,
2051 {"creation uses", "fldb.creationuses", FT_UINT32, BASE_DEC, NULL, 0x0,
2053 {&hf_fldb_deletedflag,
2054 {"deletedflag", "fldb.deletedflag", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
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,
2065 {&hf_fldb_numwanted,
2066 {"number wanted", "fldb.numwanted", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
2069 {"spare2", "fldb.spare2", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
2071 {"spare3", "fldb.spare3", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
2073 {"spare4", "fldb.spare4", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
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",
2079 {&hf_fldb_uuid_owner,
2080 {"owner", "fldb.uuid_owner", FT_GUID, BASE_NONE, NULL, 0x0, "UUID",
2082 {&hf_fldb_volid_high,
2083 {"volid high", "fldb.volid_high", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
2085 {&hf_fldb_volid_low,
2086 {"volid low", "fldb.volid_low", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
2089 {"voltype", "fldb.voltype", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
2092 static gint *ett[] = {
2094 &ett_fldb_vldbentry,
2095 &ett_fldb_afsnetaddr,
2096 &ett_fldb_siteflags,
2098 &ett_fldb_vlconf_cell,
2099 &ett_fldb_afsNameString_t,
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));
2108 proto_reg_handoff_fldb (void)
2110 /* Register the protocol as dcerpc */
2111 dcerpc_init_uuid (proto_fldb, ett_fldb, &uuid_fldb, ver_fldb,
2112 fldb_dissectors, hf_fldb_opnum);