HACK: 2nd try to match RowsetProperties
[wireshark-wip.git] / epan / dissectors / packet-dcerpc-fldb.c
blob3a36e4be8f0415ea37665034baad7ce3e7d81935
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
8 * $Id$
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
29 #include "config.h"
32 #include <glib.h>
33 #include <epan/packet.h>
34 #include "packet-dcerpc.h"
35 #include "packet-dcerpc-dce122.h"
38 static int proto_fldb = -1;
39 static int hf_fldb_opnum = -1;
41 static gint ett_fldb = -1;
42 static gint ett_fldb_vldbentry = -1;
43 static gint ett_fldb_afsnetaddr = -1;
44 static gint ett_fldb_siteflags = -1;
45 static gint ett_fldb_afsflags = -1;
46 static gint ett_fldb_vlconf_cell = -1;
47 static gint ett_fldb_afsNameString_t = -1;
51 static e_uuid_t uuid_fldb =
52 { 0x4d37f2dd, 0xed43, 0x0000, {0x02, 0xc0, 0x37, 0xcf, 0x2e, 0x00, 0x00,
53 0x01}
55 static guint16 ver_fldb = 4;
57 #if 0
58 static int hf_fldb_getentrybyname_rqst_var1 = -1;
59 static int hf_fldb_getentrybyname_rqst_key_size = -1;
60 #endif
61 static int hf_fldb_releaselock_rqst_fsid_high = -1;
62 static int hf_fldb_releaselock_rqst_fsid_low = -1;
63 static int hf_fldb_releaselock_rqst_voltype = -1;
64 static int hf_fldb_releaselock_rqst_voloper = -1;
65 static int hf_fldb_setlock_rqst_fsid_high = -1;
66 static int hf_fldb_setlock_rqst_fsid_low = -1;
67 static int hf_fldb_setlock_rqst_voltype = -1;
68 static int hf_fldb_setlock_rqst_voloper = -1;
69 #if 0
70 static int hf_fldb_setlock_resp_st = -1;
71 static int hf_fldb_setlock_resp_st2 = -1;
72 #endif
73 static int hf_fldb_listentry_rqst_previous_index = -1;
74 static int hf_fldb_listentry_rqst_var1 = -1;
75 static int hf_fldb_listentry_resp_count = -1;
76 static int hf_fldb_listentry_resp_next_index = -1;
77 #if 0
78 static int hf_fldb_listentry_resp_key_t = -1;
79 static int hf_fldb_listentry_resp_key_size = -1;
80 static int hf_fldb_listentry_resp_key_t2 = -1;
81 static int hf_fldb_listentry_resp_key_size2 = -1;
82 static int hf_fldb_listentry_resp_voltype = -1;
83 static int hf_fldb_createentry_rqst_key_t = -1;
84 static int hf_fldb_createentry_rqst_key_size = -1;
85 #endif
86 static int hf_fldb_deleteentry_rqst_fsid_high = -1;
87 static int hf_fldb_deleteentry_rqst_fsid_low = -1;
88 static int hf_fldb_deleteentry_rqst_voltype = -1;
89 static int hf_fldb_deleteentry_rqst_voloper = -1;
90 #if 0
91 static int hf_fldb_getentrybyid_rqst_fsid_high = -1;
92 static int hf_fldb_getentrybyid_rqst_fsid_low = -1;
93 static int hf_fldb_getentrybyid_rqst_voltype = -1;
94 static int hf_fldb_getentrybyid_rqst_voloper = -1;
95 #endif
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 #if 0
100 static int hf_fldb_replaceentry_rqst_key_size = -1;
101 static int hf_fldb_replaceentry_rqst_key_t = -1;
102 static int hf_fldb_replaceentry_resp_st = -1;
103 static int hf_fldb_replaceentry_resp_st2 = -1;
104 #endif
105 #if 0
106 static int hf_fldb_getentrybyname_resp_volumetype = -1;
107 static int hf_fldb_getentrybyname_resp_numservers = -1;
108 static int hf_fldb_getentrybyname_resp_sitecookies = -1;
109 static int hf_fldb_getentrybyname_resp_sitepartition = -1;
110 static int hf_fldb_getentrybyname_resp_siteflags = -1;
111 static int hf_fldb_getentrybyname_resp_sitemaxreplat = -1;
112 static int hf_fldb_getentrybyname_resp_volid_high = -1;
113 static int hf_fldb_getentrybyname_resp_volid_low = -1;
114 static int hf_fldb_getentrybyname_resp_voltype = -1;
115 static int hf_fldb_getentrybyname_resp_cloneid_high = -1;
116 static int hf_fldb_getentrybyname_resp_cloneid_low = -1;
117 static int hf_fldb_getentrybyname_resp_flags = -1;
118 static int hf_fldb_getentrybyname_resp_maxtotallat = -1;
119 static int hf_fldb_getentrybyname_resp_hardmaxtotlat = -1;
120 static int hf_fldb_getentrybyname_resp_minpouncedally = -1;
121 static int hf_fldb_getentrybyname_resp_defaultmaxreplat = -1;
122 static int hf_fldb_getentrybyname_resp_reclaimdally = -1;
123 static int hf_fldb_getentrybyname_resp_whenlocked = -1;
124 static int hf_fldb_getentrybyname_resp_spare1 = -1;
125 static int hf_fldb_getentrybyname_resp_spare2 = -1;
126 static int hf_fldb_getentrybyname_resp_spare3 = -1;
127 static int hf_fldb_getentrybyname_resp_spare4 = -1;
128 static int hf_fldb_getentrybyname_resp_key_t = -1;
129 static int hf_fldb_getentrybyname_resp_key_size = -1;
130 static int hf_fldb_getentrybyname_resp_test = -1;
131 static int hf_dcerpc_error_status = -1;
132 #endif
133 static int hf_fldb_vldbentry_volumename = -1;
134 static int hf_fldb_vldbentry_volumetype = -1;
135 static int hf_fldb_vldbentry_nservers = -1;
136 static int hf_fldb_vldbentry_sitepartition = -1;
137 static int hf_fldb_afsnetaddr_type = -1;
138 static int hf_fldb_afsnetaddr_data = -1;
139 static int hf_fldb_siteflags = -1;
140 static int hf_fldb_vldbentry_sitemaxreplicalatency = -1;
141 static int hf_fldb_vldbentry_siteprincipal = -1;
142 static int hf_fldb_vldbentry_siteowner = -1;
143 static int hf_fldb_vldbentry_siteobjid = -1;
144 static int hf_fldb_vldbentry_volids_high = -1;
145 static int hf_fldb_vldbentry_volids_low = -1;
146 static int hf_fldb_vldbentry_voltypes = -1;
147 static int hf_fldb_vldbentry_cloneid_high = -1;
148 static int hf_fldb_vldbentry_cloneid_low = -1;
149 static int hf_fldb_afsflags_flags = -1;
150 static int hf_fldb_vldbentry_maxtotallatency = -1;
151 static int hf_fldb_vldbentry_hardmaxtotallatency = -1;
152 static int hf_fldb_vldbentry_minimumpouncedally = -1;
153 static int hf_fldb_vldbentry_defaultmaxreplicalatency = -1;
154 static int hf_fldb_vldbentry_reclaimdally = -1;
155 static int hf_fldb_vldbentry_whenlocked = -1;
156 static int hf_fldb_vldbentry_spare1 = -1;
157 static int hf_fldb_vldbentry_spare2 = -1;
158 static int hf_fldb_vldbentry_spare3 = -1;
159 static int hf_fldb_vldbentry_spare4 = -1;
160 static int hf_fldb_vldbentry_lockername = -1;
161 static int hf_fldb_vldbentry_charspares = -1;
162 static int hf_fldb_vlconf_cell_name = -1;
163 static int hf_fldb_vlconf_cell_cellid_high = -1;
164 static int hf_fldb_vlconf_cell_cellid_low = -1;
165 static int hf_fldb_vlconf_cell_numservers = -1;
166 static int hf_fldb_vlconf_cell_hostname = -1;
167 static int hf_fldb_vlconf_cell_spare1 = -1;
168 static int hf_fldb_vlconf_cell_spare2 = -1;
169 static int hf_fldb_vlconf_cell_spare3 = -1;
170 static int hf_fldb_vlconf_cell_spare4 = -1;
171 static int hf_fldb_vlconf_cell_spare5 = -1;
172 static int hf_fldb_flagsp = -1;
173 static int hf_fldb_nextstartp = -1;
174 static int hf_fldb_afsNameString_t_principalName_string = -1;
175 static int hf_fldb_afsNameString_t_principalName_size = -1;
176 /* static int hf_fldb_afsNameString_t_principalName_size2 = -1; */
177 static int hf_fldb_namestring = -1;
178 static int hf_error_st = -1;
179 static int hf_fldb_creationquota = -1;
180 static int hf_fldb_creationuses = -1;
181 static int hf_fldb_deletedflag = -1;
182 /* static int hf_fldb_namestring_size = -1; */
183 static int hf_fldb_numwanted = -1;
184 static int hf_fldb_spare2 = -1;
185 static int hf_fldb_spare3 = -1;
186 static int hf_fldb_spare4 = -1;
187 static int hf_fldb_spare5 = -1;
188 static int hf_fldb_uuid_objid = -1;
189 static int hf_fldb_uuid_owner = -1;
190 static int hf_fldb_volid_high = -1;
191 static int hf_fldb_volid_low = -1;
192 static int hf_fldb_voltype = -1;
193 static guint32 st;
194 static const guint8 *st_str;
196 #define AFS_FLAG_RETURNTOKEN 1
197 #define AFS_FLAG_TOKENJUMPQUEUE 2
198 #define AFS_FLAG_SKIPTOKEN 4
199 #define AFS_FLAG_NOOPTIMISM 0x8
200 #define AFS_FLAG_TOKENID 0x10
201 #define AFS_FLAG_RETURNBLOCKER 0x20
202 #define AFS_FLAG_ASYNCGRANT 0x40
203 #define AFS_FLAG_NOREVOKE 0x80
204 #define AFS_FLAG_MOVE_REESTABLISH 0x100
205 #define AFS_FLAG_SERVER_REESTABLISH 0x200
206 #define AFS_FLAG_NO_NEW_EPOCH 0x400
207 #define AFS_FLAG_MOVE_SOURCE_OK 0x800
208 #define AFS_FLAG_SYNC 0x1000
209 #define AFS_FLAG_ZERO 0x2000
210 #define AFS_FLAG_SKIPSTATUS 0x4000
211 #define AFS_FLAG_FORCEREVOCATIONS 0x8000
212 #define AFS_FLAG_FORCEVOLQUIESCE 0x10000
213 #define AFS_FLAG_FORCEREVOCATIONDOWN 0x20000
215 #define AFS_FLAG_SEC_SERVICE 0x1
216 #define AFS_FLAG_CONTEXT_NEW_IF 0x2
217 #define AFS_FLAG_CONTEXT_DO_RESET 0x4
218 #define AFS_FLAG_CONTEXT_NEW_ACL_IF 0x8
219 #define AFS_FLAG_CONTEXT_NEW_TKN_TYPES 0x10
221 #define VLSF_NEWREPSITE 0x01
222 #define VLSF_SPARE1 0x02
223 #define VLSF_SPARE2 0x04 /* used for VLSF_RWVOL in flprocs.c */
224 #define VLSF_SPARE3 0x08 /* used for VLSF_BACKVOL in flprocs.c */
225 #define VLSF_SAMEASPREV 0x10
226 #define VLSF_DEFINED 0x20
227 #define VLSF_PARTIALADDRS 0x40
228 #define VLSF_ZEROIXHERE 0x80000000
230 #define MACRO_ST_CLEAR(name) \
231 offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, di, drep, hf_error_st, &st); \
232 st_str = val_to_str_ext (st, &dce_error_vals_ext, "%u"); \
233 if (st){ \
234 col_add_fstr (pinfo->cinfo, COL_INFO, "%s st:%s ", name, st_str); \
235 } else{ \
236 col_append_fstr (pinfo->cinfo, COL_INFO, " st:%s ", st_str); \
239 static int
240 dissect_afsnetaddr (tvbuff_t * tvb, int offset,
241 packet_info * pinfo, proto_tree * parent_tree,
242 dcerpc_info *di, guint8 * drep)
244 proto_item *item = NULL;
245 proto_tree *tree = NULL;
246 int old_offset = offset;
247 guint16 type;
248 guint8 data;
249 int i;
251 if (parent_tree)
253 item = proto_tree_add_text (parent_tree, tvb, offset, -1,
254 "afsNetAddr:");
255 tree = proto_item_add_subtree (item, ett_fldb_afsnetaddr);
258 /* unsigned16 type;
259 unsigned8 data[14];
262 offset =
263 dissect_ndr_uint16 (tvb, offset, pinfo, tree, di, drep,
264 hf_fldb_afsnetaddr_type, &type);
266 if (type)
268 col_append_fstr (pinfo->cinfo, COL_INFO, " Type:%u ", type);
271 for (i = 0; i < 14; i++)
274 offset =
275 dissect_ndr_uint8 (tvb, offset, pinfo, tree, di, drep,
276 hf_fldb_afsnetaddr_data, &data);
279 switch (i)
281 case 1:
282 if (data)
284 col_append_fstr (pinfo->cinfo, COL_INFO, " Port:%u",
285 data);
287 break;
288 case 2:
289 col_append_fstr (pinfo->cinfo, COL_INFO, " IP:%u.", data);
290 break;
291 case 3:
292 col_append_fstr (pinfo->cinfo, COL_INFO, "%u.", data);
293 break;
294 case 4:
295 col_append_fstr (pinfo->cinfo, COL_INFO, "%u.", data);
296 break;
297 case 5:
298 col_append_fstr (pinfo->cinfo, COL_INFO, "%u", data);
299 break;
305 else
308 offset += 14; /* space left after reading in type for the array. */
313 proto_item_set_len (item, offset - old_offset);
315 return offset;
319 static int
320 dissect_vlconf_cell (tvbuff_t * tvb, int offset,
321 packet_info * pinfo, proto_tree * parent_tree,
322 dcerpc_info *di, guint8 * drep)
325 proto_item *item = NULL;
326 proto_tree *tree = NULL;
327 int old_offset = offset;
328 #define MAXVLCELLCHARS 128
329 #define MAXVLHOSTSPERCELL 64
330 const guint8 *name, *hostname;
331 int i;
332 guint32 cellid_high, cellid_low, numservers, spare1, spare2, spare3, spare4,
333 spare5;
335 if (parent_tree)
337 item = proto_tree_add_text (parent_tree, tvb, offset, -1,
338 "vlconf_cell:");
339 tree = proto_item_add_subtree (item, ett_fldb_vlconf_cell);
342 /* byte name[MAXVLCELLCHARS]; Cell name */
343 proto_tree_add_item (tree, hf_fldb_vlconf_cell_name, tvb, offset, 114, ENC_ASCII|ENC_NA);
344 name = tvb_get_string (wmem_packet_scope(), tvb, offset, MAXVLCELLCHARS); /* XXX why 114 above and 128 here?? */
345 offset += MAXVLCELLCHARS; /* some reason this 114 seems to be incorrect... cutting 4 short to compensate.... */
346 col_append_fstr (pinfo->cinfo, COL_INFO, " Name: %s", name);
349 /* afsHyper CellID; identifier for that cell */
351 offset =
352 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
353 hf_fldb_vlconf_cell_cellid_high, &cellid_high);
354 offset =
355 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
356 hf_fldb_vlconf_cell_cellid_low, &cellid_low);
357 col_append_fstr (pinfo->cinfo, COL_INFO, " CellID:%u-%u", cellid_high,
358 cellid_low);
361 /* unsigned32 numServers; *Num active servers for the cell */
362 offset =
363 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
364 hf_fldb_vlconf_cell_numservers, &numservers);
365 col_append_fstr (pinfo->cinfo, COL_INFO, " numServers:%u", numservers);
367 /* afsNetAddr hostAddr[MAXVLHOSTSPERCELL]; *addresses for cell's servers */
368 for (i = 0; i < MAXVLHOSTSPERCELL; i++)
370 offset = dissect_afsnetaddr (tvb, offset, pinfo, tree, di, drep);
374 /* hostnam hostName[MAXVLHOSTSPERCELL]; *Names for cell's servers* */
376 for (i = 0; i < MAXVLHOSTSPERCELL; i++)
378 proto_tree_add_item (tree, hf_fldb_vlconf_cell_hostname, tvb, offset,
379 64, ENC_ASCII|ENC_NA);
380 hostname = tvb_get_string (wmem_packet_scope(), tvb, offset, 64);
381 offset += 64; /* some reason this 114 seems to be incorrect... cutting 4 short to compensate.... */
382 col_append_fstr (pinfo->cinfo, COL_INFO, " hostName: %s", hostname);
385 /* unsigned32 spare1; */
386 offset =
387 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
388 hf_fldb_vlconf_cell_spare1, &spare1);
389 col_append_fstr (pinfo->cinfo, COL_INFO, " spare1:%u", spare1);
392 /* unsigned32 spare2; */
393 offset =
394 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
395 hf_fldb_vlconf_cell_spare2, &spare2);
396 col_append_fstr (pinfo->cinfo, COL_INFO, " spare2:%u", spare2);
398 /* unsigned32 spare3; */
399 offset =
400 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
401 hf_fldb_vlconf_cell_spare3, &spare3);
402 col_append_fstr (pinfo->cinfo, COL_INFO, " spare3:%u", spare3);
405 /* unsigned32 spare4; */
406 offset =
407 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
408 hf_fldb_vlconf_cell_spare4, &spare4);
409 col_append_fstr (pinfo->cinfo, COL_INFO, " spare4:%u", spare4);
411 /* unsigned32 spare5; */
412 offset =
413 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
414 hf_fldb_vlconf_cell_spare5, &spare5);
415 col_append_fstr (pinfo->cinfo, COL_INFO, " spare5:%u", spare5);
418 proto_item_set_len (item, offset - old_offset);
420 return offset;
423 static int
424 dissect_afsNameString_t (tvbuff_t * tvb, int offset,
425 packet_info * pinfo, proto_tree * parent_tree,
426 dcerpc_info *di, guint8 * drep)
430 typedef [string] byte NameString_t[AFS_NAMEMAX];
433 proto_item *item = NULL;
434 proto_tree *tree = NULL;
435 int old_offset = offset;
436 #define AFS_NAMEMAX 256
437 guint32 string_size;
438 const guint8 *namestring;
440 if (di->conformant_run)
442 return offset;
446 if (parent_tree)
448 item = proto_tree_add_text (parent_tree, tvb, offset, -1,
449 "afsNameString_t:");
450 tree = proto_item_add_subtree (item, ett_fldb_afsNameString_t);
453 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
454 hf_fldb_afsNameString_t_principalName_size,
455 &string_size);
456 col_append_fstr (pinfo->cinfo, COL_INFO, " String_size:%u", string_size);
457 if (string_size < AFS_NAMEMAX)
459 /* proto_tree_add_string(tree, id, tvb, start, length, value_ptr); */
460 proto_tree_add_item (tree,
461 hf_fldb_afsNameString_t_principalName_string,
462 tvb, offset, string_size, ENC_ASCII|ENC_NA);
463 namestring = tvb_get_string (wmem_packet_scope(), tvb, offset, string_size);
464 offset += string_size;
465 col_append_fstr (pinfo->cinfo, COL_INFO, " Principal:%s", namestring);
467 else
469 col_append_fstr (pinfo->cinfo, COL_INFO,
470 " :FIXME!: Invalid string length of %u",
471 string_size);
473 proto_item_set_len (item, offset - old_offset);
474 return offset;
479 static int
480 dissect_afsflags (tvbuff_t * tvb, int offset,
481 packet_info * pinfo, proto_tree * parent_tree,
482 dcerpc_info *di, guint8 * drep)
484 proto_item *item = NULL;
485 proto_tree *tree = NULL;
486 int old_offset = offset;
487 guint32 afsflags;
489 if (parent_tree)
491 item = proto_tree_add_text (parent_tree, tvb, offset, -1, "afsFlags:");
492 tree = proto_item_add_subtree (item, ett_fldb_afsflags);
495 offset =
496 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
497 hf_fldb_afsflags_flags, &afsflags);
498 if (afsflags)
500 col_append_str (pinfo->cinfo, COL_INFO, " afsFlags=");
501 if ((afsflags & AFS_FLAG_RETURNTOKEN) == AFS_FLAG_RETURNTOKEN)
503 col_append_str (pinfo->cinfo, COL_INFO, ":RETURNTOKEN");
505 if ((afsflags & AFS_FLAG_TOKENJUMPQUEUE) == AFS_FLAG_TOKENJUMPQUEUE)
507 col_append_str (pinfo->cinfo, COL_INFO, ":TOKENJUMPQUEUE");
509 if ((afsflags & AFS_FLAG_SKIPTOKEN) == AFS_FLAG_SKIPTOKEN)
511 col_append_str (pinfo->cinfo, COL_INFO, ":SKIPTOKEN");
513 if ((afsflags & AFS_FLAG_NOOPTIMISM) == AFS_FLAG_NOOPTIMISM)
515 col_append_str (pinfo->cinfo, COL_INFO, ":NOOPTIMISM");
517 if ((afsflags & AFS_FLAG_TOKENID) == AFS_FLAG_TOKENID)
519 col_append_str (pinfo->cinfo, COL_INFO, ":TOKENID");
521 if ((afsflags & AFS_FLAG_RETURNBLOCKER) == AFS_FLAG_RETURNBLOCKER)
523 col_append_str (pinfo->cinfo, COL_INFO, ":RETURNBLOCKER");
525 if ((afsflags & AFS_FLAG_ASYNCGRANT) == AFS_FLAG_ASYNCGRANT)
527 col_append_str (pinfo->cinfo, COL_INFO, ":ASYNCGRANT");
529 if ((afsflags & AFS_FLAG_NOREVOKE) == AFS_FLAG_NOREVOKE)
531 col_append_str (pinfo->cinfo, COL_INFO, ":NOREVOKE");
533 if ((afsflags & AFS_FLAG_MOVE_REESTABLISH) == AFS_FLAG_MOVE_REESTABLISH)
535 col_append_str (pinfo->cinfo, COL_INFO, ":MOVE_REESTABLISH");
537 if ((afsflags & AFS_FLAG_SERVER_REESTABLISH) ==
538 AFS_FLAG_SERVER_REESTABLISH)
540 col_append_str (pinfo->cinfo, COL_INFO, ":SERVER_REESTABLISH");
541 if ((afsflags & AFS_FLAG_NO_NEW_EPOCH) == AFS_FLAG_NO_NEW_EPOCH)
543 col_append_str (pinfo->cinfo, COL_INFO, ":NO_NEW_EPOCH");
545 if ((afsflags & AFS_FLAG_MOVE_SOURCE_OK) == AFS_FLAG_MOVE_SOURCE_OK)
547 col_append_str (pinfo->cinfo, COL_INFO, ":MOVE_SOURCE_OK");
549 if ((afsflags & AFS_FLAG_SYNC) == AFS_FLAG_SYNC)
551 col_append_str (pinfo->cinfo, COL_INFO, ":SYNC");
553 if ((afsflags & AFS_FLAG_ZERO) == AFS_FLAG_ZERO)
555 col_append_str (pinfo->cinfo, COL_INFO, ":ZERO");
557 if ((afsflags & AFS_FLAG_SKIPSTATUS) == AFS_FLAG_SKIPSTATUS)
559 col_append_str (pinfo->cinfo, COL_INFO, ":SKIPSTATUS");
561 if ((afsflags & AFS_FLAG_FORCEREVOCATIONS) ==
562 AFS_FLAG_FORCEREVOCATIONS)
564 col_append_str (pinfo->cinfo, COL_INFO, ":FORCEREVOCATIONS");
566 if ((afsflags & AFS_FLAG_FORCEVOLQUIESCE) ==
567 AFS_FLAG_FORCEVOLQUIESCE)
569 col_append_str (pinfo->cinfo, COL_INFO, ":FORCEVOLQUIESCE");
571 if ((afsflags & AFS_FLAG_SEC_SERVICE) == AFS_FLAG_SEC_SERVICE)
573 col_append_str (pinfo->cinfo, COL_INFO, ":SEC_SERVICE");
575 if ((afsflags & AFS_FLAG_CONTEXT_NEW_ACL_IF) ==
576 AFS_FLAG_CONTEXT_NEW_ACL_IF)
578 col_append_str (pinfo->cinfo, COL_INFO,
579 ":CONTEXT_NEW_ACL_IF");
585 proto_item_set_len (item, offset - old_offset);
587 return offset;
592 static int
593 dissect_siteflags (tvbuff_t * tvb, int offset,
594 packet_info * pinfo, proto_tree * parent_tree,
595 dcerpc_info *di, guint8 * drep)
597 proto_item *item = NULL;
598 proto_tree *tree = NULL;
599 int old_offset = offset;
600 guint32 siteflags;
602 if (parent_tree)
604 item = proto_tree_add_text (parent_tree, tvb, offset, -1, "SiteFlags:");
605 tree = proto_item_add_subtree (item, ett_fldb_siteflags);
608 offset =
609 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_fldb_siteflags,
610 &siteflags);
612 if (siteflags)
614 col_append_str (pinfo->cinfo, COL_INFO, " SiteFlags");
615 if ((siteflags & VLSF_NEWREPSITE) == VLSF_NEWREPSITE)
617 col_append_str (pinfo->cinfo, COL_INFO, ":NEWREPSITE");
619 if ((siteflags & VLSF_SPARE1) == VLSF_SPARE1)
621 col_append_str (pinfo->cinfo, COL_INFO, ":SPARE1");
623 if ((siteflags & VLSF_SPARE2) == VLSF_SPARE2)
625 col_append_str (pinfo->cinfo, COL_INFO, ":SPARE2");
627 if ((siteflags & VLSF_SPARE3) == VLSF_SPARE3)
629 col_append_str (pinfo->cinfo, COL_INFO, ":SPARE3");
631 if ((siteflags & VLSF_SAMEASPREV) == VLSF_SAMEASPREV)
633 col_append_str (pinfo->cinfo, COL_INFO, ":SAMEASPREV");
635 if ((siteflags & VLSF_DEFINED) == VLSF_DEFINED)
637 col_append_str (pinfo->cinfo, COL_INFO, ":DEFINED");
639 if ((siteflags & VLSF_PARTIALADDRS) == VLSF_PARTIALADDRS)
641 col_append_str (pinfo->cinfo, COL_INFO, ":PARTIALADDRS ");
643 if ((siteflags & VLSF_ZEROIXHERE) == VLSF_ZEROIXHERE)
645 col_append_str (pinfo->cinfo, COL_INFO, ":ZEROIXHERE");
650 proto_item_set_len (item, offset - old_offset);
652 return offset;
657 static int
658 dissect_vldbentry (tvbuff_t * tvb, int offset,
659 packet_info * pinfo, proto_tree * parent_tree,
660 dcerpc_info *di, guint8 * drep)
662 proto_item *item = NULL;
663 proto_tree *tree = NULL;
664 int old_offset = offset;
665 const guint8 *volumename, *siteprincipal, *charspares, *lockername;
666 guint32 volumetype, nservers, sitepartition, sitemaxreplicalatency,
667 volids_high, volids_low, voltypes, cloneid_high, cloneid_low,
668 maxtotallatency, hardmaxtotallatency, minimumpouncedally,
669 defaultmaxreplicalatency, reclaimdally, whenlocked, spare1, spare2,
670 spare3, spare4;
671 e_uuid_t siteowner, siteobjid;
672 gint i;
673 #define MAXNSERVERS 16
674 #define MAXVOLTYPES 8
675 #define MAXLOCKNAMELEN 64
677 if (parent_tree)
679 item = proto_tree_add_text (parent_tree, tvb, offset, -1, "vldbentry:");
680 tree = proto_item_add_subtree (item, ett_fldb_vldbentry);
683 /* byte name[114]; Volume name */
685 proto_tree_add_item (tree, hf_fldb_vldbentry_volumename, tvb, offset, 114,
686 ENC_ASCII|ENC_NA);
687 volumename = tvb_get_string (wmem_packet_scope(), tvb, offset, 114);
688 offset += 110; /* some reason this 114 seems to be incorrect... cutting 4 short to compensate.... */
689 col_append_fstr (pinfo->cinfo, COL_INFO, " Name: %s", volumename);
691 /* unsigned32 volumeType; */
692 offset =
693 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
694 hf_fldb_vldbentry_volumetype, &volumetype);
695 col_append_fstr (pinfo->cinfo, COL_INFO, " Type:%u", volumetype);
697 /*unsigned32 nServers; */
698 offset =
699 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
700 hf_fldb_vldbentry_nservers, &nservers);
701 col_append_fstr (pinfo->cinfo, COL_INFO, " nServers:%u", nservers);
703 /* afsNetAddr siteAddr[MAXNSERVERS]; 16 */
704 for (i = 0; i < MAXNSERVERS; i++)
706 /* col_append_fstr (pinfo->cinfo, COL_INFO, " Site:%u", i); */
708 offset = dissect_afsnetaddr (tvb, offset, pinfo, tree, di, drep);
711 /* unsigned32 sitePartition[MAXNSERVERS]; */
712 for (i = 0; i < MAXNSERVERS; i++)
714 offset =
715 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
716 hf_fldb_vldbentry_sitepartition, &sitepartition);
717 if (sitepartition)
719 col_append_fstr (pinfo->cinfo, COL_INFO, " LFS:%u",
720 sitepartition);
725 /* unsigned32 siteFlags[MAXNSERVERS]; */
726 for (i = 0; i < MAXNSERVERS; i++)
728 offset = dissect_siteflags (tvb, offset, pinfo, tree, di, drep);
731 /* unsigned32 sitemaxReplicaLatency[MAXNSERVERS]; */
732 for (i = 0; i < MAXNSERVERS; i++)
734 offset =
735 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
736 hf_fldb_vldbentry_sitemaxreplicalatency,
737 &sitemaxreplicalatency);
738 if (sitemaxreplicalatency)
740 col_append_fstr (pinfo->cinfo, COL_INFO, " MaxRepLat%d:%u", i,
741 sitemaxreplicalatency);
744 /* kerb_princ_name sitePrincipal[MAXNSERVERS]; principal */
745 for (i = 0; i < MAXNSERVERS; i++)
747 proto_tree_add_item (tree, hf_fldb_vldbentry_siteprincipal, tvb,
748 offset, 64, ENC_ASCII|ENC_NA);
749 siteprincipal = tvb_get_string (wmem_packet_scope(), tvb, offset, 64);
750 offset += 64;
751 col_append_fstr (pinfo->cinfo, COL_INFO, " Princ: %s", siteprincipal);
754 /* afsUUID siteOwner[MAXNSERVERS]; */
756 for (i = 0; i < MAXNSERVERS; i++)
758 offset =
759 dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep,
760 hf_fldb_vldbentry_siteowner, &siteowner);
761 col_append_fstr (pinfo->cinfo, COL_INFO,
762 " SiteOwner - %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
763 siteowner.Data1, siteowner.Data2, siteowner.Data3,
764 siteowner.Data4[0], siteowner.Data4[1],
765 siteowner.Data4[2], siteowner.Data4[3],
766 siteowner.Data4[4], siteowner.Data4[5],
767 siteowner.Data4[6], siteowner.Data4[7]);
771 /* afsUUID siteObjID[MAXNSERVERS]; */
772 for (i = 0; i < MAXNSERVERS; i++)
774 offset =
775 dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep,
776 hf_fldb_vldbentry_siteobjid, &siteobjid);
777 col_append_fstr (pinfo->cinfo, COL_INFO,
778 " SiteObjID - %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
779 siteobjid.Data1, siteobjid.Data2, siteobjid.Data3,
780 siteobjid.Data4[0], siteobjid.Data4[1],
781 siteobjid.Data4[2], siteobjid.Data4[3],
782 siteobjid.Data4[4], siteobjid.Data4[5],
783 siteobjid.Data4[6], siteobjid.Data4[7]);
787 /* afsHyper VolIDs[MAXVOLTYPES]; */
788 /* XXX for these hypers, I will skip trying to use non portable guint64, and just read both, and use only low.
789 never seen a case of a volid going anywhere the overflow of the 32 low; */
790 for (i = 0; i < MAXVOLTYPES; i++)
792 offset =
793 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
794 hf_fldb_vldbentry_volids_high, &volids_high);
795 offset =
796 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
797 hf_fldb_vldbentry_volids_low, &volids_low);
798 col_append_fstr (pinfo->cinfo, COL_INFO, " VolIDs%d:%u", i,
799 volids_low);
803 /* unsigned32 VolTypes[MAXVOLTYPES]; */
804 for (i = 0; i < MAXVOLTYPES; i++)
806 offset =
807 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
808 hf_fldb_vldbentry_voltypes, &voltypes);
809 if (voltypes)
811 col_append_fstr (pinfo->cinfo, COL_INFO, " VolTypes:%d:%u", i,
812 voltypes);
816 /* afsHyper cloneId; Used during cloning */
817 offset =
818 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
819 hf_fldb_vldbentry_cloneid_high, &cloneid_high);
820 offset =
821 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
822 hf_fldb_vldbentry_cloneid_low, &cloneid_low);
823 if (cloneid_low)
825 col_append_fstr (pinfo->cinfo, COL_INFO, " CloneId:%u", cloneid_low);
828 /* unsigned32 flags; General flags */
829 offset = dissect_afsflags (tvb, offset, pinfo, tree, di, drep);
833 /* unsigned32 maxTotalLatency; */
834 offset =
835 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
836 hf_fldb_vldbentry_maxtotallatency, &maxtotallatency);
837 col_append_fstr (pinfo->cinfo, COL_INFO, " MaxTotLat:%u",
838 maxtotallatency);
841 /* unsigned32 hardMaxTotalLatency; */
842 offset =
843 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
844 hf_fldb_vldbentry_hardmaxtotallatency,
845 &hardmaxtotallatency);
846 col_append_fstr (pinfo->cinfo, COL_INFO, " HardMaxTotLat:%u",
847 hardmaxtotallatency);
850 /* unsigned32 minimumPounceDally; */
851 offset =
852 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
853 hf_fldb_vldbentry_minimumpouncedally,
854 &minimumpouncedally);
855 col_append_fstr (pinfo->cinfo, COL_INFO, " minPounceDally:%u",
856 minimumpouncedally);
859 /* unsigned32 defaultMaxReplicaLatency; */
860 offset =
861 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
862 hf_fldb_vldbentry_defaultmaxreplicalatency,
863 &defaultmaxreplicalatency);
864 col_append_fstr (pinfo->cinfo, COL_INFO, " defaultMaxReplicaLatency:%u",
865 defaultmaxreplicalatency);
867 /* unsigned32 reclaimDally; */
868 offset =
869 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
870 hf_fldb_vldbentry_reclaimdally, &reclaimdally);
871 col_append_fstr (pinfo->cinfo, COL_INFO, " reclaimDally:%u",
872 reclaimdally);
875 /* unsigned32 WhenLocked; */
876 offset =
877 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
878 hf_fldb_vldbentry_whenlocked, &whenlocked);
879 col_append_fstr (pinfo->cinfo, COL_INFO, " WhenLocked:%u", whenlocked);
882 /* unsigned32 spare1; */
883 offset =
884 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
885 hf_fldb_vldbentry_spare1, &spare1);
886 col_append_fstr (pinfo->cinfo, COL_INFO, " spare1:%u", spare1);
888 /* unsigned32 spare2; */
889 offset =
890 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
891 hf_fldb_vldbentry_spare2, &spare2);
892 col_append_fstr (pinfo->cinfo, COL_INFO, " spare2:%u", spare2);
895 /* unsigned32 spare3; */
896 offset =
897 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
898 hf_fldb_vldbentry_spare3, &spare3);
899 col_append_fstr (pinfo->cinfo, COL_INFO, " spare3:%u", spare3);
901 /* unsigned32 spare4; */
902 offset =
903 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
904 hf_fldb_vldbentry_spare4, &spare4);
905 col_append_fstr (pinfo->cinfo, COL_INFO, " spare4:%u", spare4);
908 /* byte LockerName[MAXLOCKNAMELEN]; */
909 proto_tree_add_item (tree, hf_fldb_vldbentry_lockername, tvb, offset,
910 MAXLOCKNAMELEN, ENC_ASCII|ENC_NA);
911 lockername = tvb_get_string (wmem_packet_scope(), tvb, offset, MAXLOCKNAMELEN);
912 offset += MAXLOCKNAMELEN; /* some reason this 114 seems to be incorrect... cutting 4 short to compensate.... */
913 col_append_fstr (pinfo->cinfo, COL_INFO, " LockerName: %s", lockername);
915 /* byte charSpares[50]; */
916 proto_tree_add_item (tree, hf_fldb_vldbentry_charspares, tvb, offset, 50,
917 ENC_ASCII|ENC_NA);
918 charspares = tvb_get_string (wmem_packet_scope(), tvb, offset, 50);
919 offset += 50; /* some reason this 114 seems to be incorrect... cutting 4 short to compensate.... */
920 col_append_fstr (pinfo->cinfo, COL_INFO, " charSpares:%s", charspares);
924 proto_item_set_len (item, offset - old_offset);
926 return offset;
931 static int
932 fldb_dissect_getcellinfo_resp (tvbuff_t * tvb, int offset,
933 packet_info * pinfo, proto_tree * tree,
934 dcerpc_info *di, guint8 * drep)
936 if (di->conformant_run)
938 return offset;
942 /* [out] vlconf_cell *MyCell */
943 offset = dissect_vlconf_cell (tvb, offset, pinfo, tree, di, drep);
946 return offset;
951 static int
952 fldb_dissect_getentrybyname_rqst (tvbuff_t * tvb, int offset,
953 packet_info * pinfo, proto_tree * tree,
954 dcerpc_info *di, guint8 * drep)
956 if (di->conformant_run)
958 return offset;
963 * [in] volumeName volName,
966 offset += 4;
967 offset = dissect_afsNameString_t (tvb, offset, pinfo, tree, di, drep);
970 return offset;
974 static int
975 fldb_dissect_getentrybyname_resp (tvbuff_t * tvb, int offset,
976 packet_info * pinfo, proto_tree * tree,
977 dcerpc_info *di, guint8 * drep)
980 [out] vldbentry *entry
982 if (di->conformant_run)
984 return offset;
987 offset = dissect_vldbentry (tvb, offset, pinfo, tree, di, drep);
989 MACRO_ST_CLEAR ("GetEntryByName reply");
990 return offset;
993 static int
994 fldb_dissect_getsiteinfo_rqst (tvbuff_t * tvb, int offset,
995 packet_info * pinfo, proto_tree * tree,
996 dcerpc_info *di, guint8 * drep)
998 if (di->conformant_run)
1000 return offset;
1006 * [in] afsNetAddr *OldAddr,
1010 offset = dissect_afsnetaddr (tvb, offset, pinfo, tree, di, drep);
1015 * [in] afsNetAddr *OldAddr,
1016 * unsigned16 type;
1017 unsigned8 data[14];
1021 return offset;
1023 static int
1024 fldb_dissect_getsiteinfo_resp (tvbuff_t * tvb, int offset,
1025 packet_info * pinfo, proto_tree * tree,
1026 dcerpc_info *di, guint8 * drep)
1028 const guint8 *namestring;
1029 e_uuid_t owner, objid;
1030 guint32 creationquota, creationuses, deletedflag, spare2, spare3, spare4,
1031 spare5;
1033 if (di->conformant_run)
1035 return offset;
1039 [out] siteDessiib *FullSiteInfo
1040 afsNetAddr Addr[ADDRSINSITE];
1041 byte KerbPrin[MAXKPRINCIPALLEN] 64;
1042 afsUUID Owner;
1043 afsUUID ObjID;
1044 unsigned32 CreationQuota;
1045 unsigned32 CreationUses;
1046 unsigned32 DeletedFlag;
1047 unsigned32 spare2;
1048 unsigned32 spare3;
1049 unsigned32 spare4;
1050 unsigned32 spare5;
1053 offset = dissect_afsnetaddr (tvb, offset, pinfo, tree, di, drep);
1055 /* handle byte KerbPrin[64]. */
1057 offset += 48; /* part of kerbprin before name... */
1059 proto_tree_add_item (tree, hf_fldb_namestring, tvb, offset, 64, ENC_ASCII|ENC_NA);
1060 namestring = tvb_get_string (wmem_packet_scope(), tvb, offset, 64);
1061 offset += 64;
1062 col_append_fstr (pinfo->cinfo, COL_INFO, " %s", namestring);
1064 offset = dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep, hf_fldb_uuid_owner, &owner);
1065 col_append_fstr (pinfo->cinfo, COL_INFO,
1066 " Owner - %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
1067 owner.Data1, owner.Data2, owner.Data3, owner.Data4[0],
1068 owner.Data4[1], owner.Data4[2], owner.Data4[3],
1069 owner.Data4[4], owner.Data4[5], owner.Data4[6],
1070 owner.Data4[7]);
1072 offset =
1073 dissect_ndr_uuid_t (tvb, offset, pinfo, tree, di, drep, hf_fldb_uuid_objid,
1074 &objid);
1075 col_append_fstr (pinfo->cinfo, COL_INFO,
1076 " ObjID - %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
1077 objid.Data1, objid.Data2, objid.Data3, objid.Data4[0],
1078 objid.Data4[1], objid.Data4[2], objid.Data4[3],
1079 objid.Data4[4], objid.Data4[5], objid.Data4[6],
1080 objid.Data4[7]);
1082 offset =
1083 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_fldb_creationquota,
1084 &creationquota);
1085 offset =
1086 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_fldb_creationuses,
1087 &creationuses);
1088 offset =
1089 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_fldb_deletedflag,
1090 &deletedflag);
1091 offset =
1092 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_fldb_spare2,
1093 &spare2);
1094 offset =
1095 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_fldb_spare3,
1096 &spare3);
1097 offset =
1098 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_fldb_spare4,
1099 &spare4);
1100 offset =
1101 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_fldb_spare5,
1102 &spare5);
1104 col_append_fstr (pinfo->cinfo, COL_INFO,
1105 " CreationQuota:%u CreationUses:%u DeletedFlag:%u Spare2:%u Spare3:%u Spare4:%u Spare5:%u",
1106 creationquota, creationuses, deletedflag, spare2, spare3,
1107 spare4, spare5);
1109 MACRO_ST_CLEAR ("GetSiteInfo reply");
1111 return offset;
1115 static int
1116 fldb_dissect_listentry_rqst (tvbuff_t * tvb, int offset,
1117 packet_info * pinfo, proto_tree * tree,
1118 dcerpc_info *di, guint8 * drep)
1120 guint32 var1, previous_index;
1122 if (di->conformant_run)
1124 return offset;
1129 * [in] unsigned32 previous_index,
1130 * [out] unsigned32 *count,
1131 * [out] unsigned32 *next_index,
1132 * [out] vldbentry *entry
1135 offset =
1136 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
1137 hf_fldb_listentry_rqst_previous_index,
1138 &previous_index);
1139 offset =
1140 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
1141 hf_fldb_listentry_rqst_var1, &var1);
1144 col_append_fstr (pinfo->cinfo, COL_INFO, " :PrevIndex: %u",
1145 previous_index);
1148 return offset;
1152 static int
1153 fldb_dissect_listentry_resp (tvbuff_t * tvb, int offset,
1154 packet_info * pinfo, proto_tree * tree,
1155 dcerpc_info *di, guint8 * drep)
1157 guint32 count, next_index;
1159 if (di->conformant_run)
1161 return offset;
1166 * [out] unsigned32 *count,
1167 * [out] unsigned32 *next_index,
1168 * [out] vldbentry *entry
1171 offset =
1172 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
1173 hf_fldb_listentry_resp_count, &count);
1174 offset =
1175 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
1176 hf_fldb_listentry_resp_next_index, &next_index);
1177 offset = dissect_vldbentry (tvb, offset, pinfo, tree, di, drep);
1178 return offset;
1182 static int
1183 fldb_dissect_setlock_rqst (tvbuff_t * tvb, int offset,
1184 packet_info * pinfo, proto_tree * tree,
1185 dcerpc_info *di, guint8 * drep)
1187 guint32 fsid_high, fsid_low, voltype, voloper;
1189 if (di->conformant_run)
1191 return offset;
1195 offset =
1196 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
1197 hf_fldb_setlock_rqst_fsid_high, &fsid_high);
1198 offset =
1199 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
1200 hf_fldb_setlock_rqst_fsid_low, &fsid_low);
1201 offset =
1202 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
1203 hf_fldb_setlock_rqst_voltype, &voltype);
1204 offset =
1205 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
1206 hf_fldb_setlock_rqst_voloper, &voloper);
1208 col_append_fstr (pinfo->cinfo, COL_INFO,
1209 " :FSID:%u/%u VolType:0x%x VolOper:%u", fsid_high,
1210 fsid_low, voltype, voloper);
1212 return offset;
1215 static int
1216 fldb_dissect_setlock_resp (tvbuff_t * tvb, int offset,
1217 packet_info * pinfo, proto_tree * tree,
1218 dcerpc_info *di, guint8 * drep)
1220 if (di->conformant_run)
1222 return offset;
1225 MACRO_ST_CLEAR ("SetLock reply");
1229 return offset;
1231 static int
1232 fldb_dissect_deleteentry_resp (tvbuff_t * tvb, int offset,
1233 packet_info * pinfo, proto_tree * tree,
1234 dcerpc_info *di, guint8 * drep)
1236 if (di->conformant_run)
1238 return offset;
1242 MACRO_ST_CLEAR ("DeleteEntry reply");
1244 return offset;
1247 static int
1248 fldb_dissect_deleteentry_rqst (tvbuff_t * tvb, int offset,
1249 packet_info * pinfo, proto_tree * tree,
1250 dcerpc_info *di, guint8 * drep)
1254 [in] afsHyper *Volid,
1255 [in] unsigned32 voltype
1257 guint32 fsid_high, fsid_low, voltype, voloper;
1259 if (di->conformant_run)
1261 return offset;
1266 offset =
1267 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
1268 hf_fldb_deleteentry_rqst_fsid_high, &fsid_high);
1269 offset =
1270 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
1271 hf_fldb_deleteentry_rqst_fsid_low, &fsid_low);
1272 offset =
1273 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
1274 hf_fldb_deleteentry_rqst_voltype, &voltype);
1275 offset =
1276 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
1277 hf_fldb_deleteentry_rqst_voloper, &voloper);
1279 col_append_fstr (pinfo->cinfo, COL_INFO, " :FSID:%u/%u", fsid_high,
1280 fsid_low);
1283 return offset;
1287 static int
1288 fldb_dissect_createentry_resp (tvbuff_t * tvb, int offset,
1289 packet_info * pinfo, proto_tree * tree,
1290 dcerpc_info *di, guint8 * drep)
1292 if (di->conformant_run)
1294 return offset;
1297 MACRO_ST_CLEAR ("CreateEntry reply");
1299 return offset;
1302 static int
1303 fldb_dissect_createentry_rqst (tvbuff_t * tvb, int offset,
1304 packet_info * pinfo, proto_tree * tree,
1305 dcerpc_info *di, guint8 * drep)
1307 if (di->conformant_run)
1309 return offset;
1313 offset = dissect_vldbentry (tvb, offset, pinfo, tree, di, drep);
1314 return offset;
1318 static int
1319 fldb_dissect_getentrybyid_rqst (tvbuff_t * tvb, int offset,
1320 packet_info * pinfo, proto_tree * tree,
1321 dcerpc_info *di, guint8 * drep)
1323 guint32 volid_high, volid_low, voltype;
1325 if (di->conformant_run)
1327 return offset;
1333 [in] afsHyper *Volid,
1334 [in] unsigned32 voltype,
1337 offset =
1338 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_fldb_volid_high,
1339 &volid_high);
1340 offset =
1341 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_fldb_volid_low,
1342 &volid_low);
1344 offset =
1345 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_fldb_voltype,
1346 &voltype);
1348 col_append_fstr (pinfo->cinfo, COL_INFO, " VolID:%u/%u VolType:0x%x",
1349 volid_high, volid_low, voltype);
1351 return offset;
1355 static int
1356 fldb_dissect_getnewvolumeids_rqst (tvbuff_t * tvb, int offset,
1357 packet_info * pinfo, proto_tree * tree,
1358 dcerpc_info *di, guint8 * drep)
1360 /* [in] unsigned32 numWanted,
1361 [in] afsNetAddr *ServerAddr,
1363 guint32 numwanted;
1365 if (di->conformant_run)
1367 return offset;
1370 offset =
1371 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_fldb_numwanted,
1372 &numwanted);
1373 col_append_fstr (pinfo->cinfo, COL_INFO, " numWanted:%u", numwanted);
1376 offset = dissect_afsnetaddr (tvb, offset, pinfo, tree, di, drep);
1378 return offset;
1381 static int
1382 fldb_dissect_getentrybyid_resp (tvbuff_t * tvb, int offset,
1383 packet_info * pinfo, proto_tree * tree,
1384 dcerpc_info *di, guint8 * drep)
1386 if (di->conformant_run)
1388 return offset;
1392 offset = dissect_vldbentry (tvb, offset, pinfo, tree, di, drep);
1393 return offset;
1396 static int
1397 fldb_dissect_releaselock_resp (tvbuff_t * tvb, int offset,
1398 packet_info * pinfo, proto_tree * tree,
1399 dcerpc_info *di, guint8 * drep)
1401 if (di->conformant_run)
1403 return offset;
1406 MACRO_ST_CLEAR ("ReleaseLock reply");
1409 return offset;
1413 static int
1414 fldb_dissect_releaselock_rqst (tvbuff_t * tvb, int offset,
1415 packet_info * pinfo, proto_tree * tree,
1416 dcerpc_info *di, guint8 * drep)
1418 guint32 fsid_high, fsid_low, voltype, voloper;
1420 if (di->conformant_run)
1422 return offset;
1426 offset =
1427 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
1428 hf_fldb_releaselock_rqst_fsid_high, &fsid_high);
1429 offset =
1430 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
1431 hf_fldb_releaselock_rqst_fsid_low, &fsid_low);
1432 offset =
1433 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
1434 hf_fldb_releaselock_rqst_voltype, &voltype);
1435 offset =
1436 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
1437 hf_fldb_releaselock_rqst_voloper, &voloper);
1439 col_append_fstr (pinfo->cinfo, COL_INFO, " :FSID:%u/%u", fsid_high,
1440 fsid_low);
1442 return offset;
1445 static int
1446 fldb_dissect_replaceentry_resp (tvbuff_t * tvb, int offset,
1447 packet_info * pinfo, proto_tree * tree,
1448 dcerpc_info *di, guint8 * drep)
1450 if (di->conformant_run)
1452 return offset;
1456 MACRO_ST_CLEAR ("ReplaceEntry reply");
1459 return offset;
1461 static int
1462 fldb_dissect_getnextserversbyid_resp (tvbuff_t * tvb, int offset,
1463 packet_info * pinfo, proto_tree * tree,
1464 dcerpc_info *di, guint8 * drep)
1466 guint32 nextstartp, flagsp;
1468 if (di->conformant_run)
1470 return offset;
1477 /* [out] unsigned32 *nextStartP, */
1478 /* XXX */
1479 offset =
1480 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_fldb_nextstartp,
1481 &nextstartp);
1482 col_append_fstr (pinfo->cinfo, COL_INFO, " nextStartP:%u", nextstartp);
1485 /* [out] vldbentry *entry, */
1486 offset = dissect_vldbentry (tvb, offset, pinfo, tree, di, drep);
1489 /* [out] unsigned32 *flagsP */
1491 offset =
1492 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep, hf_fldb_flagsp,
1493 &flagsp);
1495 col_append_fstr (pinfo->cinfo, COL_INFO, " flagsp:%u", flagsp);
1497 return offset;
1500 static int
1501 fldb_dissect_replaceentry_rqst (tvbuff_t * tvb, int offset,
1502 packet_info * pinfo, proto_tree * tree,
1503 dcerpc_info *di, guint8 * drep)
1505 guint32 fsid_high, fsid_low, voltype;
1507 if (di->conformant_run)
1509 return offset;
1513 * [in] afsHyper *Volid,
1514 * [in] unsigned32 voltype,
1515 * [in] vldbentry *newentry,
1516 * [in] unsigned32 ReleaseType
1519 offset =
1520 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
1521 hf_fldb_replaceentry_rqst_fsid_high, &fsid_high);
1522 offset =
1523 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
1524 hf_fldb_replaceentry_rqst_fsid_low, &fsid_low);
1525 offset =
1526 dissect_ndr_uint32(tvb, offset, pinfo, tree, di, drep,
1527 hf_fldb_replaceentry_rqst_voltype, &voltype);
1530 col_append_fstr (pinfo->cinfo, COL_INFO, " FSID:%u/%u Name:", fsid_high,
1531 fsid_low);
1533 offset = dissect_vldbentry (tvb, offset, pinfo, tree, di, drep);
1535 return offset;
1540 static dcerpc_sub_dissector fldb_dissectors[] = {
1541 {0, "GetEntryByID", fldb_dissect_getentrybyid_rqst,
1542 fldb_dissect_getentrybyid_resp},
1543 {1, "GetEntryByName", fldb_dissect_getentrybyname_rqst,
1544 fldb_dissect_getentrybyname_resp},
1545 {2, "Probe", NULL, NULL},
1546 {3, "GetCellInfo", NULL, fldb_dissect_getcellinfo_resp},
1547 {4, "GetNextServersByID", NULL, fldb_dissect_getnextserversbyid_resp},
1548 {5, "GetNextServersByName", NULL, NULL},
1549 {6, "GetSiteInfo", fldb_dissect_getsiteinfo_rqst,
1550 fldb_dissect_getsiteinfo_resp},
1551 {7, "GetCEntryByID", NULL, NULL},
1552 {8, "GetCEntryByName", NULL, NULL},
1553 {9, "GetCNextServersByID", NULL, NULL},
1554 {10, "GetCNextServersByName", NULL, NULL},
1555 {11, "ExpandSiteCookie", NULL, NULL},
1556 {12, "GetServerInterfaces", NULL, NULL},
1557 {13, "CreateEntry", fldb_dissect_createentry_rqst,
1558 fldb_dissect_createentry_resp},
1559 {14, "DeleteEntry", fldb_dissect_deleteentry_rqst,
1560 fldb_dissect_deleteentry_resp},
1561 {15, "GetNewVolumeId", NULL, NULL},
1562 {16, "ReplaceEntry", fldb_dissect_replaceentry_rqst,
1563 fldb_dissect_replaceentry_resp},
1564 {17, "SetLock", fldb_dissect_setlock_rqst, fldb_dissect_setlock_resp},
1565 {18, "ReleaseLock", fldb_dissect_releaselock_rqst,
1566 fldb_dissect_releaselock_resp},
1567 {19, "ListEntry", fldb_dissect_listentry_rqst, fldb_dissect_listentry_resp},
1568 {20, "ListByAttributes", NULL, NULL},
1569 {21, "GetStats", NULL, NULL},
1570 {22, "AddAddress", NULL, NULL},
1571 {23, "RemoveAddress", NULL, NULL},
1572 {24, "ChangeAddress", NULL, NULL},
1573 {25, "GenerateSites", NULL, NULL},
1574 {26, "GetNewVolumeIds", fldb_dissect_getnewvolumeids_rqst, NULL},
1575 {27, "CreateServer", NULL, NULL},
1576 {28, "AlterServer", NULL, NULL},
1577 {0, NULL, NULL, NULL},
1581 void
1582 proto_register_fldb (void)
1584 static hf_register_info hf[] = {
1585 {&hf_fldb_releaselock_rqst_fsid_low,
1586 {"FSID releaselock Low", "fldb.releaselock_rqst_fsid_low", FT_UINT32,
1587 BASE_DEC, NULL, 0x0, NULL, HFILL}},
1588 {&hf_fldb_releaselock_rqst_voltype,
1589 {"voltype", "fldb.releaselock_rqst_voltype", FT_UINT32, BASE_DEC,
1590 NULL, 0x0, NULL, HFILL}},
1591 {&hf_fldb_releaselock_rqst_voloper,
1592 {"voloper", "fldb.releaselock_rqst_voloper", FT_UINT32, BASE_DEC,
1593 NULL, 0x0, NULL, HFILL}},
1594 {&hf_fldb_setlock_rqst_fsid_high,
1595 {"FSID setlock Hi", "fldb.setlock_rqst_fsid_high", FT_UINT32,
1596 BASE_DEC, NULL, 0x0, NULL, HFILL}},
1597 {&hf_fldb_setlock_rqst_fsid_low,
1598 {"FSID setlock Low", "fldb.setlock_rqst_fsid_low", FT_UINT32,
1599 BASE_DEC, NULL, 0x0, NULL, HFILL}},
1600 {&hf_fldb_setlock_rqst_voltype,
1601 {"voltype", "fldb.setlock_rqst_voltype", FT_UINT32, BASE_DEC, NULL,
1602 0x0, NULL, HFILL}},
1603 {&hf_fldb_setlock_rqst_voloper,
1604 {"voloper", "fldb.setlock_rqst_voloper", FT_UINT32, BASE_DEC, NULL,
1605 0x0, NULL, HFILL}},
1606 #if 0
1607 {&hf_fldb_setlock_resp_st,
1608 {"Error", "fldb.setlock_resp_st", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1609 HFILL}},
1610 {&hf_fldb_setlock_resp_st2,
1611 {"Error", "fldb.setlock_resp_st2", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1612 HFILL}},
1613 #endif
1614 {&hf_fldb_listentry_rqst_previous_index,
1615 {"Previous Index", "fldb.listentry_rqst_previous_index", FT_UINT32,
1616 BASE_DEC, NULL, 0x0, NULL, HFILL}},
1617 {&hf_fldb_listentry_rqst_var1,
1618 {"Var 1", "fldb.listentry_rqst_var1", FT_UINT32, BASE_DEC, NULL, 0x0,
1619 NULL, HFILL}},
1620 {&hf_fldb_listentry_resp_count,
1621 {"Count", "fldb.listentry_resp_count", FT_UINT32, BASE_DEC, NULL, 0x0,
1622 NULL, HFILL}},
1623 {&hf_fldb_listentry_resp_next_index,
1624 {"Next Index", "fldb.listentry_resp_next_index", FT_UINT32, BASE_DEC,
1625 NULL, 0x0, NULL, HFILL}},
1626 #if 0
1627 {&hf_fldb_listentry_resp_key_size,
1628 {"Key Size", "fldb.listentry_resp_key_size", FT_UINT32, BASE_DEC,
1629 NULL, 0x0, NULL, HFILL}},
1630 {&hf_fldb_listentry_resp_key_t,
1631 {"Volume", "fldb.listentry_resp_key_t", FT_STRING, BASE_NONE, NULL,
1632 0x0, NULL, HFILL}},
1633 {&hf_fldb_listentry_resp_voltype,
1634 {"VolType", "fldb.listentry_resp_voltype", FT_UINT32, BASE_HEX, NULL,
1635 0x0, NULL, HFILL}},
1636 {&hf_fldb_listentry_resp_key_size2,
1637 {"key_size2", "fldb.listentry_resp_key_size2", FT_UINT32, BASE_DEC,
1638 NULL, 0x0, NULL, HFILL}},
1639 {&hf_fldb_listentry_resp_key_t2,
1640 {"Server", "fldb.listentry_resp_key_t2", FT_STRING, BASE_NONE, NULL,
1641 0x0, NULL, HFILL}},
1642 {&hf_fldb_createentry_rqst_key_t,
1643 {"Volume", "fldb.createentry_rqst_key_t", FT_STRING, BASE_NONE, NULL,
1644 0x0, NULL, HFILL}},
1645 {&hf_fldb_createentry_rqst_key_size,
1646 {"Volume Size", "fldb.createentry_rqst_key_size", FT_UINT32, BASE_DEC,
1647 NULL, 0x0, NULL, HFILL}},
1648 #endif
1649 {&hf_fldb_deleteentry_rqst_fsid_high,
1650 {"FSID deleteentry Hi", "fldb.deleteentry_rqst_fsid_high", FT_UINT32,
1651 BASE_DEC, NULL, 0x0, NULL, HFILL}},
1652 {&hf_fldb_deleteentry_rqst_fsid_low,
1653 {"FSID deleteentry Low", "fldb.deleteentry_rqst_fsid_low", FT_UINT32,
1654 BASE_DEC, NULL, 0x0, NULL, HFILL}},
1655 {&hf_fldb_deleteentry_rqst_voltype,
1656 {"voltype", "fldb.deleteentry_rqst_voltype", FT_UINT32, BASE_DEC,
1657 NULL, 0x0, NULL, HFILL}},
1658 {&hf_fldb_deleteentry_rqst_voloper,
1659 {"voloper", "fldb.deleteentry_rqst_voloper", FT_UINT32, BASE_DEC,
1660 NULL, 0x0, NULL, HFILL}},
1661 #if 0
1662 {&hf_fldb_getentrybyid_rqst_fsid_high,
1663 {"FSID deleteentry Hi", "fldb.getentrybyid_rqst_fsid_high", FT_UINT32,
1664 BASE_DEC, NULL, 0x0, NULL, HFILL}},
1665 {&hf_fldb_getentrybyid_rqst_fsid_low,
1666 {"FSID getentrybyid Low", "fldb.getentrybyid_rqst_fsid_low",
1667 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1668 {&hf_fldb_getentrybyid_rqst_voltype,
1669 {"voltype", "fldb.getentrybyid_rqst_voltype", FT_UINT32, BASE_DEC,
1670 NULL, 0x0, NULL, HFILL}},
1671 {&hf_fldb_getentrybyid_rqst_voloper,
1672 {"voloper", "fldb.getentrybyid_rqst_voloper", FT_UINT32, BASE_DEC,
1673 NULL, 0x0, NULL, HFILL}},
1674 #endif
1675 {&hf_fldb_replaceentry_rqst_fsid_high,
1676 {"FSID replaceentry Hi", "fldb.replaceentry_rqst_fsid_high",
1677 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1678 {&hf_fldb_replaceentry_rqst_fsid_low,
1679 {"FSID replaceentry Low", "fldb.replaceentry_rqst_fsid_low",
1680 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1681 {&hf_fldb_replaceentry_rqst_voltype,
1682 {"voltype", "fldb.replaceentry_rqst_voltype", FT_UINT32, BASE_DEC,
1683 NULL, 0x0, NULL, HFILL}},
1684 #if 0
1685 {&hf_fldb_replaceentry_rqst_key_t,
1686 {"Key", "fldb.replaceentry_rqst_key_t", FT_STRING, BASE_NONE, NULL,
1687 0x0, NULL, HFILL}},
1688 {&hf_fldb_replaceentry_rqst_key_size,
1689 {"Key Size", "fldb.replaceentry_rqst_key_size", FT_UINT32, BASE_DEC,
1690 NULL, 0x0, NULL, HFILL}},
1691 {&hf_fldb_replaceentry_resp_st,
1692 {"Error", "fldb.replaceentry_resp_st", FT_UINT32, BASE_DEC, NULL, 0x0,
1693 NULL, HFILL}},
1694 {&hf_fldb_replaceentry_resp_st2,
1695 {"Error", "fldb.replaceentry_resp_st2", FT_UINT32, BASE_DEC, NULL,
1696 0x0, NULL, HFILL}},
1697 {&hf_fldb_getentrybyname_resp_volumetype,
1698 {"fldb_getentrybyname_resp_volumetype",
1699 "fldb.getentrybyname_resp_volumetype", FT_UINT32, BASE_DEC, NULL,
1700 0x0, NULL, HFILL}},
1701 {&hf_fldb_getentrybyname_resp_numservers,
1702 {"fldb_getentrybyname_resp_numservers",
1703 "fldb.getentrybyname_resp_numservers", FT_UINT32, BASE_DEC, NULL,
1704 0x0, NULL, HFILL}},
1705 {&hf_fldb_getentrybyname_resp_sitecookies,
1706 {"fldb_getentrybyname_resp_sitecookies",
1707 "fldb.getentrybyname_resp_sitecookies", FT_UINT32, BASE_DEC, NULL,
1708 0x0, NULL, HFILL}},
1709 {&hf_fldb_getentrybyname_resp_sitepartition,
1710 {"fldb_getentrybyname_resp_sitepartition",
1711 "fldb.getentrybyname_resp_sitepartition", FT_UINT32, BASE_DEC, NULL,
1712 0x0, NULL, HFILL}},
1713 {&hf_fldb_getentrybyname_resp_siteflags,
1714 {"fldb_getentrybyname_resp_siteflags",
1715 "fldb.getentrybyname_resp_siteflags", FT_UINT32, BASE_DEC, NULL, 0x0,
1716 NULL, HFILL}},
1717 {&hf_fldb_getentrybyname_resp_sitemaxreplat,
1718 {"fldb_getentrybyname_resp_sitemaxreplat",
1719 "fldb.getentrybyname_resp_sitemaxreplat", FT_UINT32, BASE_DEC, NULL,
1720 0x0, NULL, HFILL}},
1721 {&hf_fldb_getentrybyname_resp_volid_high,
1722 {"fldb_getentrybyname_resp_volid_high",
1723 "fldb.getentrybyname_resp_volid_high", FT_UINT32, BASE_DEC, NULL,
1724 0x0, NULL, HFILL}},
1725 {&hf_fldb_getentrybyname_resp_volid_low,
1726 {"fldb_getentrybyname_resp_volid_low",
1727 "fldb.getentrybyname_resp_volid_low", FT_UINT32, BASE_DEC, NULL, 0x0,
1728 NULL, HFILL}},
1729 {&hf_fldb_getentrybyname_resp_voltype,
1730 {"fldb_getentrybyname_resp_voltype",
1731 "fldb.getentrybyname_resp_voltype", FT_UINT32, BASE_DEC, NULL, 0x0,
1732 NULL, HFILL}},
1733 {&hf_fldb_getentrybyname_resp_cloneid_high,
1734 {"fldb_getentrybyname_resp_cloneid_high",
1735 "fldb.getentrybyname_resp_cloneid_high", FT_UINT32, BASE_DEC, NULL,
1736 0x0, NULL, HFILL}},
1737 {&hf_fldb_getentrybyname_resp_cloneid_low,
1738 {"fldb_getentrybyname_resp_cloneid_low",
1739 "fldb.getentrybyname_resp_cloneid_low", FT_UINT32, BASE_DEC, NULL,
1740 0x0, NULL, HFILL}},
1741 {&hf_fldb_getentrybyname_resp_flags,
1742 {"fldb_getentrybyname_resp_flags",
1743 "fldb.getentrybyname_resp_flags", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1744 HFILL}},
1745 {&hf_fldb_getentrybyname_resp_maxtotallat,
1746 {"fldb_getentrybyname_resp_maxtotallat",
1747 "fldb.getentrybyname_resp_maxtotallat", FT_UINT32, BASE_DEC, NULL,
1748 0x0, NULL, HFILL}},
1749 {&hf_fldb_getentrybyname_resp_hardmaxtotlat,
1750 {"fldb_getentrybyname_resp_hardmaxtotlat",
1751 "fldb.getentrybyname_resp_hardmaxtotlat", FT_UINT32, BASE_DEC, NULL,
1752 0x0, NULL, HFILL}},
1753 {&hf_fldb_getentrybyname_resp_minpouncedally,
1754 {"fldb_getentrybyname_resp_minpouncedally",
1755 "fldb.getentrybyname_resp_minpouncedally", FT_UINT32, BASE_DEC, NULL,
1756 0x0, NULL, HFILL}},
1757 {&hf_fldb_getentrybyname_resp_defaultmaxreplat,
1758 {"fldb_getentrybyname_resp_defaultmaxreplat",
1759 "fldb.getentrybyname_resp_defaultmaxreplat", FT_UINT32, BASE_DEC,
1760 NULL, 0x0, NULL, HFILL}},
1761 {&hf_fldb_getentrybyname_resp_reclaimdally,
1762 {"fldb_getentrybyname_resp_reclaimdally",
1763 "fldb.getentrybyname_resp_reclaimdally", FT_UINT32, BASE_DEC, NULL,
1764 0x0, NULL, HFILL}},
1765 {&hf_fldb_getentrybyname_resp_whenlocked,
1766 {"fldb_getentrybyname_resp_whenlocked",
1767 "fldb.getentrybyname_resp_whenlocked", FT_UINT32, BASE_DEC, NULL,
1768 0x0, NULL, HFILL}},
1769 {&hf_fldb_getentrybyname_resp_spare1,
1770 {"fldb_getentrybyname_resp_spare1",
1771 "fldb.getentrybyname_resp_spare1", FT_UINT32, BASE_DEC, NULL, 0x0,
1772 NULL, HFILL}},
1773 {&hf_fldb_getentrybyname_resp_spare2,
1774 {"fldb_getentrybyname_resp_spare2",
1775 "fldb.getentrybyname_resp_spare2", FT_UINT32, BASE_DEC, NULL, 0x0,
1776 NULL, HFILL}},
1777 {&hf_fldb_getentrybyname_resp_spare3,
1778 {"fldb_getentrybyname_resp_spare3",
1779 "fldb.getentrybyname_resp_spare3", FT_UINT32, BASE_DEC, NULL, 0x0,
1780 NULL, HFILL}},
1781 {&hf_fldb_getentrybyname_resp_spare4,
1782 {"fldb_getentrybyname_resp_spare4",
1783 "fldb.getentrybyname_resp_spare4", FT_UINT32, BASE_DEC, NULL, 0x0,
1784 NULL, HFILL}},
1785 {&hf_fldb_getentrybyname_resp_key_t,
1786 {"fldb_getentrybyname_resp_key_t",
1787 "fldb.getentrybyname_resp_key_t", FT_STRING, BASE_NONE, NULL, 0x0,
1788 NULL, HFILL}},
1789 {&hf_fldb_getentrybyname_resp_key_size,
1790 {"fldb_getentrybyname_resp_key_size",
1791 "fldb.getentrybyname_resp_key_size", FT_UINT32, BASE_DEC, NULL, 0x0,
1792 NULL, HFILL}},
1793 {&hf_fldb_getentrybyname_resp_test,
1794 {"fldb_getentrybyname_resp_test", "fldb.getentrybyname_resp_test",
1795 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1796 #endif
1797 {&hf_fldb_releaselock_rqst_fsid_high,
1798 {"FSID releaselock Hi", "fldb.releaselock_rqst_fsid_high", FT_UINT32,
1799 BASE_DEC, NULL, 0x0, NULL, HFILL}},
1800 {&hf_fldb_opnum,
1801 {"Operation", "fldb.opnum", FT_UINT16, BASE_DEC, NULL, 0x0, NULL,
1802 HFILL}},
1803 {&hf_fldb_vldbentry_volumename,
1804 {"VolumeName", "fldb.vldbentry.volumename", FT_STRING, BASE_NONE, NULL, 0x0,
1805 NULL, HFILL}},
1806 {&hf_fldb_vldbentry_volumetype,
1807 {"VolumeType", "fldb.vldbentry.volumetype", FT_UINT32, BASE_DEC, NULL, 0x0,
1808 NULL, HFILL}},
1809 {&hf_fldb_vldbentry_nservers,
1810 {"Number of Servers", "fldb.vldbentry.nservers", FT_UINT32, BASE_DEC, NULL,
1811 0x0, NULL, HFILL}},
1812 {&hf_fldb_afsnetaddr_type,
1813 {"Type", "fldb.afsnetaddr.type", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1814 {&hf_fldb_afsnetaddr_data,
1815 {"IP Data", "fldb.afsnetaddr.data", FT_UINT8, BASE_DEC, NULL, 0x0, NULL,
1816 HFILL}},
1817 {&hf_fldb_vldbentry_sitepartition,
1818 {"Site Partition", "fldb.vldbentry.sitepartition", FT_UINT32, BASE_DEC, NULL,
1819 0x0, NULL, HFILL}},
1820 {&hf_fldb_siteflags,
1821 {"Site Flags", "fldb.vldbentry.siteflags", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1822 HFILL}},
1823 {&hf_fldb_vldbentry_sitemaxreplicalatency,
1824 {"Site Max Replica Latench", "fldb.vldbentry.sitemaxreplatency", FT_UINT32,
1825 BASE_DEC, NULL, 0x0, NULL, HFILL}},
1826 {&hf_fldb_vldbentry_siteprincipal,
1827 {"Principal Name", "fldb.vldbentry.siteprincipal", FT_STRING, BASE_NONE, NULL,
1828 0x0, NULL, HFILL}},
1829 {&hf_fldb_vldbentry_siteowner,
1830 {"Site Owner", "fldb.vldbentry.siteowner", FT_GUID, BASE_NONE, NULL, 0x0,
1831 "UUID", HFILL}},
1832 {&hf_fldb_vldbentry_siteobjid,
1833 {"Site Object ID", "fldb.vldbentry.siteobjid", FT_GUID, BASE_NONE, NULL,
1834 0x0, "UUID", HFILL}},
1835 {&hf_fldb_vldbentry_volids_high,
1836 {"VolIDs high", "fldb.vldbentry.volidshigh", FT_UINT32, BASE_DEC, NULL, 0x0,
1837 NULL, HFILL}},
1838 {&hf_fldb_vldbentry_volids_low,
1839 {"VolIDs low", "fldb.vldbentry.volidslow", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1840 HFILL}},
1841 {&hf_fldb_vldbentry_voltypes,
1842 {"VolTypes", "fldb.vldbentry.voltypes", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1843 HFILL}},
1844 {&hf_fldb_vldbentry_cloneid_high,
1845 {"CloneID High", "fldb.vldbentry.cloneidhigh", FT_UINT32, BASE_DEC, NULL, 0x0,
1846 NULL, HFILL}},
1847 {&hf_fldb_vldbentry_cloneid_low,
1848 {"CloneID Low", "fldb.vldbentry.cloneidlow", FT_UINT32, BASE_DEC, NULL, 0x0,
1849 NULL, HFILL}},
1850 {&hf_fldb_afsflags_flags,
1851 {"AFS Flags", "fldb.vldbentry.afsflags", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1852 HFILL}},
1853 {&hf_fldb_vldbentry_maxtotallatency,
1854 {"Max Total Latency", "fldb.vldbentry.maxtotallatency", FT_UINT32, BASE_DEC,
1855 NULL, 0x0, NULL, HFILL}},
1856 {&hf_fldb_vldbentry_hardmaxtotallatency,
1857 {"Hard Max Total Latency", "fldb.vldbentry.hardmaxtotallatency", FT_UINT32,
1858 BASE_DEC, NULL, 0x0, NULL, HFILL}},
1859 {&hf_fldb_vldbentry_minimumpouncedally,
1860 {"Minimum Pounce Dally", "fldb.vldbentry.minimumpouncedally", FT_UINT32,
1861 BASE_DEC, NULL, 0x0, NULL, HFILL}},
1862 {&hf_fldb_vldbentry_defaultmaxreplicalatency,
1863 {"Default Max Replica Latency", "fldb.vldbentry.defaultmaxreplicalatency",
1864 FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1865 {&hf_fldb_vldbentry_reclaimdally,
1866 {"Reclaim Dally", "fldb.vldbentry.reclaimdally", FT_UINT32, BASE_DEC, NULL,
1867 0x0, NULL, HFILL}},
1868 {&hf_fldb_vldbentry_whenlocked,
1869 {"When Locked", "fldb.vldbentry.whenlocked", FT_UINT32, BASE_DEC, NULL, 0x0,
1870 NULL, HFILL}},
1871 {&hf_fldb_vldbentry_spare1,
1872 {"Spare 1", "fldb.vldbentry.spare1", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1873 HFILL}},
1874 {&hf_fldb_vldbentry_spare2,
1875 {"Spare 2", "fldb.vldbentry.spare2", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1876 HFILL}},
1877 {&hf_fldb_vldbentry_spare3,
1878 {"Spare 3", "fldb.vldbentry.spare3", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1879 HFILL}},
1880 {&hf_fldb_vldbentry_spare4,
1881 {"Spare 4", "fldb.vldbentry.spare4", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1882 HFILL}},
1883 {&hf_fldb_vldbentry_lockername,
1884 {"Locker Name", "fldb.vldbentry.lockername", FT_STRING, BASE_NONE, NULL, 0x0,
1885 NULL, HFILL}},
1886 {&hf_fldb_vldbentry_charspares,
1887 {"Char Spares", "fldb.vldbentry.charspares", FT_STRING, BASE_NONE, NULL, 0x0,
1888 NULL, HFILL}},
1889 {&hf_fldb_vlconf_cell_name,
1890 {"Name", "fldb.vlconf.name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL}},
1891 {&hf_fldb_vlconf_cell_cellid_high,
1892 {"CellID High", "fldb.vlconf.cellidhigh", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1893 HFILL}},
1894 {&hf_fldb_vlconf_cell_cellid_low,
1895 {"CellID Low", "fldb.vlconf.cellidlow", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1896 HFILL}},
1897 {&hf_fldb_vlconf_cell_numservers,
1898 {"Number of Servers", "fldb.vlconf.numservers", FT_UINT32, BASE_DEC, NULL,
1899 0x0, NULL, HFILL}},
1900 {&hf_fldb_vlconf_cell_hostname,
1901 {"hostName", "fldb.vlconf.hostname", FT_STRING, BASE_NONE, NULL, 0x0, NULL,
1902 HFILL}},
1903 {&hf_fldb_vlconf_cell_spare1,
1904 {"Spare1", "fldb.vlconf.spare1", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1905 {&hf_fldb_vlconf_cell_spare2,
1906 {"Spare2", "fldb.vlconf.spare2", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1907 {&hf_fldb_vlconf_cell_spare3,
1908 {"Spare3", "fldb.vlconf.spare3", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1909 {&hf_fldb_vlconf_cell_spare4,
1910 {"Spare4", "fldb.vlconf.spare4", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1911 {&hf_fldb_vlconf_cell_spare5,
1912 {"Spare5", "fldb.vlconf.spare5", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1913 {&hf_fldb_flagsp,
1914 {"flagsp", "fldb.flagsp", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1915 {&hf_fldb_nextstartp,
1916 {"nextstartp", "fldb.nextstartp", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1917 HFILL}},
1918 {&hf_fldb_afsNameString_t_principalName_size,
1919 {"Principal Name Size", "fldb.principalName_size", FT_UINT32, BASE_DEC,
1920 NULL, 0x0, NULL, HFILL}},
1921 #if 0
1922 {&hf_fldb_afsNameString_t_principalName_size2,
1923 {"Principal Name Size2", "fldb.principalName_size2", FT_UINT32, BASE_DEC,
1924 NULL, 0x0, NULL, HFILL}},
1925 #endif
1926 {&hf_fldb_afsNameString_t_principalName_string,
1927 {"Principal Name", "fldb.NameString_principal", FT_STRING, BASE_NONE,
1928 NULL, 0x0, NULL, HFILL}},
1929 {&hf_fldb_namestring,
1930 {"Name string", "fldb.NameString_principal", FT_STRING, BASE_NONE, NULL,
1931 0x0, NULL, HFILL}},
1932 #if 0
1933 {&hf_dcerpc_error_status,
1934 {"Error Status", "fldb.NameString_principal", FT_UINT32, BASE_DEC, NULL,
1935 0x0, NULL, HFILL}},
1936 #endif
1937 {&hf_error_st,
1938 {"Error Status 2", "fldb.error_st", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1939 HFILL}},
1940 {&hf_fldb_creationquota,
1941 {"creation quota", "fldb.creationquota", FT_UINT32, BASE_DEC, NULL, 0x0,
1942 NULL, HFILL}},
1943 {&hf_fldb_creationuses,
1944 {"creation uses", "fldb.creationuses", FT_UINT32, BASE_DEC, NULL, 0x0,
1945 NULL, HFILL}},
1946 {&hf_fldb_deletedflag,
1947 {"deletedflag", "fldb.deletedflag", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1948 HFILL}},
1949 #if 0
1950 {&hf_fldb_getentrybyname_rqst_key_size,
1951 {"getentrybyname", "fldb.getentrybyname_rqst_key_size", FT_UINT32,
1952 BASE_DEC, NULL, 0x0, NULL, HFILL}},
1953 {&hf_fldb_getentrybyname_rqst_var1,
1954 {"getentrybyname var1", "fldb.getentrybyname_rqst_var1", FT_UINT32,
1955 BASE_DEC, NULL, 0x0, NULL, HFILL}},
1956 {&hf_fldb_namestring_size,
1957 {"namestring size", "fldb.namestring_size", FT_UINT32, BASE_DEC, NULL,
1958 0x0, NULL, HFILL}},
1959 #endif
1960 {&hf_fldb_numwanted,
1961 {"number wanted", "fldb.numwanted", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1962 HFILL}},
1963 {&hf_fldb_spare2,
1964 {"spare2", "fldb.spare2", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1965 {&hf_fldb_spare3,
1966 {"spare3", "fldb.spare3", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1967 {&hf_fldb_spare4,
1968 {"spare4", "fldb.spare4", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1969 {&hf_fldb_spare5,
1970 {"spare5", "fldb.spare5", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1971 {&hf_fldb_uuid_objid,
1972 {"objid", "fldb.uuid_objid", FT_GUID, BASE_NONE, NULL, 0x0, "UUID",
1973 HFILL}},
1974 {&hf_fldb_uuid_owner,
1975 {"owner", "fldb.uuid_owner", FT_GUID, BASE_NONE, NULL, 0x0, "UUID",
1976 HFILL}},
1977 {&hf_fldb_volid_high,
1978 {"volid high", "fldb.volid_high", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1979 HFILL}},
1980 {&hf_fldb_volid_low,
1981 {"volid low", "fldb.volid_low", FT_UINT32, BASE_DEC, NULL, 0x0, NULL,
1982 HFILL}},
1983 {&hf_fldb_voltype,
1984 {"voltype", "fldb.voltype", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL}},
1987 static gint *ett[] = {
1988 &ett_fldb,
1989 &ett_fldb_vldbentry,
1990 &ett_fldb_afsnetaddr,
1991 &ett_fldb_siteflags,
1992 &ett_fldb_afsflags,
1993 &ett_fldb_vlconf_cell,
1994 &ett_fldb_afsNameString_t,
1997 proto_fldb = proto_register_protocol ("DCE DFS Fileset Location Server", "FLDB", "fldb");
1998 proto_register_field_array (proto_fldb, hf, array_length (hf));
1999 proto_register_subtree_array (ett, array_length (ett));
2002 void
2003 proto_reg_handoff_fldb (void)
2005 /* Register the protocol as dcerpc */
2006 dcerpc_init_uuid (proto_fldb, ett_fldb, &uuid_fldb, ver_fldb,
2007 fldb_dissectors, hf_fldb_opnum);