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