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